步進電機是一種 直流電機,它以離散的步驟工作,從監控攝像頭到復雜的機器人和機器無處不在。NEMA 17 步進電機的步距角為 1.8°,這意味著 360° 旋轉需要 200 步。通過改變施加的控制信號的速率,我們可以很容易地控制電機的速度。通過將適當的邏輯電平應用于步進模塊的微步引腳,步進電機可以在不同的步進模式下運行,例如全步、半步、1/4 步。在我們之前的項目中,我們 使用 Arduino 控制了 28-BYJ48 步進電機。28-BYJ48 的扭矩比 NEMA 14、NEMA17 等其他步進電機低。
在本教程中,我們將使用 Arduino 和 DRV8825 步進模塊控制 NEMA 17 步進電機。我們還將使用電位器來控制步進電機的方向,使其順時針和逆時針方向旋轉。
所需組件
Arduino UNO
NEMA17步進電機
DRV8825 步進驅動器模塊
47 μf 電容器
電位器
Nema 17 步進電機驅動器 - DRV8825
步進驅動模塊控制步進電機的工作。步進驅動器通過各個相位將電流發送到步進電機。
DRV8825是類似于A4988 模塊的微步進驅動器模塊。它用于控制雙極步進電機。這個Nema 17 步進驅動器模塊有一個內置的轉換器,這意味著它可以只使用兩個引腳(即 STEP 和 DIR)來控制像 NEMA 17 這樣的雙極步進電機的速度和方向。STEP引腳用于控制步進,DIR引腳用于控制旋轉方向。
Nema 17 電機驅動器DRV8825 的最大輸出容量為 45V 和 ± 2.2 A。該驅動器可以在六種不同的步進模式下操作步進電機,即全步、半步、四分之一步、八分之一、第十六步和三十秒步。您可以使用微步引腳(M0、M1 和 M2)更改步長分辨率。通過為這些引腳設置適當的邏輯電平,我們可以將電機設置為六步分辨率之一。這些引腳的真值表如下:
DRV8825 步進電機驅動器模塊規格
最大限度。工作電壓:45 V
分鐘。工作電壓:8.2V
最大限度。每相電流:2.5 A
PCB 尺寸:15 毫米 x 20 毫米
特征
六步分辨率:整步、? 步、? 步、1/8、1/16 和 1/32 步
通過電位器調節輸出電流
自動電流衰減模式檢測
過溫關斷電路
欠壓鎖定
過流關斷
DRV8825 和 A4988 Nema 17 電機驅動器之間的區別
A4988 和 DRV8825 都有相似的引腳排列和應用,但是這些模塊在編號上有一些差異。微步,工作電壓等。一些關鍵區別如下:
DRV8825 提供六步模式,而 A4988 提供五步模式。更高的步進模式導致更平穩、更安靜的操作。
DRV8825 的最小 STEP 脈沖持續時間為 1.9μs,而 A4988 STEP 脈沖持續時間為 1μs。
DRV8825 可以提供比 A4988 稍多的電流,而無需任何額外的冷卻。
兩個模塊中限流電位器的位置不同。
DRV8825 可與更高電壓的電機電源一起使用。
默認情況下,DRV8825 上的 SLEEP 引腳不會像 A4988 上那樣上拉。
DRV8825 沒有電源電壓引腳,而是具有 FAULT 輸出引腳。
電路原理圖
上圖給出了用 Arduino 控制 Nema 17 的電路圖。步進電機使用 12V 電源供電,DRV8825 模塊通過 Arduino 供電。RST 和 SLEEP 引腳都連接到 Arduino 上的 5V 以保持驅動程序啟用。電位器連接到Arduino的A0引腳;它用于控制電機的方向。如果順時針轉動電位器,則步進器將順時針轉動,如果逆時針轉動電位器,則步進器將逆時針轉動。一個47 μf 電容器用于保護電路板免受電壓尖峰的影響。M0、M1 和 M2 引腳斷開,這意味著驅動器將在全步模式下運行。
下表給出了Arduino Nema 17 DRV8825的完整連接。
電流限制
在使用電機之前,使用限流電位器將 DRV8825 模塊的電流限制更改為 350mA。您可以使用萬用表測量電流限制。測量兩點 GND 和電位器之間的電流,并將其調整到所需的值。
代碼說明
本教程末尾提供了完整的代碼以及使用 Arduino 控制 Nema 17的工作視頻,在這里我們將解釋完整的程序以了解項目的工作。
之后定義 NEMA 17 的步驟數。NEMA 17 的每轉步數為 200。
?
#include#define STEPS 200
?
之后,指定驅動模塊連接的引腳,并將電機接口類型定義為 Type1,因為電機是通過驅動模塊連接的。
?
步進步進器(STEPS, 2, 3); #define motorInterfaceType 1
?
接下來使用stepper.setSpeed函數設置步進電機的速度。NEMA 17 的最大電機速度為 4688 RPM,但如果我們運行它的速度超過 1000 RPM,扭矩會迅速下降。
?
無效設置(){ stepper.setSpeed(800);
?
現在在主循環中,我們將從 A0 引腳讀取電位器值。在這個循環中,我們使用了兩個函數,一個是potVal,另一個是Pval。如果當前值,即potVal高于前一個值,則它將沿順時針方向移動十步,如果當前值小于前一個值,它將沿逆時針方向移動十步。
?
potVal = map(analogRead(A0),0,1024,0,500); if (potVal>Pval) stepper.step(10); if (potVal?
現在將 Arduino 與您的筆記本電腦連接,并使用 Arduino IDE 將代碼上傳到您的 Arduino UNO 板,選擇板和端口號,然后單擊上傳按鈕。
現在您可以使用電位器控制 Nema17 步進電機的方向。
#include
#define STEPS 200
//#define dirPin 2
//#define stepPin 3
// 定義步進電機連接和電機接口類型。使用驅動時電機接口類型必須設置為1:
Stepper stepper(STEPS, 2, 3);
#define motorInterfaceType 1
int Pval = 0;
詮釋potVal = 0;
void setup() {
// 以每秒步數為單位設置最大速度:
stepper.setSpeed(800);
// pinMode(stepPin, OUTPUT);
// pinMode(dirPin, OUTPUT);
}
void loop() {
potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(10);
if (potVal
stepper.step(-10);
Pval = potVal;
}
評論
查看更多