文号
t58688
阅读
5299
回复
5
收藏
3
还是步进电机~~~帮帮忙
2013/07/18
IP:湖北
使用的是400线的编码器,步进电机每个脉冲走1.8度
int motor_stop()//返回1为停止
{
        int n;
        n=STOP;//读取编码器数据
        if(anglechange==n)
        {
                return(1);
        }
        else
        {
                anglechange=n;
                return(0);
        }
}


viod main()                
for(t1=1;t1<=202;t1++)//循环一
                {
                for(t=1;t<=202;t++)//循环二
                {
                        LOW_CP;
                         __delay_cycles(150);
                                  HIGH_CP;
                         __delay_cycles(350);//脉冲完成

                         if((motor_stop())==1)//读取编码器数据
                         {
                                 t2++;
                         }
                        if(t2==400)//转到一圈的时候
                        {
                                __delay_cycles(1);
                        }
                }
                }

结果是  循环二  步进电机只动一下, 循环一  中步进电机转了快几圈。
当t2=400的时候,步进电机也仅动了一点点。这是怎么一回事,按照一个脉冲1.8度的话,202次脉冲差不多一圈,但是电机只动一下。
当编码器的值变化400次的时候应该也是一圈,结果还是只动了一点。
程序哪里出问题了?
我是在__delay_cycles(1); 处设置断点来看程序跑到哪里了,断点全部去掉后步进电机可以正常运转。
5
13年5个月前IP:未同步
549437
1楼
还正在学C的渣渣路过…话说LZ用的是Keil μVision么,那个软件可以仿真走一下程序的,我以前实验的时候遇到奇怪的问题都通过逐步执行找到了不对的地方。。
引用
评论
茫羽作者
13年5个月前IP:未同步
549465
2楼
回 1楼(wenrui) 的帖子
不是51,这个是430 的程序
+10
科创币
wenrui
2013/07/19
MSP430么?好高级。。。。不会了。。
引用
评论
13年5个月前IP:未同步
549479
3楼
步进电机只能慢启动慢停止。即启动时脉冲要逐渐加密(脉冲间隔逐渐减小);停止时反之。
若上来就高速高密驱动,那么会卡死。即使不卡死,也会丢步(实际走的步数和驱动步数不一致)。
撸主可以看看你的电机资料,看启动时的最高脉冲频率(或最短脉冲间隔)是多少。
引用
评论
茫羽作者
13年5个月前IP:未同步
549539
4楼
回 3楼(量子隧道) 的帖子
我前几天用按键的方法来控制步进电机运动,脉冲和这段程序使用的是一样的,停止和启动没有什么问题,这个应该是脉冲转的角度和编码器信号上的问题,可恨我没有示波器啊 [s:273]  [s:273]  [s:273]
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的