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