智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2280|回复: 2
打印 上一主题 下一主题

[单片机] 怎么可以让步进电机转的更快

[复制链接]

3

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
107
威望
63
贡献
22
兑换币
23
注册时间
2015-4-12
在线时间
11 小时
毕业学校
1
跳转到指定楼层
1#
发表于 2015-4-19 17:12:54 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么可以让步进电机转的更快程序怎么改
#include "reg51.h"
#include "stdio.h"
#include < intrins.h >
#include<math.h>
#define uchar unsigned char
#define uint  unsigned int
//************************管脚定义************************************/
sbit en_left = P1^0;//左电机使能控制位
sbit cw_left= P1^1;//左电机方向控制位
sbit clk_left= P1^2;//左电机脉冲控制位
sbit en_right = P1^3;//右电机使能控制位
sbit cw_right= P1^4;//右电机方向控制位
sbit clk_right= P1^5;//右电机脉冲控制位
sbit ir_left=P1^6;         //左侧红外传感器接收位
sbit ir_right=P1^7;         //右侧红外传感器接收位
sbit ir_mid=P2^3;          //中间红外传感器接收位
/////////////////////////函数声明////////////////////////////////////////
void timer1_init();  //定时器1初始化函数
void move_left(uint speed_l,uchar cw,uchar en);//左电机运动函数
void move_right(uint speed_r,uchar cw,uchar en);//右电机运动函数
void delay(unsigned int k);        //延时函数
//////////////////变量定义////////////////////////////////////////////////
uint n;//进定时器1中断次数计数
uint speed;//电机速度控制变量
/**************函数体******************************************/
void delay(unsigned int k)       
{                                               
unsigned int i,j;                               
for(i=0;i<k;i++)
{                       
for(j=0;j<121;j++)                       
{;}}                                               
}
/*******************************/
void timer1_init()
{
        TMOD=0X10;
        ET1=1;
        EA=1;
        TH1=(65536-100)/256;
        TL1=(65536-100)%256;
        TR1=1;//定时器启动后  运动控制脉冲将一直产生   小车的运动方式受 cw 和en控制
}
void move_left(uint speed_l,uchar cw,uchar en)
{                           //speed_l速度控制变量 cw方向控制变量 en使能控制变量
        speed=speed_l;
        if(cw==1)
        {
                cw_left=1;
        }
        else
        {
                cw_left=0;
        }
        if(en==1)
        {
                en_left=1;
        }
        else
        {
                en_left=0;
        }
       
}
void move_right(uint speed_r,uchar cw,uchar en)
{                                //speed_r速度控制变量 cw方向控制变量 en使能控制变量
        speed=speed_r;         //speed数值与速度成反比  请结合实际情况进行调节,
        if(cw==1)                 //但速度不能无限加快因为步进电机有速度上限
        {                                 //而且速度加快是力矩会下降,容易导致丢步现象
                cw_right=1;         //所以实际应用当中应调节到速度可力矩比较合适的数值
        }                                 //应考虑到电池电压,轮胎直径等因素
        else
        {
                cw_right=0;          //cw 控制电机正反转,1与0各代表一个方向
        }
        if(en==1)
        {                                  //en 为使能位  1:能 0:不能
                en_right=1;
        }
        else
        {
                en_right=0;
        }
       
}

void main (void)
{   
   delay(10);
   timer1_init();
        while(1)
                {
                        if(ir_left==0&&ir_mid==0&&ir_right==0) //以下是三个红外传感器的八种状态和对应的运动方式
                        {
                                move_left(15,0,1);
                                move_right(15,0,1);
                                delay(800);
                        }
                        if(ir_left==0&&ir_mid==0&&ir_right==1)
                        {
                                 move_left(15,0,1);
                                move_right(15,0,1);
                                delay(400);
                        }       
                        if(ir_left==0&&ir_mid==1&&ir_right==0)
                        {
                                 move_left(15,0,1);
                                move_right(15,0,1);
                                delay(800);
                        }       
                        if(ir_left==0&&ir_mid==1&&ir_right==1)
                        {
                                move_left(15,0,1);
                                move_right(15,0,1);
                                delay(400);
                        }       
                        if(ir_left==1&&ir_mid==0&&ir_right==0)
                        {
                                move_left(15,1,1);
                                move_right(15,1,1);
                                delay(400);
                        }       
                        if(ir_left==1&&ir_mid==0&&ir_right==1)
                        {
                                move_left(15,0,1);
                                move_right(15,0,1);
                                delay(800);
                        }       
                        if(ir_left==1&&ir_mid==1&&ir_right==0)
                        {
                                move_left(15,1,1);
                                move_right(15,1,1);
                                delay(400);
                        }       
                        if(ir_left==1&&ir_mid==1&&ir_right==1)
                        {
                                move_left(15,0,1);
                                move_right(15,1,1);
                               
                        }               
               
                 }

   
}

void timer1_serve() interrupt 3
{
        TH1=(65536-100)/256;
        TL1=(65536-100)%256;
        n=n+1;
//        m=m+1;
        if(n==speed)
        {
        clk_left=~clk_left;
        clk_right=~clk_right;
        n=0;       
        }

               
               
}
回复

使用道具 举报

49

主题

3751

帖子

1

精华

顶级版主

Rank: 11Rank: 11Rank: 11Rank: 11

积分
27953

资源大师奖章论坛骨干奖章推广达人奖章优秀版主奖章热心会员奖章论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章技术大牛奖章

威望
10635
贡献
10966
兑换币
4566
注册时间
2010-11-23
在线时间
3176 小时
2#
发表于 2015-4-19 22:41:05 | 只看该作者
弱弱的告诉楼主一个事实,毫无来龙去脉的一大堆代码是没人愿意看的,虽然你这里有一部分注释。在任何一个论坛都是。
至少应该是原理上的,技术上,应用上的讨论。
回复 支持 反对

使用道具 举报

3

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
107
威望
63
贡献
22
兑换币
23
注册时间
2015-4-12
在线时间
11 小时
毕业学校
1
3#
 楼主| 发表于 2015-4-20 10:09:39 来自手机 | 只看该作者
turf456 发表于 2015-4-19 22:41
弱弱的告诉楼主一个事实,毫无来龙去脉的一大堆代码是没人愿意看的,虽然你这里有一部分注释。在任何一个论 ...

第一次接触单片机不懂所以想请高手帮忙给改一下程序
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 02:21 , Processed in 0.047794 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表