标题: 这个单片机程序为啥步进电机实际效果没有转360度?只转了90度多 [打印本页]

作者: wuliao0o0    时间: 2022-7-1 16:45
标题: 这个单片机程序为啥步进电机实际效果没有转360度?只转了90度多
理想效果是电机正向转360度后反向转360度,但实际效果只转了90度多。


作者: 17337161031    时间: 2022-7-1 19:32
定时是不是不对
作者: Hephaestus    时间: 2022-7-1 20:17
MotorRun函数第二行溢出了。
作者: wuliao0o0    时间: 2022-7-2 17:53
Hephaestus 发表于 2022-7-1 20:17
MotorRun函数第二行溢出了。

改成int和float试了一下都不行
作者: wuliao0o0    时间: 2022-7-2 17:55
17337161031 发表于 2022-7-1 19:32
定时是不是不对

从网上找了个精确延时的程序放进去了也不行
作者: wuliao0o0    时间: 2022-7-2 17:57
如果把MotorRun方法里的angle参数改成int型后,电机会一直朝着一个方向转
作者: lkc8210    时间: 2022-7-2 21:33
wuliao0o0 发表于 2022-7-2 17:53
改成int和float试了一下都不行

改long啊
  1. void MotorRun (uint angle, uint drct, uint speed){
  2. long step, nangle;
  3. nangle=(long)512*angle/45;//将角度换算成拍数,计算结果自动耶
  4. ...
复制代码




作者: 周翔宇    时间: 2022-7-3 00:00
512*angle=512*360=184320,这个地方先溢出,才会再除45
作者: wuliao0o0    时间: 2022-7-3 09:32
lkc8210 发表于 2022-7-2 21:33
改long啊

可以了,谢谢大佬,太谢谢了
作者: wuliao0o0    时间: 2022-7-3 09:32
周翔宇 发表于 2022-7-3 00:00
512*angle=512*360=184320,这个地方先溢出,才会再除45

好的,太谢谢了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1