我以2相4线步进电机为例介绍步进电机驱动原理。大家都知道:通电的导体在磁场中产生力的作用;通电的线圈产生磁场。前一条是直流电机驱动原理,这里不作介绍。后一条原理是步进电机的运动依据。先来看看2相4线步进电机构造示意图,如下:
从上图我们可以看出,步进电机有一个转子和一个定子。所谓转子,就是该器件是活动的,可以转动的。所谓定子,就是该器件是固定,不动的。转子,就是中间那个磁体,我们可看到它的N极、S极已经标出。定子,外围那个环,它上面绕着有A(A+)、B(B+)、A(A-)、B(B-)4个线圈,每个线圈都有引出一条给外部连接的线,其中A、A是一相,是连通的,暂且叫它A相,B、B是一相,是连通的,暂且叫它B相。2相4线的说法就是来自这里。A相或B相通电时,会让它自身变为一个磁体,这个磁体会对转子上的磁体产生强大引力,从而拉动转子的转动。当然,磁体的极性要有一定规律,力矩才能按照自己的需求作用在一个方向,不然力可能会被抵消,导致电机通电后不转动或者乱抖动。A相或B相通电的通电规律,就是我们熟悉的步进电机的时序问题。关于电机的时序,下面我们会用程序来介绍。先说明3个重要参数,如下:
齿距角: 表示两个齿距之间的夹角,我用的42步进电机有50个齿,齿距角α=360/50=7.2°
拍数:转过一个齿距角所需脉冲数,或者说完成一个磁场周期性变化所需脉冲数,用n表示,
下面程序是4拍运行方式,即AB→BA→AB→AB。
步距角:表示控制系统每发送一个脉冲信号,电机所转动的角度θ。θ=齿距角/拍数=7.2/4=1.8°。
我们需要用到的关于步进电机的关键信息上面已经介绍完,接下来要说的是这里所用2相4线步进电机的接线示意图,如下图:
最后,我以一个Arduino程序来说明步进电机的驱动过程。这里我用到:42步进电机 ;控制板,arduino nano开发板(HW-284);驱动板,L298N(HW-095)。接线示意图如下:
程序如下:
#include
#define D2 2 //A+ 黑线 OUT1
#define D3 3 //A- 绿线 OUT2
#define D4 4 //B+ 红线 OUT3
#define D5 5 //B- 蓝线 OUT4
void setup() {
pinMode(D2,OUTPUT);
pinMode(D3,OUTPUT);
pinMode(D4,OUTPUT);
pinMode(D5,OUTPUT);
}
void loop() {
//我使用的步进电机为50齿,齿距角为α=7.2°,让电机全步运行,也就是4拍,那么步距角 β=α/4,也就是发一个脉冲,电机转1.8°
//我想让电机转速为V=2转/s,那么可以算出每个脉冲的长度PL=(1000/2)/(360°/1.8°)=2.5ms
//AB通电
digitalWrite(D2,HIGH);
digitalWrite(D3,LOW);//A相正向通电
digitalWrite(D4,HIGH);
digitalWrite(D5,LOW);//B相正向通电
delay(2.5);//设置脉冲长度为2.5ms,电机转速为2转每秒
//BA通电
digitalWrite(D2,LOW);
digitalWrite(D3,HIGH);//A相反向通电
digitalWrite(D4,HIGH);
digitalWrite(D5,LOW);//B相正向通电
delay(2.5);
//AB通电
digitalWrite(D2,LOW);
digitalWrite(D3,HIGH);//A相反向通电
digitalWrite(D4,LOW);
digitalWrite(D5,HIGH);//B相反向通电
delay(2.5);
//AB通电
digitalWrite(D2,HIGH);
digitalWrite(D3,LOW);//A相正向通电
digitalWrite(D4,LOW);
digitalWrite(D5,HIGH);//B相反向通电
delay(2.5);
}
深圳市宏维微电子有限公司:20190922