Verkeerslichten (Genomineerde Van Melsenprijs 2004)


Leerling: Alwin Hubeek
Docent: Sybren de Jong
School: College Blaucapel, Utrecht

Inleiding

Iedereen ziet ze dagelijks staan langs de wegen. Vaak wacht je tijden tot je "toestemming" krijgt om door te rijden.

De verbinding met de computer is wel stabiel en je hebt ook goede analoge ingangen waardoor een lichtsensor bijvoorbeeld goed te gebruiken is in combinatie met een schakeling

Conclusie

Tijdens mijn onderzoek heb ik 3 verschillende manieren van besturen onderzocht. De microcontroller, de lpt-poort en de controlbox. De conclusie bij elke methode is

Discussie

Bijna niemand denkt erbij na dat een verkeerslicht niet zomaar uit zichzelf het verkeer regelt, maar dat daar een vaak een ingewikkelde programmering voor nodig is. Ik wil proberen zo'n echt verkeersplein na te bootsen. Voor deze kleine versie is wel elektronica nodig en een programmeertaal om te regelen hoe lang het verkeerslicht op rood, oranje of groen staat..
Figuur 1:
Een verkeersplein

Vraagstelling

De hoofdvraag is:
Hoe bouw ik een systeem van verkeerslichten?
De deelvragen zijn:
  1. Wat zijn de basisonderdelen en hoe werken ze?
  2. Welke programmeertaal kan ik gebruiken?
  3. Welke schakeling kan ik gebruiken?
  4. Hoe bouw ik het verkeerslichtensysteem?

Hypothese

Om een goed werkend verkeersplein met stoplichten te maken moeten we een geschikte programmeertaal gebruiken en vervolgens een elektrisch circuit bouwen.

Theorie

Er zijn verschillende manieren om de verkeerslichten (LEDjes) aan te sturen:
  • de microcontroller
  • rechtstreeks door de LPT-poort van de computer te gebruiken
  • de controlbox met Coach
Het aansturen doe je door een geschikte programmeertaal te kiezen. Zo heb je voor de microcontroller de programmeertaal Jal, voor een lpt-poort de taal Basic en voor de Controlbox de Coachtaal.

Dit zijn 'hoge programmeertalen', ze zijn redelijk eenvoudig en je hoeft niets aan de geheugenadressering te doen. Je gebruikt basiscommando's zoals als(if)-voorwaardes en herhaal(loop). Bij de vaak gebruikte als-voorwaarde heb je een variabele x, die je gaat toetsen. Als het niveau van ingang 1 kleiner is dan x, dan is de als-voorwaarde waar en wordt de code na "Als" uitgevoerd tot "EindAls".
Als het niveau van ingang 1 nu groter is dan x dan is de als-voorwaarde onwaar(false) en wordt de code na Als niet uitgevoerd en slaat het programma alles tussen Als en EindAls over.
De belangrijkste onderdelen die we voor de schakeling gebruiken zijn: weerstanden, condensatoren, LED's (een gelijkrichter met een lampje met een grote weerstand in de kleuren rood, groen en geel).
Figuur 2: LEDjes

ateriaal en methode

  • Het programmeren van de microcontroller
De microcontroller PIC16F84A leek mij een geschikte microcontroller omdat deze 13 I/O pinnen heeft, dat is genoeg voor 12 LEDs/uitgangen + 1 schakelaar. De 12 uitgangen van de microcontroller heb ik nodig om 12/3 = 4 verschillende verkeerslichten aan te kunnen sturen. Een op internet gevonden schema om de microcontroller te programmeren heb ik op een breadboard nagemaakt. Het schrijven van een programmaatje (op internet gevonden) voor de microcontroller heb ik gedaan in de 'hoge programmeertaal' Jal. Het lijkt op BASIC. Met een Jal-compiler kun je vervolgens de code omzetten naar assembly en hex. De assembly gebruiken we hier verder niet want de hex-code kan rechtstreeks geprogrammeerd worden. Er zijn standaard schakelingen voor de microcontroller te koop, die een constante spanning geven en die de microcontroller beter aansturen. De 'hoge programmeertaal' JAL is niet moeilijk. Het enige grote nadeel is dat een instabiele verbinding met de computer het doorbranden van de microcontroller tot gevolg kan hebben.
  • Het programmeren van de LPT-poort

Figuur 3
De LPT poort heeft 25 aansluitingen en 8 datalijnen in de parallelle poort.
LEDjes kunnen worden aangestuurd via de (parallelle) LPT-poort met 8 datalijnen. Logisch 1 betekent +5 V en logisch 0 is 0 V. Met Windows 95/98 is de parallelle poort eenvoudig aan te sturen, maar met Windows 2000/XP is dat een probleem, omdat Windows 2000/XP niet het recht toekent om de parallelle poort aan te sturen. Figuur 4
De aansluitingen van de LPT poort
Dit maakt het lastiger om de parallelle poort te gebruiken. De lpt-besturing is met de nieuwe besturingssystemen geen goede mogelijkheid om te programmeren. De mogelijkheid bestaat dat door onjuist aansluiten je printerpoort het niet overleeft. De programmeertaal BASIC is vrij eenvoudig en komt grotendeels overeen met allerlei andere talen. Het programmeren is niet zo moeilijk, het aansturen van de printerpoort in Windows daarentegen wel. De parallelle poort geeft een uitgangspanning van +5 V, waarmee je LEDjes branden.
  • Het programmeren van Coach
