• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

一种步进小车的解决方案,彻底解决小车跑不走直线的问题

步进小车这个想法源于一次智能车比赛:规则要求小车要不借助引导线走一段直线和精确地转向,于是用一般直流电机尝试了一段时间发现各种方法都不太理想,问题的根源还是在于对直流电机转速的控制不够精确;于是就想能不能采用步进电机来从根本上解决这个问题。

一般我们接触到的步进电机大都分为两种:一种是这种圆形带减速机构的微型步进电机,如图:

这种电机通过减速机构获得了较大的力矩,但是最高转速非常有限,做小车显然不合适;

另一种就是这种体型比较大的方块块,如图:

这种电机体积、重量、功率都较大,但是在较高转速下还能维持一定力矩,看起来还不错,所以就选它啦。

全部回复(31)
正序查看
倒序查看
heal
LV.3
2
2014-02-17 22:23

从X宝上购入两个二手42型步进电机(新的太贵啦),所谓42型就是只电机的边长为42mm,大家可以根据小车大小选不同的型号,顺便在买两个配套的电机座,不然安装很麻烦的。

根据电机座在小车地盘上打孔,把电机装上,效果如下:

值得注意的是:由于我们的步进电机是2相4线制,所以两个电机总共需要8通道的驱动单元,而一个我们常用的L298芯片只有4个单元,所以我们需要准备两个L298芯片。

0
回复
daylight
LV.4
3
2014-02-17 23:44
@heal
从X宝上购入两个二手42型步进电机(新的太贵啦),所谓42型就是只电机的边长为42mm,大家可以根据小车大小选不同的型号,顺便在买两个配套的电机座,不然安装很麻烦的。根据电机座在小车地盘上打孔,把电机装上,效果如下:[图片]值得注意的是:由于我们的步进电机是2相4线制,所以两个电机总共需要8通道的驱动单元,而一个我们常用的L298芯片只有4个单元,所以我们需要准备两个L298芯片。
这个电机里面带行星减速齿轮吗?上个拆开的图给大家看看结构嘛?
0
回复
heal
LV.3
4
2014-02-17 23:46
@daylight
这个电机里面带行星减速齿轮吗?上个拆开的图给大家看看结构嘛?
就是步进电机,不带任何齿轮机构的
0
回复
heal
LV.3
5
2014-02-17 23:46
@daylight
这个电机里面带行星减速齿轮吗?上个拆开的图给大家看看结构嘛?
行星减速机好贵的
0
回复
heal
LV.3
6
2014-02-17 23:47

接下来要解决程序的问题,步进电机的驱动原理是和直流电机不同的,(还不知道原理的请自行百度),大概可以分为三种驱动方式:

其中,单四拍,也叫1相式,任何时候都只有一相通电,这种方式可以达到较高的转速,但力矩较小;

双四拍,也叫2相式,这种方式和单四拍相反,力矩较大但转速低;

最后是八拍,也叫1-2相混合式,这种方式介于上面两种方式之间,在转速和力矩之间取得平衡,比较推荐,所以我们就选它啦

0
回复
heal
LV.3
7
2014-02-17 23:48

联系到实际中的实现也很简单,我们只要在L298的4个端口产生像上图中的时序就行了,我做出来之后是这样:

这样做了之后,电机确实如期望的那样转起来了,不过同时又出现了一个大问题:电机和L298芯片就像插上的烙铁一样迅速升温直到烫手。而且转速越低越烫,我猜想原因应该是这样,在电机的两步之间,也就是上图中两根绿线之间,有一段时间,(也就是电机完成单步转动之后到下一次转动之前的时间),电机几乎是处于静止的状态,而这段时间线圈里的电流就会迅速增长,导致发热;

通过查阅网上成熟的步进电机控制器设计,我发现他们的解决办法大都是通过检测相电流,然后调节PWM频率来实现不让电机通过过大的电流;

