日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机

發(fā)布時間:2024/9/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果您打算建造自己的3D打印機或CNC機器,則需要控制一堆步進電機。而且,由一個arduino控制所有這些,可能會占用大量的處理時間,并且不會給它留下很多做其他事情的空間。除非您使用獨立的專用步進電機驅(qū)動器– DRV8825。
它只需兩個引腳即可控制NEMA 17等雙極步進電機的速度和旋轉(zhuǎn)方向。多么酷啊!

您知道步進電機如何工作嗎?


步進電機使用帶齒的輪和電磁體來使輪一次“一步”旋轉(zhuǎn)。
發(fā)送的每個HIGH脈沖都會使線圈通電,吸引齒輪的最近齒,并一步步驅(qū)動電動機。


脈沖這些線圈的方式會極大地影響電動機的性能。

  • 脈沖序列確定電動機的旋轉(zhuǎn)方向。
  • 脈沖的頻率決定了電動機的速度。
  • 脈沖數(shù)確定電動機將旋轉(zhuǎn)多遠(多少步)。

DRV8825步進電機驅(qū)動器芯片


該模塊的核心是德州儀器(TI)的微步進驅(qū)動器芯片– DRV8825。它的體積很小(只有0.8英寸×0.6英寸),但仍然有力氣。


DRV8825步進電動機驅(qū)動器具有高達45V的輸出驅(qū)動能力,可讓您控制一個雙極步進電動機,每個線圈的最大輸出電流為2.2A。


該驅(qū)動程序具有內(nèi)置轉(zhuǎn)換器,易于操作。這樣可以將控制銷的數(shù)量減少到僅2個,一個用于控制步進,另一個用于控制旋轉(zhuǎn)方向。


驅(qū)動程序提供6種不同的步進分辨率。全步,半步,四分之一步,八,十六和三十二分之一步。


DRV8825電機驅(qū)動器引腳排列


DRV8825驅(qū)動程序共有16個引腳,可將其與外界連接。連接如下:


讓我們一一熟悉所有的引腳。


電源連接引腳


與其他典型的步進電機驅(qū)動器不同,DRV8825僅具有一個電源連接。

vmot 和 GND MOT 為電動機提供電源,該電源可以為8.2V至45V。
該模塊沒有任何邏輯電源引腳,因為DRV8825從內(nèi)部3V3穩(wěn)壓器獲取電源。

但是,您應(yīng)該將微控制器(如:arduino)的ground與接9號引腳,既GND LOGIC。

根據(jù)參考資料的數(shù)據(jù)表,電動機電源需要在靠近電路板的地方使用適當?shù)娜ヱ铍娙萜?#xff0c;以維持4A的電流。

警告: 該驅(qū)動器板上裝有低ESR陶瓷電容器,因此容易受到電壓尖峰的影響。 在某些情況下,這些尖峰會超過45V(DRV8825的最大額定電壓),可能會永久損壞電路板甚至電動機。 保護驅(qū)動器免受此類尖峰影響的一種方法是在電動機電源引腳之間放置一個大的100μF(至少47μF)電 解電容器。

微步選擇引腳

DRV8825驅(qū)動程序通過允許中間步進位置來允許微步進。這是通過以中等電流水平向線圈通電來實現(xiàn)的。 例如,如果您選擇以四分之一步模式驅(qū)動每轉(zhuǎn)1.8°或200步的NEMA 17,則電動機每轉(zhuǎn)將給出800微步。


DRV8825驅(qū)動器具有三個步長(分辨率)選擇器輸入,即: M0,M1和M2。通過為這些引腳設(shè)置適當?shù)倪壿嬰娖?#xff0c;我們可以將電動機設(shè)置為六個步進分辨率之一。

M0M1M2微步分辨率
全步
半步
1/4步
1/8步
1/16步
1/32步
1/32步
1/32步


這三個微步選擇引腳被內(nèi)部下拉電阻拉至低電平,因此,如果我們將其斷開,電動機將以全步模式運行。


控制輸入??引腳


DRV8825具有兩個控制輸入,即。STEP和DIR。

