Snelheid is de afstand wat een object aflegt in een bepaalde tijd.
SpeedMeter gebruikt in Trajectmode de eenvoudigste manier. Meten van de tijd die een locomotief nodig heeft om een traject met bekende lengte af te leggen. Hieruit worden de snelheden berekend. Trajectmode is daarom snel en met weinig of geen extra zaken eenvoudig en door alle modelspoorders te gebruiken.
Rollermode, daar is meer voor nodig. SpeedMeter meet het aantal rotaties per minuut wat een roller voorzien van een sensor maakt. En berekend daaruit de snelheid die op het display wordt getoond en die via de USB kan worden gestuurd aan programma's als Simple Dyno of de SpeedCat app.
SpeedMeter kan tot twee rollers gelijktijdig meten, dit is handig bij het meten van de snelheid van modelauto's, maar werkt ook met 1 roller zoals meestal het geval bij het meten van model locomotieven.
Het meten van rotatie wordt vaak gedaan met infra-rood.
Afbeelding laat het principe zien. Een schijf met gaatjes zit op de as waarvan de rotatie gemeten moet worden. Aan de ene kant van de schijf leds die infra rood uitsturen, aan de andere kant infra rood ontvangers. Een gaatje geeft een puls, de draaiende schijf een hele rits van pulsen.
Tekening toont een disc met een boel gaatjes, maar SpeedMeter kan al goed werken met 1 gaatje. Een plaatje op de as die tijdens een rotatie het infra-rood even tegenhoudt is al voldoende. Wel geldt hoe meer 'gaatjes' hoe hoger de precisie van meting. Hoge precisie is nodig voor meting van lage snelheden.
Andere manier is met een hallsensor en 1 of meerdere magneetjes op de te meten ronddraaiende roller.
Voor gebruik van de rollermode moet je zelf rollers verzinnen en maken. Er zijn aanbieders (SpeedCat) die deze rollenbanken voorzien van sensoren aanbieden. (wisselmotor.nl niet)
Na aanzetten van SpeedMeter worden diverse systeem zaken ingesteld en daarna worden de waardes van presets uit het eeprom geheugen gelezen.
Deze waardes bepalen vervolgens welk scherm geladen wordt, en welke preset wordt ingesteld. De waardes, parameters in een van de 6 reset zijn aan te passen en daarna weer op te slaan in het geheugen. Een factory reset is voorzien om alle instellingen weer terug te zetten in de basis instelling.
Trajectmode meet de tijd die verloopt tussen een melding van de ene sensor-melder en de ander. Het maakt niet uit welke sensor-melder als eerste komt zodat heen-en-weer rijden op een traject mogelijk is.
Deze gemeten tijd wordt na de meting omgerekend in snelheden en wordt samen met de uitkomst van de voorlaatste meting op het display getoond.
Als sensor-melder kunnen alle typen sensor worden gebruikt. De interrupts worden getriggerd door een positieve flank, dus een spanning die van 0 naar 5V gaat.
Maar een aan een sensor voorbij rijdende locomotief geeft niet 1 signaal, maar een hele rits signalen. Daarvoor dient de reset instelling. Gedurende een periode instelbaar tussen de 0,5 en 10sec. worden beide sensors uitgeschakeld, niet helemaal want ieder signaal en daarop volgend interrupt request reset weer deze reset tijd, zodat de resettijd pas afloopt nadat de hele trein is gepasseerd. De juiste tijdsduur instellen kan even een dingetje zijn. Te lang....dan is de trein alweer bij de volgende sensor en gaat de meting de mist in, te kort dan verstoort een interval veroorzaakt door een wagentje achter de loc de meting. Uitproberen dus. Een goede waarde voor H0 is 1~2 seconden.
De trajectmode is ook te gebruiken als een schakelende 'stopwatch'. Knop S4 werkt als een stopwatch. Zet twee merktekens langs het spoor, start de SpeedMeter stopwatch als de loc bij teken 1 is en stop bij teken 2. Natuurlijk vele malen minder precies maar zeker bruikbaar en praktisch en geen andere hardware als sensoren nodig, alleen een 9V blok batterij of 9V adapter is genoeg.
In de instellingen kun je de omtrek van de verschillende rollers opgeven. Ook het aantal pulsen wat een roller afgeeft voor 1 rotatie. Een draaiende roller maakt dus een stroom van pulsen. Hieruit berekend SpeedMeter de snelheid en laat dit op het display zien. Ook kan SpeedMeter deze gemeten waardes verzenden naar programma's als simple Dyno of de SpeedCat app. Meerdere modeltrein besturingsprogramma's als Itrain kunnen deze waardes gebruiken voor hun snelheidsmeting.
Behalve de snelheid kan in rollermode ook het rpm, aantal rotaties per minuut van de rollers en aandrijfwielen worden getoond. Knop S2 wisselt tussen rpm en km/u. Bij rpm wisselt S4 dan tussen de rpm van het rollerwiel, dus waar de sensor op zit, en de rpm van het aandrijfwiel, dus het wiel van de loc of auto.
SpeedMeter bestaat uit twee in elkaar gestoken delen. Onder zit een gewone standaard Arduino Uno. Het model met de originele serial chip FT232RL. Deze arduino heeft dus geen extra te installeren driver nodig, de driver voor deze chip zit standaard geïnstalleerd bij Windows.
De bovenste print is door Wisselmotor.nl gemaakt. Op deze 'shield' zitten de volgende onderdelen:
Display. Een OLED (organic light-emitting diode) 128x64pixels. 36x32mm.
4 drukknoppen voor de bediening.
schroefconnector voor aansluiting voeding. Optioneel, gebruik deze alleen als je geen adapter gebruikt op de arduino aansluiting.
2 schroefconnectors voor actieve sensoren. De shield geeft 5V af om de sensoren mee te voeden.
Reset drukknop. Aangesloten op de reset pin van de arduino.
7805 liniaire voeding chip. Maakt de 5V , de voeding voor de shield en de sensoren. De Arduino heeft zijn eigen voeding ic's.
diode IN4007 , polariteit beveiliging.
diverse bypass condensatoren
2 optocouplers. Het signaal van de sensoren wordt deze chips galvanisch gescheiden van de inputpins van de arduino. Beveiligd de arduino.
2 signaal leds met diverse functies.
2 transitoren.
De laatste versie van de arduino sketch kun je bekijken of downloaden op mijn github account.
Gebruik gemaakt van library Adafruit_SSD1306 en bijbehorende library voor de tekenset voor het aansturen van het OLED display.
Verder De SPI en Wire library van arduino voor de I2C communicatie tussen de arduino en het OLED display.
De EEPROM library van Arduino voor opslag van instellingen in het EEPROM geheugen.
Mijn dank aan de ontwikkelaars ervan voor het gratis beschikbaar stellen van deze programmadelen.
Het programma is op te splitsen in 3 delen.
Een GUI (grafical user interface). Veruit het grootste deel van het programma. Aansturing van het display.
Opslag en terug laden van de verschillende presets met de vele parameters voor afstanden, diameters en nog veel meer.
Tijdmetingen met behulp van 2 interrupts , en berekeningen.
Van boven naar beneden:
-Declaratie deel, declareren van de libraries en variabelen.
-Setup, eenmalig uit te voeren functie. Stelt benodigde registers en pins in van de arduino. Systeem functies als Serial monitor. Variabelen terug laden uit het eeprom geheugen.
-2 ISR functies. (Interrupt service routines). Handelen de interrupts.
-loop, functie die doorlopend wordt uitgevoerd. Diverse timers voor debouncing, gui en serial monitor boodschappen naar optioneel aan te sluiten windows programma's.
-Factory, wist het eeprom en zet alle bytes terug naar 0xFF.
-MEM_read. Leest het eeprom bij opstarten.
-MEM_write. Schrijft aanpassingen in de instellingen naar het eeprom.
-R_Dender. Ondervangt het denderen, bouncing, van de sensoren in rollermode.
-Traject. Onderdeel van de tijd meting in trajectmode
-Trajectend. Sluit de trajectmeting af.
-Dp_exe . Uitvoering van de GUI, het display.
-scherm, 3 verschillende functies voor opbouw van de 3 verschillende schermen die getoond worden op het display.
-Spaties, functie om de getallen netjes rechts uitgelijnd op het display te krijgen.
-SW (on en off) Twee functies die de drukknoppen afhandelen.
-SC_exe en SD_exe. Functies voor de serial monitor communicatie naar externe programma's.
-Calc. Berekend de snelheid in rollermode.