Forum: Mikrocontroller und Digitale Elektronik Codierung mit Lichtschranke auslesen


von Martin B. (methusalem)


Lesenswert?

Hallo,

bei den digitalen Slotcarbahnen (Carrerabahn) werden bei manchen 
Systemen die Autos an codierten Leitkielen und Lichtschranken im Slot 
erkannt. Das ganze wird ja vermutlich auch über µC gelöst sein. Hier mal 
ein Link zu einer Grafik, die diese Codierten Leitkiele symbolhaft zeigt 
(http://home.pages.at/slotcar/userfiles/GuideBladeCodes.gif).

Kann mir mal jemand erklären wie man unterschiedliche Leitkiele mit 
jeweils gleicher Anzahl an Löchern erkennt. Wird da die Zeit gemessen 
(Beginn Leitkiel - erstes Loch - zweites Loch - ... - Leitkiel Ende)?

Da sowas ja Geschwindigkeitsabhängig ist, müsste man da ja mit Faktoren 
arbeiten.
Irgendwie kann ich mir noch nicht vorstellen, das dieses System bei den 
Geschwindigkeiten funktioniert. Schließlich ist ein solcher Leitkiel nur 
2 oder 3 cm lang. Schafft das ein µC?

Gruß
Martin

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Sofern die Kerben gleich breit sind, muss man ja nur die Zeit zwischen 
den Kanten messen.
Anhand der einzelnen Zeiten kann man dann die Position der Kodiermarken 
erkennen.
Durch die konstante Lochbreite kann man dann sogar noch die 
Geschwindigkeit messen...

>Schafft das ein µC?
Der wird damit garantiert nicht überfordert sein.
Wer soll das sonst schaffen?

Wie schnell sind denn die Autos maximal?
Daraus liesse sich dann auf die notwendige Abtastfrequenz schliessen.

von Uwe N. (ulegan)


Lesenswert?

Timer mit Capture-Funktion sollten damit keine Probleme haben. Sagen wir 
mal, das Auto fährt 2000mm/s und wir messen immer 'wenn es dunkel wird'.
Da liegt der kleinste Abstand so bei 5mm, das dauert dann 1/400s oder 
2,5ms. Ein mit nur 1MHz getakteter Timer zählt in der Zeit immerhin bis 
2500.

von Martin B. (methusalem)


Lesenswert?

Hallo,

OK, nur damit ich das richtig verstehe. Man würde in einem solchen Fall 
tatsächlich die Zeiten messen, die der Lichtstrahl unterbrochen ist. An 
diesen Zeiten, kann man dann die Codierung erkennen?

Damit die Geschwindigkeit egal ist, wird das Verhältniss von Licht zu 
Unterbrechung benutzt. Das ist ja immer gleich, oder?

Martin

von Karl H. (kbuchegg)


Lesenswert?

Ich würde das in etwa so machen:
Im ersten Schritt werte ich mal überhaupt nichts aus, sondern
beschäftige mich nur mit der Datenaufzeichnung:
  Sobald die Lichtschranke dunkel wird, ist offensichtlich
  der Kiel in die Lichtschranke eingetreten. Ab da gehts los.
  Mit einer bestimmten Frequenz wird regelmässig die Lichtschranke
  abgetastet, bis entweder
  * eine vordefinierte Zeit abgelaufen ist
     Dann steht das Auto zufällig in der Lichtschranke und ich
     kann keinen Wert auslesen
  * Die Lichtschranke eine bestimmte Mindestzeit wieder hell war.
    Dadurch weiss ich, dass der Kiel jetzt komplett durch ist.

Interessant ist jetzt nur der 2. Fall.
Die Datenaufzeichnung würde ich mal postulieren, mache ich so:
Ich weiss ja, dass da regelmässige Lichtwechsel kommen müssen.
Ich messe also die Zeit bis zum ersten Dunkel/Hell Übergang,
dann bis zum nächsten Hell/Dunkel Übergang, etc. Wie gesagt:
Wenn beim Warten auf den Übergang Hell/Dunkel ein Timeout
auftritt, dann ist der Kiel durch.
Wie auch immer die Summe aller Zeitmessungen sagt mir wie lang
der Kiel insgesammt gebraucht hat um durch die Lichtschranke zu
flitzen. Damit kann ich die gemessenen Zeiten auf die Kiellänge
normieren, habe damit also die unterschiedlichen Geschwindigkeiten
schon mal rausgerechnet.
Der Rest ist dann einfach: Je nachdem wo die Dunkel/Hell Übrgänge
in normierter Form liegen, kann ich dann die Bits detektieren.

Das ist jetzt alles aus dem Bauch raus niedergeschrieben. Aber
so oder so ähnlich würde ich das angehen.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Wie Uwe schon schrieb: Dafür sollte man die Input-Capture-Funktion des 
Controllers verwenden (also einen Controller auswählen, der diese 
Funktion interstützt - das machen AFAIK die meisten ATmega, um bei AVR 
zu bleiben...)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.