NXT LAP TIMER

Meet je snelste rondetijden met Mindstorms NXT!

Hoe snel leg jij je rondjes af op het racecircuit in je kamer? Natuurlijk zijn daar timers voor te koop maar waarom zou je die kopen als je Lego Mindstorms in huis hebt?

 

Met deze rondetijdmeter wordt het racen met je racebaan nog spannender! Lukt het om het baanrecord te breken? Kan jij jouw tegenstander verslaan zonder uit de bocht te vliegen? Deze timer houdt de recordtijden van beide spelers vast en laat deze op de display zien. En als je er in slaagt de beste tijd neer te zetten hoor je luid trompettergeschal!

 

De NXT laat de rondetijden op 1/100 seconde nauwkeurig op het display zien. Racen maar!

 

NXC als snel alternatief voor NXT-G

Overigens is dit mijn eerste projectje geprogrammeerd in NXC (Not eXactly C). Ik was de bugs in de grafische programmeeromgeving voor NXT-G, op basis van  LabView, helemaal beu eerlijk gezegd. NXT-G werkt absoluut prima maar al die ellende tijdens het editen… hoe vaak mijn PC minuten lang heeft staan stampen omdat ik een klein blokje wilde tussenvoegen bijvoorbeeld… waardeloos. En dan de talloze foutmeldingen die je krijgt terwijl LabView dataverbindingen “kwijt raakt”. Ik was het helemaal zat en ben mij dus in NXC gaan verdiepen. In combinatie met de Bricx Command Center heb je werkelijk een prima omgeving tot je beschikking… NXC werkt op basis van de standaard NXT Firmware (geen multi-dimensionale matrices dan…) en het programma draait bovendien nog wat sneller op je NXT-Module dan met NXT-G! NXC produceert zeker niet  de snelste Run-Time Executables maar je kan wel NXT-G en NXC door elkaar op dezelfde NXT gebruiken en dat is erg prettig als je meerdere projectjes tegelijk hebt lopen. BricxCC bestaat ook voor o.a. de Mindstorms RCX.

 

 

Kijk zelf in dit filmpje hoe de Lap Timer werkt, of

bekijk een grote foto van de Timer.

 

 

 

Enkele details over de bouw en werking:

Voor bouwers die geen NXC ervaring hebben is er onderaan deze pagina een uitleg gegeven hoe je met je PC toch deze Lap Timer kan gebruiken zonder in NXC te programmeren.

 

 

 

Twee lichtsensoren.

De vorm die je de Lap Timer van buiten geeft maakt niet zoveel uit. Ik heb snel een soort loopbrugje in elkaar gezet. Maar eigenlijk zou dat veel mooier kunnen natuurlijk. Puur uit ongeduld is dit eenvoudige ding ontstaan. Aan weerszijden van de loopbrug zit een NXT-Licht-Sensor ingebouwd. Op de overzichtsfoto zag je al dat midden op de baan een schot zit. De rode led van de lichtsensor schijnt daar tegen aan. Het principe is gebaseerd op reflecterend licht. De loopbrug is met opzet wat breder gebouwd en zo laag mogelijk. Je begrijpt dat invallend zonlicht bijvoorbeeld, de meting aardig kan verstoren. Zorg dus dat er zo min mogelijk licht van buiten de loopbrug naar binnen kan schijnen. 

 

 

 

Detectie van de auto’s.

Het rode licht reflecteert op het tussenschot. Dit geeft een permanente lichtdetectiewaarde op de lichtsensor aan elke zijde. Op het moment dat de auto voorbij flitst detecteert de NXT Licht Sensor een verminderde reflectie van het rode licht. In dit geval passeert er een groene auto. Groene oppervlakken reflecteren geen rood licht dus zal de meetwaarde op de sensor flink dalen.

 

Heb je een rode auto dan zal de lichtsensor weinig tot geen verschil merken als deze voorbij rijdt! Plak een zwart plakkertje op de zijkant van de wagen, dan is je probleem opgelost. Hetzelfde geldt natuurlijk voor autokleuren als wit en geel. Over het algemeen daalt de detectie waarde zo’n 20% voor autokleuren waar geen rood in zit (additief beschouwd). De software staat ingesteld op een gevoeligheid van 10%. Een grijze auto bijvoorbeeld, “ziet” hij dan ook nog prima.

 

Verscholen Lichtsensoren

Het is belangrijk dat er zo weinig mogelijk omgevingslicht op de lichtsensoren valt. De lichtsensoren zitten daarom anderhalve centimeter naar achteren ingebouwd en schijnen door een smalle spleet van 1 centimeter breedte zodat invallend licht vanaf de zijkanten niet direct op de sensor valt… De hoeveelheid licht dat door het ontvangst-deel wordt opgevangen is daardoor ook beperkt. De lichtsterkten die je op deze manier meet zullen doorgaans niet boven de 300 uitkomen. (in RAW mode 0..1023)

 

De grenswaarde voor “Auto gezien” ligt meestal rond de 260 (opnieuw gemeten in RAW mode) in daglicht. In mijn model heb ik grijze afdekplaten als “dak” gebruikt. M’n zwarte waren allen in gebruik. Als je de keuze hebt zou ik zwart pakken. Zo ben je nog minder afhankelijk van reflecterend licht.

 

