OMA-Intro-Robotica

Uit Aureus Beta
Naar navigatie springen Naar zoeken springen

Om een werkende robot te maken moet je een boel dingen die je hebt geleerd plotseling tegelijk gaan gebruiken. Dit is niet voor iedereen even fijn natuurlijk. Wat bijna iedereen wel fijn vindt is om een eenvoudig voorbeeld te volgen en vervolgens zelf e.e.a. aan te passen ... Lees vooral verder!

Robotica-intro-simplebot001.png

Wat heb je nodig

De onderdelen zul je mogelijk zelf uit de dozen moeten halen. Voor het gemak staan er hier plaatjes bij!

1 Arduino
Parts-arduino001.png
1 H-Brug of L298D
Parts-l298d001.png
2 DC motors (let op of er 2 snoertjes aanzitten!)
Parts-dcmotors001.png
6 snoertjes M(ale) - F(emale)
Parts-snoer-mf001.png
2 snoertjes M(ale)-M(ale)
Parts-snoer-mm001.png
1 casterball of rolknikker
Parts-casterball001.png
1 batterijhouder 9V (E-blok)
Parts-batterijhouder9V002.png


Dan is het nog handig om bij de hand te hebben: Een stuk of 6 schroefjes, 4 tie-wraps, een schroevendraaier en een boormachine.

Stap 1: De basis

Beginnen doen we aan de basis. In het geval van dingen op wielen zeg je dan meestal het 'chassis'. Waar het op neerkomt is dat het een plat ding is waar we alle spullen op kwijt kunnen.

Robotica-intro-basis001.png

Uiteraard mag dit een oude schuttingplank zijn (zoals de voorbeeldrobot ...), maar je kunt ook een bijzondere vorm maken met de lasersnijder, of iets in meerdere lagen uitprinten met de 3D printer.

Robotica-intro-basis002.png

Boor wat gaatjes in je basis. Deze mogen ongeveer twee centimeter uit de rand en dan ook nog eens iets van drie centimeter van elkaar vandaan zitten. Leg vooral de motor ernaast zodat je ziet waar je moet zijn. Slimme leerlingen meten eerst, en boren daarna pas ...

Robotica-intro-basis003.png

De motoren kun je met de tie-wraps vastmaken en de wielen op de motoren zetten als je dat nog niet gedaan had. Let er bij het vastmaken even op dat de wielen vrij kunnen draaien zonder tegen het chassis of de tie-wraps aan te lopen.

Robotica-intro-basis004.png

Tot slot kun je de casterball erop vastmaken met twee schroefjes. Voila, de hele onderkant is eigenlijk al klaar!


Stap 2: Het brein

De Arduino is het brein van de robot, maar dat had je vast al gedacht. Wat doet die L2968D er dan bij en waarom noemen we dat ding ook een H-Brug? Tja, L298D is de naam van de chip die erop zit. Deze bestaat uit een aantal transistoren en die staan toevallig in de vorm van de letter H. Dit mag je allemaal weer vergeten.

Wat wel belangrijk is dat je weet wat het doet: De H-brug zorgt ervoor dat de motoren electrisch worden geschakeld. Oftewel als je naar voren of naar achteren wilt rijden hoeft de Arduino dat alleen maar te vertellen tegen de H-brug; Je hoeft zelf geen snoertjes te verwisselen of schakelaren om te zetten.

Ook kan de H-brug ervoor zorgen dat de nogal zwakke Arduino toch hele sterke motoren kan aansturen door het signaal als het ware te versterken.


Goed, genoeg hierover. De boel mag in elkaar. Hieronder zie je een foto hoe alle electronica aan elkaar vastgezet moet worden. Het lijkt zo op het eerste gezicht nogal een wirwar van draadjes. Niet schrikken, het is alleen maar om een beeld te geven van wat er uiteindelijk allemaal voor spannends gaat gebeuren.

Robotica-intro-layout001.png

Je hoeft dit natuurlijk niet op deze manier na te bouwen, maar je gaat fijn direct op het chassis bouwen.

Schroef de Arduino en de H-brug maar eens vast op het chassis. Draai de schroeven niet te vast: Je kunt daardoor de electronica beschadigen.


Stap 3: Van Arduino naar H-brug

Eerst gaan we er eens voor zorgen dat de Arduino met de H-brug kan 'praten'. Dit gaat met snoertjes. Als je goed kijkt naar de Arduino zie je dat er een flinke hoeveelheid tekst en nummers op te vinden is. Daar gaan we nu verder niet op in. Je gaat snoertjes leggen aan de digitale kant van de Arduino. Gewoon precies zoals op de plaatjes dus.

