GOduino II = Arduino + L293D variabel hastighet Motor Controller



uppdateringar

GOduino II var med på dangerousprototypes.com

07/04/2012 jag har lagt en budget bild för de läsare som undrade där jag fick min < $20 budget för GOduino II.

INTRODUKTION

GOduino II är en fristående programmerbar kontrollant för hjul-baserade robotar. Det är en Arduino Uno klon plus en L293D motor drivrutin för under $20. Kontrollerar både motor riktning och hastighet. Prototyp föregångaren till detta är GOduino, en grundläggande version av den här domänkontrollanten på en skärbräda. Jag kommer att upprätthålla uppdateringar till denna guide både här och på min blogg http://techbitar.blogspot.com

BAKGRUND

Jag har designat några grundläggande robotar med hjälp av Arduino Uno och motor sköldar. Båda är bra för prototyper. Men jag fann mig ta min robotar isär varje gång jag behövde för att bygga en annan robot. Det är inte kostnadseffektivt att köpa mer Arduino microcontrollers och motor sköldar för varje ny robot projekt.

Även i länder som Jordanien där den genomsnittliga månadsinkomsten är ca $300 och ett sanslöst hög tulltaxenummer som är fientligt inställd till teknik, det blir en nödvändighet för studenter och beslutsfattare att söka lokalt monterade låg kostnad, repareras alternativ till importerade elektroniska kretsar.

FUNKTIONER

Den GOduino II fungerar för 2 motorer bara, och lämnar gott om Arduino pins för sensorer. Detta är också min första från scratch pcb äventyr. Om du tittar på baksidan av GOduino II, kommer du se alla slags ledtrådar till min oerfarenhet. Och ja, jag är en programvara kille så detta är allt relativt nytt för mig. Du kommer att notera att några av mina rubriker har buck tänder. Jag hade ett par olyckor medan lödning. Min nästa version vilja bli snyggare.

Detta kanske inte är den senaste grejer men det gör jobbet för mig och min protospace medlemmar. Om det hjälper någon ute där, skicka mig en länk. Som alltid, om du se eventuella brister eller har förslag som kan göra detta en bättre design, vänligen dela dina tankar.

KREDIT

Detta projekt bygger på verk av så många goda föräldrar. Se referenser längst för några av de projekt som grunden för detta blygsamma PCB projekt.

RESERVDELSLISTA

OBJEKT ANTAL
Atmega328p w/Opti bootloader 1
L293D h-bro 1
16Mhz kristall 1
PCB 1
22pf mössor 2
100uF cap 1
10uF cap 2
0.1uF mössa 4
T7805 5V DC regulator 1
DOPPA uttagen 28-pin 1
DOPPA uttag 16-pin 1
Headers 1
Hoppare ledningar 10
LED 2
Resistorer 220 ohm 2
Resistor 10K ohm 1
Tryckknapp 1

Jag har uppskattat den totala kostnaden för den GOduino II runt $20 plus frakt och hantering.

Som för Arduino IDE 1.0, kanna den bli dataöverföring gratis
http://Arduino.cc/en/main/Software

MAPPNING AV L293D STIFT TILL ATMEGA328P (ARDUINO UNO)

Bullet siffrorna nedan motsvarar L293D stiften. Denna pin kartläggning fungerar med min test Arduino skiss. Men du kan ändra den för att passa dina syften.

