找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2209|回复: 20
打印 上一主题 下一主题
收起左侧

51单片机步进电机调速系统这个代码是怎么实现的?求分析

[复制链接]
跳转到指定楼层
楼主
求助论坛大佬,这个代码的调速是怎么实现的
(大二初学单片机,不太理解,编程语言主要学了c、c艹)
感谢!

image.jpg (6 MB, 下载次数: 41)

image.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:844772 发表于 2022-4-29 08:32 | 只看该作者
就是调speed的值啊,speed越大速度越快。不过它调节能力,0-10这个值也太小了。
回复

使用道具 举报

板凳
ID:1015750 发表于 2022-4-29 14:13 | 只看该作者
glinfei 发表于 2022-4-29 08:32
就是调speed的值啊,speed越大速度越快。不过它调节能力,0-10这个值也太小了。

好的,感谢,这个我能理解了,不过他这个步数是怎么设定的,AA BB CC DD给高低电平这个我不是很理解。如果是八拍,不应该是按照AA -AABB-BB-………这个顺序给脉冲,这个switch语句里的是怎么实现的呢?
回复

使用道具 举报

地板
ID:1015750 发表于 2022-4-29 14:21 | 只看该作者
这个是完整代码(部分注释是我自己添加的,不知是否有误,代码是在网上找到的)感谢各位大佬答疑解惑

962E95DA-7484-4F15-AB14-D391140728E0.jpeg (203.37 KB, 下载次数: 51)

962E95DA-7484-4F15-AB14-D391140728E0.jpeg
回复

使用道具 举报

5#
ID:844772 发表于 2022-4-29 14:57 | 只看该作者
ssmlong 发表于 2022-4-29 14:13
好的,感谢,这个我能理解了,不过他这个步数是怎么设定的,AA BB CC DD给高低电平这个我不是很理解。如 ...

没看到你变量的定义和线路,但你搜一下两项四线的步进电机,四拍怎么走的就知道了,你说的是八拍走法略有不同,至于switch ,不过是flag每个循环加一了,看89——92行,所以它在0-7变换,所以每switch自然就执行下一case。相当于BB CC DD AA 分别置1,其他的都是0.
另外,感觉你的速度也太快了,可能转不了,光发抖了,如果不转把69行的10 调大点。
回复

使用道具 举报

6#
ID:1015750 发表于 2022-4-29 21:46 | 只看该作者
glinfei 发表于 2022-4-29 14:57
没看到你变量的定义和线路,但你搜一下两项四线的步进电机,四拍怎么走的就知道了,你说的是八拍走法略有 ...

好的,谢谢你
回复

使用道具 举报

7#
ID:493649 发表于 2022-4-30 23:36 来自手机 | 只看该作者
做好了没,我最近也在研究咋控制转速的
回复

使用道具 举报

8#
ID:514254 发表于 2022-5-1 10:05 | 只看该作者
调速就是两个脉冲之间或者两相通电的间隔,如果越长(不管使用定时器还是延时函数),步进电机越慢,越短步进越快,当然一定要满足电机本身的机械要求,太小了,电机仅仅震动发热,时间长了可能会烧毁。
回复

使用道具 举报

9#
ID:1015750 发表于 2022-5-2 02:55 | 只看该作者
dazhige 发表于 2022-5-1 10:05
调速就是两个脉冲之间或者两相通电的间隔,如果越长(不管使用定时器还是延时函数),步进电机越慢,越短步 ...

我主要是不太懂他这个步数是怎么设定的,高低电平是什么给的,就是switch里面的不太懂
回复

使用道具 举报

10#
ID:1015750 发表于 2022-5-2 02:56 | 只看该作者
33333333111 发表于 2022-4-30 23:36
做好了没,我最近也在研究咋控制转速的

还在学习,一起加油🤝
回复

使用道具 举报

11#
ID:514254 发表于 2022-5-2 08:12 | 只看该作者
回复

使用道具 举报

12#
ID:514254 发表于 2022-5-2 10:00 | 只看该作者
结合上面的图,然后和具体的电路,比如ABCD各相接到那个IO口了,就大概明白了,所谓的脉冲,就是让某一个线圈通电
回复

使用道具 举报

13#
ID:1023213 发表于 2022-5-2 11:07 来自手机 | 只看该作者
利用pwm控制吧
回复

使用道具 举报

14#
ID:1023283 发表于 2022-5-2 11:58 来自手机 | 只看该作者
一般是pwm实现
回复

使用道具 举报

15#
ID:1015750 发表于 2022-5-2 19:20 | 只看该作者
dazhige 发表于 2022-5-2 10:00
结合上面的图,然后和具体的电路,比如ABCD各相接到那个IO口了,就大概明白了,所谓的脉冲,就是让某一个线 ...

好的,谢谢你
回复

使用道具 举报

16#
ID:1015750 发表于 2022-5-2 19:20 | 只看该作者

我还不太懂pwm是什么,刚接触单片机,继续学习,感谢
回复

使用道具 举报

17#
ID:1015750 发表于 2022-5-2 19:21 | 只看该作者

好的,我回去了解一下
回复

使用道具 举报

18#
ID:1015750 发表于 2022-5-2 20:11 | 只看该作者
dazhige 发表于 2022-5-2 10:00
结合上面的图,然后和具体的电路,比如ABCD各相接到那个IO口了,就大概明白了,所谓的脉冲,就是让某一个线 ...

我还有个问题想请教一下您,就是switch里面,我的理解是,每一次执行都是给某一个接口脉冲,那不应该是这样:case 1: AA=1,BB=0,CC=0,DD=0;case 2:AA=1,BB=1,CC=0,DD=0;case 3:依次类推,如果是像原作者那样写的,他的步序是怎样的,给一个接口脉冲之后再给其他接口脉冲,但是前一个接口状态没有改变,那不会影响步数吗?
回复

使用道具 举报

19#
ID:1015750 发表于 2022-5-2 21:13 | 只看该作者
dazhige 发表于 2022-5-2 10:00
结合上面的图,然后和具体的电路,比如ABCD各相接到那个IO口了,就大概明白了,所谓的脉冲,就是让某一个线 ...

你好,我想向您请教一下(刚刚在帖子下回复了不过好像没有成功),就是关于那个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的状态没有变,不会影响转动吗?这个是我不太理解的地方
回复

使用道具 举报

20#
ID:844772 发表于 2022-5-5 14:47 | 只看该作者
ssmlong 发表于 2022-5-2 21:13
你好,我想向您请教一下(刚刚在帖子下回复了不过好像没有成功),就是关于那个switch语句,我的理解是每 ...

如果完整走了八步后再走,它的节奏是下面的表,端口不需要每次都重新赋值啊。你那么写也没错,但没这个效率高,它在中断函数,对效率敏感。
      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
回复

使用道具 举报

21#
ID:514254 发表于 2022-5-5 15:29 | 只看该作者
glinfei 发表于 2022-5-5 14:47
如果完整走了八步后再走,它的节奏是下面的表,端口不需要每次都重新赋值啊。你那么写也没错,但没这个效 ...

正解,其实什么节拍有多种理解,不一定要按照一个思路,只要给的脉冲产生的磁场是顺序转动的,并且按照步距角的要求都是可以的,至于效率暂时不要考虑,只要理解了思路,天高任鸟飞。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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