maandag 9 september 2013

Spelen met Arduino : Wisselaansturing

De laatste tijd heb ik me met een Arduino beziggehouden. Van dit gepruts wilde ik de resultaten tonen.

De Arduino is in feite een bordje met een microcontroller- en alle componenten om het werken met een dergelijke microcontroller makkelijk te maken- erop gemonteerd. Via een USB-poort en een speciale programmeeromgeving op de PC is deze relatief makkelijk te programmeren en gebruiken, door zowel beginners als gevorderden.  Op de versie die ik gebruik (de Uno) zitten 13 digitale uitgangen (0-5V), 6 analoge uitgangen, een aansluiting voor een externe voedingsbron, enkele poorten waar 3,3 en 5 V op staat, enkele losse poorten, en de eerder genoemde USB-poort, waar ook de Arduino wordt gevoed, mocht dit niet door een externe voedingsbron gebeuren.

De Arduino is te gebruiken voor uiteenlopende projecten, van een LED'je dat moet knipperen, tot complete huisautomatiseringssystemen. Ook voor de modelspoorder is het een interessant ding, omdat er ook veel mee te doen is in de modelspoorhobby. Een van die toepassingen laat ik hier zien: het aansturen van wissels via de computer.

Dit projectje bestaat eigenlijk uit drie onderdelen: het PC-programma, het Arduino-programma, en de hardware.

Het PC-programma

In C# heb ik (nou ja, ik, beetje van Bjorn, beetje van Internet*) een programma geschreven, dat zowel de communicatie met de Arduino verzorgt, alsmede nog wat extra functies heeft.


Het spreekt enigszins voor zich. Om het wissel om te zetten dienen de knoppen onder 'Wissel 1'. Wat deze knoppen in feite doen, is dat ze een code naar de Arduino verzenden. In de toekomst wordt het ook mogelijk om de baanverlichting aan en uit te zetten. Tenslotte zijn er nog wat extraatjes ingebouwd, zoals de mogelijkheid om een dienstregeling (een .txt bestand) in te lezen. Deze heeft momenteel overigens geen echte functie. Verder zit er nog een meldingenvenster, bijvoorbeeld om te zeggen dat de verlichting aan of uit is. Het scherm met de sporen kan het gekozen pad tonen; later is het ook de bedoeling dat getoond wordt of een stuk spoor bezet is. Tenslotte is er nog de mogelijkheid om de USB-poort, waar de Arduino aan zit, te selecteren, wat nodig is voor de communicatie hiermee.

Het Arduino-programma

Dit is ook een beetje van Bjorn, beetje van Internet*). De code, afkomstig van de PC, wordt door de Arduino gelezen. Wordt de code herkend, dan wordt er actie ondernomen. Afhankelijk van welke code dit is, wordt het wissel rechtdoor, of afbuigend gezet. Een van de digitale poorten wordt dan hoog gemaakt voor 700 ms (om de wisselmotor de tijd te geven om om te gaan), en wordt daarna weer laag gemaakt.

De hardware

**

Het leuke gedeelte van dit alles ;-). Door één van de poorten hoog te maken, slaat ook het betreffende relais aan. Deze stuurt op zijn beurt de wisselmotor aan. Vergeet de vrijloopdiodes bij het relais niet! Anders bestaat er een kans dat iets in de rest van het circuit leuk gaat roken :)

Disclaimert: als u/je het hier gepresenteerde wil(t) bouwen, dan is dat geheel op eigen risico.
Should there be any material on this page that you have made, and you have objections against it being published here, contact me, and I will remove it.

Tenslotte nog een foto van het geheel:


EDIT: op het schema hierboven waren de twee 2k2 Ohm weerstanden even gaan fietsen. Deze horen er wel bij. Het schema is inmiddels aangepast, excuus voor enige verwarring :(
*) http://bravomofo.blogspot.nl/2009/12/talk-to-arduino-with-c.html Code van zowel het C# als het Arduinoprogramma waar ik me op heb gebaseerd
**) Gebaseerd op de tekening gevonden op http://playground.arduino.cc/uploads/Learning/relays.pdf






Geen opmerkingen:

Een reactie posten