1. Aktivera/inaktivera Motor 1. Också används för att styra hastigheten på Motor 1. Arduino digital PWM stift 9. ATmega328 pin 15.
2. Anslut till Arduino till kontroll Motor 1 rotationsriktning. Arduino digital stift 3. ATmega328 stift 5.
3. Anslut till Motor 1 första pole.
4. Anslut till marken.
5. Anslut till marken.
6. Anslut till Motor 1 andra pol.
7. Anslut till Arduino till kontroll Motor 1 rotationsriktning. Arduino digital stift 2. Atmega328 stift 4.
8. Anslut till strömförsörjningen som kommer att driva båda motorer. Detta kan eller inte kan regleras.
9. Aktivera/inaktivera för Motor 2. Också används för att styra hastigheten på Motor 2. Anslut till Arduino PWM stift 10. ATmega328 pin 16.
10. Anslut till Arduino att styra riktning av rotation för Motor 2. Arduino stift 7. ATmega328 stift 13.
11. ansluta till Motor 2 - första pole.
12. Anslut till marken.
13. Anslut till marken.
14. ansluta till Motor 2 - andra pole.
15. Anslut till Arduino att styra riktning av rotation för Motor 2. Arduino stift 8. ATmega328 stift 14.
16. Anslut till reglerade 5V DC.

PCB ANTECKNINGAR

Varför använde jag manliga huvuden för att exponera stiften på både ATmega328p och L293d? Du kan använda Arduino stil headers istället men jag hade gott om manliga headers och massor av kvinnliga hoppare ledningar. Men för min nästa GOduino II bygga, jag kommer att använda Arduino stil headers. Jag känner mig säkrare med färre IC stift utsatt.

L293D NUVARANDE

L293D i GOduino II klarar ihållande 600 mA per motor. Det verkar finnas någon missuppfattning om detta ICs förmåga att hantera 1.2a toppströmmen per motor. L293D databladet säger att den gör men för en bråkdel av en sekund (100 µs). Detta är inte tillräckligt för att stödja en motor på topp/stall nuvarande som kan pågå i några sekunder eller minuter.

Men den goda nyheten är att du kan dubbla 600mA per motor stöd genom att följa en annan L293D. I sin enklaste innebär detta lödning en L293D ovanpå ett annat medan matchande stiften.

L293D SPÄNNING

L293D måste drivas på två sätt. Måste 5V DC för dess logiska kretsar (pin 16) och makten från 4.5V till 36V för motorer (stift 8). Kontrollera din motor datablad för att hitta sin spänning.
Jag fick reda på att genom att kontrollera PWM signaler från ATmega328p wired till aktivera stift av den L293D jag lyckades ändra den spänningsfrekvens till motorn. Så trots att jag levererar 7.2V till min motorer via L293D, kan jag minska den genom att ändra värdena i funktionen analogWrite i min Arduino skiss.

BORSTAD DC-MOTORER

Den GOduino II fungerar med upp till 2 borstad DC motorer inom spänna av 4.5V till 36V med maximalt laddar av 600mA för varje motor. Dessa motorer generera massor av elektriska störningar som kan orsaka alla typer av frågor från dålig sensor behandlingen (om du har sensorer kopplade till din GOduino II) till konstant IC återställs. För att ta itu med detta, jag alltid placera en 0.1uF keramiska kondensator över polerna av varje motor.

MOTORISKA ROTATION

Din motor rotationsriktningen är en subjektiv uppmaning. I min kod, jag använder orden fram och tillbaka för att beskriva några av mina uppgifter. I själva verket bestämmer hur du tråd din motors och pins när rotationen av en motor är framåt eller bakåt eller medurs vs moturs. Tänk på att motorer på motsatta sidor av en robot plattform spin mittemot varandra. Om din motors inte rotera det sätt du vill ha dem, ofta fix kan vara i koden utan att tillgripa omkoppling.

PROGRAMMERA GODUINO II

Så hur du programmet ATmega328p på GOduino II? En dator med en seriell port bör göra fint. Men utan en seriell port, här är alternativen.

1) om du har en Arduino Uno dopp modell kan du bara ladda din skiss från Arduino IDE 1.0 som du normalt gör. Ta sedan bort ATmega328p från din Arduino Uno och sätt in den i uttaget GOduino II IC. Det var allt. Jag beställde några ATmega328p ICs (dopp) pre laddade med Arduino Uno bootloader så jag kan använda dem på detta sätt.