STEP控制電機的微步。發(fā)送到該引腳的每個HIGH脈沖都會通過微步選擇引腳設(shè)置的微步數(shù)來步進電動機。脈沖越快,電動機旋轉(zhuǎn)得越快。

DIR控制電動機的旋轉(zhuǎn)方向。將其拉高,將驅(qū)動電機順時針旋轉(zhuǎn),將其拉低,將驅(qū)動電機逆時針旋轉(zhuǎn)。


如果僅希望電動機沿單個方向旋轉(zhuǎn),則可以將DIR相應(yīng)地直接連接到VCC或GND。

控制電源狀態(tài)的引腳


DRV8825具有三個不同的輸入,用于控制其電源狀態(tài)。EN,RST和SLP。

EN引腳為低電平有效輸入,當拉低(邏輯0)時,DRV8825驅(qū)動器使能。默認情況下,此引腳被拉低,因此驅(qū)動器始終處于使能狀態(tài),除非您將其拉高。

SLP/SLEEP引腳為低電平有效輸入。這意味著將該引腳拉至低電平可使驅(qū)動器進入睡眠模式,從而將功耗降至最低。特別是在不使用電動機以節(jié)省功率時,可以調(diào)用此方法。

RST也是低電平有效輸入。將其拉低時,將忽略所有STEP輸入,直到將其拉高。它還通過將內(nèi)部轉(zhuǎn)換器設(shè)置為預定義的Home狀態(tài)來重置驅(qū)動程序。原始狀態(tài)基本上是電動機啟動的初始位置,并且它取決于微步分辨率。


故障檢測引腳


DRV8825還具有一個FAULT 由于過電流保護或熱關(guān)斷,每當禁用H橋FET時,該輸出就會驅(qū)動為低電平。


實際上,故障引腳與SLEEP引腳短路,因此,每當故障引腳驅(qū)動為LOW時,整個芯片就會被禁用。并保持禁用狀態(tài),直到移除或重新施加RESET或Motor Voltage VMOT。

輸出引腳


DRV8825電機驅(qū)動器的輸出通道通過以下方式分解到模塊的邊緣: B2,B1,A1和A2 針腳。


您可以將電壓在8.2V至45V之間的任何雙極步進電機連接到這些引腳。
模塊上的每個輸出引腳均可為電機提供高達2.2A的電流。但是,提供給電動機的電流量取決于系統(tǒng)的電源,冷卻系統(tǒng)和電流限制設(shè)置。

冷卻系統(tǒng)–散熱器


DRV8825驅(qū)動器IC的過多功耗會導致溫度升高,該溫度升高可能超出IC的容量,可能會損壞自身。


即使DRV8825驅(qū)動器IC的每個線圈的最大額定電流為2.2A,該芯片也只能為每個線圈提供約1.5A的電流而不會過熱。


為了實現(xiàn)每個線圈超過1.5A的電流,需要使用散熱器或其他冷卻方法。


DRV8825驅(qū)動器通常帶有散熱器。建議您在使用驅(qū)動程序之前先安裝它。

限流


在使用電動機之前,我們需要進行一些小的調(diào)整。我們需要限制流經(jīng)步進線圈的最大電流,并防止其超過電機的額定電流。


DRV8825驅(qū)動器上有一個微調(diào)電位器,可用于設(shè)置電流限制。您應(yīng)將電流限制設(shè)置為等于或小于電動機的額定電流。


要進行此調(diào)整,有兩種方法:

方法1:


