☛ 功能說明

利用 Arduino UNO 開發板控制步進馬達轉動,控制方式爲讀取可變電阻的電壓變化來改變步進馬達的轉動。步進馬達的轉動根據每次由可變電阻讀取值與前次的值比較,來改變步進馬達的轉動方向及轉動步數。

步進馬達簡介

步進電機是將電脈衝信號轉變爲角位移或線位移的開環控制元步進電機件。在非超載的情況下,電機的轉速、停止的位置只取決於脈衝信號的頻率和脈衝數,而不受負載變化的影響,當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度,稱爲 ” 步距角 “,它的旋轉是以固定的角度一步一步運行的。可以通過控制脈衝個數來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。

步進電機驅動方式:

⑴ 1 相勵磁法:每一瞬間只有一個線圈導通,其他線圈休息。其特點是勵磁方法簡單,耗電低,精確度良好。但是力矩小、震動大,每次勵磁信號走的角度是標稱角度。

⑵ 2 相勵磁法:每一瞬間有兩個線圈同時導通,特點是力矩大、震動較小,每次勵磁轉動角度是標稱角度。

⑶ 1-2 相勵磁法:1 相和 2 相輪流交替導通,精度較高,且運轉平滑。每送一個勵磁信號轉動二分之一標稱角度。有稱爲半步驅動。4 相電機中,1、2 種方式稱 4 相 4 拍,3 種稱 4 相 8 拍。

1 相勵磁、2 相勵磁和 1-2 相勵磁方式如下表所示。

ULN2003 芯片簡介

ULN2003 只能驅動單極電機,也就是有中間抽頭,電流只有一個方向流向。雙極電機需要 H 橋驅動,每個線圈可以正反向施加電壓。

☛ 使用材料

Arduino UNO R3  開發板 × 1、ULN2003 芯片 × 1、步進馬達 28BYJ-48 × 1、可變電阻 20KΩ × 1。

☛ 電路圖及麪包板接線圖

☛ 程式碼

#include <Stepper.h>                         //使用 Stepper.h 函式庫
#define STEPS 512                            //步進馬達的步進數

int previous = 0;                            //上一次的讀取模擬量

Stepper stepper(STEPS, 2, 4, 3, 5);          //建立 Steeper 資料形態的物件

void setup()
{
     stepper.setSpeed(20);                   //設定步進馬達的轉速爲 20 RPM
}

void loop()
{
     int val = analogRead(0);                //讀取 AD 值  
     stepper.step(val - previous);           //把步進值設置爲這次和上次讀取的差值
     previous = val;                         //記下這次讀取值,方便下次比較

}