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).
    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.
  • 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.

Reflexionslichtschranke

    Reflexlichtschranke
    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:
    MessungSendediodeMesswerte
    1ausA1 
    2ein B1
    3ausA2 
    4ein B2
    5ausA3 
    Mittelwerte:A=(A1+A2+A3)/3B=(B1+B2)/2
    Auswertung: Wenn der Mittelwert für B kleiner als der Mittelwert für A ist, dann befindet sich ein Objekt vor dem Sensor. Bei einem Objekt vor dem Sensor wird der Lichtstrom reflektiert, dadurch wird der Fototransistor beleuchtet und beginnt zu leiten. Die Spannung sinkt ab.

    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

    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

    Sensor (8*)
    Bestückungsseite Sammelplatine Lötseite Sammelplatine

Einbau der Sensoren

    CNY70 Pinning
    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:
  • 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.'

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

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.