在這種方法中,我們將通過測量“ ref”引腳上的電壓(Vref)來設(shè)置電流限制。

  • 查看您的步進電機的數(shù)據(jù)表。記下它的額定電流。在我們的實驗設(shè)置情況下,我們使用NEMA 17 200steps / rev,12V 350mA。
  • 斷開三個微步選擇引腳,使驅(qū)動器進入全步模式。
  • 不給STEP輸入計時,將電動機固定在固定位置。
  • 調(diào)整時,測量金屬微調(diào)電位器本身的電壓(Vref)。
  • 使用公式調(diào)整Vref電壓電流限制= Vref x 2
    例如,如果電動機的額定電流為350mA,則可以將參考電壓調(diào)整為0.175V。
  • 提示: 一種簡單的調(diào)整方法是在金屬螺絲刀的軸上使用一個鱷魚夾,然后將其固定在萬用表上, 以便您可以同時使用螺絲刀測量和調(diào)整電壓。

    方法2:

    在這種方法中,我們將通過測量流經(jīng)線圈的電流來設(shè)置電流極限。

  • 查看您的步進電機的數(shù)據(jù)表。記下它的額定電流。在我們的情況下,我們使用NEMA 17 200steps / rev,12V 350mA。
  • 斷開三個微步選擇引腳,使驅(qū)動器進入全步模式。
  • 不給STEP輸入計時,將電動機固定在固定位置。
  • 將電流表與步進電機上的一個線圈串聯(lián),然后測量實際電流。
  • 拿起一把小螺絲刀,調(diào)節(jié)電流限制電位器,直到達到額定電流。
  • 提示: 如果更改邏輯電壓(VDD),則需要再次執(zhí)行此調(diào)整


    用Arduino UNO接DRV8825步進電機驅(qū)動器


    我們了解了有關(guān)驅(qū)動器的所有知識,現(xiàn)在將其連接到我們的Arduino。


    連接非常簡單。首先將RST引腳連接到相鄰的SLP / SLEEP引腳,并將二者都連接到Arduino的5V,以保持驅(qū)動器啟用。


    將GND LOGIC引腳連接到Arduino的接地引腳。DIR和STEP輸入引腳分別連接到Arduino上的#2和#3數(shù)字輸出引腳。


    將步進電機連接到B2,B1,A1和A2引腳。實際上,DRV8825的布局很方便,可以與多個雙極電機上的4針連接器匹配,因此這不是問題。

    警告: 驅(qū)動器通電時連接或斷開步進電機會損壞驅(qū)動器。 切記斷開微步選擇引腳,以使電機以全步模式運行。 最后,將電動機電源連接到VMOT和GND MOT引腳。 切記在靠近電路板的電動機電源引腳之間放置一個較大的100pF去耦電解電容。

    Arduino代碼–基本示例


    下圖將使您對如何使用DRV8825步進電機驅(qū)動器控制雙極步進電機的速度和旋轉(zhuǎn)方向有完整的了解,并可作為更實際的實驗和項目的基礎(chǔ)。

    void setup() {// Declare pins as OutputspinMode(stepPin, OUTPUT);pinMode(dirPin, OUTPUT); } void loop() {// Set motor direction clockwisedigitalWrite(dirPin, HIGH);// Spin motor slowlyfor(int x = 0; x < stepsPerRevolution; x++){digitalWrite(stepPin, HIGH);delayMicroseconds(2000);digitalWrite(stepPin, LOW);delayMicroseconds(2000);}delay(1000); // Wait a second// Set motor direction counterclockwisedigitalWrite(dirPin, LOW);// Spin motor quicklyfor(int x = 0; x < stepsPerRevolution; x++){digitalWrite(stepPin, HIGH);delayMicroseconds(1000);digitalWrite(stepPin, LOW);delayMicroseconds(1000);}delay(1000); // Wait a second }


    代碼說明:
    草圖從定義DRV8825的STEP&DIR引腳連接到的Arduino引腳開始。我們也定義stepsPerRevolution。進行設(shè)置以符合您的步進電機規(guī)格。

    const int dirPin = 2; const int stepPin = 3; const int stepsPerRevolution = 200;


    在代碼的設(shè)置部分,所有電機控制引腳都聲明為數(shù)字輸出。

    pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT);

    在循環(huán)部分中,我們緩慢地順時針旋轉(zhuǎn)電動機,然后以一秒的間隔快速逆時針旋轉(zhuǎn)電動機。

    控制旋轉(zhuǎn)方向:為了控制電動機的旋轉(zhuǎn)方向,我們將DIR引腳設(shè)置為HIGH或LOW。高輸入將使電動機順時針旋轉(zhuǎn),而低輸入將使電動機逆時針旋轉(zhuǎn)。

    digitalWrite(dirPin, HIGH);

    控制速度:電動機的速度取決于我們發(fā)送到STEP引腳的脈沖的頻率。脈沖越高,電動機運行得越快。脈沖不過是將輸出拉為高電平,等待一會兒,然后將其拉低,然后再次等待。通過更改兩個脈沖之間的延遲,可以更改這些脈沖的頻率,從而更改電動機的速度。

    for(int x = 0; x < stepsPerRevolution; x++) {digitalWrite(stepPin, HIGH);delayMicroseconds(1000);digitalWrite(stepPin, LOW);delayMicroseconds(1000); }


    Arduino Code – 使用AccelStepper庫


    在沒有庫的情況下控制步進器非常適合簡單的單電機應(yīng)用。但是,如果要控制多個步進器,則需要一個庫。
    因此,在下一個實驗中,我們將使用稱為AccelStepper庫的高級步進電機庫。它支持:

    • 加減速。
    • 多個同時步進器,每個步進器具有獨立的并發(fā)步進。

    該庫未包含在Arduino IDE中,因此您需要首先安裝它。


    庫安裝


    要安裝庫,請導航至“Sketch”>“Include Library”>“Manage Libraries...”,等待庫管理器下載庫索引并更新已安裝庫的列表。


    輸入“ accelstepper”以過濾搜索。單擊第一個條目,然后選擇“安裝”。


    Arduino代碼


    這是一個簡單的程序,它使步進電機沿一個方向加速,然后減速以使其靜止。電動機旋轉(zhuǎn)一圈后,它將改變旋轉(zhuǎn)方向。而且它不斷地重復做。

    // Include the AccelStepper Library #include <AccelStepper.h>// Define pin connections const int dirPin = 2; const int stepPin = 3;// Define motor interface type #define motorInterfaceType 1// Creates an instance AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);void setup() {// set the maximum speed, acceleration factor,// initial speed and the target positionmyStepper.setMaxSpeed(1000);myStepper.setAcceleration(50);myStepper.setSpeed(200);myStepper.moveTo(200); }void loop() {// Change direction once the motor reaches target positionif (myStepper.distanceToGo() == 0) myStepper.moveTo(-myStepper.currentPosition());// Move the motor one stepmyStepper.run(); }

    代碼說明:
    我們首先包括新安裝的AccelStepper庫。

    #include <AccelStepper.h>


    我們定義了DRV8825的STEP&DIR引腳連接到的Arduino引腳。我們還將設(shè)置motorInterfaceType為1。(1表示帶有Step和Direction引腳的外部步進驅(qū)動器)

    // Define pin connections const int dirPin = 2; const int stepPin = 3;// Define motor interface type #define motorInterfaceType 1

    接下來,我們創(chuàng)建一個名為 myStepper 的步進器實例。

    AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

    在設(shè)置功能中,我們首先將電動機的最大速度設(shè)置為1000。然后,我們?yōu)殡妱訖C設(shè)置一個加速因子,以將加速度和減速度添加到步進電動機的運動中。

    接下來,我們將常規(guī)速度設(shè)置為200,并將其移動到200(由于NEMA 17每轉(zhuǎn)移動200步)。

    void setup() {myStepper.setMaxSpeed(1000);myStepper.setAcceleration(50);myStepper.setSpeed(200);myStepper.moveTo(200); }

    在循環(huán)功能中,我們使用If語句檢查電機distanceToGo到達目標位置(由設(shè)置)之前需要行駛多遠(通過讀取屬性moveTo)。一旦distanceToGo達到零,我們將通過將moveTo位置更改為當前位置的負值來沿相反方向移動電動機。

    現(xiàn)在,在循環(huán)的底部,您會注意到我們已經(jīng)調(diào)用了一個run()函數(shù)。這是最重要的功能,因為直到執(zhí)行此功能,步進器才會運行。

    void loop() {if (myStepper.distanceToGo() == 0) myStepper.moveTo(-myStepper.currentPosition());myStepper.run(); }

    總結(jié)

    以上是生活随笔為你收集整理的l298n电机驱动模块_带DRV8825驱动器模块和Arduino的控制步进电机的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。