步驟1:連接所有硬件
連接L293D電機驅動器
L293D是雙通道全橋電機驅動器,每通道最大輸出電流為600 mA(數據等)。這意味著您可以同時驅動2個電流,這些電機的電流需求在IC的限制范圍內。在我們的例子中,我們只使用一個通道,這意味著我們將使用模塊上的M1 IN/M1輸出端口(IC上分別為引腳2,7和3,6)。為了使電機連接到該通道,我們需要將EN1(引腳1)拉高。我正在使用的模塊提供了一個簡單的跳線布置,用于硬接線,參見圖片。或者,您可以通過控制器控制此引腳。引腳連接如圖所示。
連接L298N電機驅動器
與L293D類似,L298N也是雙全橋電機驅動器每個通道的最大輸出電流為2A。我們將只使用一個渠道,即。 M1,M2(該模塊具有不同的命名約定,M1-In,M2-In為輸入,M1-Out,M2-Out為相應的輸出)數據表L298N
當我們需要更多電流時對于金屬齒輪直流電機,這個特殊的驅動器是一個不錯的選擇。它具有良好的性能,低熱量(盡管建議使用散熱器,市場上大多數模塊都帶有散熱片)。它也非常便宜,有幫助。
連接伺服電機
伺服電機有各種尺寸和相應的扭矩等級。通常我們看到扭矩額定值較低的電機使用塑料齒輪,但扭矩額定值較高的電機使用金屬齒輪。
伺服電機有3根電線從中傳出,即信號,Vcc和接地。通常使用的顏色代碼如下:
信號》黃色/橙色;在VCC》紅色/白色; Gnd》 Black/Brown
根據經驗,識別它們的最簡單方法是,最黑暗的一個是地面,略亮的是Vcc,最亮的一個是信號。
如果您使用的是像HK15178這樣的微型伺服,可以使用Arduino上的5V引腳為其供電。但是,當電流要求較高時,您的Arduino無法提供足夠的電流,因此您需要從外部供電。我們將使用通用電池消除器電路(UBEC),它具有方便的5V/6V 3A輸出。我們在7805這樣的簡單電壓調節器上使用該電路的原因是電壓調節器的電流限制低于控制伺服電流所需的輸出電流約1.5至2A(取決于其額定值)。
PS:如果使用Arduino為更高等級的伺服電源供電,電路板可能會突然復位并以不合需要的方式運行。
連接HC-05藍牙模塊
這一步與使用HC-05和Arduino UNO的智能手機控制LED燈所解釋的完全相似。這里唯一的區別是我們使用模擬引腳A0和A1作為數字引腳(D14和D15) Rx和Tx。
第2步:Arduino代碼
#define BoMotor_F 3
#define BoMotor_B 5
#define DcMotor_F 6
#define DcMotor_B 11
#define ServoMotorPin 7
#include
#include
SoftwareSerial mySerial(14, 15); // RX, TX
Servo myservo;
char character;
boolean flag=false;
void setup() {
// put your setup code here, to run once:
mySerial.begin(9600);
Serial.begin(9600);
pinMode(BoMotor_F,OUTPUT);
pinMode(BoMotor_B,OUTPUT);
pinMode(DcMotor_F,OUTPUT);
pinMode(DcMotor_F,OUTPUT);
myservo.attach(ServoMotorPin);//servo is attached on pin7
} void loop() {
// put your main code here, to run repeatedly:
String Data = “”;
flag=false;
while(mySerial.available()) {
character = mySerial.read();
Data.concat(character);
flag=true;
delay(100);
}
if(flag)
{
Data.trim();
Serial.println(Data);
int s = Data.substring(0,1).toInt();
int direction = Data.substring(2,3).toInt();
int value = Data.substring(4).toInt();
switch(s){
case 1:{DcMotor(value, direction); break;}
case 2:{BoMotor(value,direction);break;}
case 3:{ServoMotor(value,direction);break;}
case 0:{DcMotor(0,direction);BoMotor(0,direction);break;}
}
}
}
void DcMotor(int speed, int dir)
{
analogWrite(DcMotor_F,(speed+dir*speed)/2);
analogWrite(DcMotor_B,(speed-dir*speed)/2);
}
void BoMotor(int speed, int dir)
{
analogWrite(BoMotor_F,(speed+dir*speed)/2);
analogWrite(BoMotor_B,(speed-dir*speed)/2);
}
void ServoMotor(int angle, int dir)
{
myservo.write(angle);
delay(2000);
myservo.write(0);
}
類似于之前關于使用HC-05和Arduino UNO的智能手機控制LED燈的文章,我們將繼續通過HC-05藍牙模塊將我們的智能手機連接到arduino。
命令我們要發送的內容如下:
我想要Dc電機在正向運行PWM值為200,我發送:
1,1,200
如果相同的直流電機以反向150的PWM運行,我將發送:
1,-1,150
一般格式是:電機,方向,值
電機:1》直流電機,2》電機電機,3》伺服電機,0》停止正在運行的所有設備(和平:P)
方向:1》順時針/正向,-1》逆時針/反向
值:PWM值從0到255;在伺服的情況下,這是角度
PS:在Dc電機和Bo電機的情況下,如果您發現電機正在旋轉的方向與預期相反,只需交換指定的引腳編號前進和后退針腳的程序‘
例如:原始
#define DcMotor_F 6
#define DcMotor_B 11
已交換
#define DcMotor_F 11
#define DcMotor_B 6
-
電機
+關注
關注
142文章
9081瀏覽量
146252 -
Arduino
+關注
關注
188文章
6477瀏覽量
187692
發布評論請先 登錄
相關推薦
評論