? ? ??我以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