DC Motor a Arduino Nano
Vášho robota môžete jednoducho poháňať jednosmerným (DC) motorom. Tu prichádza na rad ovládač motora L298N. Dokáže ovládať rýchlosť a otáčanie smer dvoch jednosmerných motorov. Plnú kontrolu nad jednosmerným motorom môžeme mať iba vtedy, ak dokážeme ovládať jeho rýchlosť a smer otáčania. To je možné kombináciou týchto dvoch techník.
– na ovládanie rýchlosti motora
- H-Bridge – na ovládanie smeru otáčania motora
Rýchlosť jednosmerného motora je možné regulovať zmenou jeho vstupného napätia. Široko používanou technikou na dosiahnutie tohto cieľa je modulácia šírky impulzu. je technika, pri ktorej sa priemerná hodnota vstupného napätia upravuje odoslaním série impulzov
. Toto priemerné napätie je úmerné šírke impulzov, čo sa označuje ako pracovný cyklus.
Čím vyšší je pracovný cyklus, tým vyššie je priemerné napätie aplikované na jednosmerný motor, čo vedie k zvýšeniu otáčok motora. Čím kratší je pracovný cyklus, tým nižšie je priemerné napätie aplikované na jednosmerný motor, čo má za následok zníženie otáčok motora.

H-Bridge ovládanie smeru otáčania motora :
Smer otáčania jednosmerného motora možno ovládať zmenou polarity jeho vstupného napätia. Široko používanou technikou na dosiahnutie tohto cieľa je použitie H-mostíka. Obvod H-mostíka sa skladá zo štyroch spínačov usporiadaných do tvaru H, s motorom v strede. Súčasné zatvorenie dvoch špecifických spínačov obráti polaritu napätia aplikovaného na motor. To spôsobí zmenu smeru otáčania motora.

L298N obsahuje dva štandardné H-mosty schopné poháňať dvojicu jednosmerných motorov, vďaka čomu je ideálny na stavbu dvojkolesovej robotickej platformy. Ovládač motora L298N má napájací rozsah 5V až 35V a je schopný nepretržitého prúdu 2A na kanál,

Kolík napája interný H-Bridge integrovaného obvodu, ktorý poháňa motory. Tento kolík akceptuje vstupné napätie v rozsahu od 5 do 12V.
Kolík sa používa na napájanie logických obvodov v rámci L298N IC a môže sa pohybovať medzi 5V a 7V.
je spoločný uzemňovací kolík.
- OUT1, OUT2, OUT3, OUT4 Kolíky ovládača motora L298N,
a
pre motor A a
a
pre motor B, sú vybavené skrutkovými svorkami s rozstupom 3,5 mm. Na tieto svorky môžete pripojiť dva 5V až 12V DC motory. Každý kanál na module môže dodávať až 2A jednosmernému motoru.
Kolíky na ovládanie smeru : vám umožňujú ovládať, či sa motor otáča doprava alebo doľava.
- Piny N1 a N2 ovládajú smer otáčania motora A. (
a
)
- Piny N3 a N4 ovládajú smer otáčania motora B. (
a
)
Smer otáčania motora je možné ovládať použitím logických HIGH (+5V) alebo logických LOW (Zem) na tieto vstupy. Tabuľka nižšie zobrazuje rôzne kombinácie a ich výsledky:
N1 | N2 | Smer otáčania |
Low(0) | Low(0) | Motor Vypnutý |
High(1) | Low(0) | Vpred |
Low(0) | High(1) | Dozadu (Spätne) |
High(1) | High(1) | Motor Vypnutý |
- Piny
a
slúžia na zapínanie/vypínanie motorov a ovládanie ich otáčok. Nastavenie týchto kolíkov na log. High(1) spôsobí, že sa motory roztočia, zatiaľ čo nastavenie na log Low(0) že zastavia. Pomocou modulácie šírky impulzov
je však možné regulovať rýchlosť motorov. Modul sa zvyčajne dodáva s prepojkou na týchto kolíkoch. Keď je tento mostík na svojom mieste, motor sa roztočí na plné otáčky. Ak chcete ovládať rýchlosť motorov programovo, odstráňte prepojky a pripojte ich ku kolíkom Arduino s podporou
.
- Pin
, Modul obsahuje regulátor napätia 78M05, ktorý je možné aktivovať alebo deaktivovať pomocou
prepojky. Keď je tento jumper na svojom mieste, vstupná svorka (+5V) funguje ako výstupný kolík a dodáva 5V 0,5A. Môžete ho použiť na napájanie Arduina alebo iných obvodov, ktoré potrebujú 5V napájanie. Ak je napájanie motora menšie ako 12 V, môžete prepojku ponechať na mieste. Ak je väčšie ako 12V, prepojku treba odstrániť, aby sa predišlo poškodeniu zabudovaného 5V regulátora.
- Pin
Úbytok napätia :
L298N má úbytok napätia približne 2V. Je to spôsobené skutočnosťou, že 2 interné spínacie tranzistory majú pokles napätia približne 1V. Ak teda pripojíte 12V na napájaciu svorku motora, motory dostanú približne 10V. To znamená, že 12V jednosmerný motor sa nikdy neroztočí na plné otáčky.
Ak vezmeme do úvahy pokles napätia o 2V, potom ak používate 5V motory, budete musieť poskytnúť 7V na napájacej svorke motora. Ak máte 12V motory, napájacie napätie motora by malo byť 14V.