Tip! Zorg er voor dat het middenschot top op het wegdek van de racebaan aansluit. Eerder had ik een klein spleetje onder het schot door. Dit beďnvloedde de lichtmeting van de tegenoverliggende sensor te veel waardoor er bij het passeren van één auto toch twee auto’s gezien werden. Er mag dus geen licht onderlangs de baan naar de overzijde piepen. De opening aan de bovenzijde van het tussenschot is voor het passeren van de sensorkabel die midden onder het dak doorloopt naar de andere zijde.

 

 

 

Start de Lap Timer!

De NXC code staat inmiddels tussen de andere NXT-G programma’s in. Selecteren gebeurt gewoon op de manier zoals je gewend bent. Start de software door op de oranje knop van de NXT te drukken.

 

 

 

Nu is het even wachten….

Zorg dat er geen auto’s onder het poortje staan als je de software start. Als eerste wordt de lichtsterkte gemeten en worden de sensors geijkt. De bovenste regel laat de grenswaarden zien voor sensor-poort 1 en sensor-poort 2. Als de lichtinval onder deze waarden komt, dan wordt dat beschouwd als “Auto gezien”. In dit geval is er meer omgevingslicht als gevolg van invallend daglicht. Als er minder omgevingslicht is, bij kunstlicht bijvoorbeeld, worden deze grenswaarden vanzelf aangepast (meestal rond de 210).

 

De Lap Timer wacht geduldig tot één van de auto’s voorbij raast…

 

Eerder had ik het al over invallend licht van buiten. Stel dat je in een fel verlichte kamer zit, omdat bijvoorbeeld de zon schijnt, en de brug staat midden in dat licht. Dan zal de eikwaarde voor beide sensoren hoger liggen dan wanneer de brug in de schaduw staat. Niets aan de hand overigens… alles werkt prima. Schijnt de zon eerst en komt er een vette wolk langs je kamerraam, dan zal je waarschijnlijk de Lap Timer opnieuw moeten eiken door het programma te onderbreken en opnieuw op start te drukken. Kortom, zorg er voor dat het omgevingslicht niet te veel varieert (minder dan 10%, gemeten onder de loopbrug) anders vertroebelt je meting en moet je opnieuw starten. Je kan ook de gevoeligheid wat lager zetten natuurlijk… (in de programma code)

 

 

 

De eerste auto is gedetecteerd...

Op het moment dat de eerste auto voor de eerste maal onder het poortje door rijdt begint één van de twee timers te lopen. Je hoort “START” en op het Display verschijnt de timer. Er is nog geen meting afgerond dus er valt verder nog niets te zien. Als de tweede auto voor de eerste keer langs de andere sensor rijdt wijzigt het Display niet meer. Wel hoor je opnieuw de kreet “START” uit de NXT speaker, ten teken dat ook een timer voor de tweede auto is gestart.

 

De Lap Timer maakt gebruik van dezelfde grote cijfers als het Fruitmachine-project van vorig jaar. Onderaan deze pagina kan je gewoon mijn RIC-files voor deze cijfers downloaden en opslaan in de map “..\engine\pictures” van je NXT Programma directory op je PC.

 

In de Fruitmachine had ik een “Mijn Blok” aangemaakt voor de grote cijfers. Nu heb ik dat vervangen door een aparte NXC-Module (My_NumOut) die je met de programmaregel “#include "Func_My_NumOut.nxc"” in elk van je NXC projecten kan gebruiken.

 

De cijfers heb ik gemaakt met het programma  van Andreas Dreier. Klik op het logo als je het wilt bekijken.

 

 

 

 

Een auto komt voor de tweede keer langs…

De eerste rondetijd wordt nu geregistreerd. In dit geval is speler twee (Sensor poort 2) de eerste die weer langs komt. Het is de eerste meting, dus een record is meteen gezet. “Tatatataaaa” schalt het uit de speaker. De tijd wordt tevens als “persoonlijk beste rondetijd” achter het spelersnummer van de auto zichtbaar gemaakt.

 

 

 

De andere auto passeert voor de tweede keer...

Player 1 komt nu ook voorbij en zet een nog scherpere tijd neer. Opnieuw “Tatatataaaaa”… en natuurlijk staat zijn rondetijd ook in het klein achter zijn eigen spelersnummer.

 

Het grote display laat dus altijd de tijd zien van de auto die zojuist voorbij suisde. De kleine cijfers laten beide persoonlijke records zien.

 

 

 

Wel een persoonlijk record, geen baanrecord…!

In dit geval zie je dat speler 1 een tijd neerzet die een dikke seconde trager is dan speler 2. Het persoonlijk record van speler 1 wordt wel aangepast naar 11,68 seconden maar je hoort alleen een bescheiden geluidsignaal ten teken dat jij jouw eigen tijd verbeterd hebt.

 

Heb je ook je eigen tijd niet verbeterd dan hoor je “piep” en is je rondetijd af te lezen met de grote cijfers totdat de andere speler zijn volgende tijd “neerzet”.

 

 

 

 

Downloads (rechter muisknop)

Bouwinstructies        : MLCad-file of de Acrobat PDF file

Software NXT-1        : NXC Source code voor Lap Timer

My_NumOut              : NXC Source code voor grote cijfers op display

RIC-Files                   : Grote cijfers voor NXT Display

Executable                : Programmafile voor op je NXT Module

 

 

 

GEBRUIKSHANDLEIDING voor NXT-G gebruikers;

Heb je geen Bricx Command Center en nooit in NXC geprogrammeerd, dan kan je ook het programmabestand zoals dat in de NXT nodig is direct kopiëren naar je NXT met behulp van het PC programma dat je bij de NXT gekregen hebt.

 

Installeren van Lap Timer:

 

 

 

 

Terug naar de TOP