Op de H-brug komen de snoertjes terecht aan de ingang kant. Ook deze kant is gelukkig genummerd.

Robotica-intro-layout002.png

Let goed op: Op bovenstaand plaatje liggen de H-brug en zijn beste vriend de Arduino gewoon naat elkaar. Op je chassis liggen ze mogelijk anders. Check goed of je de goede poorten met elkaar verbind.

In deze tabel kun je vinden welke verbindingen je moet leggen.

Op de Arduino Op de H-brug
2 IN1
3 IN2
4 IN3
5 ENA
6 ENB
7 IN4

Als je snoertjes te kort zijn moet je de Arduino of de H-brug misschien een kwartslag draaien.

Stap 4: Batterijen en stroomtoevoer

Dit gaat natuurlijk niet vanzelf rijden. Er is 1 batterij en die geeft 9 Volt af. De Arduino is overigens ook al heel blij met 5 Volt en de H-brug lust wel tot 32 Volt. Hoe meer Volt, hoe harder je spullen voor je zouden kunnen werken moet je maar even denken.

Je hebt een batterijhouder, en mogelijk zit er aan het uiteinde van de snoertjes daarvan een plug in plaats van twee losse snoertjes. Deze moet je er dan afknippen. Ook is het slim om de uiteinden van de snoertjes van de batterijhouder nog te vertinnen, dit is even aangetipt bij het onderdeel Intro Solderen en Electronica, maar je kunt het ook hier doorlezen. Het is slim om te vertinnen aangezien je de snoertjes in de H-brug met schroefjes moet vastzetten zoals je misschien al gezien hebt.


Behalve dat we de batterijhouder in de H-brug prikken, moet de Arduino ook nog van stroom voorzien worden. De H-brug heeft gelukkig ook een speciale 5V aansluiting die speciaal voor dit soort zaken gemaakt is. We sluiten de 5V uitgang op de H-brug dus aan op de ingang op de Arduino waar 'Vin' bij staat. Dit doe je door een van de M(ale)-M(ale) snoertjes in de Vin te prikken op de Arduino, en de andere kant op de H-brug vast te schroeven waar 5V bij staat. Zie het plaatje.

Robotica-intro-layout003.png

De 'plus' van de batterijhouder kun je aan de kleur herkennen, dit is vrijwel altijd rood. Deze schroeven we ook in de H-brug bij de schroef waar 'VMS' bij staat.

Robotica-intro-layout004.png

Nu wordt het spannend. Stroom moet in rondjes lopen en voorlopig ligt er nog een losse zwarte (min) kabel van je batterijhouder. Ook heeft de Arduino alleen nog maar een pluskant aangesloten ... steek de laatste M-M kabel nu in de Arduino poort waar 'GND' bijstaat. Dit betekent 'Ground', en komt er min of meer op neer dat het eigenlijk gewoon de minkant van de batterij is.

Robotica-intro-layout005.png

Nu mag dit snoer, samen met het zwarte snoertje van de batterijhouder in de 'GND' schroef van de H-brug vastgezet worden. Dit kan een beetje gepeuter zijn, zeker als je snoertjes niet vertint zijn ...

Robotica-intro-layout006.png

Het is misschien niet helemaal goed te zien, maar er zitten inderdaad 2 (zwarte) snoertjes in het middelste gaatje (GND).

Stap 5: De motoren

Als allerlaatste zijn de motoren aan de beurt. Hier zitten twee snoertjes aan. Als dat niet zo is dan wacht je een interessant stuk soldeerwerk want de aansluitingen zijn vrij dun en klein. De twee snoertjes van de ene motor schroef je in de twee vakjes 'MotorA', en de twee snoertjes van de andere motor in, je raadt het al, 'MotorB'.

Maakt het uit in welke ze precies gaan? Ja en nee:

  • Ja, want de draairichting van de motor wordt bepaald door deze twee draadjes. Wissel je ze om dan draait je motor achteruit of juist vooruit!
  • Nee, want de H-brug dient er tenslotte voor om de draairichting electronisch te bepalen zonder dat er schakelaren of draadjes omgewisseld hoeven te worden.