Teraz, keď vieme všetko o module, môžeme ho začať pripájať k Arduinu!
K projektu (DC Motor a Arduino Nano) budeme Potrebovať :
- DC Motor 5-12V
- Arduino Nano
- Prepojovacie vodiče
- Zdroj napätia
Detail zapojenia :

Prepojku 5V – ponechajte na mieste.
Nano môžete napájať napríklad aj prostredníctvom USB.
Pripojte vstupné kolíky modulu L298N ( ,
,
,
,
a
) k šiestim digitálnym výstupným kolíkom Arduino ( 10, 9, 8, 7, 6 a 3). Všimnite si, že oba výstupné kolíky
10 a 3 sú povolené pre
.
Nakoniec pripojte jeden motor ku svorke ( a
) a druhý k (
a
). Pripojenia motora (+ alebo – ) môžete vymeniť. Technicky neexistuje správna alebo nesprávna cesta.
Program :
// Pripojenia motora A (OUT1 a OUT2)
int enA = 10;
int n1 = 9;
int n2 = 8;
// Pripojenia motora B (OUT3 a OUT4)
int enB = 3;
int n3 = 7;
int n4 = 6;
void setup() {
// Nastaviť všetky ovládacie kolíky motora na výstupy
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(n1, OUTPUT);
pinMode(n2, OUTPUT);
pinMode(n3, OUTPUT);
pinMode(n4, OUTPUT);
// Vypnúť motory - Počiatočný stav
digitalWrite(n1, LOW);
digitalWrite(n2, LOW);
digitalWrite(n3, LOW);
digitalWrite(n4, LOW);
}
void loop() {
directionControl();
delay(1000);
speedControl();
delay(1000);
}
// Táto funkcia vám umožňuje ovládať smer otáčania motorov
void directionControl() {
// Nastaviť motory na maximálnu rýchlosť
// Pre PWM sú maximálne možné hodnoty 0 až 255
analogWrite(enA, 255);
analogWrite(enB, 255);
// Zapnúť motor A a B
digitalWrite(n1, HIGH);
digitalWrite(n2, LOW);
digitalWrite(n3, HIGH);
digitalWrite(n4, LOW);
delay(2000);
// Teraz zmeniť smer motora
digitalWrite(n1, LOW);
digitalWrite(n2, HIGH);
digitalWrite(n3, LOW);
digitalWrite(n4, HIGH);
delay(2000);
// Vypnúť motory
digitalWrite(n1, LOW);
digitalWrite(n2, LOW);
digitalWrite(n3, LOW);
digitalWrite(n4, LOW);
}
// Táto funkcia vám umožňuje ovládať rýchlosť motorov
void speedControl() {
// Zapnúť motory
digitalWrite(n1, LOW);
digitalWrite(n2, HIGH);
digitalWrite(n3, LOW);
digitalWrite(n4, HIGH);
// Zrýchliť z nuly na maximálnu rýchlosť
for (int i = 0; i < 256; i++) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Spomaliť z maximálnej rýchlosti na nulu
for (int i = 255; i >= 0; --i) {
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Teraz vypnúť motory
digitalWrite(n1, LOW);
digitalWrite(n2, LOW);
digitalWrite(n3, LOW);
digitalWrite(n4, LOW);
}
Popis:
kód je pomerne jednoduchý. Na fungovanie nie sú potrebné žiadne knižnice. Náčrt začína deklarovaním kolíkov
, ktoré sú pripojené k ovládacím kolíkom L298N. V sekcii nastavenia kódu sú všetky kolíky na ovládanie motora, vrátane kolíkov na ovládanie smeru a rýchlosti, nakonfigurované ako digitálny OUTPUT. A kolíky ovládania smeru sa nastavia na LOW, aby sa na začiatku deaktivovali oba motory. V slučkovej časti kódu ( void loop() ) voláme dve užívateľom definované funkcie s jednosekundovým oneskorením.
directionControl() – Táto funkcia spôsobí, že sa obidva motory roztočia na dve sekundy plnou rýchlosťou. Potom obráti smer otáčania motorov a otáča sa dve sekundy. Nakoniec zastaví motory.
speedControl() – Táto funkcia využíva funkciu analogWrite() na generovanie signálu ktorý urýchľuje oba motory z nuly na maximálnu rýchlosť pred ich spomalením späť na nulu. Nakoniec zastaví motory.
článok :
Pridaj komentár