Projekt: Arnold-Drescheibe digitalisieren ...automatisches Sychronisieren mit Hallsensor(en)

  • Hallo,

    ich mache mal über dieses Teilthema meines Projektes einen neuen Thread auf, damit Interessierte das wiederfinden.


    Das Problem bei Drehscheiben ist die Synchronisierung, also die Tatsache dass die angezeigte Scheibenposition der tatsächlichen entspricht. Nur wenn das stimmt, kann man absolute Positionen anfahren, ansonsten könnte man sich nur in relativen Schritten (genannt Deltas) bewegen. Aber gerade die absoluten Positionen sind im Betrieb das Schmankerl.


    Man kann nun diese Synchronisation manuell und/oder automatisch machen. Ich habe in meiner Scheibe nun beide Methoden eingebaut, wobei die automatische die weit bessere Lösung ist.


    Eine evtl. manuell duchgeführte Synchronisation geht wieder verloren, wenn Notfälle und Stromausfälle eintreten.

    Bei der automatischen Synchr. muß man nur einmal mit der Bühne an der Synchr.-Position vorbeifahren und schon ist die Scheibenposition korrigiert.


    Dazu braucht man einen Positionssensor in einem beliebigen Gleis mit vorgegebener Gleisnummer. Es gibt dafür verschiedene Möglichkeiten, optische oder magnetische Methoden; ich bevorzuge die magnetische:

    1. an einem Kopf der Drehbühne ist ein kleiner Magnet montiert
    2. am Grubenrand sitzt ein Sensor der auf Magnetismus mit einem Signal reagiert, das können Reedrelais sein oder Hall-Effekt-Sensoren.


    Ich habe Hall-Sensoren genommen, sie sind robuster und langlebiger als Reeds, und sie sind kleiner.

    Sie lassen sich recht gut in die Grubenrand-Abdeckteile integrieren, kaum sichtbar

    DSC05019.jpg  DSC05596s.jpg


    Bei der Größe des Magneten, sowohl in seinen geometrischen als auch magnetischen Dimensionen, und seiner Positionierung auf der Bühne relativ zum Bühnengleis sind zu beachten:

    1. die magnetische Stärke und der Hall-Sensortyp müssen so aufeinander abgestimmt sein, dass innerhalb des Messbereichs die Bühnenposition eindeutig ist, am besten der Bereich ist eine Schienenbreite breit.
    2. die Position muß so sein, dass der Sensor anspricht wenn Gleisschluß besteht zwischen Bühnengleis und einem Grubengleis; dazu muß der Magnet nicht direkt unter dem Bühnengleis liegen, sondern er kann ein oder zwei Gleisbreiten daneben liegen

    DSC05592s.jpg  DSC05591s.jpg

    Hier bei mir liegt der Sensorbereich (da wo der Magnet liegt) 2 Gleise neben dem Bühnengleis.

    Naja, und er darf von den geometrischen Maßen nicht zu groß sein, denn er muß Platz an der Stirnseite der Bühne finden.


    Den Hallsensor habe ich mit einer kleinen Anschlußplatine angeschlossen; auf ihr sind der nötige Lastwiderstand (zwischen +Spannung und Sensorausgang), denn der Sensorausgang ist quasi ein OpenCollector Ausgang. Zu dem Widerstand hab ich noch eine smd LED gelegt, das bringt für Fehlersuche und Tests eine optische Anzeige ob der Sensor funktioniert.


    Im Programm des Grubencontrollers sind die nötigen Auswerte-Algorithmen fertig und funktionieren

    und hier nun ein kleines erstes Video

    wenn die beiden roten Markierungen gegenüber liegen, misst der Sensor und die LED leuchtet über eine Schienebreite, so soll's sein.




    Insgesamt werde ich 4 solcher Sensoren einbauen (weil ich am Controller noch 4 freie Eingänge habe), dann erhöht sich die Wahrscheinlichkeit dass ein Sensor in den Betriebsabläufen anspricht und das Synchronisieren schön im Hintergrund mitrödelt.


    wieder ein nettes Feature, das wird scho :thumbup::thumbup:


    Bernd.

    SaMoBa - Steuerung anologer ModellBahnen mit einem PC ---> Homepage und Tagebuch

    Dieser Beitrag wurde bereits 6 Mal editiert, zuletzt von Bernd ()

  • Nicht, das ich das nachbauen könnte - aber zumindest versteh ich mal, um was es geht :)

    Viele Grüße, Alex



    "Fahren wir schon?"
    "Nein, die freundlichen Mitarbeiter aus dem DB-Kundencenter tragen die Landschaft vorbei"

  • Hallo Bernd,


    in deinem Video ist zu sehen, dass die Kontrol-LED schon angeht, wenn die genaue Position noch garnicht erreicht ist!

    Dann schreibst Du, dass Du vier dieser Sensoren ein bauen willt. Aber wie unterscheidest Du dann diese oder

    sprechen dann alle vier Sensoren gleichzeitig an?


    Gruß Ralf

  • ich hatte in der Beschreibung einiges nicht erwähnt, also mache ichs noch n bissel genauer.


    Ralf, die 4 Sensoren werden gleichmäßig an 4 Stellen verteilt, also mit etwa 12 Gleisen Abstand.


    Bei dem Spielchen der Synchr. sind beide Controller beteiligt, der in der Bühne und der neben der Grube.


    Der Bühnencontroller

    • kennt nichts von irgendwelchen Sensoren, er kennt auch nicht die absolute Position.
    • Ihm wird nur vom Grubencontroller gesagt "Fahre soundsoviel Gleispositionen nach rechts bzw nach links".
    • setzt den Zähler am Beginn jedes Schwenks wieder auf Null und zählt
    • Die Bühen läuft damit los und zählt die Gleise schön mit mit Hilfe des eingebauten Kontakts in der Bühne und stopt dann wenn der koimmandierte Zählerstand erreicht ist.
    • Dieser Kontakt gibt einen Zählimpuls an jedem Gleis immer wenn die Bühne fast am Gleisschluß ist; das Arnold-Prinzip beruht nun darauf, dass die Bühne mechanisch einrastet wenn man just zu diesem Zeitpunkt den Motor abschalten würde (macht man dann so am Ende das Schwenks).
    • Die Bühne liefert sofort nach dem Zählimpuls den neuen Zählerstand an den Grubencontroller, das muß geschehen innerhalb das Hallintervals


    Der Grubencontroller:

    • er kennt die Zuordnung welcher Hallsensor an welchem Gleis sitzt, sagen wir es sind die Gleise G1, G2, G3 und G4
    • in dem Zeitintervall in dem zB der Hall1 anspricht, bekommt er vom Bühnencontroller die Info "Zählerstand des Bühnenzählers"
    • er kann nun der Bühne die absolute Position G1 zu diesem Zeitpunkt zuordnen und er weiß den Zählerstand der Bühne am Gleis G1
    • er muß die absolute Position nicht dem Bühnencontroller hinschicken, der braucht sie nicht, weil er immer nur Differenzpositionen zählt (Fahre x Gleise nach rechts bzw links)
    • er arbeitet nur mit absoluten Positionen, die ihm vom Bediengerät oder evtl. einer SteuerSW im PC vorgegeben werden.

    Das funktioniert für 4 Sensoren natürlich nur wenn die Sensoren nicht an der gleichen Stelle sitzen, aber das wäre ein trivialer Fehler des Konzepts.


    Nochmal:

    es wird nicht zum Zeitpunkt gemessen, wenn das Hallsignal sich ändert, sondern es wird geschaut wie der Bühnenzählerstand ist zum Zeitpunkt wenn der Zählimpuls in der Bühne auftritt und das ist etwa in der Mitte des Hallintervalls; damit das alles funktioniert darf das Hallintervall nur so breit sein, dass ein Zählimpuls innerhalb dieses Intervalls nur einmal auftritt.


    puh, ich hoffe ich konnte es erklären.


    Gruß

    Bernd.

    SaMoBa - Steuerung anologer ModellBahnen mit einem PC ---> Homepage und Tagebuch

    Dieser Beitrag wurde bereits 5 Mal editiert, zuletzt von Bernd ()

  • vielleicht noch was zu den Gründen, warum ich das Konzept mit den verschiedenen Zählern gewählt hatte.


    Die absolute Position läuft ja nicht kontinuierlich zählend rund um die Grube, an einem Gleis springt die Zahl vom Max auf Null.

    Diese "Singularität" muß ständig beim zählen berücksichtigt werden, die Zahl muß immer zwischen Null und max (=48 bei der Arnoldscheibe) gehalten werden; das wird schön kompliziert wenn man noch wie ich das Konzepte des kürzeszten Schwenkwinkels einbaut; denn der kürzere Weg kann über die Singularität laufen und darf das Konzept nicht aus dem Tritt bringen.

    Diese doch recht komplizierten Algorithmen wollte ich nicht in den Bühnencontroller packen, weil ich mir dafür nur einen möglichst kleinen Controllertyp auswählen wollte.


    Übrigens muß diese singuläre Eigenschaft auch bei dem Synchronisierungs Algorithmus berücksichtigt werden. In dem Algorithmus stecken auch Additionen und Subtraktionen, und ständig muß man aufpassen dass die Zähler ihren erlaubten Bereich nicht über oder unterschreiten.

    Und dann kommt noch dazu, dass die Microcontroller auf Byte-Basis arbeiten, also mal per se keine Zahlen mit Vorzeichen kennen, was man aber für die Berechnung des kürzeszten Schwenks benötigt; Vorzeichenzahlen sind aber mindestens 2 Byte lang; ständig wird also beim Rechnen zwischen Bytes (Zahl ohne Vorzeichen) und Interger (Zahl mit Vorzeichen) hin und her geschaltet, was wenn man's zu excessiv macht schnell Speicher frisst.


    Deswegen:

    Im Bühnencontroller möglichst einfache Algorithmen

    Im Grubencontroller die komplizierten Sachen.


    Bernd.

    SaMoBa - Steuerung anologer ModellBahnen mit einem PC ---> Homepage und Tagebuch

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von Bernd ()

  • So, die 4 Sensoren sind rund um die Scheibe verteilt, am Controller angeschlossen, das Programm angepasst und ..................................es funktioniert.

    Eine feine Sache dass das Gesamtsystem nun seine Synchronisierung selber findet.


    Jedem Sensor ist ein kleines Anschlußplatinchen vorgeschaltet mit dem Vorwiderstand und der LED für optische Anzeige.

    Das Anschlußplatinchen dient auch sehr schön als Zugentlastung an den Sensorbeinchen, denn die sind sehr empfindlich, mir waren beim Einbau 2 Bausteine kaputt gegangen.


    DSC05602s.jpg  DSC05603s.jpg


    DSC05604s.jpg


    Nun wird das alles noch schön eingeschottert und patiniert.


    Gruß

    Bernd.

    SaMoBa - Steuerung anologer ModellBahnen mit einem PC ---> Homepage und Tagebuch

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von Bernd ()

  • Hallo Bernd,


    vielen Dank für die ausführliche Erläuterung ... :)


    ... verstanden habe ich es aber immer noch nicht ganz ... ;(

    Das Ganze auf zwei Kontroller aufteilen ... okay,

    aber das unterscheiden der Hallsensoren ist mir noch nicht ganz einleuchtend.

    ...

    Der Grubencontroller:

    er kennt die Zuordnung welcher Hallsensor an welchem Gleis sitzt ...

    ...


    Wie unterscheidest Du » welcher Hallsensor « am Gleis ist?

    Der Hallsensor ist doch nur ein "Magnetschalter" und schaltet ein, wenn der Magnet vorbeikommt.

    Das bedeutet doch, dass nur an der Position erkannt werden kann ... hier ist ein Hallsensor und

    nicht z.B. Hallsensor 3. Das es errechnet werden kann aus der Position ( Gleis Nummer ) ist mir schon klar.

    Wenn der Hallsensor eine eignen ID senden könnte, dann kann man sie auch unterscheiden ... können sie aber nicht :ks:

    Also, wenn der Kontroller eh schon weiß, dass er z. B. am Gleis 5 ist wozu dann noch ein "Schalter" ein?


    Gruß Ralf

  • Die Sensoren können doch ganz einfach unterschieden werden, jeder sitzt an einem eigenen Controllereingang und damit weiß man wenn Hall x anspricht dann steht die Scheibe an Gleis y (jedem Hall x ist ein bestimmtes Gleis y zugeordnet) ... das ist noch irgendwie ein Knoten in deiner Denke :cs1:.


    Gruß Bernd.

  • Michael,

    die Ortsauflösung ist genau EIN Gleis und damit 100%ig, eine genauere Auflösung ist nicht nötig ;)

    Ich hatte es oben für Ralf schon mal detailierter beschrieben:

    In dem Messintervall eines Hall wird auf den Zählerstand der Gleiszählung geschaut zu dem Zeitpunkt wenn der Positionskontakt in der Bühne seinen Zählimpuls gibt, und das ist ganz kurz vor der Gleismitte. Wenn das Hallinterval also nur eine Gleisbreite ist, ist die Gleiszuordnung eindeutig, es dürfen keine 2 Zählimpulse während des Hallintervalls auftreten, das reicht für die Genauigkeit.


    Ich habe 4 Sensoren verbaut; theoretisch reicht eigentlich nur einer. Durch die 4 Sensoren muß die Bühne also in worst case 90 Grad drehen, dann spricht ein Hall an. Ich hab 4 genommen weil ich 4 freie Eingänge am Grubencontroller noch hatte.

    Theoretisch ist die Synchronisierung eigentlich nur nötig, wenn ein Nothalt eingelegt wird oder die Power plötzlich weg ist.

    Ins EEPROM schreibe ich nur am Ende eines Schwenks, nicht während einer Drehung.


    Also wenn alles normal läuft, stimmt der Wert im EEPROM bei Betriebsbeginn und die Halls wären nicht nötig. Wie gesagt sie helfen nur wenn während eines Schwenks ein Notfall oder Power-Loss auftreten.


    Gruß

    Bernd.