2) eller du kan använda Arduino Uno för att programmera en ATmega328p. SparkFun har en bra handledning om hur man gör detta. Se artikel ominstallation uppstartshanterare Arduino och använda en Arduino att programmera en AVR i avsnittet referenser.

3) eller en infogad programmerare som de som säljs av Sparkfun, LadyAda eller Pololu kan du ladda Arduino skisser direkt från Arduino IDE till ATmega328p utan att ta bort det från GOduino II PCB-uttaget. Se länk i avsnittet referenser till artikeln av David A. Mellis att bygga och programmera en Arduino Uno på en skärbräda. Du kan spara en dollar eller två genom att köpa 328p tomt sedan bränna bootloader dig själv om du har växeln och vet hur.

ARDUINO TEST SKISS

Arduino 1.0 test skissen nedan verkar som en lång program men det upprepade mestadels kodblock att snurra motorerna så att stiften och motor polacker är korrekt ansluten. Jag har skrivit 4 funktioner som kan hantera de flesta robot förflyttning uppgifter men känn dig fri att ändra det så länge L293D aktiverar stift (1,9) är ansluten till PWM stift på Arduino/ATmega328p och koden nedan är uppdateringar att spegla någon uppladdning av stiften.

/*
REMIXAD AV: TECHBITAR / HAZIM BITAR

DATUM: APRIL 3, 2012

PROJEKT: GOduino II TEST

FUNKTION: Denna skiss är en Arduino 1.0 IDE testprogram för GOduino II PCB-kortet. GOduino II är en integrerad "runtime" Arduino Uno och L293D h-bryggan aka motor driver som tillåter framåt och bakåt rörelse motorer samt variabel hastighet. Detta test koden förutsätter två motorer (varje < 600mA i toppström) är kopplade till GOduino II

Detta prov skiss kräver följande tre funktioner med variabel motornum = 1 eller 2 att beteckna Motor 1 och Motor 2.

-motorforward (int motornum)
-motorback (int motornum)
-motorstop (int motornum)
-motorspeed (int motor1, int motor2)

LICENS: Detta är shareware men ge kredit.

HEMSIDA: http://techbitar.blogspot.com

E-post: techbitar AT gmail DOT com

*/

karta motor polacker till Arduino stift
#define motor1pole1 2
#define motor1pole2 3
#define motor2pole1 7
#define motor2pole2 8

karta L293d motor aktiverar pins till Arduino stift
#define enablePin1 9
#define enablePin2 10

#define M1_MAX_SPEED 100
#define M2_MAX_SPEED 100

#define motordelay 30
#define debugmotorsec 3000

void setup() {
Serial.BEGIN(9600);

uppsättning mappade L293D motor1 och motor 2 aktiverar stift på Arduino att produktionen (att slå på/av motor1 och motor2 via L293D)
pinMode (enablePin1, produktionen);
pinMode (enablePin2, produktionen);

uppsättning mappade motor polacker till Arduino stift (via L293D)
pinMode (motor1pole1, produktionen);
pinMode (motor1pole2, produktionen);
pinMode (motor2pole1, produktionen);
pinMode (motor2pole2, produktionen);
MotorSpeed (0, 0);
}

int mspeed = 100; plocka en start hastighet upp till 255

