Ik moest de metalen as waarop het de voelers kwamen, isoleren...
... en in tweëen 'delen', d.w.z. bij elke omwenteling van de as moesten er twee pulsen gegeven worden anders kon de fietscomputer niet goed ingesteld worden om de juiste snelheid te tonen. Of ik moest bij een omwenteling de getoonde snelheid x2 doen. Dat werkte niet echt betrouwbaar.
Het meetwagentje hing achter de trein en om de snelheid te lezen, moest je a.h.w. even achter de trein aan lopen om 'm te kunnen aflezen.Ik vond dat niet zo'n succes. Daarbij komt dat ik nu bij mijn sluitwagons de koppeling verwijderd heb, zodoende kan ik 'm niet meer achter een trein hangen.
Vandaar dat ik liever een stationaire meting langs de baan doe, waarbij de snelheid (gemeten over een vaste afstand) van de voorbij rijdende trein getoond wordt.
/********************************************************************Speedometer als er bij opstarten licht brand boven de ldr's zijn ze alle twee hoog, dwz boven het kantelpunt (offset = 511) en gaat alles goed.dus alvorens de speedometer te gebruiken controleren of er voldoendelicht aanwezig is. ********************************************************************/#include <Wire.h>#include "Adafruit_LEDBackpack.h"#include "Adafruit_GFX.h"Adafruit_7segment display = Adafruit_7segment();#define ldrLeft A2 // linker lichtsluis#define ldrRight A3 // rechter lichtsluisbool timerRuns = false;bool fromLeft = false;bool fromRight = false;bool drawDots = false;bool reset = false;unsigned long curTime = 0;unsigned long preTime = 0;unsigned long runTime = 0;int valLeft = 0;int valRight = 0;int offset = 511; // 0 is geheel bedekt, 1023 is vol verlichtfloat distance = 98; // afstand tussen LDR's in mm.float speed = 10000; // preset in schaal km/h./*******************************************************************/void setup() { display.begin(0x70); display.setBrightness(7); // 0..15 display.print(speed, 1); // display "----" display.writeDisplay(); pinMode(ldrLeft, INPUT); pinMode(ldrRight, INPUT); delay(5000); // opstartvertraging 5 seconden} // end of setup/*******************************************************************/void loop() { valLeft = analogRead(ldrLeft); delay(10); valRight = analogRead(ldrRight); delay(10); speedometer(); } // end of loop /*******************************************************************/void speedometer() { if (!timerRuns) { // nog geen meting if (valLeft < offset || valRight < offset) { // links of rechts bezet ? timerRuns = true; preTime = millis(); runTime = 0; if (valLeft < offset) fromLeft = true; if (valRight < offset) fromRight = true; // alle 2 bezet of te weinig licht: is foute boel, dus opnieuw... if (fromLeft && fromRight) reset = true; } } else { // meting loopt... curTime = millis(); runTime = curTime - preTime; if ((runTime / 500) % 2) // knipperen display display.print(speed, 1); else display.clear(); display.writeDisplay(); if (fromLeft && (valRight < offset) || fromRight && (valLeft < offset)) { preTime = curTime; calculateSpeed(); } } } // end of speedometer/*******************************************************************/void calculateSpeed() { if (!reset) { speed = ((distance * 3600) / runTime / 1000) * 87; display.print(speed, 1); // display gemeten snelheid in km/h display.writeDisplay(); delay(5000); // display speed for 5 seconds } timerRuns = false; // reset speedometer fromLeft = false; fromRight = false; reset = false; speed = 10000; display.print(speed, 1); // display "----" display.writeDisplay(); } // end of calculateSpeed/*******************************************************************/
Dan heb je hier helemaal niets aan. Ik ben benieuwd!
.... een Arduino met wat software voor het rekenwerk en klaar is Peter. Indien gewenst heb ik een schema en wat software ter informatie...
Zie in ieder geval al wel dat je software voor H0 is.