Codierung mit Lichtschranke auslesen

OP #425900
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
Gast #425916
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.
#425921
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.
OP #426126
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
#426147
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.
Gast #426260
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...)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren