Twee wielen, drie lichtsensoren en een oor: een inspectierobotje voor de gang van de klimaatmodule
Je rekent eerst met wielsnelheden, overbrengingen en echo's, tekent paden, leest sensoren en code, en ontwerpt tot slot de inspectieronde en een uitwijkmanoeuvre. Voor 33.10 en 33.15 heb je Python nodig, voor 33.11 het robotje of een motor met wiel.
Het inspectierobotje meet waar de vaste sensorkast niet komt: laag, langs het hele kweekbed.
Hoe lees je een opdracht?
Drie tredenOefenenToepassenUitdagen
Elk hoofdstuk bouwt op: eerst oefenen (één stap, direct toepassen), dan toepassen (meerdere stappen, in een context), dan uitdagen (transfer, open problemen, andere leerlijnen erbij).
De StemExpert-schaal5
Eén moeilijkheidsschaal van 1 tot 9 over de drie niveaus heen: Fundamental loopt van 1 tot 4, Intermediate van 3 tot 7, Expert van 6 tot 9. Zo zie je dat de uitdaging van het ene niveau de oefening van het volgende is.
Oefenen
Oefenen
één stap, direct toepassen
33.1
Snelheid, hoeksnelheid en draaistraal
Oefenen3Rekenen15 min
Het robotje heeft b=0,14m. Bereken telkens v, ω en R, en zeg welke kant het op draait.
a
vL=0,12m/s, vR=0,18m/s.
b
vL=0,20m/s, vR=0,10m/s.
c
vL=−0,15m/s, vR=0,15m/s. Hoe lang duurt een volledige draai?
33.2
Een andere tandwielkast
Oefenen4Rekenen15 min
Een ander motortje draait onbelast 12 000 omw/min en heeft een tandwielkast 1:120; het wiel is 42 mm.
a
Hoe snel draait het wiel, en hoe snel rijdt de robot onbelast?
b
Ons robotje (motor 9000 omw/min, wiel 65 mm) moet hoogstens 0,25 m/s rijden. Welke overbrengingsverhouding past daarbij?
c
Wat verandert er aan het koppel op het wiel als je die kast kiest in plaats van 1:48?
33.3
Van echo naar afstand
Oefenen3Rekenen10 min
De HC-SR04 meet bij 20 °C (343,4 m/s).
a
Bereken de afstand bij een echo van 5,83 ms en van 1,17 ms.
b
Hoe lang duurt de echo van een wand op 2,50 m?
c
pulseIn() geeft 0 terug na de time-out van 25 ms. Wat betekent dat voor het robotje?
33.4
Welke kant op?
Oefenen3Begrijpen8 min
Het robotje rijdt vooruit. Wat doet het bij deze wielsnelheden?
a
vL=0,20 en vR=0,10m/s
Abocht naar links
Bbocht naar rechts
Cop de plaats draaien
Drechtdoor achteruit
b
vL=−0,10 en vR=0,10m/s
Abocht naar links
Bbocht naar rechts
Cop de plaats tegen de klok in
Dop de plaats met de klok mee
c
vL=vR=−0,10m/s
Abocht naar links
Bstilstaan
Crechtdoor achteruit
Dop de plaats draaien
d
vL=0 en vR=0,15m/s: rond welk punt draait het robotje?
33.5
Wat zien de sensoren?
Oefenen4Begrijpen15 min
IJking: wit 100, zwart 850. De drie sensoren lezen links 850, midden 475, rechts 100.
a
Bereken w voor elke sensor. Waar ligt de lijn ongeveer?
b
Bereken p met het gewogen gemiddelde, en ω met K = 0,25 rad/s per mm.
c
Welke wielsnelheden stuurt de regelaar bij v0 = 0,20 m/s? Wat zou aan/uit doen?
Toepassen
Toepassen
meerdere stappen, in een context
33.6
Omkeren in de gang
Toepassen5Rekenen20 min
Het robotje is 200 × 160 mm; de as zit 110 mm achter de neus en 90 mm voor de achterkant. Op strook A (y = 0,55 m) is er 0,25 m tot de rand van het kweekbed en 0,55 m tot de buitenwand.
a
Hoe groot is de cirkel die de verste hoek beschrijft bij een draai op de plaats? Kan het robotje op strook A omkeren?
b
Een klein wagentje met een stuur heeft een kleinste draaistraal van 0,50 m (aan de buitenkant). Kan het in de gang van 0,80 m omkeren zonder te manoeuvreren?
c
In een bocht met R = 0,05 m aan 0,20 m/s: wat doet het binnenste wiel? Waarom is dat een probleem met de dode zone?
33.7
Hoe erg is de temperatuur?
Toepassen5Rekenen15 min
De module is 's winters soms 5 °C, 's zomers 35 °C. De code rekent altijd met 343,4 m/s. De HC-SR04 meet een echo van 1,75 ms.
a
Bereken de echte afstand bij 5 °C en bij 35 °C, en wat de code telkens denkt.
b
Het robotje stopt als de code 25 cm berekent. Op welke echte afstand stopt het bij 5 °C en bij 35 °C?
c
Is de temperatuurcorrectie hier nodig? Wanneer wel?
33.8
Een pad tekenen
Toepassen5Tekenen20 min
Het robotje (b=0,14m) staat in de oorsprong en kijkt naar de positieve x-as. Het krijgt na elkaar: (1) vL=vR=0,20m/s gedurende 2,0 s; (2) vL=−0,10, vR=0,10m/s gedurende 1,1 s; (3) vL=vR=0,20m/s gedurende 1,0 s; (4) vL=0,20, vR=0,10m/s gedurende 2,2 s.
a
Bereken na elke stap de plaats en de richting.
stap
x (m)
y (m)
richting
b
Teken het pad op schaal (1 hokje = 5 cm).
33.9
Code: de afstand meten
Toepassen5Programmeren20 min
Schrijf een functie die met de HC-SR04 de afstand in cm teruggeeft, gecorrigeerd voor de temperatuur luchtT.
a
Schrijf de functie meetAfstand(). Gebruik pulseIn met een time-out.
b
Waarom zet je TRIG eerst 2 µs laag voor de puls van 10 µs?
c
Waarom meet het robotje niet in elke ronde van loop(), maar om de 60 ms?
33.10
Hoe snel mag het robotje?
Toepassen6Programmeren30 min
Gebruik lijnvolger.py uit het handboek.
a
Laat rij() lopen met v0 = 0,30 en 0,40 m/s (T = 2,0/v0) voor K = 0,1 en K = 0,25. Wat stel je vast?
b
Voeg een kengetal toe: de grootste afwijking in de bocht (x ≥ 1,40 m). Schrijf de regel code.
c
Waarom heeft de regelaar bij een hogere snelheid meer versterking nodig?
33.11
Labo: snelheid en dode zone
Toepassen5Labo50 min
Voer de proef uit het handboek uit met je eigen robotje of een motor met wiel.
a
Meettabel: PWM-waarde, drie tijden over 1,0 m, gemiddelde snelheid.
PWM
t1 (s)
t2 (s)
t3 (s)
v (m/s)
b
Zet v uit tegen de PWM-waarde. Bepaal de dode zone en de helling van de rechte.
c
Schrijf het model van je motor als v = a · (PWM − PWM0). Welke PWM-waarde geeft 0,20 m/s?
d
Rijdt je robotje rechtdoor als beide motoren dezelfde PWM-waarde krijgen? Hoe los je een verschil op?
Zo wordt dit beoordeeld
Metingen
Na een aanloop gemeten, drie keer per waarde, ook rond de dode zone fijner gemeten.
Grafiek
Assen met eenheden, rechte door de punten boven de dode zone, snijpunt afgelezen.
Model
a en PWM0 met eenheden; de PWM-waarde voor 0,20 m/s berekend.
Kritiek
Verschil tussen de motoren benoemd; oplossing met een correctiefactor per motor of met de lijnvolger.
33.12
Vind de fouten in de robotcode
Toepassen6Programmeren20 min
Een eerste versie van drie cases uit robot.ino. Het robotje doet vreemde dingen.
case VOLGEN:
if (afstand < STOP_CM) naar(WACHTEN, nu);
else if (streep) { punten++; naar(METEN, nu); }
else volg(pos, V_RIJ);
break;
case WACHTEN:
if (afstand > STOP_CM) naar(VOLGEN, nu);
break;
case KEREN:
if (wit01(REFL_M) > 0.6) naar(TERUG, nu);
break;
a
Op een meetpunt blijft het robotje eindeloos meten: na METEN gaat het naar VOLGEN en meteen weer naar METEN. Waarom?
b
Voor een emmer op ongeveer 25 cm schokt het robotje: stoppen, vertrekken, stoppen. Waarom? En wat als de emmer blijft staan?
c
KEREN draait niet: het robotje gaat meteen naar TERUG. Waarom?
d
Schrijf de verbeterde cases.
Uitdagen
Uitdagen
transfer, open problemen, leerlijnen combineren
33.13
Habitat: de inspectieronde
Uitdagen7Habitat75 min
Het team wil dat het robotje overdag (6 tot 22 uur) elk uur een ronde rijdt, en 's nachts twee keer. Bij elke ronde meet het op drie punten temperatuur, luchtvochtigheid en lekken. In de module werken soms mensen, en in de modus ONDERHOUD mag het robotje niet rijden (hoofdstuk 32).
a
Bereken de tijd en de energie per ronde en per dag. Neem 1,0 W voor de elektronica terwijl het robotje wakker is, en 1,9 W extra voor de motoren tijdens het rijden.
b
Hoe weet het robotje dat de module in ONDERHOUD is? Stel een oplossing voor (hardware of draadloos) en pas het toestandsdiagram aan.
c
Een meting op meetpunt 2 geeft 'NAT'. Wat moet er gebeuren, bij het robotje en in de module?
d
Wat kan het robotje meten dat de vaste sensorkast niet kan? Stel twee extra metingen voor en zeg waar op de route.
e
Maak een testplan: welke situaties test je, en hoe weet je dat het robotje goed reageert?
Zo wordt dit beoordeeld
Energie
Rijtijd uit de lengte van de lus en de snelheden, meettijd, wachttijd; energie per ronde en per dag; vergelijking met de batterij.
Koppeling met de module
ONDERHOUD en ALARM bereiken het robotje (bv. een draadloos bericht of een contact in het laadstation) en houden het op het station.
Lek
Robot meldt en stopt niet voor niets; de module sluit de pomp af (alarm A_WATER of een nieuwe oorzaak) en waarschuwt.
Metingen
Zinvolle extra metingen (bv. licht onder de goten, temperatuur op twee hoogtes, een foto van de planten) met plaats en reden.
Testplan
Obstakel even en blijvend, plas, lijn onderbroken, laadstation bezet, onderhoud tijdens een ronde; verwacht gedrag per test.
33.14
Ontwerp: omrijden of omkeren?
Uitdagen6Ontwerpen35 min
Het robotje keert nu om als de gang 20 s geblokkeerd is. Een collega wil dat het rond een obstakel rijdt: van de lijn af, erlangs, en terug op de lijn. Een emmer heeft een diameter van 0,30 m en staat midden op strook A (y = 0,55 m).
a
Is er naast de emmer genoeg ruimte? Reken met de breedte van het robotje en een veiligheidsmarge van 5 cm.
b
Ontwerp de toestanden en overgangen voor omrijden. Welke sensoren gebruikt het robotje als het geen lijn ziet?
c
Geef twee argumenten voor en twee tegen omrijden in de gang van de module. Wat kies jij?
Zo wordt dit beoordeeld
Ruimte
Correcte berekening van de vrije ruimte aan beide kanten, met marge.
Toestanden
Van de lijn af, erlangs (met odometrie of afstand tot de wand), terugzoeken van de lijn, time-out en FOUT.
Afweging
Veiligheid, planten, eenvoud en betrouwbaarheid tegen snelheid en volledigheid van de ronde.
33.15
Onderzoek: de beste versterking
Uitdagen7Onderzoeken45 min
Onderzoek met lijnvolger.py hoe de versterking K en de snelheid v0 samen de nauwkeurigheid in de bocht bepalen.
a
Laat de simulatie lopen voor alle combinaties van v0 (0,10 tot 0,40 m/s) en K (0,1 tot 1,0). Noteer de grootste afwijking in de bocht.
v0 (m/s)
K = 0,1
K = 0,25
K = 0,5
K = 1,0
b
Welke K werkt bij alle snelheden? Waar verliest het robotje de lijn, en waarom?
c
Bij 0,20 m/s is K = 0,1 in de bocht het nauwkeurigst, terwijl ze bij 0,30 m/s faalt. Verklaar met de plaats van de sensoren (60 mm voor de as).
Zo wordt dit beoordeeld
Rooster
Alle combinaties systematisch doorgerekend, met hetzelfde kengetal.
Conclusie
Een K gekozen die bij alle gevraagde snelheden werkt, met een getal onderbouwd.
Verklaring
Rol van de sensorplaats en van het nodige draaien (ω = v/R) juist uitgelegd.
33.16
Plaats bijhouden met de wielen
Uitdagen7Analyseren25 min
Elk wiel krijgt een encoder: een schijfje met 20 gleuven en een lichtsluis, dus 20 pulsen per omwenteling. Na een stuk rijden telt het robotje 180 pulsen links en 200 pulsen rechts.
a
Hoeveel mm is één puls? Hoeveel heeft elk wiel afgelegd?
b
Bereken de afgelegde weg van het midden en de draaihoek.
c
Het linkerwiel is 1 % groter dan het rechter, maar de code weet dat niet. Hoe scheef staat het robotje na 10 m rechtdoor? Wat leer je daaruit?
ZelfevaluatieKleur per doel: lukt al / bijna / nog niet
Ik kan met v = (vL + vR)/2 en ω = (vR − vL)/b de snelheid, de hoeksnelheid en de draaistraal van een robot met twee wielen berekenen.
Ik kan uit de motordata, de overbrengingsverhouding en de wieldiameter de snelheid van een robot berekenen, en de PWM-waarde kiezen.
Ik kan uitleggen hoe een reflectiesensor werkt, hem ijken, en een lijnvolger maken met aan/uit en met een P-regelaar.
Ik kan met s = v · t / 2 een afstand berekenen uit een echo, en de invloed van de temperatuur op de geluidssnelheid inschatten.
Ik kan het gedrag van een robot ontwerpen als toestandsmachine, met obstakels, meetpunten, time-outs en een veilige toestand.
Ik kan een simulatie van een robotpad lezen en gebruiken om een versterking of een snelheid te kiezen.