
| 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 | ||
VraagstellingDe hoofdvraag is:Hoe bouw ik een systeem van verkeerslichten? De deelvragen zijn:
HypotheseOm een goed werkend verkeersplein met stoplichten te maken moeten we een geschikte programmeertaal gebruiken en vervolgens een elektrisch circuit bouwen.TheorieEr zijn verschillende manieren om de verkeerslichten (LEDjes) aan te sturen:
![]() 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
| |||
![]() 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 4De 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.
| |||
| 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 |
