27,428
社区成员
发帖
与我相关
我的任务
分享
最近在做一个项目,主要内容是,通过Arduino Mega2560控制3个步进电机驱动器,进而控制步进电机实现带目标物进行移动。代码中使用了定时器中断,1KHZ的频率访问定时器,再通过串口,发送指令,控制步进电机进行移动。在几乎快调试完成后,发现一个重大问题,在有时候突然发送指令时,步进电机会不受控制的跑飞,除非再次发送指令,不然步进电机会一直按照某种异常的速度不停移动。
步进电机是通过驱动器进行控制的,所以只需要DIR和PUL两个脚控制即可,PUL脉冲波形的频率在正常情况下,我只给到了400HZ,50%占空比。在异常情况下,频率会突然飚的很高,达到了几KHZ,但是程序中没有代码让他按照此种频率运行。
而且该问题出现的时机是偶然的,都在串口发送完指令,Arduino接受解析完指令,再控制步进电机是出现,概率很高。
不知道有没有大佬遇到类似情况,给小弟指条明路,由于是第一次使用Arduino 开发项目,代码还是参考网上的。
定时器中断部分代码
串口接收数据 部分代码