0
回复
heal
LV.3
8
2014-02-17 23:50

所以我们也必须增加一路PWM来保证电机的安全,通过实验我发现,不用电流检测而是用软件来模拟产生pwm的简易方法,也可以取得不错的效果,所以通过调试,最终的驱动波形如下图:

 

最上面为pwm控制,同时接在L298的EnA和EnB两个端口;从上图能看到,我把两步之间的时间分成了两部分,一部分是电机正在转动,pwm直接输出高电平,保证转动时有足够的力矩,当转动完成后,开始输出pwm波,直到下一次转动开始;而pwm的占空比是随速度变化的,速度越低斩空比越小;而在接近最高转速时就完全关闭占空比,来保证输出力矩:

 

0
回复
for_real
LV.3
9
2014-02-17 23:52
@heal
所以我们也必须增加一路PWM来保证电机的安全,通过实验我发现,不用电流检测而是用软件来模拟产生pwm的简易方法,也可以取得不错的效果,所以通过调试,最终的驱动波形如下图:[图片] 最上面为pwm控制,同时接在L298的EnA和EnB两个端口;从上图能看到,我把两步之间的时间分成了两部分,一部分是电机正在转动,pwm直接输出高电平,保证转动时有足够的力矩,当转动完成后,开始输出pwm波,直到下一次转动开始;而pwm的占空比是随速度变化的,速度越低斩空比越小;而在接近最高转速时就完全关闭占空比,来保证输出力矩:[图片] 
 这算是变相的改变了电机的启动电压?
0
回复
heal
LV.3
10
2014-02-17 23:59
@for_real
 这算是变相的改变了电机的启动电压?
电压是没有改变的,只是限制了电流
0
回复
heal
LV.3
11
2014-02-18 00:17
@heal
所以我们也必须增加一路PWM来保证电机的安全,通过实验我发现,不用电流检测而是用软件来模拟产生pwm的简易方法,也可以取得不错的效果,所以通过调试,最终的驱动波形如下图:[图片] 最上面为pwm控制,同时接在L298的EnA和EnB两个端口;从上图能看到,我把两步之间的时间分成了两部分,一部分是电机正在转动,pwm直接输出高电平,保证转动时有足够的力矩,当转动完成后,开始输出pwm波,直到下一次转动开始;而pwm的占空比是随速度变化的,速度越低斩空比越小;而在接近最高转速时就完全关闭占空比,来保证输出力矩:[图片] 

为了解决电机突然启动或停止导致小车抖动,我还专门设计了一个启动/停止程序,波形如下:

电机速度慢慢升高,就可以有效消除抖动

0
回复
heal
LV.3
12
2014-02-18 00:19
@heal
为了解决电机突然启动或停止导致小车抖动,我还专门设计了一个启动/停止程序,波形如下:[图片]电机速度慢慢升高,就可以有效消除抖动
最后说明,这只是个简陋的低成本的控制方案,如要实现高精度的控制还请使用专门的细分控制器吧;关于程序,因为当时比赛限制了单片机型号,所以程序都是写给凌阳SPCE061A的,要移植到其他单片机比较麻烦,有兴趣的同学可以参考这个思路自己写一个
0
回复
for_real
LV.3
13
2014-02-18 00:20
@heal
为了解决电机突然启动或停止导致小车抖动,我还专门设计了一个启动/停止程序,波形如下:[图片]电机速度慢慢升高,就可以有效消除抖动
感觉这是不是变频启动停止?
0
回复
01夏至
LV.2
14
2014-02-18 00:23
@heal
为了解决电机突然启动或停止导致小车抖动,我还专门设计了一个启动/停止程序,波形如下:[图片]电机速度慢慢升高,就可以有效消除抖动
你步进电机上的齿轮哪里买的?
0
回复
H280570255
LV.1
15
2014-02-19 04:20
@01夏至
你步进电机上的齿轮哪里买的?
这个帖子很好,对单片机有兴趣的童鞋都 可以来这里探讨一下,我也正做这方面的试验,希望大家共同交流学习,想一下楼主截的图是什么软件画出来的,能说一下吗,我想控制直流电机的速度,市场上基本都 是加啊控制器,我想控制器也是单片机做的,可能加了减速装置,再加上PWM处理,我用L298N试验过,空载,发热太厉害,最后不动了,鉴于Lib98n的原理,我想用逆变电源上的开关原件IRF3205实现PWM调整直流电机的通断频率,再加上散热片等,就可以解决问题,有兴趣的朋友大家可以一起试下,
0
回复
heal
LV.3
16
2014-02-22 22:22
@01夏至
你步进电机上的齿轮哪里买的?
什么齿轮?
0
回复
01夏至
LV.2
17
2014-02-22 22:23
@heal
什么齿轮?
你那小车的车轮是直接接电机上的吗

 

