Kontroll DC och stepper motors med L298N Controller moduler med dubbla motorer och Arduino (2 / 3 steg)
Steg 2: Kontrollera DC motorer
För att styra en eller två likströmsmotorer är ganska lätt med L298N H-bridge modul. Anslut först varje motor till A och B anslutningarna på modulen L298N.
Om du använder två motorer för en robot (etc) säkerställa att polariteten på motorerna är samma på båda ingångarna. Annars kan du behöva byta dem över när du anger båda motorer att vidarebefordra och man går bakåt!
Anslut ditt nätaggregat – positivt till stift 4 på modulen och negativa/GND till stift 5. Om du är upp till 12V kan du lämna i 12V bygeln (punkt 3 i bilden ovan) och 5V kommer att finnas tillgänglig från stift 6 på modulen.
Detta kan matas till din Arduino 5V stift att driva från den motors nätaggregat. Glöm inte att ansluta Arduino GND till stift 5 på modulen samt att slutföra kretsen. Nu du behöver sex digitala utgångsstift på din Arduino, måste varav två vara PWM (pulse bredd modulering) stift.
PWM stift betecknas tilde ("~") bredvid den pin-kod, till exempel i bilden av Arduino Uno's digital stift.
Slutligen Anslut Arduino digital utgång stiften till föraren modulen. I vårt exempel har vi två DC-motorer, så digital stift D9, D8, D7 och D6 kommer att anslutas till stift IN1 och IN2, IN3 IN4 respektive. Sedan ansluta D10 modul stift 7 (ta bort bygeln först) och D5 till modul stift 12 (igen, ta bort bygeln).
Motor riktning styrs genom att skicka en hög eller låg signal till enheten för varje motor (eller kanal). Till exempel för motor, kommer ett högt till IN1 och en låg till IN2 det att vända i en riktning, och en låg och hög kommer att få den att vända åt andra hållet.
Men motorerna kommer inte vända tills en hög är inställd på Aktivera pin (7 för motor en, 12 för motor två). Och de kan stängas av med en låg till den samma stift. Men om du behöver kontrollera hastigheten på motorerna, PWM-signal från digital pin ansluten till aktivera PIN-koden kan ta hand om den.
Detta är vad vi har gjort med DC motor demonstration skissen. Två motorer och en Arduino Uno är anslutna som beskrivits ovan, tillsammans med en extern strömkälla. Då gå in och ladda upp den följande skissen:
Anslut motor controller pins till Arduino digital pins
motor en
int enA = 10;
int in1 = 9.
int in2 = 8.
motor två
int enB = 5;
int in3 = 7.
int in4 = 6;
void setup()
{
Ange alla motorisk kontroll stift till utgångar
pinMode (enA, produktionen);
pinMode (enB, produktionen);
pinMode (in1, produktionen);
pinMode (in2, produktionen);
pinMode (in3, produktionen);
pinMode (in4, produktionen);
}
void demoOne()
{
denna funktion kommer att köra motorerna i båda riktningarna vid en fast hastighet
slå på motor A
digitalWrite (in1, hög);
digitalWrite (in2, låg);
inställd hastighet på 200 utanför möjliga intervallet 0 ~ 255
analogWrite (enA, 200);
slå på motor B
digitalWrite (in3, hög);
digitalWrite (in4, låg);
inställd hastighet på 200 utanför möjliga intervallet 0 ~ 255
analogWrite (enB, 200);
Delay(2000);
nu ändra riktning på motor
digitalWrite (in1, låg);
digitalWrite (in2, hög);
digitalWrite (in3, låg);
digitalWrite (in4, hög);
Delay(2000);
nu stänga av motorer
digitalWrite (in1, låg);
digitalWrite (in2, låg);
digitalWrite (in3, låg);
digitalWrite (in4, låg);
}
void demoTwo()
{
denna funktion kommer att köra motorerna över hela skalan av möjliga hastighet
Observera att maximal hastighet bestäms av motorn själv och driftspänningen
PWM värden skickas av analogWrite() är fraktioner av den högsta möjliga
av din hårdvara
slå på motorer
digitalWrite (in1, låg);
digitalWrite (in2, hög);
digitalWrite (in3, låg);
digitalWrite (in4, hög);
accelerera från noll till högsta hastighet
för (int jag = 0; jag < 256; i ++)
{
analogWrite(enA, i);
analogWrite(enB, i);
Delay(20);
}
retardera från högsta hastighet till noll
för (int jag = 255; jag > = 0; i--)
{
analogWrite(enA, i);
analogWrite(enB, i);
Delay(20);
}
nu stänga av motorer
digitalWrite (in1, låg);
digitalWrite (in2, låg);
digitalWrite (in3, låg);
digitalWrite (in4, låg);
}
void loop()
{
demoOne();
Delay(1000);
demoTwo();
Delay(1000);
}
Så vad som händer i denna skiss? I funktionen demoOne() vi starta motorerna och köra dem på en PWM-värde på 200. Detta är inte en hastighet värde, i stället driva, appliceras för 200/255 i lång tid på en gång.
Sedan efter en stund motorerna verkar i motsatt riktning (se hur vi ändrade toppar och dalar i thedigitalWrite() fungerar?). För att få en uppfattning om utbudet av hastighet möjligt din maskinvara, vi kör genom värden hela PWM spänna i funktionen demoTwo() som tänds motorerna och dem går genom PWM noll till 255 och tillbaka till noll med två för loopar.
Slutligen framgår detta i videon på denna sida-med våra slitna tank chassi med två likströmsmotorer.