大功率 電機驅動GP36
產品簡介
MD01是一款由4個分立MOSFET組成的H橋高功率電機驅動器,H橋的每條支路由一個N溝道的MOSFET組成;核心的電機驅動芯片用來處理外圍輸入信號和控制MOSFET的打開與關閉。MD01高功率電機驅動器支持6-30V寬電壓輸入,較高的電壓可能永久的損壞驅動器。 該驅動器適用於多種電機驅動場合,它可以提供高達17A的持續電流,而不需要額外安裝散熱片。模塊的尺寸為4.6cm*4.6cm,支持1.8-5V範圍內的控制信號,只需要控制兩個IO口即可實現電機的正反轉以及速度控制。電機驅動器集成了電流檢測功能,IC內部集成了PWM電流調節功能,可以通過改變外部電阻值將電機電流限制在配置的閾值範圍內。SLP引腳置為低電平時可以使MD01驅動模塊進入低功耗模式,進而實現較低的靜態電流損耗,約為9uA。
參數規格
- 工作電壓:6V-30V(推薦24V以下)
- 工作電流:17A持續
- 邏輯輸入:1.8V,3.3V,5V(max)
- PWM頻率:100kHz
- 電流檢測:50mV/A (僅在H橋工作時有效)
- 欠壓保護:有
- 短路保護:有
功能與接線
註:模塊右側引腳VCC,GND,E1,E2為編碼器連接轉接端口,需要外接電源輸入,不接編碼器時不接線。多個電源時需共GND。
頻率
MD01電機驅動器支持高達100KHZ的PWM頻率,有一點值得注意的是,驅動電路的開關損耗也將正比PWM頻率,因此建議正常的PWM頻率為20KHZ左右。
PWM引腳上的脈衝信號寬度必須持續大概0.5us以上(小於0.5us的輸入脈衝不會在輸出端產生變化),因此較低頻率的占空比在高頻時不可用。如當使用100khz時,脈衝周期為10us,可實現的最小非零占空比即為0.5us/10us,也就是5%。
電流檢測
MD01電機驅動器的CS引腳可用來檢測輸出端的工作電流。該功能僅在H橋正常工作時才有效(制動模式、緩慢衰減模式,啟動、停止瞬間都是無效的),CS引腳的輸出電壓大概為50mV/A+50mV的偏移值。如果負載端工作電流為10A,那麼CS引腳的輸出電壓值則為50mV/A *10A+50mV=550mV。
電機頻繁的啟動與停止的瞬間,電流瞬時值可達到正常工作時的5-7倍。默認狀態下,電機的極限電流值設定為30A。
Arduino 擴展庫
Arduino library : https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library
示例代碼
接線說明:
SLP連接arduino UNO數字端口2,PWM連接數字口5,DIR連接數字口4,GND連接arduino UNO的GND。
/*************************************************** Motor Test - MD Motor Drive MD_01 , MD_02 , MD_03 , MD_04 , MD_GB36 motor driver library: https://github.com/YFROBOT-TM/Yfrobot-Motor-Driver-Library YFROBOT ZL 10/14/2020 ****************************************************/ #include <MotorDriver.h> #define MOTORTYPE YF_MD // these constants are used to allow you to make your motor configuration // line up with function names like forward. Value can be 1 or -1 const int offseta = 1; const int offsetb = 1; // Initializing motors. // MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ASLP_PIN); // MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offseta, YF_MD04_BSLP_PIN); MotorDriver motora = MotorDriver(MOTORTYPE, YF_MD04_ADIR_PIN, YF_MD04_APWM_PIN, offseta, YF_MD04_ACS_PIN, YF_MD04_ASLP_PIN); MotorDriver motorb = MotorDriver(MOTORTYPE, YF_MD04_BDIR_PIN, YF_MD04_BPWM_PIN, offsetb, YF_MD04_BCS_PIN, YF_MD04_BSLP_PIN); void setup() { Serial.begin(9600); Serial.println("Motor Drive test!"); } void loop() { motora.setMotor(255); // 电机M1全速正转 motorb.setMotor(255); // 电机M2全速正转 delay(500); motora.setMotor(0); // 电机M1停止 motorb.setMotor(0); // 电机M2停止 delay(500); motora.setMotor(-127); // 电机M1 50%速度反转 motorb.setMotor(-127); // 电机M1 50%速度反转 delay(500); motora.setMotor(0); // 电机M1停止 motorb.setMotor(0); // 电机M2停止 delay(500); motora.setMotor(255); // 电机M1全速正转 motorb.setMotor(255); // 电机M2全速正转 delay(500); motora.getMotorCurrent(); // 获取电流检测口的模拟值 - 输出电压与电流电流成正比(50mV/A),电流为零时电压为0.05V }