Ook Coach is te gebruiken voor het aansturen van de LEDjes. De Controlbox heeft met 8 uitgangen voordelen boven Coachlab met 4 uitgangen. Het programmeren van de Controlbox deed ik in het programma Coach4 voor DOS omdat dit geïnstalleerd stond. De programmeertaal lijkt op basic. Om de schakeling goed te programmeren heb je eerst een overzichtstabel nodig. Met de 4 verkeers-lichten zijn 6 verschillende situaties mogelijk.
Figuur 5
De controlbox
In onderstaande tabel kun je zien bij welke situatie welke uitgangen hoog (= spanning +5,0 V) gemaakt moeten worden en hoe lang ze hoog moeten blijven. De x in de kolom tijd staat voor onbepaald. In principe is namelijk de hoofdweg altijd groen. Zodra er echter door de lichtsensor een auto op de zijweg gesignaleerd wordt gaat de hoofdweg op rood en krijgt de zijweg groen. Die blijft net zolang groen totdat er geen auto meer gesignaleerd wordt en dan gaat de hoofdweg weer op groen.

Tabel 1 Verkeerslichtenschema voor hoofd- en zijwegen Na enkele testmetingen bleek de spanning door de lichtsensor hoger te zijn dan 0,05 V als er geen auto voor de sensor stond en lager dan 0,05 V als er wél een auto voor stond. Deze waarde gebruiken we in de als-voorwaarde.
Code 1 is geschreven voor 1 lichtsensor bij de zijweg. De hoofdweg staat in principe altijd op groen. Zodra er echter een auto bij de zijweg gesignaleerd wordt doordat het afgegeven voltage van de lichtsensor lager is dan x gaat de hoofdweg op rood en krijgt de zijweg groen. In de eerste regels wordt x gedefinieerd en wordt de hoofdweg op groen gezet en de zijweg op rood. Dit blijft zo totdat lichtsensor 1 een voltage lager dan x afgeeft. Zodra dat het geval is gaat de hoofdweg op oranje en vervolgens op rood en de zijweg gaat na 1 extra seconde rood op groen. Dan komt de tweede als-voorwaarde. Als de auto nog steeds op de zijweg staat, blijft het licht groen. Dat blijft 2 seconden zo en dit herhaalt zich tot er geen auto meer op de zijweg staat. Dan gaat het licht via oranje naar rood en krijgt de hoofdweg weer groen.
Code 2 is geschreven voor 2 lichtsensoren, een bij beide zijwegen. De code is feitelijk hetzelfde als de code 1, maar er moeten nu telkens 2 sensoren gecontroleerd worden.

Tabel 2 Code 1 voor 1 lichtsensor bij de zijweg

Al met al is Coach in combinatie met de Controlbox een hele goede mogelijkheid om schakelingen aan te sturen. Het programmeren met Coach is vrij eenvoudig. De commando's zijn duidelijk, er zijn alleen niet zo heel erg veel functies.

Figuur 6 De programmeer-schakeling van de microcontroller

Figuur 7 De schakeling van de microcontroller om de LED's aan te sturen

Figuur 8 De schakeling om LEDjes aan te sturen met de microcontroller
De programmeertalen zijn niet moeilijk. Jal is het moeilijkst van alledrie. Het programmeren in BASIC is vrij eenvoudig. Er is een slechte ondersteuning door Windows 2000/XP waardoor je eigenlijk gedwongen bent DOS te gaan gebruiken voor het aansturen van de lpt-poort. De lpt-poort is geschikt voor het aansturen van de verkeerslichten. Elke computer heeft een LPT-poort, die de goede spanning afgeeft aan LEDjes.

Figuur 9 De Controlbox met Coach 4 en het verkeersplein met 2 lichtsensoren
Een nadeel is dat de uitgangsspanning van de lpt-poort niet altijd constant +5 V is en dat je het risico loopt je lpt-poort op te blazen als er iets mis gaat. De Controlbox is de beste en meest betrouwbare manier voor het aansturen van de verkeerslichten. De Controlbox geeft de juiste spanningen af, is goed aan te sturen door de Coachtaal. Minpunt aan Coach is dat de programmeertaal 'Coachtaal' niet erg uitgebreid is. Voor een verkeersplein voldoet het echter prima. Je hebt wel enige vaardigheid nodig in het werken met elektronica en met programmeertalen om dit project tot een goed einde te brengen.