0
回复
heal
LV.3
18
2014-02-22 22:24
@01夏至
你那小车的车轮是直接接电机上的吗 
联轴器

 

0
回复
金鱼1
LV.3
19
2014-02-22 22:26
@heal
什么齿轮?
楼主 你可听说过PID算法
0
回复
close3
LV.5
20
2014-02-22 22:28
@for_real
感觉这是不是变频启动停止?
对直流电机测速,然后pd进行脉宽调节。为了保证反应速度,不用i
0
回复
stony_s
LV.3
21
2014-02-22 22:29
@H280570255
这个帖子很好,对单片机有兴趣的童鞋都可以来这里探讨一下,我也正做这方面的试验,希望大家共同交流学习,想一下楼主截的图是什么软件画出来的,能说一下吗,我想控制直流电机的速度,市场上基本都是加啊控制器,我想控制器也是单片机做的,可能加了减速装置,再加上PWM处理,我用L298N试验过,空载,发热太厉害,最后不动了,鉴于Lib98n的原理,我想用逆变电源上的开关原件IRF3205实现PWM调整直流电机的通断频率,再加上散热片等,就可以解决问题,有兴趣的朋友大家可以一起试下,
想过用步进电机,之前做小车主要问题是小车惯性大,循迹速度快时容易跑飞。了接过PID算法,但感觉很难
0
回复
heal
LV.3
22
2014-02-22 22:30
@stony_s
想过用步进电机,之前做小车主要问题是小车惯性大,循迹速度快时容易跑飞。了接过PID算法,但感觉很难
这个做循迹不太适合
0
回复
heal
LV.3
23
2014-02-22 22:32
@金鱼1
楼主你可听说过PID算法
知道,我只是说一种解决方法而已
0
回复
金鱼1
LV.3
24
2014-02-22 22:32
@heal
知道,我只是说一种解决方法而已
步进这东西,总归有卡顿的

 

0
回复
heal
LV.3
25
2014-02-22 22:33
@金鱼1
步进这东西,总归有卡顿的 
卡顿?
0
回复
matou
LV.3
26
2014-02-22 22:35
@heal
知道,我只是说一种解决方法而已
12年的电赛时想出来的办法?

 

0
回复
heal
LV.3
27
2014-02-22 22:38
@matou
12年的电赛时想出来的办法? 
不是,只是个学校内部的比赛而已
0
回复
matou
LV.3
28
2014-02-22 22:39
@heal
不是,只是个学校内部的比赛而已
13年时改成四轴了,没研究过的确实不好弄
0
回复
heal
LV.3
29
2014-02-22 22:40
@heal
不是,只是个学校内部的比赛而已
太坑了,还有旋转倒立摆,完全措手不及
0
回复
backin
LV.4
30
2014-02-22 22:41
@heal
卡顿?
楼主好,你是在哪家店买的步进电机,能发个链接吗
0
回复
vidas
LV.2
31
2014-02-22 22:42
@heal
不是,只是个学校内部的比赛而已

好厉害的样子

 

0
回复