glinfei 发表于 2022-5-5 14:47 正解,其实什么节拍有多种理解,不一定要按照一个思路,只要给的脉冲产生的磁场是顺序转动的,并且按照步距角的要求都是可以的,至于效率暂时不要考虑,只要理解了思路,天高任鸟飞。 |
ssmlong 发表于 2022-5-2 21:13 如果完整走了八步后再走,它的节奏是下面的表,端口不需要每次都重新赋值啊。你那么写也没错,但没这个效率高,它在中断函数,对效率敏感。 AABBCCDD 0 1 1 0 0 1 0 1 0 0 2 0 1 1 0 3 0 0 1 0 4 0 0 1 1 5 0 0 0 1 6 1 0 0 1 7 1 0 0 0 |
dazhige 发表于 2022-5-2 10:00 你好,我想向您请教一下(刚刚在帖子下回复了不过好像没有成功),就是关于那个switch语句,我的理解是每一次执行都是给某一个io口脉冲,我的想法是如果是八拍,就是 case 1:AA=1,BB=0,CC=0,DD=0; case 2:AA=1,BB=1,CC=0,DD=0; case 3:AA=0,BB=1,CC=0,DD=0… 依次类推,如果是原作者的思路,他一次只给某一个口脉冲(如BB=1),那下一次执行的时候,没有重新给BB赋值,那BB的状态没有变,不会影响转动吗?这个是我不太理解的地方 |
dazhige 发表于 2022-5-2 10:00 我还有个问题想请教一下您,就是switch里面,我的理解是,每一次执行都是给某一个接口脉冲,那不应该是这样:case 1: AA=1,BB=0,CC=0,DD=0;case 2:AA=1,BB=1,CC=0,DD=0;case 3:依次类推,如果是像原作者那样写的,他的步序是怎样的,给一个接口脉冲之后再给其他接口脉冲,但是前一个接口状态没有改变,那不会影响步数吗? |
dlnb666 发表于 2022-5-2 11:58 好的,我回去了解一下 |
knight18z 发表于 2022-5-2 11:07 我还不太懂pwm是什么,刚接触单片机,继续学习,感谢 |
dazhige 发表于 2022-5-2 10:00 好的,谢谢你 |
一般是pwm实现 |
利用pwm控制吧 |
结合上面的图,然后和具体的电路,比如ABCD各相接到那个IO口了,就大概明白了,所谓的脉冲,就是让某一个线圈通电 |
![]() ![]() ![]() |
33333333111 发表于 2022-4-30 23:36 还在学习,一起加油🤝 |
dazhige 发表于 2022-5-1 10:05 我主要是不太懂他这个步数是怎么设定的,高低电平是什么给的,就是switch里面的不太懂 |
调速就是两个脉冲之间或者两相通电的间隔,如果越长(不管使用定时器还是延时函数),步进电机越慢,越短步进越快,当然一定要满足电机本身的机械要求,太小了,电机仅仅震动发热,时间长了可能会烧毁。 |
做好了没,我最近也在研究咋控制转速的 |
glinfei 发表于 2022-4-29 14:57 好的,谢谢你 |
ssmlong 发表于 2022-4-29 14:13 没看到你变量的定义和线路,但你搜一下两项四线的步进电机,四拍怎么走的就知道了,你说的是八拍走法略有不同,至于switch ,不过是flag每个循环加一了,看89——92行,所以它在0-7变换,所以每switch自然就执行下一case。相当于BB CC DD AA 分别置1,其他的都是0. 另外,感觉你的速度也太快了,可能转不了,光发抖了,如果不转把69行的10 调大点。 |
glinfei 发表于 2022-4-29 08:32 好的,感谢,这个我能理解了,不过他这个步数是怎么设定的,AA BB CC DD给高低电平这个我不是很理解。如果是八拍,不应该是按照AA -AABB-BB-………这个顺序给脉冲,这个switch语句里的是怎么实现的呢? |
就是调speed的值啊,speed越大速度越快。不过它调节能力,0-10这个值也太小了。 |