概述
在本課程中,您將學(xué)習(xí)如何使用Arduino和L293D電機(jī)驅(qū)動(dòng)器芯片來控制小型DCmotor的方向和速度。
電位器控制電動(dòng)機(jī)的速度,并通過按鈕控制方向。
零件
要構(gòu)建本課中描述的項(xiàng)目,您將需要以下零件。
零件 數(shù)量
小型6V直流電動(dòng)機(jī)
1
L293D IC
1
10kΩ可變電阻器(pot)
1
觸摸開關(guān)
1
半面包板
1
Arduino Uno R3
1
跳線包
1
實(shí)驗(yàn)
在獲得用于控制電機(jī)的Arduino板之前,我們應(yīng)該先對(duì)L293D電機(jī)控制芯片進(jìn)行實(shí)驗(yàn),以了解其工作原理。
我們可以僅使用Arduino向電動(dòng)機(jī)提供5V電壓。
請(qǐng)注意電動(dòng)機(jī)的旋轉(zhuǎn)方式。您可以通過將電動(dòng)機(jī)軸夾在手指之間來做到這一點(diǎn)。交換電動(dòng)機(jī)導(dǎo)線,使原先要達(dá)到+ 5V的電動(dòng)機(jī)導(dǎo)線到達(dá)GND,反之亦然。電動(dòng)機(jī)將沿相反方向旋轉(zhuǎn)。
這為我們提供了有關(guān)L293D芯片工作原理的線索。它的控制銷使我們能夠執(zhí)行等效的交換電動(dòng)機(jī)端子以反轉(zhuǎn)電動(dòng)機(jī)方向的操作。
按如下所示構(gòu)建面包板。 Arduino仍然只是供電,但是我們可以在讓Arduino接管之前手動(dòng)對(duì)控制引腳進(jìn)行實(shí)驗(yàn)。
我們感興趣的L293D的三個(gè)引腳是引腳1(啟用),引腳2(In1)和引腳7(In2)。 )。使用紫色,黃色和橙色的跳線將它們連接到5V或GND。
如上所示,電動(dòng)機(jī)應(yīng)該在一個(gè)方向上旋轉(zhuǎn),我們將其稱為A方向。
如果將引腳1(使能)移至GND時(shí),無論使用控制引腳In1和In2做什么,電動(dòng)機(jī)都將停止。啟用可打開和關(guān)閉所有功能。這對(duì)于使用PWM輸出控制電動(dòng)機(jī)速度非常有用。將引腳1重新連接至5V,以便電動(dòng)機(jī)再次啟動(dòng)。
現(xiàn)在嘗試將In1(引腳2,黃色)從5V移至GND。In1和In2現(xiàn)在都已連接至GND,因此電動(dòng)機(jī)將再次停止。/p》
將In2從GND移至5V將導(dǎo)致電動(dòng)機(jī)沿相反方向(B方向)旋轉(zhuǎn)。
最后,將In1移回5V,以使In1和In2都處于5V導(dǎo)致電動(dòng)機(jī)停止。
引腳In1和In2對(duì)電動(dòng)機(jī)的影響總結(jié)在下表中:
In1In2電動(dòng)機(jī)
GNDGND已停止
5VGND向A方向轉(zhuǎn)動(dòng)
GND5V向B方向轉(zhuǎn)動(dòng)
5V5V已停止
面包板布局
現(xiàn)在我們已經(jīng)掌握了直接控制電機(jī)的功能,我們可以讓Arduino管理 Enable , In1 和 In2 引腳。
構(gòu)建面包板時(shí),需要確保IC正確定位。凹口應(yīng)位于面包板的頂部。
Arduino代碼
將以下草圖加載到您的Arduino上。
下載:文件
復(fù)制代碼
/*
Adafruit Arduino - Lesson 15. Bi-directional Motor
*/
int enablePin = 11;
int in1Pin = 10;
int in2Pin = 9;
int switchPin = 7;
int potPin = 0;
void setup()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP);
}
void loop()
{
int speed = analogRead(potPin) / 4;
boolean reverse = digitalRead(switchPin);
setMotor(speed, reverse);
}
void setMotor(int speed, boolean reverse)
{
analogWrite(enablePin, speed);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
} /*
Adafruit Arduino - Lesson 15. Bi-directional Motor
*/
int enablePin = 11;
int in1Pin = 10;
int in2Pin = 9;
int switchPin = 7;
int potPin = 0;
void setup()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP);
}
void loop()
{
int speed = analogRead(potPin) / 4;
boolean reverse = digitalRead(switchPin);
setMotor(speed, reverse);
}
void setMotor(int speed, boolean reverse)
{
analogWrite(enablePin, speed);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
}
定義了引腳,并在“設(shè)置”功能中正常設(shè)置了它們的模式。
在循環(huán)功能中,電機(jī)速度的值為通過將鍋中的模擬讀數(shù)除以4可以找到。
因數(shù)為4,因?yàn)槟M讀數(shù)將在0到1023之間,并且模擬輸出需要在0到255之間。
如果按下按鈕,電機(jī)將正向運(yùn)行,否則將反向運(yùn)行。 “ reverse”變量的值僅設(shè)置為從開關(guān)引腳讀取的值。因此,如果按下按鈕,它將為False,否則將為True。
速度和反向值將傳遞給名為“ setMotor”的函數(shù),該函數(shù)將設(shè)置驅(qū)動(dòng)器芯片上的適當(dāng)引腳以控制
下載:文件
復(fù)制代碼
void setMotor(int speed, boolean reverse)
{
analogWrite(enablePin, speed);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
} void setMotor(int speed, boolean reverse)
{
analogWrite(enablePin, speed);
digitalWrite(in1Pin, ! reverse);
digitalWrite(in2Pin, reverse);
}
首先,通過對(duì)enable引腳使用AnalogWrite來設(shè)置速度。無論L293的in1和in2引腳設(shè)置為什么,L293的使能引腳都可以打開或關(guān)閉電動(dòng)機(jī)。
要控制電動(dòng)機(jī)的方向,in1和in2引腳必須為
如果in1為HIGH而in2為L(zhǎng)OW,則電動(dòng)機(jī)將以一種方式旋轉(zhuǎn);如果in1為L(zhǎng)OW而in2為HIGH,則電動(dòng)機(jī)將以相反的方向旋轉(zhuǎn)。/p》
‘!’命令的意思是“不是”。因此,in1的第一個(gè)digitalWrite命令將其設(shè)置為與“ reverse”的值相反的值,因此,如果reverse為HIGH則將其設(shè)置為L(zhǎng)OW,反之亦然。
in2的第二個(gè)digitalWrite將引腳設(shè)置為“ reverse”的值。這意味著它將永遠(yuǎn)與in1是相反的。
L293D
這是一個(gè)非常有用的芯片。它實(shí)際上可以獨(dú)立控制兩個(gè)電動(dòng)機(jī)。在本課程中,我們僅使用一半的芯片,芯片右側(cè)的大多數(shù)引腳用于控制第二個(gè)電機(jī)。
第二個(gè)電動(dòng)機(jī)將連接在OUT3和OUT4之間。您還需要另外三個(gè)控制引腳。
EN2已連接到Arduino上的PWM使能輸出引腳
IN3和IN4已連接到Arduino上的數(shù)字輸出。
L293D具有兩個(gè)+ Vpin(8和16)。 ‘+ Vmotor(8)引腳為電機(jī)供電,而+ V(16)則為芯片邏輯供電。我們已經(jīng)將它們都連接到Arduino 5V引腳。但是,如果您使用的是功率更高的電機(jī)或更高電壓的電機(jī),則可以使用連接到正電源的引腳8為電機(jī)提供單獨(dú)的電源,而第二個(gè)電源的接地端則連接到Arduino的接地端。/p》
其他要做的事情
您可以嘗試更改草圖以控制電動(dòng)機(jī),而無需使用電位器或開關(guān)。它可能會(huì)在向前方向上開始緩慢,然后逐漸變快,然后變慢,然后反轉(zhuǎn),重復(fù)此模式。
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186861 -
L293D
+關(guān)注
關(guān)注
4文章
50瀏覽量
20081
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論