DC motor forgásirány és sebesség szabályozás

Ebben a leckében egy kis dc motor forgásirányát és sebességét fogjuk szabályozni egy L293D motorvezérlő ic segítségéve.
A forgásirány váltásra a nyomógombot illetve a sebesség beállítására a potencia
métert fogjuk használni.

Alkatrész lista:

-Arduino uno

-Usb kábel

-Próbapanel

-Összekötő vezetékek

-egy kis dc motor (bármilyen gyerekjátékból) 6V-ig

-1db L293D motor vezérlő ic

-1db nyomógomb

-1db 10kohm-os poti


Az L293D ic:
Egy négyszeres motorvezérlő, ami 4db félhídból áll. Ahoz hogy egy dc motor mindkét
irányba foroghasson két félhidra van szükség, tehát evvel az ic-vel vagy 2db oda-vissza
forgó dc motort hajtunk, vagy 4db egy irányba forgót(2 jobbost ill. 2 balost).
Az ic lábkiosztása:

Nézzük a működését. 1. pin - engedélyező jel, +5V . Ez engedélyezi 1Y és 2Y kimentet.
az 1. pin segítségével szabályozhatjuk a motorunkat PWM jellel.

1A = 2.pin - 1-es bemenet ha +5V-on van akkor 1 kimenet is +5v-on van.
1Y = 3.pin - 1-es kimenet
2A = 7.pin - 2-es bemenet
2Y = 6.pin - 2-es kimenet.

Ha forgás irányváltást akarunk akkor két kimentet kell használnunk motorunkhoz,
ezek lesznek az 1Y és a 2Y , vagy 3Y és a 4Y.
Itt a következő igazságtáblázat érvényes:

Bemenet1    Bemenet2    Kimenet1    Kimenet2    Motor
1A,4A=5V    2A,3A=5V   1Y,4Y=5V   2Y,3Y=5V   Nem forog
1A,4A=5V    2A,3A=0V   1Y,4Y=5V   2Y,3Y=0V   Jobbra forog
1A,4A=0V    2A,3A=5V   1Y,4Y=0V   2Y,3Y=5V   Balra forog
1A,4A=0V    2A,3A=0V   1Y,4Y=0V   2Y,3Y=0V   Nem forog

L293D.pdf

Lássuk a kapcsolást:

Itt már mi állítgatjuk a két bemenet logikai állapotát a nyomógombbal.
illetve a PWM jelet a poti segítségével.

Arduino kód:

/*
Adafruit Arduino - Lesson 15. Bi-directional Motor
*/

int enablePin = 11;
int in1Pin = 10;
int in2Pin = 9; //ki-bemenetekhez változó rendelése
int switchPin = 7;
int potPin = 0;

void setup()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT); // kimenetek beállítása
pinMode(enablePin, OUTPUT);
pinMode(switchPin, INPUT_PULLUP); // bemenet beállítása felhúzó ellenállással
}

void loop()
{
int speed = analogRead(potPin) / 4;// poti értékének beolvasása speed változóba
boolean reverse = digitalRead(switchPin);//kapcsoló értékének beolvasása reverse logikai változóba
setMotor(speed, reverse);// setMotor függvény meghívása
}

void setMotor(int speed, boolean reverse)
{
analogWrite(enablePin, speed);// a speed vált értékét hozzárendeli az engedélyező lábhoz
digitalWrite(in1Pin, ! reverse);// az 1-es bemenethez rendeli reverse inverz értékét
digitalWrite(in2Pin, reverse);// a 2-es bemenethez rendeli reverse értékét

}


A lényeg az hogy az 1-es pin-en a reverse(nyomógomb logikai értékének) ellenkezője lesz
a 2-es pinen pedig a reverse értéke így az egyik irányba forogni fog a motor. Ha a reverse
éréke másik állapotra vált akkor a motor forgásiránya is megváltozik. A poti analóg értékét,
ami lehet 0-1023 között le kell osztanunk 4-el mivel a kiadott PWM jelnek 0-255 közé kell
esni, ezt az értéket tárolja a speed változó el. A setMotor függvény meghívásakor ezt a
két értéket adjuk át amit aztán a függvény a megfelelő kimenetre továbbit.


Ennyit a dc motorok vezérléséről, az ic kimeneteit nagyobbacska motoroknál itt is érdemes
diódákkal védni az indukciós áramokkal szemben.

Jó szórakozást!