void loop() {

ange hastigheten på motor 1 och 2 till samma hastighet
MotorSpeed (mspeed, mspeed);

snurra motorn 1 endast i en riktning
Serial.Print ("MOTOR 1 @ fart framåt:");
Serial.println(mspeed);
motorforward(1);
Delay(debugmotorsec);
motorstop(1);

snurra motor 2 endast i en riktning
Serial.Print ("MOTOR 2 @ fart framåt:");
Serial.println(mspeed);
motorforward(2);
Delay(debugmotorsec);
motorstop(2);

snurra motorn 1 endast i motsatt riktning
Serial.Print ("tillbaka MOTOR 1 @ hastighet:");
Serial.println(mspeed);
motorback(1);
Delay(3000);
motorstop(1);

snurra motor 2 endast i motsatt riktning
Serial.Print ("MOTOR 2 tillbaka @ hastighet:");
Serial.println(mspeed);
motorback(2);
Delay(debugmotorsec);
motorstop(2);

stoppa båda motorer 1 och 2
Serial.println ("båda motorer stopp för 2 sek.");
motorstop(1);
motorstop(2);
Delay(2000);

snurra båda motorer i en riktning
Serial.Print ("båda motorerna @ fart framåt:");
Serial.println(mspeed);
motorforward(1);
motorforward(2);
Delay(debugmotorsec);

stoppa båda motorer
Serial.println ("båda motorer stopp för 2 sek.");
motorstop(1);
motorstop(2);

Delay(2000);
snurra båda motorer i motsatt riktning
Serial.Print ("båda MOTORS tillbaka @ hastighet:");
Serial.println(mspeed);
motorback(1);
motorback(2);
Delay(debugmotorsec);

stoppa båda motorer
Serial.println ("båda motorer stopp för 2 sek.");
motorstop(1);
motorstop(2);
Delay(2000);

Spin båda motorer men i motsatta riktningar
Serial.Print ("MOTOR1 fram | MOTOR2 TILLBAKA @ HASTIGHET: ");
Serial.println(mspeed);
motorforward(1);
motorback(2);
Delay(debugmotorsec);

stoppa båda motorer
Serial.println ("båda motorer stopp för 2 sek.");
motorstop(1);
motorstop(2);
Delay(2000);

snurra båda motorer i andra motsatt riktning
Serial.Print ("MOTOR1 tillbaka | MOTOR2 @ FART FRAMÅT: ");
Serial.println(mspeed);
motorback(1);
motorforward(2);
Delay(debugmotorsec);

stoppa båda motorer
Serial.println ("båda motorer stopp för 2 sek.");
motorstop(1);
motorstop(2);
Delay(2000);

mspeed += 50; Tillsätt 50 för att påskynda av motor spin. Maxhastighet 255

ange hastigheten på motor 1 och 2 till samma nya hastighet
MotorSpeed(mspeed,mspeed);

}

MOTORISKA FUNKTIONER

Annullera motorstop (int motornum) {
Delay(motordelay);
om (motornum == 1) {
digitalWrite (motor1pole1, låg);
digitalWrite (motor1pole2, låg);
}
annars om (motornum == 2) {

digitalWrite (motor2pole1, låg);
digitalWrite (motor2pole2, låg);
}
Delay(motordelay);
}

void motorforward (int motornum) {
om (motornum == 1) {
digitalWrite (motor1pole1, hög);
digitalWrite (motor1pole2, låg);
}
annars om (motornum == 2) {

digitalWrite (motor2pole1, låg);
digitalWrite (motor2pole2, hög);
}
Delay(motordelay);
}

void motorback (int motornum) {
om (motornum == 1) {
digitalWrite (motor1pole1, låg);
digitalWrite (motor1pole2, hög);
}
annars om (motornum == 2) {
digitalWrite (motor2pole1, hög);
digitalWrite (motor2pole2, låg);
}
Delay(motordelay);
}

