一、原理
步进电机步距角1.8°,导程为5mm,若采用4拍来控制,即每800拍转一圈,位移5mm。其额定电压为5V,额定电流为0.42A,若采用步进电机驱动器驱动,由于步进电机驱动器最小输出电流为0.5A,超过了所选步进电机额定电流,会造成电机发烫。故选择用L298N电机驱动模块对步进电机进行驱动。
对于两相步进电机,用4拍来控制,(未说明即为低电平)即A+,B-高电平为一拍,A+,B+高电平为一拍,A-,B+高电平为一拍,A-,B-高电平为一拍。按照这个顺序循环即为电机正转,反顺序循环即为电机反转。
二、接线
L298N模块如下:
通道A为out1与out2口,分别接电机的A+与A-相,分别由IN1与IN2控制,通道B为out3与out4口,分别接电机的B+与B- ,分别由IN3与IN4控制。IN1~IN4分别接单片机的空闲IO口引脚,(我接的PA1、PA5、PA8、PA4)主电源正负极分别接电源模块,5V输入需接单片机的5V输出引脚(接上后L298N可能会发烫,原因为电机运行完后拍数对应的IN1~IN4未置0,电机一直待机,模块就会发烫,也可以不接,这样即使IN1~IN4未置0,也不会发烫,不过电机运转不丝滑)。
三.代码
在头文件中对IN1~IN4进行定义:
#define dir1 PAout(1)
#define dir2 PAout(5)
#define dir3 PAout(8)
#define dir4 PAout(4)
正转代码:
反转代码:
将4拍作为一个脉冲,在脉冲数运行完毕后,对IN1~IN4置0,即可解决L298N发烫问题。
四、调速
对于用L298N模块控制的步进电机而言,其调速不需要通过PWM波来实现,仅需改变每个拍的延迟时间即可。