SKU:RB-01C107A MotorDriver Shield
目錄 |
產(chǎn)品概述
MotorDriver Shield 是基于 L298 的雙路全橋電機(jī)驅(qū)動(dòng)板??梢则?qū)動(dòng)電機(jī)、四線兩相步進(jìn)電機(jī)、舵機(jī),外觀是 Arduino 盾板,排座設(shè)計(jì),Arduino 控制器連接電機(jī)驅(qū)動(dòng)板的同時(shí),不影響傳感器擴(kuò)展板的連接,板載串行、IIC等常用通信接口,電機(jī)轉(zhuǎn)向指示燈,解決 Arduino UNO 控制器 IO 接口驅(qū)動(dòng)能力弱,不能直接驅(qū)動(dòng)電機(jī)或大扭力舵機(jī)的問題,MotorDriver Shield 的 Arduino 控制器引出 IO 最大輸出的電流可達(dá)3A,再與傳感器 V5.0 組合最多可同時(shí)驅(qū)動(dòng) 10 個(gè)65CS 舵機(jī)。電機(jī)及外部供電接口采用防插反接頭,避免由于接線錯(cuò)誤造成的產(chǎn)品損壞。
產(chǎn)品參數(shù)
- 產(chǎn)品貨號(hào):RB - 01C115
- 電機(jī)驅(qū)動(dòng)芯片:L298P
- 外部供電范圍:7V - 35V
- 邏輯電壓:5V
- 外形特點(diǎn):Arduino UNO 盾板
- 外形尺寸:6.68.5mm * 56mm
- 接口類型:直插、KF2510
- 擴(kuò)展接口
- 電機(jī)接口 * 2 個(gè)
- 外部供電接口 * 1 個(gè)
- UART 接口 * 1 個(gè)
- IIC 接口 * 1 個(gè)
- 數(shù)字接口 * 14 個(gè)
- 模擬接口 * 6 個(gè)
- 電源指示燈:紅色
- 電機(jī)轉(zhuǎn)向指示燈:4 個(gè)(紅色 * 2 個(gè),綠色 * 2 個(gè))
- 產(chǎn)品重量:25g
接口示意圖
- 接口說明:
(1)Vin 接口
當(dāng)外部供電范圍在 7V - 12V 之間時(shí),將此處連接,Arduino UNO 可以直接從電機(jī)驅(qū)動(dòng)板上取電,默認(rèn)為連接狀態(tài)。
當(dāng)外部供電范圍在 12V - 35V 之間時(shí),需要將 Vin 斷開,Arduino UNO 控制器需要單獨(dú)供電,不能從電機(jī)驅(qū)動(dòng)板上取電。
當(dāng) Arduino UNO 控制器使用 DC 接口供電 7V - 12V 之間時(shí),將此處連接,電機(jī)驅(qū)動(dòng)板可以直接從 Arduino UNO 控制器上取電。
(2)SNS0、SNS1 接口
將兩組排針分別連接時(shí),A0、A1 接口會(huì)被占用,分別讀取 L298 的輸出電流。
將兩組排針分別斷開時(shí),A0 、 A1 不會(huì)被占用。
使用方法
驅(qū)動(dòng)兩路電機(jī)
- 實(shí)驗(yàn)硬件
- 直流減速電機(jī) * 2個(gè)
- Arduino UNO 控制器 * 1個(gè)
- 7.4V 1200mAh 鋰電池 * 1個(gè)
- Arduino 程序下載線 * 1條
- 實(shí)物連接圖
- 例子程序
#define PWA 3 #define PWB 11 #define DIRA 12 #define DIRB 13 #define BRAKEA 9 #define BRAKEB 8 void setup(){ Serial.begin(9600); pinMode(PWA,OUTPUT); pinMode(PWB,OUTPUT); pinMode(DIRA,OUTPUT); pinMode(DIRB,OUTPUT); pinMode(BRAKEA,OUTPUT); pinMode(BRAKEB,OUTPUT); } void loop(){ head(); delay(3000); back(); delay(3000); left(); delay(3000); right(); delay(3000); breaka(); delay(3000); stopt(); delay(3000); } void head(){ analogWrite(PWA,180); analogWrite(PWB,180); digitalWrite(DIRA,HIGH); digitalWrite(BRAKEA,LOW); digitalWrite(DIRB,HIGH); digitalWrite(BRAKEB,LOW); } void back(){ analogWrite(PWA,180); analogWrite(PWB,180); digitalWrite(DIRA,LOW); digitalWrite(BRAKEA,LOW); digitalWrite(DIRB,LOW); digitalWrite(BRAKEB,LOW); } void left(){ analogWrite(PWA,180); analogWrite(PWB,180); digitalWrite(DIRA,HIGH); digitalWrite(BRAKEA,LOW); digitalWrite(DIRB,LOW); digitalWrite(BRAKEB,LOW); } void right(){ analogWrite(PWA,180); analogWrite(PWB,180); digitalWrite(DIRA,LOW); digitalWrite(BRAKEA,LOW); digitalWrite(DIRB,HIGH); digitalWrite(BRAKEB,LOW); } void breaka(){ analogWrite(PWA,180); analogWrite(PWB,180); digitalWrite(DIRA,HIGH); digitalWrite(BRAKEA,HIGH); digitalWrite(DIRB,HIGH); digitalWrite(BRAKEB,HIGH); } void stopt(){ analogWrite(PWA,0); analogWrite(PWB,0); digitalWrite(DIRA,LOW); digitalWrite(BRAKEA,HIGH); digitalWrite(DIRB,LOW); digitalWrite(BRAKEB,HIGH); }
- 程序效果
連接在A口和B口電機(jī)以下面的順序運(yùn)動(dòng)
- A口電機(jī)順時(shí)針、B口電機(jī)逆時(shí)針
- A口電機(jī)逆時(shí)針、B口電機(jī)順時(shí)針
- A口、B口電機(jī)順時(shí)針
- A口、B口電機(jī)順時(shí)針
- A口、B口電機(jī)制動(dòng) - 電機(jī)指示燈全部亮起
- A口、B口電機(jī)停止 - 電機(jī)指示燈全部熄滅
驅(qū)動(dòng)舵機(jī)
- 準(zhǔn)備硬件
- 金屬齒舵機(jī) * 1個(gè)
- Arduino UNO 控制器 * 1個(gè)
- 7.4V 1200mAh 鋰電池 * 1個(gè)
- Arduino 程序下載線 * 1條
- 硬件連接
- 例子程序
#include <Servo.h> Servo myservo; int pos = 0; void setup() { myservo.attach(10); } void loop() { for(pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for(pos = 180; pos>=0; pos-=1) { myservo.write(pos); delay(15); } }
- 程序效果
連接在 D10 引腳的舵機(jī),從0度開始順時(shí)針旋轉(zhuǎn)180度,然后再逆時(shí)針旋轉(zhuǎn)180度,循環(huán)執(zhí)行。
UART 接口測(cè)試
- 準(zhǔn)備硬件
- LCD1602 串行液晶 * 1個(gè)
- Arduino UNO 控制器 * 1個(gè)
- 7.4V 1200mAh 鋰電池 * 1個(gè)
- Arduino 程序下載線 * 1條
- 4P 傳感器連接線 * 1個(gè)
- 硬件連接
注意接線時(shí),串行液晶的TX,連接控制器的RX;串行液晶RX,連接控制器TX
- 例子程序
注意:程序上傳時(shí),不能連接 LCD1602 串行液晶
void setup() { Serial.begin(9600); //設(shè)置波特率為 9600 Serial.print("$CLEAR\r\n"); //清屏 } void loop() { Serial.print("$GO 1 4\r\n"); //顯示的地址為第 1 行第 4 列 Serial.print("$PRINT Welcome to\r\n"); //打印字符 Welcome to Serial.print("$GO 2 1\r\n"); //顯示的地址為第 2 行第 1 列 Serial.print("$PRINT www.robotbase.cn\r\n");//打印字符 www.robotbase.cn }
- 程序效果
將程序上傳至 UNO 控制器后,連接電機(jī)驅(qū)動(dòng)板和串行液晶,液晶第一行顯示"Welcome to",第二行顯示"www.robotbase.cn"
IIC 接口測(cè)試
- 準(zhǔn)備硬件
- 4 - Digital Display * 1個(gè)
- Arduino UNO 控制器 * 1個(gè)
- 7.4V 1200mAh 鋰電池 * 1個(gè)
- Arduino 程序下載線 * 1條
- 4P 傳感器連接線 * 1個(gè)
- 硬件連接
- 例子程序
#include <EEPROM.h> #include <TimerOne.h> #include <avr/pgmspace.h> #include "TM1637.h" #define ON 1 #define OFF 0 int8_t TimeDisp[] = {0x00,0x00,0x00,0x00}; unsigned char ClockPoint = 1; unsigned char Update; unsigned char microsecond_10 = 0; unsigned char second; unsigned char _microsecond_10 = 0; unsigned char _second; unsigned int eepromaddr; boolean Flag_ReadTime; #define CLK A5 #define DIO A4 TM1637 tm1637(CLK,DIO); void setup() { Serial.begin(9600); tm1637.set(BRIGHT_TYPICAL); tm1637.init(); Timer1.initialize(10000); Timer1.attachInterrupt(TimingISR); Serial.println("Please send command to control the stopwatch:"); Serial.println("S - start"); Serial.println("P - pause"); Serial.println("L - list the time"); Serial.println("W - write the time to EEPROM "); Serial.println("R - reset"); } void loop() { char command; command = Serial.read(); switch(command) { case 'S':stopwatchStart();Serial.println("Start timing...");break; case 'P':stopwatchPause();Serial.println("Stopwatch was paused");break; case 'L':readTime();break; case 'W':saveTime();Serial.println("Save the time");break; case 'R':stopwatchReset();Serial.println("Stopwatch was reset");break; default:break; } if(Update == ON) { TimeUpdate(); tm1637.display(TimeDisp); } } void TimingISR() { microsecond_10 ++; Update = ON; if(microsecond_10 == 100){ second ++; if(second == 60) { second = 0; } microsecond_10 = 0; } ClockPoint = (~ClockPoint) & 0x01; if(Flag_ReadTime == 0) { _microsecond_10 = microsecond_10; _second = second; } } void TimeUpdate(void) { if(ClockPoint)tm1637.point(POINT_ON); else tm1637.point(POINT_ON); TimeDisp[2] = _microsecond_10 / 10; TimeDisp[3] = _microsecond_10 % 10; TimeDisp[0] = _second / 10; TimeDisp[1] = _second % 10; Update = OFF; } void stopwatchStart()//timer1 on { Flag_ReadTime = 0; TCCR1B |= Timer1.clockSelectBits; } void stopwatchPause() { TCCR1B &= ~(_BV(CS10) | _BV(CS11) | _BV(CS12)); } void stopwatchReset() { stopwatchPause(); Flag_ReadTime = 0; _microsecond_10 = 0; _second = 0; microsecond_10 = 0; second = 0; Update = ON; } void saveTime() { EEPROM.write(eepromaddr ++,microsecond_10); EEPROM.write(eepromaddr ++,second); } void readTime() { Flag_ReadTime = 1; if(eepromaddr == 0) { Serial.println("The time had been read"); _microsecond_10 = 0; _second = 0; } else{ _second = EEPROM.read(-- eepromaddr); _microsecond_10 = EEPROM.read(-- eepromaddr); Serial.println("List the time"); } Update = ON; }
- 程序效果
程序上傳后,數(shù)碼管顯示模塊開始計(jì)時(shí),最大計(jì)時(shí)時(shí)間1分鐘,1分鐘后,清零,重新再計(jì)時(shí)。
產(chǎn)品相關(guān)推薦
產(chǎn)品資料
下載鏈接:https://pan.baidu.com/s/1UhXz5fY_MahI_iy7DjrrMg 提取碼:4ec9