一、目的
这一节我们学习如何使用我们的ESP32开发板来控制步进电机。
二、环境
ESP32 + 步进电机 + Thonny IDE + 几根杜邦线 + DC直流电源(可选)
步进电机型号:28BYJ-48(某宝上可以买到),其对应的驱动板芯片型号是:ULN2003
接线示意图:
注意1:步进电机停止后需要使四个相位引脚都为高电平,否则步进电机会发热。因为不进电机公共端为高电平,所有引脚都为高电平就不会产生电流,就不会发热。
注意2:建议采用外接直流电源 DC5-12V,直接接在驱动板上即可。避免直接从开发板5V角取电,以免烧坏开发板。
此此电机64步旋转一周,步距角是5.625度。以4拍或者8拍运行。
三、步进电机原理
关于五步四相步进电机,网上有很多介绍,我这里简单介绍下,更多知识请大家自行搜索学习,有好的资源,请评论区留言分享,谢谢!
看下图:开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
步进电机型号:24BYJ-48,直流5-12V供电
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以实现对步进电机的转向、速度和旋转角度的控制。
配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。
它的旋转是以固定的角度一步一步运行的,可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的。同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机运行的速度越快,所能输出的转矩越小,容易造成失步(内部齿轮打滑)。步进电机运行的速度越快慢,转矩就越大越稳。
步进电机矩频特性:
步进电机的磁极数量规格和接线规格很多,为简化问题,我们这里就先只以四相步进电机为例进行讨论。
所谓四相,就是说电机内部有4对磁极,此外还有一个公共端(COM)接电源,另外的A、B、C、D是四相的接头。而四相电机的可以向外引出六条接线(两条COM共同接入Vcc),也可以引出五条线,如下图所示,所以我们在购买时会看到有六线四相制和五线四相制的步进电机。
其中A、B、C、D四相接头是需要连接到单片机IO端,通过一定方式改变四相接口的通电状态来控制电机正反转动(下面有介绍)
四、步进电机参数
在以上众多参数中,单片机软件开发时,最需要了解的参数即为 步距角。
如上图所示,步距角=5.625°/64,其意思就是每64个脉冲步进电机就会转5.625度。
因此可以很容易的得出旋转角度与脉冲之间的计算公式:pulse=(angle/5.625) * 65(划重点)
例如让电机转一圈有360°,那么转一圈的脉冲数为 (360 / 5.625) * 64 = 4096 个脉冲。
五、步进电机驱动方式
驱动分三种模式,下表黄色区域中的1表示单片机对应管脚输出高电平、0表示输出低电平。步进电机四相对应的单片机管脚按照下表中的步序和频率依次输出电平即可驱动电机。
1.单四拍
这是最简单的步进电机驱动方式。这种方式,电机在每个瞬间只有一个线圈导通,消耗电力小。但在切换瞬间时没有任何的电磁作用在转子上,容易造成振动,也容易因为惯性而失步。
单四拍步序
2.双四拍
这种方式输出的转矩较大且振动较少,切换过程中至少有一个线圈通电作用于转子,使得输出的转矩较大,振动较小,也比单四拍平稳,不易失步。
双四拍步序
3.八拍
综合上述两种驱动信号,使用单四拍和双四拍交替进行的方式,每传送一个励磁信号,步进电机前进半个步距角。其特点是分辨率高,运转更加平滑,也是最常用的一种方式。
八拍步序
下面是这三种驱动方式的时序波形图
时序图
六、驱动问题
因为数字I/O口电流较小。因此,我们想到了使用晶体管进行放大。使用诸如ULN2003和ULN2803这样的激励器,它实际是内部集成好了放大功能的集成电路芯片,此外也无需额外添加二极管,因为它已经内置了。
我们以ULN2003为例,现有的驱动板可以用来驱动步进电机,我们只需要选择单片机的四