void motorspeed (int motor1speed, int motor2speed) {
om (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; Limit toppfart
om (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; Limit toppfart
om (motor1speed < 0) motor1speed = 0; hålla motor ovan 0
om (motor2speed < 0) motor2speed = 0; hålla varvtal över 0
analogWrite (enablePin1, motor1speed);
analogWrite (enablePin2, motor2speed);
}

// ====================================

SLUTLIGA ANTECKNINGAR

Jag kommer fortsätta att utvecklas i GOduino II medan letar efter bättre alternativ som är hög på reparationsmöjlighet och hackability poäng. En $30 Arduino Uno kan hamna kostar $60 efter tull och frakt i Jordanien. Och om något går fel med det, du kan också kasta bort eftersom någon lokal anläggning finns för att ersätta och reparera smd komponenter. Eftersom grundläggande elektroniska delar finns tillgängliga lokalt, bör det vara lätt och billigt att bygga och reparera den GOduino II. DOPPA liv på...

BUDGET

Några läsare undrade var man kan köpa delar bo inom budget. Jag beställer mina delar från Futurlec.com den hela GOduino som uppgår till mindre än $12 om du inte har en Arduino UNO dopp mikrokontroller och inte vill köpa en, behöver du en FTDI USB-seriell programmerare. Du kan köpa dem för ca $15

Futurlec är inte min sponsor och jag får inte kommissionen eller rabatter för att nämna dem.

REFERENSER

GOduino: Den Arduino Uno + Motor Driver klon

Bygga en Arduino på en skärbräda av David A. Mellis
http://Arduino.cc/en/main/standalone

Kontrollera din motors med L293D och Arduino av Guilherme Martins

Styra en likströmsmotor med Arduino och L293D chip
http://luckylarry.co.uk/Arduino-projects/Control-a-DC-motor-with-Arduino-and-l293d-chip

Installera om din Arduino starthanterare
http://www.Sparkfun.com/tutorials/247

Genom att använda en Arduino att programmera en AVR
http://www.Sparkfun.com/tutorials/200

Relaterade Ämnen

Seriella kontrollerad variabel hastighet Motor

kontrollera hastigheten på en liten likströmsmotor med bara den seriella porten på datorn, en enda MOSFET och vissa triviala program. (MOSFET och den seriella porten utgör "speed control", du behöver fortfarande en motor och en lämplig strömkäll...

Skulptur Robot (del 8 av 9): Arduino Robotics manöverdonet Motor Controller

jag har byggt upp skulptur i över tio år och jag har sett den bearbetning tekniska utvecklingen gå från CNC fräsning till 3D desktop-objektet utskrift. Dessa "att göra maskiner" har bildat en fysisk skillnad mellan mina händer och material jag s...

Hjälp av WASP Motor Controller (ESC)

I detta Instructable kommer vi att lära att styra en geting motor controller med en Arduino.WASP motor controller är en elektronisk Varvtalsregulator (ESC), ta en RC signalingång från en Arduino och öka det till en hög spänning. GETINGEN tar en power...

GOduino - den Arduino Uno + Motor Driver klon

uppdateringar4/4/2012: den pcb versionen med variabelt varvtal, GOduino II, är på min blogg http://techbitar.blogspot.com/2012/04/goduino-ii-motor-driver-arduino-uno.html och här29/3/2012: rättelser till motor belastning beräkningar avsnitt.14/3/2012...

24V Motor Controller för $24, RC & Arduino

Som många människor, har jag velat använda basen på en elrullstol för fjärrkontrollen projekt. Dock rätt motor styrenheter är dyra, och jag tänkte att det måste finnas en billigare lösning. Jag ursprungligen köpte borstad råden (elektronisk Hastighet...

Arduino Lego EV3 motor controller spara $45

Genom att göra en diy lego ev3 motor controllerSteg 1: Intro Så jag har ett kit som heter lego mindstorms EV3 är det en häpnadsväckande $349 robotics kit som verkligen är enkel att bygga som lego men har verkligen awesome funktioner den kit funktione...

Arduino moduler - L298N dubbla H-Bridge Motor Controller

Snabb och enkel start guide för att använda och utforska en L298N Dual H-Bridge Motor Controller module med en Arduino.Modellen i exemplet jag använder är från Ebay.Material som behövs:L298N dubbla H-Bridge Motor Controller module (olika modeller fun...

L293D motors controller module / handledning

L293D är ett chip som möjligt för oss att styra två motorer tillsammans med endast en Arduino ombord eller andra microcontrollers. Dock jag med ett projekt som krävs kontroll fyra DC-motorer tillsammans. Nyligen tog jag en L293D Arduino sköldar, det...

PWM Arduino fläkt hastighet controller

enkelt dubbla kanaler PWM Arduino fan speed controller sköldDu kan hämta pcb ett sch (gjorda med expresspcb) från min hemsida (ladda ner avsnitt): http://www.apcc.tkSteg 1: Del förteckning Del förteckning:-3,5 cm x 6 cm single sided PCB-2st BD139 eff...

Kontrollera Actobotics dubbla Motor Controller

Actobotics dubbla Motor Controller (DMC) kan styra 1 eller 2 motorer på 4,8 – 16 volt och leverera 20 ampere per motor kontinuerligt och upp till 30 ampere per motor ögonblickligt (topp). Det finns ett antal olika sätt du kan styra DMC, till exempel:...

BLDC Motor Control med Arduino, bärgades HD motor och hallgivare

det finns ett stort intresse dessa dagar bland hobbyister kontrollera borstlösa DC (BLDC) motorer, som har bättre prestanda och bättre energieffektivitet övertraditionella DC-motorer, är men svårare att använda. Många off-the-shelf produkter finns fö...

BaW-Bot del 2: Bygga motor-controller & kropp

detta är den andra delen av vår BaW-Bot (klockor och visselpipor Bot) bygga-5 separata instructables som undersöka olika Arduino-relaterade tekniker, kombinera för att skapa en Bot med alla klockor-och-visselpipor.Del 1: Bygga en Arduino på ett bräde...

Göra en 8-amp Dual Motor Controller för $40

The OctoDriver är en öppen 8-amp Motor controller. Anslut den till din Arduino, Propeller eller PICAxe att styra mer kraftfulla motorer!Jag har jobbat på en dogie dörr ett tag - medan programvaran är enkel, att hitta en lämplig motor controller har v...

PIC RC Motor Controller (och exempel lego roboten)

notering för National Robotics vecka Robot Contest: Jag är över 18. Jag är en student vid University of Wisconsin-Milwaukee. Detta projekt är relaterad till min stora som maskinteknik student. Det är också lärt mig färdigheter som har lett till under...

Arduino L293D hinder undvika Robot

Vad du behöver att göra det är.1. Arduino uno.2. chassi kit av något slag.3. L293D motoriska drivande chip.4. makten smidig jag använde 0.5 mah li-po batteri på 7.4v5. massor av ledningar6. ultra sonic avstånd sensor7. potentiometerNär du lägger kode...

12-24v DC motor controller med en EG1 SPLat PLC

Det finns inte många enkla programmerbara DC motor controller instruktioner ute men nu vill jag ge dig steg för steg instruktioner om hur man gör en som kan utvidgas för användning på robotar till en 500W elektriska gå vagn!(Obs detta instructable vi...

DC Motor Controller

Denna enkla DC motor controller gör det möjligt för en riktning motorisk kontroll och har byggts helt av regenererade elektriska delar. Använda MOSFETS för motorisk kontroll istället för kontroll chips, tillåter en extern strömkälla och elektrisk iso...

Variabel hastighet fläkt med Snap kretsar, Kano dator

I en tidigare handledning jag visat hur blinka en Snap kretsar ledde med Kano datorn (blinkar en LED är "Hello World!" av maskinvara dataintrång) och i den här guiden ska jag visa hur man kör en variabel hastighet fläkt med Snap kretsar och Kano...

Installera variabel hastighet Pool Pump, Filter och VVS

installera VVS för en pool är typ av en konstform. Säker på att få saker och arbeta ganska lätt, men att göra saker ser bra ut och arbetet är effektivt där konsten kommer in. Det är ganska lätt att ha slangen kör överallt gör det svårt att upprätthål...