GOduino II werd gekenmerkt op dangerousprototypes.com
04/07/2012 heb ik een begroting dia toegevoegd voor de lezers die vroegen zich af waar ik heb mijn budget < $20 voor de GOduino II.
INTRODUCTIE
De GOduino II is een self-contained programmeerbare controller voor wiel gebaseerde robots. Het is een kloon Arduino Uno plus een L293D motor stuurprogramma voor onder $20. Controleert zowel motor richting en snelheid. De voorganger van de prototype van dit is de GOduino, een basic-versie van deze controller op een breadboard. Ik zal updates voor deze handleiding handhaven, zowel hier als op mijn blog http://techbitar.blogspot.com
ACHTERGROND
Ik heb een paar fundamentele robots met behulp van de Arduino Uno en motor schilden ontworpen. Beide zijn geweldig voor prototyping. Maar ik vond mezelf nemen mijn robots naast elke keer dat ik nodig had om een andere robot te bouwen. Het is niet kosteneffectief te kopen meer Arduino microcontrollers en motor schilden voor elk nieuw project van de robot.
Ook in landen als Jordanië waar het gemiddelde maandinkomen is ongeveer $300 en een schandalig hoog tarief code die is vijandig tegenover de technologie, het wordt een noodzaak voor studenten en beleidsmakers om lokaal gemonteerd low-cost, gerepareerd alternatieven voor geïmporteerde elektronische schakelingen.
FUNCTIONALITEIT
De GOduino II werkt voor 2 motoren alleen en laat veel van Arduino pins beschikbaar voor sensoren. Dit is ook mijn eerste uit-kras pcb avontuur. Als je aan de achterkant van de GOduino II kijkt, ziet u allerlei aanwijzingen naar mijn onervarenheid. En ja, ik ben een software-man, dus dit allemaal relatief nieuw voor mij is. U zult merken dat sommige van mijn headers buck tanden hebben. Ik had een paar ongelukken tijdens het solderen. Mijn volgende versie zullen netter.
Dit mag niet spullen van de stand van de techniek, maar het doet het werk voor mij en mijn protospace leden. Als het helpt iedereen daar, stuur me dan een link. Zoals altijd, als u eventuele gebreken zien of suggesties dat dit een beter ontwerp kunnen maken, gelieve uw gedachten.
KREDIET
Dit project is gebaseerd op de werken van zo veel goede mensen. Bekijk alstublieft referenties onderaan voor een aantal van de projecten die de Stichting dit bescheiden PCB-project voorziet.
ONDERDELENLIJST
ITEM AANTAL
Atmega328p w/Opti bootloader 1
L293D h-brug 1
16Mhz kristal 1
PCB 1
22pf caps 2
100uF cap 1
10uF GLB 2
0.1uF cap 4
T7805 5V DC regelgever 1
DIP sockets 28-pins 1
DIP socket 16-pin 1
Kop 1
Jumper draden 10
LED 2
Weerstanden 220 Ohm 2
Weerstand 10K Ohm 1
Drukknop 1
Ik heb naar schatting van de totale kosten van de GOduino II rond $20 + verzendkosten.
Wat betreft de Arduino IDE 1.0, kan gratis worden gedownload
http://Arduino.CC/en/Main/software
TOEWIJZING L293D PINNEN AAN ATMEGA328P (ARDUINO UNO)
De kogel artikelnummers komt overeen met de pinnen van de L293D. Deze pin toewijzing werkt met mijn test Arduino schets. Maar u kunt aan uw doeleinden.
1. Activeer/Deactiveer Motor 1. Ook gebruikt voor de controle van de snelheid van Motor 1. Arduino digitale PWM pin 9. ATmega328 pin 15.
2. Verbind met Arduino op controle richting van de rotatie van de Motor 1. Arduino digitale pin 3. ATmega328 pin 5.
3. sluit aan Motor 1 eerste pole.
4. Verbind met grond.
5. Verbind met grond.
6. sluit aan Motor 1 tweede paal.
7. verbinden met Arduino op controle richting van de rotatie van de Motor 1. Arduino digitale pin 2. Atmega328 pin 4.
8. sluit aan voeding die wilskracht van beide motoren. Dit kan of kan niet worden geregeld.
9. Activeer/deactiveer voor Motor 2. Ook gebruikt voor de controle van de snelheid van de Motor 2. Verbinden met Arduino PWM pin 10. ATmega328 pin 16.
10. sluit aan Arduino aan controle richting van rotatie voor Motor 2. Arduino pin 7. ATmega328 pin 13.
11. sluit naar Motor 2 - eerste pole.
12. sluit aan de grond.
13. sluit aan de grond.
14. verbinden met Motor 2 - tweede paal.
15. sluit aan Arduino aan controle richting van rotatie voor Motor 2. Arduino pin 8. ATmega328 pin 14.
16. sluit aan op 5V DC geregeld.
PCB NOTITIES
Waarom ik mannelijke headers gebruiken om de pinnen van zowel de ATmega328p als de L293d bloot te stellen? U kunt in plaats daarvan Arduino stijl headers maar ik had veel mannelijke headers en tal van vrouwelijke jumper draden. Maar voor mijn volgende GOduino II te bouwen, zal ik gebruik Arduino stijl headers. Ik voel me veiliger met minder IC pinnen blootgesteld.
HUIDIGE L293D
De L293D in de GOduino II aankan aanhoudende stroom van 600 mA per motor. Er lijkt te zijn sommige misvatting over deze ICs kunnen omgaan met 1.2a piekstroom per motor. Het gegevensblad van de L293D zegt dat het doet, maar voor een fractie van een seconde (100 µs). Dit is niet genoeg ter ondersteuning van een motor op piek/kraam huidige die enkele seconden of minuten kan duren.
Maar het goede nieuws is dat je verdubbelen de 600mA per motordrager kunt door een andere L293D meeliften. Op het eenvoudigste betekent dit een L293D bovenop een andere terwijl overeenkomen met de pinnen solderen.
L293D SPANNING
De L293D moet op twee manieren worden aangedreven. Het moet 5V DC voor de logische circuits (pin 16) en vermogen van 4.5V tot 36V voor de motoren (pin 8). Controleer uw motor gegevensblad vind je de spanning.
Ik ontdekte dat door het beheersen van de PWM-signalen van de ATmega328p aangesloten op de pennen van het inschakelen van de L293D die ik erin geslaagd om het wijzigen van de geleverde spanning aan de motor. Dus hoewel ik 7.2V aan mijn motoren via de L293D leveren, kan ik verminderen door het manipuleren van de waarden in de analogWrite functie in mijn Arduino schets.
GEBORSTELD GELIJKSTROOMMOTOREN
De GOduino II werkt met maximaal 2 geborsteld gelijkstroommotoren binnen het bereik van 4.5V aan 36V met piekbelasting van 600mA voor elke motor. Deze motoren genereren veel elektrische ruis die leiden allerlei problemen van arme sensorgegevens tot kan (hebt u sensoren bevestigd aan uw GOduino II) naar constante IC opnieuw ingesteld. Om te gaan met dit, plaats ik altijd een 0.1uF keramische condensator over de pijlers van elke motor.
MOTOR ROTATIE
Uw motor draairichting is een subjectieve oproep. In mijn code, ik gebruik de woorden vooruit en terug om te beschrijven een aantal van mijn functies. In werkelijkheid, de manier waarop u uw motoren en pinnen draad bepaalt wanneer de draaihoek van een motor wordt voorwaarts of achterwaarts of met de klok mee vs linksom. Houd in gedachten dat aan weerszijden van een spin van de robot-platform tegenover elkaar motoren. Als uw motoren niet de gewenste manier, vaak die de correctie in uw code worden kan zonder toevlucht te nemen tot herbedradingsproces draaien.
PROGRAMMERING GODUINO II
Zo hoe u de ATmega328p op de GOduino II programma? Een computer via een seriële poort moet mooi doen. Maar zonder een seriële poort, hier zijn de alternatieven.
1) hebt u een Arduino Uno DIP-model kunt u gewoon laden uw schets van de Arduino IDE 1.0 de manier waarop die u normaal gesproken doen. Verwijder de ATmega328p uit uw Arduino Uno vervolgens en plaatst u deze in de GOduino II IC socket. Thats it. Ik bestelde een paar ATmega328p ICs (DIP) pre geladen met de Arduino Uno bootloader, zodat ik ze op deze manier kunt gebruiken.
2) of u kunt de Arduino Uno voor het programmeren van een ATmega328p. SparkFun heeft een goede tutorial over hoe dit te doen. Zie artikel opnieuw te installeren uw bootloader Arduino en met behulp van een Arduino te programmeren een AVR in de sectie verwijzingen.
3) of u kunt een inline-programmeur als die verkocht door Sparkfun, LadyAda of Pololu Arduino schetsen rechtstreeks vanuit de Arduino IDE om in te laden de ATmega328p zonder het te verwijderen uit de GOduino II PCB-aansluiting. Zie koppeling in de sectie verwijzingen naar het artikel door David A. Mellis over het bouwen en programmeren van een Arduino Uno op een breadboard. U kunt een dollar of twee door de 328p leeg kopen dan branden de bootloader zelf als u de versnelling hebt en weet hoe.
DE SCHETS VAN DE ARDUINO TEST
De Arduino 1.0 test schets hieronder lijkt een lange programma, maar het wordt meestal herhalende blokken code te draaien de motoren en om de pinnen en de Polen van de motor goed zijn aangesloten. Ik heb 4 functies die kunnen omgaan met de meeste robot motoriek taken maar voel je vrij om het te veranderen, zolang de L293D inschakelen pinnen (1,9) zijn aangesloten op PWM pinnen op de Arduino/ATmega328p en de code hieronder updates om na te denken om het even welk herbedradingsproces van pinnen.
/*
REMIXED DOOR: TECHBITAR / HAZIM BITAR
DATUM: APRIL 3, 2012
PROJECT: GOduino II TEST
FUNCTIE: Deze sketch is een Arduino 1.0 IDE-testprogramma voor het GOduino II PCB-board. De GOduino II is een geïntegreerde "runtime" Arduino Uno en L293D h-brug aka motor stuurprogramma waarmee voorwaartse en omgekeerde beweging van motoren evenals variabele snelheid. Deze test code wordt ervan uitgegaan dat de twee motoren (elke < 600mA in piek stroom) zijn gekoppeld aan de GOduino II
Dit monster schets de volgende drie functies met variabele motornum aanroept = 1 of 2 om aan te duiden Motor 1 en Motor 2.
-motorforward (int motornum)
-motorback (int motornum)
-motorstop (int motornum)
-motorspeed (int motor1, int motor2)
LICENTIE: Dit is shareware, maar geef krediet.
WEBSITE: http://techbitar.blogspot.com
E-mail: techbitar AT gmail DOT com
*/
de motor Polen kaart op Arduino pinnen
#define motor1pole1 2
#define motor1pole2 3
#define motor2pole1 7
#define motor2pole2 8
kaart L293d motor schakelen pinnen op Arduino pinnen
#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);
set toegewezen L293D motor1 en motor 2 inschakelen pinnen op Arduino aan output (te schakelen aan/uit motor1 en motor2 via L293D)
pinMode (enablePin1, OUTPUT);
pinMode (enablePin2, OUTPUT);
set motor Polen toegewezen aan Arduino pinnen (via L293D)
pinMode (motor1pole1, OUTPUT);
pinMode (motor1pole2, OUTPUT);
pinMode (motor2pole1, OUTPUT);
pinMode (motor2pole2, OUTPUT);
motorspeed (0, 0);
}
int mspeed = 100; Kies een startende snelheid maximaal 255
void loop {}
snelheid van motor 1 en 2 ingesteld op dezelfde snelheid
motorspeed (mspeed, mspeed);
motor 1 slechts in één richting draaien
Serial.Print ("MOTOR 1 voorwaartse @ snelheid:");
Serial.println(mspeed);
motorforward(1);
delay(debugmotorsec);
motorstop(1);
motor 2 slechts in één richting draaien
Serial.Print ("MOTOR 2 voorwaartse @ snelheid:");
Serial.println(mspeed);
motorforward(2);
delay(debugmotorsec);
motorstop(2);
motor 1 alleen in tegengestelde richting draaien
Serial.Print ("MOTOR 1 terug @ snelheid:");
Serial.println(mspeed);
motorback(1);
delay(3000);
motorstop(1);
motor 2 alleen in tegengestelde richting draaien
Serial.Print ("MOTOR 2 @ snelheid terug:");
Serial.println(mspeed);
motorback(2);
delay(debugmotorsec);
motorstop(2);
stoppen van beide motoren 1 en 2
Serial.println ("beide motoren STOP voor 2 SEC.");
motorstop(1);
motorstop(2);
delay(2000);
Draai beide motoren in één richting
Serial.Print ("beide motoren voorwaartse @ snelheid:");
Serial.println(mspeed);
motorforward(1);
motorforward(2);
delay(debugmotorsec);
stoppen van beide motoren
Serial.println ("beide motoren STOP voor 2 SEC.");
motorstop(1);
motorstop(2);
delay(2000);
beide motoren in tegengestelde richting draaien
Serial.Print ("beide motoren terug @ snelheid:");
Serial.println(mspeed);
motorback(1);
motorback(2);
delay(debugmotorsec);
stoppen van beide motoren
Serial.println ("beide motoren STOP voor 2 SEC.");
motorstop(1);
motorstop(2);
delay(2000);
Draai beide motoren maar in tegengestelde richtingen
Serial.Print ("MOTOR1 vooruit | MOTOR2 @ TERUG SNELHEID: ");
Serial.println(mspeed);
motorforward(1);
motorback(2);
delay(debugmotorsec);
stoppen van beide motoren
Serial.println ("beide motoren STOP voor 2 SEC.");
motorstop(1);
motorstop(2);
delay(2000);
beide motoren in de andere richting draaien
Serial.Print ("MOTOR1 terug | MOTOR2 @ VOORWAARTSE SNELHEID: ");
Serial.println(mspeed);
motorback(1);
motorforward(2);
delay(debugmotorsec);
stoppen van beide motoren
Serial.println ("beide motoren STOP voor 2 SEC.");
motorstop(1);
motorstop(2);
delay(2000);
mspeed += 50; Voeg 50 om de snelheid van de motor draaien. Max snelheid 255
snelheid van motor 1 en 2 ingesteld op dezelfde nieuwe snelheid
motorspeed(mspeed,mspeed);
}
MOTORISCHE FUNCTIES
VOID motorstop (int motornum) {}
delay(motordelay);
Als (motornum == 1) {}
digitalWrite (motor1pole1, laag);
digitalWrite (motor1pole2, laag);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, laag);
digitalWrite (motor2pole2, laag);
}
delay(motordelay);
}
VOID motorforward (int motornum) {}
Als (motornum == 1) {}
digitalWrite (motor1pole1, hoge);
digitalWrite (motor1pole2, laag);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, laag);
digitalWrite (motor2pole2, hoge);
}
delay(motordelay);
}
VOID motorback (int motornum) {}
Als (motornum == 1) {}
digitalWrite (motor1pole1, laag);
digitalWrite (motor1pole2, hoge);
}
else if (motornum == 2) {}
digitalWrite (motor2pole1, hoge);
digitalWrite (motor2pole2, laag);
}
delay(motordelay);
}
VOID motorspeed (int motor1speed, int motor2speed) {}
Als (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; limiet topsnelheid
Als (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; limiet topsnelheid
Als (motor1speed < 0) motor1speed = 0; motor boven 0 houden
Als (motor2speed < 0) motor2speed = 0; Houd motor snelheid groter dan 0
analogWrite (enablePin1, motor1speed);
analogWrite (enablePin2, motor2speed);
}
// ====================================
DEFINITIEVE NOTA 'S
Ik zal blijven evolueren van de GOduino II terwijl op zoek naar betere alternatieven die hoog op de score vergemakkelijkt en hackability. Een 30 dollar Arduino Uno kan uiteindelijk kost $60 na tarieven en verzendkosten in Jordanië. En als er iets misgaat met het, u misschien ook weggooien omdat geen lokale faciliteit bestaat om te vervangen en repareren van smd onderdelen. Aangezien elektronische basisdelen lokaal beschikbaar zijn, moet het gemakkelijk en goedkoop te bouwen en herstellen van de GOduino II. DIP leeft voort...
BEGROTING
Een paar lezers vroeg zich af waar te kopen van de onderdelen binnen het budget blijven. Ik bestel mijn onderdelen van Futurlec.com de hele GOduino komt neer op minder dan $12 dat als u niet een Arduino UNO DIP microcontroller hoeft en niet wilt kopen, moet u een FTDI USB-serieel-programmeurs. U kunt kopen die voor ongeveer $15
Futurlec is niet mijn sponsor en krijg ik niet Commissie of kortingen voor de vermelding van hen.
VERWIJZINGEN
GOduino: De Arduino Uno + Motor Driver kloon
Een Arduino kapitaliseren een Breadboard door David A. Mellis
http://Arduino.CC/en/Main/standalone
Controle van uw motoren met L293D en Arduino door Guilherme Martins
Controle van een DC-motor met Arduino en L293D chip
http://luckylarry.co.uk/Arduino-Projects/Control-a-DC-motor-with-Arduino-and-l293d-chip
Opnieuw installeren van uw bootloader van de Arduino
http://www.Sparkfun.com/tutorials/247
Met behulp van een Arduino te programmeren een AVR
http://www.Sparkfun.com/tutorials/200