“(SKU:RB-01C066)Arduino VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板”的版本間的差異
(未顯示1個(gè)用戶的1個(gè)中間版本) | |||
第13行: | 第13行: | ||
# 最大PWM頻率:20KHZ | # 最大PWM頻率:20KHZ | ||
# 反向電壓保護(hù)模式:有 | # 反向電壓保護(hù)模式:有 | ||
? | == | + | ==接口介紹== |
VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與arduino連接示意圖 | VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與arduino連接示意圖 | ||
[[文件:RB-01C0661.jpg|700px|縮略圖|居中]] | [[文件:RB-01C0661.jpg|700px|縮略圖|居中]] | ||
+ | 與Arduino I/O 接口對(duì)應(yīng)說明 | ||
+ | [[文件:RB-01C06601.png|700px|縮略圖|居中]] | ||
VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與其他微控制器連接示意圖 | VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與其他微控制器連接示意圖 | ||
[[文件:RB-01C0662.jpg|700px|縮略圖|居中]] | [[文件:RB-01C0662.jpg|700px|縮略圖|居中]] | ||
? | |||
? | |||
==應(yīng)用例程== | ==應(yīng)用例程== | ||
? | === | + | ===例子程序=== |
+ | 程序編譯上傳之前需要先下載庫(kù)文件[http://pan.baidu.com/s/1i3Laedn DualVNH5019MotorShield.zip],將庫(kù)文件解壓后,放到Arduino軟件安裝路徑的libraries文件夾下,重新啟動(dòng)Arduino IDE軟件,再進(jìn)行例子程序的編譯,否則會(huì)造成程序編譯不成功問題。<br/> | ||
<pre style='color:blue'> | <pre style='color:blue'> | ||
#include "DualVNH5019MotorShield.h" | #include "DualVNH5019MotorShield.h" | ||
第27行: | 第28行: | ||
void stopIfFault() | void stopIfFault() | ||
{ | { | ||
? | if (md.getM1Fault()) | + | if (md.getM1Fault()) |
? | { | + | { |
? | Serial.println("M1 fault"); | + | Serial.println("M1 fault"); |
? | while(1); | + | while(1); |
? | } | + | } |
? | if (md.getM2Fault()) | + | if (md.getM2Fault()) |
? | { | + | { |
? | Serial.println("M2 fault"); | + | Serial.println("M2 fault"); |
? | while(1); | + | while(1); |
? | } | + | } |
? | } | + | } |
void setup() | void setup() | ||
{ | { | ||
? | Serial.begin(115200); | + | Serial.begin(115200); |
? | Serial.println("Dual VNH5019 Motor Shield"); | + | Serial.println("Dual VNH5019 Motor Shield"); |
? | md.init(); | + | md.init(); |
} | } | ||
+ | |||
void loop() | void loop() | ||
{ | { | ||
? | for (int i = 0; i <= 400; i++) | + | for (int i = 0; i <= 400; i++) |
? | { | + | { |
? | md.setM1Speed(i); | + | md.setM1Speed(i); |
? | stopIfFault(); | + | stopIfFault(); |
? | if (i%200 == 100) | + | if (i%200 == 100) |
? | { | + | { |
? | Serial.print("M1 current: "); | + | Serial.print("M1 current: "); |
? | Serial.println(md.getM1CurrentMilliamps()); | + | Serial.println(md.getM1CurrentMilliamps()); |
? | } | + | } |
? | delay(2); | + | delay(2); |
? | } | + | } |
? | for (int i = 400; i >= -400; i--) | + | |
? | { | + | for (int i = 400; i >= -400; i--) |
? | md.setM1Speed(i); | + | { |
? | stopIfFault(); | + | md.setM1Speed(i); |
? | if (i%200 == 100) | + | stopIfFault(); |
? | { | + | if (i%200 == 100) |
? | Serial.print("M1 current: "); | + | { |
? | Serial.println(md.getM1CurrentMilliamps()); | + | Serial.print("M1 current: "); |
? | } | + | Serial.println(md.getM1CurrentMilliamps()); |
? | delay(2); | + | } |
? | } | + | delay(2); |
? | for (int i = -400; i <= 0; i++) | + | } |
? | { | + | |
? | md.setM1Speed(i); | + | for (int i = -400; i <= 0; i++) |
? | stopIfFault(); | + | { |
? | if (i%200 == 100) | + | md.setM1Speed(i); |
? | { | + | stopIfFault(); |
? | Serial.print("M1 current: "); | + | if (i%200 == 100) |
? | Serial.println(md.getM1CurrentMilliamps()); | + | { |
? | } | + | Serial.print("M1 current: "); |
? | delay(2); | + | Serial.println(md.getM1CurrentMilliamps()); |
? | } | + | } |
? | for (int i = 0; i <= 400; i++) | + | delay(2); |
? | { | + | } |
? | md.setM2Speed(i); | + | |
? | stopIfFault(); | + | for (int i = 0; i <= 400; i++) |
? | if (i%200 == 100) | + | { |
? | { | + | md.setM2Speed(i); |
? | Serial.print("M2 current: "); | + | stopIfFault(); |
? | Serial.println(md.getM2CurrentMilliamps()); | + | if (i%200 == 100) |
? | } | + | { |
? | delay(2); | + | Serial.print("M2 current: "); |
? | } | + | Serial.println(md.getM2CurrentMilliamps()); |
? | for (int i = 400; i >= -400; i--) | + | } |
? | { | + | delay(2); |
? | md.setM2Speed(i); | + | } |
? | stopIfFault(); | + | |
? | if (i%200 == 100) | + | for (int i = 400; i >= -400; i--) |
? | { | + | { |
? | Serial.print("M2 current: "); | + | md.setM2Speed(i); |
? | Serial.println(md.getM2CurrentMilliamps()); | + | stopIfFault(); |
? | } | + | if (i%200 == 100) |
? | delay(2); | + | { |
? | } | + | Serial.print("M2 current: "); |
? | for (int i = -400; i <= 0; i++) | + | Serial.println(md.getM2CurrentMilliamps()); |
? | { | + | } |
? | md.setM2Speed(i); | + | delay(2); |
? | stopIfFault(); | + | } |
? | if (i%200 == 100) | + | |
? | { | + | for (int i = -400; i <= 0; i++) |
? | Serial.print("M2 current: "); | + | { |
? | Serial.println(md.getM2CurrentMilliamps()); | + | md.setM2Speed(i); |
? | } | + | stopIfFault(); |
? | delay(2); | + | if (i%200 == 100) |
? | } | + | { |
+ | Serial.print("M2 current: "); | ||
+ | Serial.println(md.getM2CurrentMilliamps()); | ||
+ | } | ||
+ | delay(2); | ||
+ | } | ||
} | } | ||
</pre> | </pre> | ||
第119行: | 第126行: | ||
[[文件:erweima.png|230px|無框|右]] | [[文件:erweima.png|230px|無框|右]] | ||
===產(chǎn)品購(gòu)買地址=== | ===產(chǎn)品購(gòu)買地址=== | ||
? | + | [http://lifestyle201.com/goods-503.html Arduino VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板]<br/> | |
===周邊產(chǎn)品推薦=== | ===周邊產(chǎn)品推薦=== | ||
? | + | [http://lifestyle201.com/goods-47.html 雙H橋直流電機(jī)驅(qū)動(dòng)板]<br/> | |
+ | [http://lifestyle201.com/goods-529.html RoboClaw 2x5A 電機(jī)驅(qū)動(dòng)板 (V4)]<br/> | ||
+ | [http://lifestyle201.com/goods-530.html RoboClaw 電機(jī)驅(qū)動(dòng)板 2x30A ]<br/> | ||
+ | [http://lifestyle201.com/goods-631.html RoboClaw 電機(jī)驅(qū)動(dòng)板 2x15A]<br/> | ||
===相關(guān)問題解答=== | ===相關(guān)問題解答=== | ||
? | + | [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3294&fromuid=10780 VNH5019 電機(jī)驅(qū)動(dòng)板的 電流檢測(cè)問題]<br/> | |
===相關(guān)學(xué)習(xí)資料=== | ===相關(guān)學(xué)習(xí)資料=== | ||
? | + | [http://www.makerspace.cn/portal.php 奧松機(jī)器人技術(shù)論壇]<br/> | |
? | + | [https://www.pololu.com/file/download/dual-vnh5019-motor-driver-shield-schematic-diagram.pdf?file_id=0J740 VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板原理圖]<br/> | |
? | + | [https://www.pololu.com/docs/0J49 VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板官方英文版使用說明]<br/> | |
? | + | [https://github.com/pololu/dual-vnh5019-motor-shield VNH5019庫(kù)文件官方下載地址]<br/> | |
? | + |
2015年10月8日 (四) 16:46的最后版本
目錄 |
產(chǎn)品概述
Pololu VNH5019雙路大功率直流電機(jī)驅(qū)動(dòng)擴(kuò)展板,可以很容易插入到Arduino各種兼容控制器,如常用的Arduino UNO R3、Carduino、Seeeduino等,擴(kuò)展板采用ST公司生產(chǎn)的VNH5019驅(qū)動(dòng)芯片,工作電壓從5.5V到24V,每路提供12A大小的電流到30A的峰值電流,可謂是悍馬級(jí)直流電機(jī)驅(qū)動(dòng)板。整板采用SMD表貼元件,體積小、重量輕,通過Arduino控制可以輕松控制兩個(gè)雙向、高功率直流電機(jī)。 板載上拉電阻和保護(hù)電阻和FET的反向電池保護(hù)。本擴(kuò)展板默認(rèn)IO接口設(shè)置不方便,也可以自定義映射Arduino引腳,此款驅(qū)動(dòng)器簡(jiǎn)單易用,性能與功率大大超越初學(xué)者所用L298系列驅(qū)動(dòng)器。 此款擴(kuò)展板,端子和排座散裝未焊接,愛好者可以自定義選擇接線方式,推薦接線方式:可以直接用電烙鐵焊接電機(jī)輸出引線,而不用接線端子,因?yàn)榻泳€端子會(huì)增大電阻影響電機(jī)性能發(fā)揮,如果要經(jīng)常更換電機(jī)使用的話,可以采用接線端子,這樣方便更換電機(jī)接線。
規(guī)格參數(shù)
- 產(chǎn)品名稱: Arduino VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板
- 產(chǎn)品貨號(hào):RB-01C066
- 工作電壓范圍:5.5V- 24V
- 驅(qū)動(dòng)芯片:VNH5019
- 驅(qū)動(dòng)通道:2路
- 單通道連續(xù)輸出電流值:12A
- 單通道最大輸出電流值:30A
- 電流檢測(cè)值:0.14 V/A
- 最大PWM頻率:20KHZ
- 反向電壓保護(hù)模式:有
接口介紹
VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與arduino連接示意圖
與Arduino I/O 接口對(duì)應(yīng)說明
VNH5019雙路驅(qū)動(dòng)擴(kuò)展板與其他微控制器連接示意圖
應(yīng)用例程
例子程序
程序編譯上傳之前需要先下載庫(kù)文件DualVNH5019MotorShield.zip,將庫(kù)文件解壓后,放到Arduino軟件安裝路徑的libraries文件夾下,重新啟動(dòng)Arduino IDE軟件,再進(jìn)行例子程序的編譯,否則會(huì)造成程序編譯不成功問題。
#include "DualVNH5019MotorShield.h" DualVNH5019MotorShield md; void stopIfFault() { if (md.getM1Fault()) { Serial.println("M1 fault"); while(1); } if (md.getM2Fault()) { Serial.println("M2 fault"); while(1); } } void setup() { Serial.begin(115200); Serial.println("Dual VNH5019 Motor Shield"); md.init(); } void loop() { for (int i = 0; i <= 400; i++) { md.setM1Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M1 current: "); Serial.println(md.getM1CurrentMilliamps()); } delay(2); } for (int i = 400; i >= -400; i--) { md.setM1Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M1 current: "); Serial.println(md.getM1CurrentMilliamps()); } delay(2); } for (int i = -400; i <= 0; i++) { md.setM1Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M1 current: "); Serial.println(md.getM1CurrentMilliamps()); } delay(2); } for (int i = 0; i <= 400; i++) { md.setM2Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M2 current: "); Serial.println(md.getM2CurrentMilliamps()); } delay(2); } for (int i = 400; i >= -400; i--) { md.setM2Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M2 current: "); Serial.println(md.getM2CurrentMilliamps()); } delay(2); } for (int i = -400; i <= 0; i++) { md.setM2Speed(i); stopIfFault(); if (i%200 == 100) { Serial.print("M2 current: "); Serial.println(md.getM2CurrentMilliamps()); } delay(2); } }
程序效果
這個(gè)例子的坡道1號(hào)電機(jī)轉(zhuǎn)速?gòu)牧愕阶畲笏俣?,然后從最大速度反向,回零再過了約3秒,當(dāng)檢查電機(jī)故障和定期印刷電機(jī)電流的串行監(jiān)視器時(shí)。執(zhí)行電機(jī)2相同的過程在重復(fù)一遍。
產(chǎn)品相關(guān)推薦
產(chǎn)品購(gòu)買地址
Arduino VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板
周邊產(chǎn)品推薦
雙H橋直流電機(jī)驅(qū)動(dòng)板
RoboClaw 2x5A 電機(jī)驅(qū)動(dòng)板 (V4)
RoboClaw 電機(jī)驅(qū)動(dòng)板 2x30A
RoboClaw 電機(jī)驅(qū)動(dòng)板 2x15A
相關(guān)問題解答
VNH5019 電機(jī)驅(qū)動(dòng)板的 電流檢測(cè)問題
相關(guān)學(xué)習(xí)資料
奧松機(jī)器人技術(shù)論壇
VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板原理圖
VNH5019直流電機(jī)驅(qū)動(dòng)擴(kuò)展板官方英文版使用說明
VNH5019庫(kù)文件官方下載地址