neulich habe ich meine ältere Modellrennbahn vom Speicher gekramt, um mit meinem Neffen ein paar Runden zu drehen.
Allerdings hat die Rennbahn keinen integrierten Rundenzähler, weswegen ich mir dafür gerne was basteln würde.
Wichtig ist hierbei, dass die Fahrzeuge unterschieden werden müssen, da sich jedes Fahrzeug frei bewegen kann.
Meine bisherigen Ideen:
NFC-Sticker aufs Fahrzeug kleben um die Fahrzeuge zu unterscheiden (Habe gelesen, dass NFC bis zu euner Geschwindigkeit von 30km/h schnell übertragen werden kann. Stimmt das? Hat jemand Erfahrung damit? oder ist NFC für mein Vorhaben zu langsam?)
Einen Barcode verwenden, allerdings bin ich mir hier ziemlich sicher, dass das zu langsam und kompliziert ist. Und wie ich den zuverlässig auslese, weiß ich auch noch nicht.
Hättet ihr einige Tipps und Ideen für mich auf Lager?
NFC: Hängt von ein paar Faktoren ab, z.B. Richtung der Bewegung relativ zur Spule (notmal zur Achse: schlecht, in Richtung der Achse: gut) --> verschiedene Reichweite.
Barcode ist gar nicht übel, der müsste unter dem Fahrzeug montiert sein und du bräuchtest ein ganzes Array an Reflexlichtschranken zum auslesen.
Barcode klebt am Fahrzeug unten, Reflexlichtschranke leucht von unten auf den Boden der Fahrzeuge. Du brauchts genug Lichtschranken, um den Barcode mit mindestens 2 auslesen zu können. Barcode ist invariant gegenüber verdehen - im Endeffekt ist's nur eine zeitliche Dehnung des Signales, und dafür ist der Barcode ja gemacht worden (alte Scannerkassen, wo der Code drübergezogen wurde)
So was tut's Neuhold Elektronik die Fundgrube für den Hobby-Elektroniker Reflexions Lichtschranke OPB743
Wenn du nur ein paar Fahrzeuge unterscheinden möchtest, dann brauchst du nur einen einfachen Barcode zu implementieren: Sync + 2 Datenbits, etwas in der Art. 1. Erste Ableitung vom Helligkeitswert liefert Hell/Dunkel bzw. Dunkel/Hell-Übergänge, mindestens 2 solcher Übergänge brauchst du für das Sync-Signal am Anfang.
Lass dir den Wert von A0 ausgeben, wenn du mit verschiedenem Zeug drübwachelst.
Dann mal' ein paar dicke dunkle Streifen auf ein weißes Blatt papier und lass dir den Wert von A0 ausgeben, wenn du mit verschiedenem Zeug drübwachelst.
Dann selbes noch mal, aber lass dir die 1. Aleitung von A0 ausgeben.
Dann druckst du eeinen schicken Barcode - etwa so was :
---#-#-#-##-#--#-#-#---
Anfang und Ende sind Sync (-#-#-#-), Mitte ist Nutzlast (##-#-). Wieder selbes Prozedere wie oben.
An dieser Stelle sollte ungefähr klar werden, wie die Sache funktioniert
Der Code wird von links nach rechts (oder umgekehrt) über den sensor gezogen - hab' das Ding vardoppelt, damit ich die 1. Ableitung malen kann:
------##--##--##--####--##----##--##--##------
das gibt dese Spikes in der 1. Ableitung:
------v^--v^--v^--v--^--v^----v^--v^--v^------
Also musst du die Zeiten zwischen 'v' und '^' (und umgekehrt) messen. Am Anfang und Ende kommen ein par definierte kurze Abschnitte - damit ist die Zeitbasis bekannt - und in der Mitte kommt die Payload.
Es gibt auch Fonts für Strichcode - dann muß man nicht Alles selber malen
Bei Deinen Versuchen kann Es Dir passieren, daß verschiedene Stifte, obwohl schwarz wie die Nacht, verschieden gut erkennt werden - oder vll. sogar gar nicht.
Ob Das auch bei einem ausgedrucktem Bar-Code vorkommen kann (also ob Drucker-Tinte oder Toner z.B. UV-Anteile zurück spiegeln), ist mir nicht bekannt.
Von Eddings kann man Das aber schon Mal lesen.
Mit 2 Reflektionslichtschranken kann man 3 Autos unterscheiden.
Einfach 2 Reflektionsstreifen unten an der entsprechenden Stelle aufkleben oder nur einen von beiden. Der Grundton muß schwarz sein. Meist reicht ein Aluminiumklebeband und Sprühfarbe. Dann kann man 3 Autos unterscheiden eben 1-0, 0-1 oder 1-1
Wenn man 3 Lichtschranken hat dann sind es 7 Autos.
1-0-0, 0-1-0, 0-0-1, 1-1-0, 1-0-1, 0-1-1, 1-1-1
Dann eben MEHR Lichtschranken - man muß dann halt - wie immer - die Spreu vom Weizen trennen.
Die Lichtschranken, Die keine Veränderung erfahren, liefern wohl auch keine Daten - Die, über Die die Reifen fahren oder eben kein Bar-Code, liefern irgend welchen Müll - Den muß man ausfiltern.
Die, Die einen Bar-Code liefern, liefern einen Bar-Code - jo, damit wären wir hier auch schon durch.
Ich kann ja von jeder der Lichtschranken die zeitliche Abfolge der Hell/Dunkel-Impulse mithalten - jeweils als Ringspeicher.
In jeder Runde wird in loop() geprüft, ob einer der Ringspeicher einen gültigen Code enthält, wenn ja, die Zeit merken und den Lese-Zeiger versetzen.
Trotzdem würde ich den Kram zuerst fest aufbauen und z.B. ein Pendel über EINE Lichtschranke schwingen lassen.
Wenn Das funktioniert (Bar-Code vorwärts/rückwärts/schräg auf dem Pendel), dann zwei Lichtschranken, gleiches Pendel, vll. versetzte Bar-Codes, um ein nahezu zeitgleiches Einfahren zu simulieren.
... dann mit zehn/zwölf/fünfunddreißig Lichtschranken und schauen, ob man mit der Zeit hinkommt.
Da wir hier nur über digitale Eingänge sprechen, sehe ich aber Nichts, was großartig bremsen sollte.
Habe die Schaltung jetzt mal aufgebaut und bisschen damit rumgespielt.
In Arduino lasse ich mir die Werte ausgeben und kontrolliere den Signalverlauf mit einem Oszi.
Als nächstes werde ich mir mal etwas bauen um sicherzustellen, dass ich immer den selben Abstand zum Sensor habe, wenn ich etwas vorbeiziehe (eine Art Pendel, wie postmaster meinte).
Kann ich mir auch Aufkleber in verschiedenen schwarz/graustufen unter meine Fahrzeuge kleben und mit den Werten arbeiten die mir Arduino ausgibt, um sie zu unterscheiden?
kobald:
Kann ich mir auch Aufkleber in verschiedenen schwarz/graustufen unter meine Fahrzeuge kleben und mit den Werten arbeiten die mir Arduino ausgibt, um sie zu unterscheiden?
Wird eher nicht klappen, da diese Variante durch das Umgebungslicht beeinflust wird. In Kombination mit einer Lichtschranke mit digitalem Ausgang bekommst du auch keine Analogwerte, die du auswerten kannst.