Dat doet de deur dicht

Uit het zoals altijd goed gevulde en gevarieerde clubblad "Zijspoor" van de Modelbouw Vereniging Arnhem komt dit artikel van Hans van de Ven die schuchter zich gaat bewegen in de wereld van servo's. Hij krijgt daarbij hulp van een mede clublid. Weer een mooi voorbeeld waarom je lid van een vereniging bent !

Dat doet de deur dicht!

Een paar jaar geleden (april 2011, Railhobby) las ik een artikel "Servo's nemen de beweging over". Servomotoren zijn in de wereld van de modelbouw al jaren een goede bekende, maar dan toch vooral in het radiografisch besturen van vliegtuigjes, etc. Op de modelspoorbaan kwamen ze niet of nauwelijks voor. Maar de opmars is dus begonnen, te beginnen met het fraai traag omzetten van wissels en het bedienen van armseinen en overwegbomen, waarbij zelfs heel mooi het natrileffect kan worden nagebootst. Een servomotor is altijd voorzien van een tandwielkast en een decoder. Een stroboscoopschijf helpt om heel nauwkeurig de omwentelingen van de motor te laten tellen. Eén bezwaar: een computer zorgt voor de programmering en de aansturing. In die fase van automatisering is mijn modelwereld (nog lang) niet. Maar o, wat wilde ik graag de deuren van mijn locloods op afstand openen en sluiten! Dat moest met een servo toch kunnen!

En toen verscheen Gerben op het MVA-toneel. Achteloos demonstreerde hij een werkende servo. Een arduino1 zorgde voor de juiste impulsen. Zal ik het eerlijk zeggen? We snapten er helemaal niks van. Afdeling buitenaardse wonderen en paranormale verschijnselen. Dus vroeg ik hem om het me nogmaals, maar dan stap voor stap en liefst zo praktisch mogelijk uit te leggen. Onlangs is de cursus van meester Gerben (mooie aanspreektitel voor een machinist, toch?) van start gegaan.
Noteer om te beginnen de website van het Arduinoplatform. Arduino is namelijk gebaseerd op open source, de programmacode is dus openbaar en kan door iedereen verder worden ontwikkeld. Voor mij volstaat het voorlopig om het programmaatje te downloaden. Dat is een peulenschil op www.arduino.cc. Versie 1.6.5 staat inmiddels op mijn laptop klaar voor gebruik. Op de Nederlandse website www.arduino.nu legt ROC A12-leraar Arjan Kompanje de werking uit met behulp van YouTube, maar wij hebben onze eigen meester Gerben! Hij koopt zijn spulletjes graag in China. Je betaalt hier al gauw € 20-25 voor een arduino, terwijl ie -zonder portokosten nota bene- voor € 7 uit China wordt thuisgestuurd. Al loop je dan wel het risico op een naheffing aan invoerrechten. "Maar voor zo'n bedragje kun je nog eens een arduino opblazen." Ja, zeg, die schoolmeester van mij is toch wel deskundig?
Zeker wel! Ik krijg trouwens les-aan-huis, wat een luxe hè? Laptop aan, dubbelklikken op het pictogram en Arduino start op. Dan met een kabeltje een arduino in een USB-poortje prikken. Zo'n onbekend apparaat, daar wil mijn laptop wel graag een driver voor hebben. Nou, dat treft, dat vindt ie heel simpel in het zojuist geopende programma. Hou in het menu Poort COM6 in de gaten! Op aanwijzen van mijn privéleraar ga ik op zoek naar een eerste simpele programma. In het menu Bestand > Voorbeelden > Basics kies ik voor "Blink". De nu geopende tekst is abracadabra, maar ik zie overeenkomsten met HTML-code en Excel-macro's. Niet dat ik daar hier iets aan heb, maar het geeft me toch een beetje zelfvertrouwen.
De eerste regel vertelt wat "Blink" doet: Turns on a LED for one second, then off for one second, repeatedly. Eh, ja, dat snap ik. Meester legt uit dat in de meeste arduino's een ledje is ingebouwd; bij ons op poort 13. Even verderop staan de stappen die het programmaatje gaat herhalen. Achter de // staat in begrijpelijke taal wat er gaat gebeuren.

digitalWrite(13, HIGH);    // turn the LED on (the voltage level is HIGH)
delay(1000);    // wait for a second
digitalWrite(13, LOW);    // turn the LED off (by making the voltage LOW)
delay(1000);    // wait for a second

We willen dat onze arduino deze actie gaat ondernemen. Daarom moet ik op de ronde knop met de pijl naar rechts klikken: dan wordt in een mum van tijd deze instructie van mijn laptop overgebracht naar het geheugen van de arduino. En kijk! Daar knipoogt het ledje vriendelijk naar ons: goed gedaan.
"Meteen maar les 2?" vraagt de meester. Leerling Hans mag in de voorbeelden op zoek naar "Sweep", maar hij kijkt ook aandachtig toe hoe zijn meester een servo aan de arduino koppelt. De beschrijving is al een stuk ingewikkelder, maar herkenbaar zijn de volgende opdrachten:

for(pos = 0; pos <= 180; pos += 1)     // goes from 0 degrees to 180 degrees
delay(15);    // waits 15ms for the servo to reach the position
for(pos = 180; pos>=0; pos -= 1)    // goes from 180 degrees to 0 degrees
delay(15);    // waits 15ms for the servo to reach the position
 
Klik op "pijltje naar rechts" en hup, de servo gaat keurig 180 graden draaien, wacht heel even (om precies te zijn: 15 milliseconden), draait dan terug en na weer een minipauze herhaalt dit tafereeltje zich. Ik zie mijn locloodsdeuren al openen en sluiten! En wat is dát leuk: een beetje pielen met die 180 (wijzigen in 90) en de 15 (wordt gewoon even 150); wijziging uploaden en de servo gehoorzaamt aan mijn wensen!

"Het is allemaal booleaanse wiskunde", hoor ik de meester doceren. Tegelijkertijd wijst hij op een zin in het commando: Without delay. "Dat houdt in dat er meerdere elementen aangestuurd kunnen worden." Oké, dat zal wel. Mij gaat dit te snel of boven de pet.
Dan mag ik als een brave leerling mijn huiswerk noteren. Nu krijgt de arduino zijn stroom nog via het snoertje van de laptop. Ik moet op zoek naar een eigen voeding, anders moet ik mijn laptop straks onder de baan inbouwen. Verder kan ik aan de slag om de servo in te bouwen in mijn locloods, uiteraard compleet met een verbinding naar de deuren. Waarschijnlijk is de derde opdracht de lastigste. Nu gaat de servo nog voortdurend heen en weer; de deuren gaan dan open en direct weer dicht. Er moet dus een commando tussen, waardoor openen en sluiten met een drukknop worden geactiveerd.

In het volgende Zijspoor lees je dus of het me lukt om de titel van dit verhaal terecht uit te roepen!

Tekst en foto's: Hans van de Ven

 

Komende evenementen

za nov 25 @10:00 - 15:00
Assen
vr dec 01 @19:00 - 22:00
Schulweg 4, 47638 Straelen, Duitsland
za dec 02 @10:00 - 15:00
Party- Zalencentrum 't Haske, Vegelinsweg 20, 8501 BA Joure
Evenementen
November 2017
Z M D W D V Z
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 1 2