l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机
如果您打算建造自己的3D打印機或CNC機器,則需要控制一堆步進電機。而且,由一個arduino控制所有這些,可能會占用大量的處理時間,并且不會給它留下很多做其他事情的空間。除非您使用獨立的專用步進電機驅動器– DRV8825。
它只需兩個引腳即可控制NEMA 17等雙極步進電機的速度和旋轉方向。多么酷啊!
您知道步進電機如何工作嗎?
步進電機使用帶齒的輪和電磁體來使輪一次“一步”旋轉。
發送的每個HIGH脈沖都會使線圈通電,吸引齒輪的最近齒,并一步步驅動電動機。
脈沖這些線圈的方式會極大地影響電動機的性能。
- 脈沖序列確定電動機的旋轉方向。
- 脈沖的頻率決定了電動機的速度。
- 脈沖數確定電動機將旋轉多遠(多少步)。
DRV8825步進電機驅動器芯片
該模塊的核心是德州儀器(TI)的微步進驅動器芯片– DRV8825。它的體積很小(只有0.8英寸×0.6英寸),但仍然有力氣。
DRV8825步進電動機驅動器具有高達45V的輸出驅動能力,可讓您控制一個雙極步進電動機,每個線圈的最大輸出電流為2.2A。
該驅動程序具有內置轉換器,易于操作。這樣可以將控制銷的數量減少到僅2個,一個用于控制步進,另一個用于控制旋轉方向。
驅動程序提供6種不同的步進分辨率。全步,半步,四分之一步,八,十六和三十二分之一步。
DRV8825電機驅動器引腳排列
DRV8825驅動程序共有16個引腳,可將其與外界連接。連接如下:
讓我們一一熟悉所有的引腳。
電源連接引腳
與其他典型的步進電機驅動器不同,DRV8825僅具有一個電源連接。
vmot 和 GND MOT 為電動機提供電源,該電源可以為8.2V至45V。
該模塊沒有任何邏輯電源引腳,因為DRV8825從內部3V3穩壓器獲取電源。
但是,您應該將微控制器(如:arduino)的ground與接9號引腳,既GND LOGIC。
根據參考資料的數據表,電動機電源需要在靠近電路板的地方使用適當的去耦電容器,以維持4A的電流。
警告: 該驅動器板上裝有低ESR陶瓷電容器,因此容易受到電壓尖峰的影響。 在某些情況下,這些尖峰會超過45V(DRV8825的最大額定電壓),可能會永久損壞電路板甚至電動機。 保護驅動器免受此類尖峰影響的一種方法是在電動機電源引腳之間放置一個大的100μF(至少47μF)電 解電容器。微步選擇引腳
DRV8825驅動程序通過允許中間步進位置來允許微步進。這是通過以中等電流水平向線圈通電來實現的。 例如,如果您選擇以四分之一步模式驅動每轉1.8°或200步的NEMA 17,則電動機每轉將給出800微步。
DRV8825驅動器具有三個步長(分辨率)選擇器輸入,即: M0,M1和M2。通過為這些引腳設置適當的邏輯電平,我們可以將電動機設置為六個步進分辨率之一。
| M0 | M1 | M2 | 微步分辨率 | 
| 低 | 低 | 低 | 全步 | 
| 高 | 低 | 低 | 半步 | 
| 低 | 高 | 低 | 1/4步 | 
| 高 | 高 | 低 | 1/8步 | 
| 低 | 低 | 高 | 1/16步 | 
| 高 | 低 | 高 | 1/32步 | 
| 低 | 高 | 高 | 1/32步 | 
| 高 | 高 | 高 | 1/32步 | 
這三個微步選擇引腳被內部下拉電阻拉至低電平,因此,如果我們將其斷開,電動機將以全步模式運行。
控制輸入??引腳
DRV8825具有兩個控制輸入,即。STEP和DIR。
STEP控制電機的微步。發送到該引腳的每個HIGH脈沖都會通過微步選擇引腳設置的微步數來步進電動機。脈沖越快,電動機旋轉得越快。
DIR控制電動機的旋轉方向。將其拉高,將驅動電機順時針旋轉,將其拉低,將驅動電機逆時針旋轉。
如果僅希望電動機沿單個方向旋轉,則可以將DIR相應地直接連接到VCC或GND。
控制電源狀態的引腳
DRV8825具有三個不同的輸入,用于控制其電源狀態。EN,RST和SLP。
EN引腳為低電平有效輸入,當拉低(邏輯0)時,DRV8825驅動器使能。默認情況下,此引腳被拉低,因此驅動器始終處于使能狀態,除非您將其拉高。
SLP/SLEEP引腳為低電平有效輸入。這意味著將該引腳拉至低電平可使驅動器進入睡眠模式,從而將功耗降至最低。特別是在不使用電動機以節省功率時,可以調用此方法。
RST也是低電平有效輸入。將其拉低時,將忽略所有STEP輸入,直到將其拉高。它還通過將內部轉換器設置為預定義的Home狀態來重置驅動程序。原始狀態基本上是電動機啟動的初始位置,并且它取決于微步分辨率。
故障檢測引腳
DRV8825還具有一個FAULT 由于過電流保護或熱關斷,每當禁用H橋FET時,該輸出就會驅動為低電平。
實際上,故障引腳與SLEEP引腳短路,因此,每當故障引腳驅動為LOW時,整個芯片就會被禁用。并保持禁用狀態,直到移除或重新施加RESET或Motor Voltage VMOT。
輸出引腳
DRV8825電機驅動器的輸出通道通過以下方式分解到模塊的邊緣: B2,B1,A1和A2 針腳。
您可以將電壓在8.2V至45V之間的任何雙極步進電機連接到這些引腳。
模塊上的每個輸出引腳均可為電機提供高達2.2A的電流。但是,提供給電動機的電流量取決于系統的電源,冷卻系統和電流限制設置。
冷卻系統–散熱器
DRV8825驅動器IC的過多功耗會導致溫度升高,該溫度升高可能超出IC的容量,可能會損壞自身。
即使DRV8825驅動器IC的每個線圈的最大額定電流為2.2A,該芯片也只能為每個線圈提供約1.5A的電流而不會過熱。
為了實現每個線圈超過1.5A的電流,需要使用散熱器或其他冷卻方法。
DRV8825驅動器通常帶有散熱器。建議您在使用驅動程序之前先安裝它。
限流
在使用電動機之前,我們需要進行一些小的調整。我們需要限制流經步進線圈的最大電流,并防止其超過電機的額定電流。
DRV8825驅動器上有一個微調電位器,可用于設置電流限制。您應將電流限制設置為等于或小于電動機的額定電流。
要進行此調整,有兩種方法:
方法1:
在這種方法中,我們將通過測量“ ref”引腳上的電壓(Vref)來設置電流限制。
例如,如果電動機的額定電流為350mA,則可以將參考電壓調整為0.175V。
方法2:
在這種方法中,我們將通過測量流經線圈的電流來設置電流極限。
用Arduino UNO接DRV8825步進電機驅動器
我們了解了有關驅動器的所有知識,現在將其連接到我們的Arduino。
連接非常簡單。首先將RST引腳連接到相鄰的SLP / SLEEP引腳,并將二者都連接到Arduino的5V,以保持驅動器啟用。
將GND LOGIC引腳連接到Arduino的接地引腳。DIR和STEP輸入引腳分別連接到Arduino上的#2和#3數字輸出引腳。
將步進電機連接到B2,B1,A1和A2引腳。實際上,DRV8825的布局很方便,可以與多個雙極電機上的4針連接器匹配,因此這不是問題。
Arduino代碼–基本示例
下圖將使您對如何使用DRV8825步進電機驅動器控制雙極步進電機的速度和旋轉方向有完整的了解,并可作為更實際的實驗和項目的基礎。
代碼說明:
草圖從定義DRV8825的STEP&DIR引腳連接到的Arduino引腳開始。我們也定義stepsPerRevolution。進行設置以符合您的步進電機規格。
在代碼的設置部分,所有電機控制引腳都聲明為數字輸出。
在循環部分中,我們緩慢地順時針旋轉電動機,然后以一秒的間隔快速逆時針旋轉電動機。
控制旋轉方向:為了控制電動機的旋轉方向,我們將DIR引腳設置為HIGH或LOW。高輸入將使電動機順時針旋轉,而低輸入將使電動機逆時針旋轉。
digitalWrite(dirPin, HIGH);控制速度:電動機的速度取決于我們發送到STEP引腳的脈沖的頻率。脈沖越高,電動機運行得越快。脈沖不過是將輸出拉為高電平,等待一會兒,然后將其拉低,然后再次等待。通過更改兩個脈沖之間的延遲,可以更改這些脈沖的頻率,從而更改電動機的速度。
for(int x = 0; x < stepsPerRevolution; x++) {digitalWrite(stepPin, HIGH);delayMicroseconds(1000);digitalWrite(stepPin, LOW);delayMicroseconds(1000); }
Arduino Code – 使用AccelStepper庫
在沒有庫的情況下控制步進器非常適合簡單的單電機應用。但是,如果要控制多個步進器,則需要一個庫。
因此,在下一個實驗中,我們將使用稱為AccelStepper庫的高級步進電機庫。它支持:
- 加減速。
- 多個同時步進器,每個步進器具有獨立的并發步進。
該庫未包含在Arduino IDE中,因此您需要首先安裝它。
庫安裝
要安裝庫,請導航至“Sketch”>“Include Library”>“Manage Libraries...”,等待庫管理器下載庫索引并更新已安裝庫的列表。
輸入“ accelstepper”以過濾搜索。單擊第一個條目,然后選擇“安裝”。
Arduino代碼
這是一個簡單的程序,它使步進電機沿一個方向加速,然后減速以使其靜止。電動機旋轉一圈后,它將改變旋轉方向。而且它不斷地重復做。
代碼說明:
我們首先包括新安裝的AccelStepper庫。
我們定義了DRV8825的STEP&DIR引腳連接到的Arduino引腳。我們還將設置motorInterfaceType為1。(1表示帶有Step和Direction引腳的外部步進驅動器)
接下來,我們創建一個名為 myStepper 的步進器實例。
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);在設置功能中,我們首先將電動機的最大速度設置為1000。然后,我們為電動機設置一個加速因子,以將加速度和減速度添加到步進電動機的運動中。
接下來,我們將常規速度設置為200,并將其移動到200(由于NEMA 17每轉移動200步)。
void setup() {myStepper.setMaxSpeed(1000);myStepper.setAcceleration(50);myStepper.setSpeed(200);myStepper.moveTo(200); }在循環功能中,我們使用If語句檢查電機distanceToGo到達目標位置(由設置)之前需要行駛多遠(通過讀取屬性moveTo)。一旦distanceToGo達到零,我們將通過將moveTo位置更改為當前位置的負值來沿相反方向移動電動機。
現在,在循環的底部,您會注意到我們已經調用了一個run()函數。這是最重要的功能,因為直到執行此功能,步進器才會運行。
void loop() {if (myStepper.distanceToGo() == 0) myStepper.moveTo(-myStepper.currentPosition());myStepper.run(); }總結
以上是生活随笔為你收集整理的l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Canalys:三季度国内高端智能手机出
- 下一篇: SpaceX 猎鹰 9 号火箭将 O3b
