ARD-e: roboten med en Arduino som en hjärna (4 / 9 steg)
Steg 4: Ard-e på Auto: med Ardunio för att köra DC motorer
Chipet tar i princip tre ingångar, en PWM ingång som anger hastigheten av motorn och förvandlar det till och från och två ingångar som bestämmer riktningen att motorn snurrar. PWM stift är aktivera för L293, två stiften som bestämmer riktningen för de motor snurrandena är insatsvaror 1A och 2A. Motorerna är kopplade till utgångar 1 års och 2 Y. L293 kan styra två likströmsmotorer så när du får det hakas upp till Arduino Ard-e kan köra själv.
Datablad för L293 kan hittas på http://www.datasheetcatalog.com/datasheets_pdf/L/2/9/3/L293.shtml
Hamnade jag beställa två av L293 marker från www.mouser.com och kostar mig ca $7. Efter några timmar av försök och misstag fick jag äntligen Arduino att köra båda Ard-Ekbergs motorer. Jag har inte läst databladet-tillräckligt noga eftersom jag ursprungligen var med 3V att försöka köra L293 när det uppenbarligen (nu åtminstone dess uppenbara) behöver minst fem volt. Så efter ett antal resor till www.Arduino.cc här är koden jag använde för att provköra Ard-Ekbergs motorer:
int diraPin = 10;
int dirbPin = 9; Dessa två bör vara mitt emot digitala värden att snurra motorn om de är både hög eller båda låg då motorn bromsas faktiskt.
int enablePin = 11; Detta stift anger hastigheten av motorn och måste vara en PWM stift.
int dira2Pin = 2;
int dirb2Pin = 3;
int enable2Pin = 5; Dessa används på samma sätt att köra andra motorn.
int val = 0; Variabel används för att ange hastigheten på motorerna.
void setup() {
pinMode (diraPin, produktionen);
pinMode (dirbPin, produktionen);
pinMode (enablePin, produktionen);
pinMode (dira2Pin, produktionen);
pinMode (dirb2Pin, produktionen);
pinMode (enable2Pin, produktionen); Försäkrar alla stiften som resultat.
}
void loop() {
Val = 175; Ett värde som används för att ange hastigheten på motorn, ca 70% av dess hastighet.
Snurra motorn 1 bakåt i en sekund
analogWrite (enablePin, val); Ställa in hastigheten på motorerna med PWM
digitalWrite (diraPin, låg);
digitalWrite (dirbPin, hög);
snurra motor 2 bakåt i en sekund
analogWrite (enable2Pin, val);
digitalWrite (dira2Pin, låg);
digitalWrite (dirb2Pin, hög);
Delay(1000); Om du byter vilken riktning pin är hög och låg motorn kommer att snurra en annan riktning.
snurra motor 1 framåt i en sekund
digitalWrite (diraPin, hög);
digitalWrite (dirbPin, låg);
snurra motor 2 framåt i en sekund
digitalWrite (dira2Pin, hög);
digitalWrite (dirb2Pin, låg);
Delay(1000);
stopp för en sekund
Val = 0;
analogWrite (enablePin, val);
analogWrite (enable2Pin, val);
Delay(1000);
}
Så för att testa detta ut på Ard-e slutade jag att sätta en skärbräda på tillägg som tidigare haft den pan och tilt systemet. Jag flyttade också till Arduino höger bredvid skärbräda för lätt prototyper. Jag var också tvungen att lägga till ytterligare två AA batterier så L293 skulle ha 6V den behöver för att driva motorerna.
Heres en snabb video av Ard-e kör detta program. En av drivkrafterna snurrar snabbare än den andra så han svänger mot kameran i slutet av den. Jag vet inte riktigt varför detta händer...
Så när du skriva all kod och ordna om komponenterna för att göra Arduino boss runt L293 och få dessa pesky DC motorer under kontroll Ard-Ekbergs möjligt använder ökar dramatiskt. Allt du behöver nu är vissa sensorer.