In dit voorbeeld maakt het op dit moment in ieder geval niet zo heel veel uit. Zodra we de Arduino gaan programmeren merken we direct welke kant de motoren opdraaien en passen we dit ofwel in de Arduino code aan, ofwel wisselen we de snoertjes gewoon om. Net wat makkelijker is!

Robotica-intro-wielen001.png

Sluit beide motoren aan. De H-brug in het voorbeeld heeft heel fijn groene aansluitingen daarvoor, een aantal hebben gewoon blauwe maar dat mag de pret niet drukken.

Sluit de batterij nog niet aan trouwens, hier wachten we nog heel even mee. Er kan namelijk nog iets op de Arduino staan en aangezien deze Arduino's voor robots gebruikt zijn is de kans flink groot dat je robot plotseling wegrijdt!

Stap 6: De Arduino programmeren

Als je bij OMA al met een mBot hebt gewerkt of al eens eerder hebt geprogrammeerd dan weet je misschien wel wat een IDE is. Dit staat voor Integrated Development Environment. In het Nederlands zou dat neerkomen op 'geintegreerde ontwikkel omgeving'.

Dat is een mond vol woorden die je van mij ook weer een beetje mag vergeten. Waar het om gaat is dat als wij 'IDE' of 'Arduino IDE' zeggen, dat jij weet waar je moet zoeken en waar we het over hebben. De Arduino IDE vind je op je computer door op het Launchpad of in het Startmenu te zoeken naar dit icon:

Arduino-ide-icon.png.

Start het programma!

Je bent er overigens nog niet: De computer kan de Arduino niet openen want hij ziet hem niet. Oplossing: Vertel de computer waar hij moet kijken. Dit doe je door aan te geven via welke poort je wilt dat de computer contact gaat maken. Met normale USB apparatuur heb je dit probleem niet zo snel, maar de Arduino is niet de slimste van het stel zegmaar.

Klik op 'Hulpmiddelen' en dan 'Poort' om een lijst met mogelijke poorten te krijgen. De poort die je moet hebben is de USBMODEM poort. Meestal staat daar al 'Arduino' achter, dus dat scheelt.

Arduino-ide-error-port02.png

Als het allemaal niet helemaal duidelijk is, kun je ook altijd het onderdeel Intro Arduino nog eens doornemen.


Hoe dan ook, hieronder staat de code die je nodig hebt, kopieer deze en plak die in de Arduino programmeer omgeving. Uploaden naar de Arduino en klaar is Kees!

// Wat vaste waarden
int ENA=5;        // Gaat van HBRUG naar Arduino poort 5(output pwm)
int IN1=2;        // Gaat van HRBUG naar Arduino poort 2
int IN2=3;        // Gaat van HBRUG naar Arduino poort 3
int ENB=6;        // Gaat van HBRUG naar Arduino poort 6(output pwm)
int IN3=4;        // Gaat van HBRUG naar Arduino poort 4
int IN4=7;        // Gaat van HBRUG naar Arduino poort 7
int speed = 175;

void setup_motors() {
 // Al deze poorten configureren we als OUTPUT poorten
 pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); pinMode(IN1,OUTPUT);
 pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
 
 // Alle poorten op LOW, de motoren staan daardoor stil bij de start.
 digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); 
 digitalWrite(IN4,LOW); digitalWrite(ENA,LOW); digitalWrite(ENB,LOW);   
}

void rij_vooruit(int speed) {
 digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(ENA,speed);
 digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); digitalWrite(ENB,speed);
}

void bocht_rechts() {
 digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(ENA,speed);
 digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); digitalWrite(ENB,speed);
 delay(750);
}

void setup() {
 setup_motors();      // Setup motoren
}

void loop() {
  rij_vooruit(250);
  delay(3000);
  bocht_rechts();
}

Stap 7: Het werkt?!

Als alles helemaal goed is gegaan dan rijdt je robot nu een klein stukje naar voren, waarna hij een bochtje naar rechts maakt. Dit is wel afhankelijk van de hoeveelheid geluk die je voor vandaag nog overhad want dit is ook nog afhankelijk van de manier waarop je de motoren in stap 5 hebt vastgezet.

Als de robot hele rare dingen doet dan zul je misschien ook nog even de snoertjes uit stap 3 nog even moeten controleren.

Stap 8: Maak een sprong van geluk!

Als je robot helemaal in orde is dan heb je nu een werkende simpele robot en ben je stiekem wat verder dan de meesten uit klas 1 vorig jaar waren (en veeeeel verder dan klas 3 de afgelopen paar jaar was ...).