S88 Rückmelder für IR Reflexlichtschranken
Einleitung
- Für jegliche Art von Automatisierung braucht man Sensoren, welche den Istzustand erfassen.
Bewährt haben sich Stromverbrauchssensoren für die einzelnen Abschnitte und entsprechend vorbereitete Fahrzeuge.
(Widerstandsachsen).
- mechanisch: Das Fahrzeug betätigt einen Schalter oder z.B. einen Drucksensor.
- elektrisch: Das Fahrzeug wirkt in irgendeiner Art an dieser Stelle elektrisch (d.h. leitungsgebunden) - z.B. durch Stromverbrauch oder elektrische Verbindung.
- elektronisch: Das Fahrzeug wirkt in irgendeiner Art an dieser Stelle elektronisch - z.B. durch das Metall (Schwingkreis verstimmen) oder durch Bauelemente (z.B. RFID)
- optisch: Das Fahrzeug wird per Licht (Durchsicht, Reflexion) erkannt.
- magnetisch: Das Fahrzeug wird mittels Magnetfeld erkannt, z.B. Reedkontakt oder Hallsensor.
- akustisch: Das Fahrzeug wird per Ultraschall erfaßt. Je nach Erfassungsverfahren ergibt sich eine unterschiedliche Störsicherheit und Erfassungsgüte, z.B. individuelle Erkennung einzelner Fahrzeugtypen. Beispiel: mit Hilfe einer Lichtschranke (Durchlicht) kann man anhand charakteristischer Muster automatisch Personenzüge und Güterzüge unterscheiden. Oder man kann einen aufgeklebten Barcode bzw. RFID-Chip auslesen.
Trotzdem sind für bestimmte Betriebsabläufe und Situationen zusätzliche Sensoren für einzelne Punkte erforderlich. Diese können eine der folgenden physikalischen Wirkungsweisen haben.
Reflexionslichtschranke
Eine relativ preiswerte Methode sind Reflexionslichtschranken. Diese werden mittig in das Gleisbett eingelassen und erkennen die Reflexion durch ein darüber befindliches Fahrzeug.
Platinen
Datenerfassungsplatine mit - Prozessor Attiny26 - S88-n Anschluß - 8 angeschlossenen Sensoren |
Sensor Lötseite |
Sensor Bauteilseite |
Ansteuerung
- Die Diode soll mit einem Strom von 20mA bei einer V(forward) von 1,3V durchflossen werden.
Der Vorwiderstand ergibt sich zu 180Ω.
Laut Datenblatt des CNY70 ist der Collectorstrom am Ausgang bei 10mm Abstand ca. 50µA. Somit ergibt sich mit 47kΩ
ein vernünftiger Messbereich, da der Eingangsbereich des Attiny von 0 bis 2,5V reicht. Der 47kΩ-Widerstand wird gegen
eine Hilfspannung mit 2,5V geschaltet.
Der Fototransistor erfaßt nicht nur das reflektierte Licht, sondern das gesamte Umgebungslicht. Um eine zuverlässige Erkennung sicherzustellen, müssen die Einflüsse des Umgebungslichtes (z.B. 50Hz Brumm aus dem Raumlicht) eliminiert werden. Dies erfolgt zu einen durch geschützten Einbau, zum anderen durch entsprechende Filterung. Hierzu wird bei der Senderdiode ein bestimmter Code aufgeprägt und am Empfänger wird kontrolliert, ob die Schwankung der Empfangslichtstärke mit diesem Code übereinstimmt. Dadurch lassen sich Fremdlichteinflüsse wie z.B. die 50Hz-Welligkeit aus Leuchtstoffröhren oder die Umgebungshelligkeit der Meßstelle ausblenden. Hier wird ein sehr einfacher Code '01010' verwendet. Die Symmetrie blendet langsame Schwankungen gut aus.
Auswertung der Sensoren
-
Diese erfolgt mit dem integrierten ADC des Attiny; dieser benötigt 13 Messtakte für eine Messung,
wobei der maximal Takt (bei 8 Bit Genauigkeit) 1MHz sein darf.
Je Kanal erfolgen 5 Messungen:
Messung | Sendediode | Messwerte | |
---|---|---|---|
1 | aus | A1 | |
2 | ein | B1 | |
3 | aus | A2 | |
4 | ein | B2 | |
5 | aus | A3 | |
Mittelwerte: | A=(A1+A2+A3)/3 | B=(B1+B2)/2 |
Diese Auswertung erfolgt alle 10ms für je einen Sensor, d.h. nach werden die Sensoren einmal abgefragt. Wenn ein Zug mit angenommenen 50km/h in H0 unterwegs ist, so legt er 16cm je s zurück. Somit ist das Abfrageintervall mit 1,6mm ausreichend.
Da die Sendedioden nur für die Messung des Wertes 'B' eingeschaltet werden, reduziert sich durch diese gepulste Messung der Stromverbrauch. Durch den RC-Tiefpaß in der Versorgung der Dioden wird der Stoßstrom von der s88-Versorgung entkoppelt.
Die Messwerte werden ähnlich wie bei der S88-Tastatur gegen 'Flackern' entprellt.
Schaltplan
Die IR-LEDs sind über einen MOSFET schaltbar, wobei die Versorgung der LED über einen Tiefpaß geführt, damit nicht der 160mA starke Pulsstrom die Versorgung über den S88-Bus stört.
Die Anbindung des S88 Busses erfolgt analog zur S88-Tastatur mittels des USI-Registers.
Die Sensor sind jeweils auf eine kleine Platine 9*20 mm ausgelagert und mittels 6-poligen Flachbandkabel (RM2) mit dem Melder verbunden. Das kleine Raster ermöglicht kleine Sensoren, welche sich einfach montieren lassen.
Layout
Einbau der Sensoren
- Waagrechte Montage.
Der Sensor wird 'normal' bestückt, die Platine wird dann von unten an die Platte geschraubt, das Anschlußkabel verläuft nach unten. - Senkrechte Montage
Der Sensor wird an der schmalen Kante mittig über der Platine montiert, die Anschlußbeinchen werden mit Lötflächen verlötet (die Beinchen klemmen die Platine quasi ein, wobei darauf zu achten ist, dass bei den Klemmen A und E kein Kurzschluß entsteht) Die Platine wird dann von unten durch ein Loch montiert, das Anschlußkabel verläuft seitlich. - Alternativen (von Jan): 'Als flexiblere Alternative zum CNY70 haben wir in der gleichen Schaltung (s.u.) SFH309FH und SFH409 benutzt. Damit ist die Reichweite ein ganzes Stück besser (5cm) und die beiden sind - zumindest bei nachträglichem Einbau - einfacher zu installieren.'
Die Sensoren sind auf kleinen Platinen mit den Abmessungen 20*9mm montiert. Diese Platinchen sind mittels Stiftsteckern im 2mm-Raster und passenden Schneidklemmverbindungen mit der Prozessorplatine verbunden.
Es gibt 2 Montagemöglichkeiten der Sensorplatine:
Software
- Die Anbindung des S88 erfolgt mittels des USI Registers, siehe hierzu die Erläuterung zur
S88 Tastatur.
Die Auswertung der IR-Sensoren erfolgt alle 10 ms. Die Messungen je Kanal werden jeweils nacheinander per SW gestartet, jede Messung dauert 13µs. Diese Messungen sind beliebig unterbrechbar - deshalb werden sie im Hauptprogramm gemacht.
Das Einspielen der Software kann mit ponyprog erfolgen, auf der Platine ist ein 6-poliger ISP-Port vorgesehen.
Die Fusebits lassen sich einfach mit palmavr ermitteln. Hier: High:F4, Low:C4
Wichtiger Hinweis: während des Programmierens darf der S88-Bus nicht angeschlossen sein. Sollte der Prozessor direkt in der Zielhardware programmiert werden, so kann man ein S88-Sonderkabel verwenden, bei dem nur GND und +5V angeschlossen ist.
Download:
V0.01 (zip, enthält Source und übersetzte hex-Datei)
V0.03 (bugfix, kein Flackern des Melders beim Auslesen (von _hk_)
V0.04 (bugfix, MUX settling better)
Links
- Schaltplan für IR_Reflexsensor mit CNY70, LM567
(auf PLL-Basis)
Bausatz von der ELV
Lichtschranke bei 1:160
FAQ
- Die Rückmelderbits sind beim Lesen mit der IB um eins verschoben, warum?
Problemschilderung:
Bei Signal am Eingang 1 (Reflex an der Lichtschranke) wird bei der Rückmeldung (s88-Monitor) Kanal 1 und Kanal 2 gleichzeitig aktiv angezeigt, d.h.
- Eingang 1 wirkt auf Kanal 1 und 2 im s88-Monitor,
- Eingang 2 wirkt auf Kanal 3
- Eingang 3 wirkt auf Kanal 4
- ...
Ursache:
Das ist leider eine der Schwierigkeiten bei S88: es fehlt in der ursprünglichen Definition eine Aussage 'wann wird geschoben, wann sind die Daten am Ausgang gültig und wann liest der Empfänger'. Leider ist da ein ziemlicher Wildwuchs entstanden (den ich mit den Vorgaben zu s88-N versuche einzudämmen), Die IB liest offenbar sehr früh, nur kann man wegen ev. Race-Bedingungen kein vernünftig funktionierendes Timing auf diesen Zeitpunkt legen.
Abhilfen:
Entweder andere Zentrale oder ein normales Hardwaremodul (z.B. von LDT) zwischenschalten. Dieses Modul liest zu richtigen Zeitpunkt. - Bei starken Lichtunterschieden kommt auch im Nachbarkanal eine Meldung, warum?
In der Version 0.01 war die Pause zwischen zwei Messungen 5µs. Diese konnte dazu führen, dass die Messleitung noch 'Restpegel' beim weiterschalten auf den nächsten Melder hat. Die Pause ist in der V0.02 verlängert worden. - Was muß tun, um den Reflexmelder mit Magnetsensoren zu verwenden?
Magnet Sensoren sind besser an die Tastatur anzuschließen, mit leichten Änderungen ist es aber auch über die Analogkanäle des Attiny möglich. Bitte hierzu die Firmware anfragen.