Hallo Modellbahnfreunde,
ich hab als Kind viel, zusammen mit meinem Vater, mit unserer LGB-Anlage gespielt. Diese stand nun >10 Jahre ungenutzt im Keller. Jetzt haben wir gemeinsam beschlossen die mal wieder flott zu machen. Das hat auch super funktioniert.
Wir haben beide einen IT-Hintergrund und deshalb ist es jetzt mein Ziel die Weichen über einen Raspberry-PI oder Arduino steuern zu können. Daran arbeite ich seit Mitte Dezember mit durchwachsenem Erfolg.
Vorhanden ist:
LGB-55000 (Zentrale)
LGB-50110 (Transformator)
LGB-55015 (Handy)
2* Lockmaus (vmtl. LGB-55010)
Anlage im Keller mit x Loks und Weichen.
Raspberry PI 3B+
Arduino Uno und Zero
Mein Plan ist es die Signale des Lok-Handys selbst zu erzeugen, um damit die Weichen zu schalten. Leider habe ich bisher keine Spezifikation über den verwendeten Daten-BUS gefunden. Ich habe deshalb ein Adapterkabel gebastelt und einen Arduino als "Oszilloskop" an die Leitung gehängt. Mit diesem konnte ich die Signale aufzeichnen und selbst erzeugen. Ich schaffe es auch meine Testweiche damit zu schalten (juhu), aber leider nur mit einer Erfolgsquote von unter 10% (Mist). Um damit eine funktionstüchtige Software zu schreiben, reicht das natürlich nicht.
Inzwischen ärgere ich mich seit Wochen mit Spannungen, Zeiten, Vorwiderständen, Dioden und allem Möglichen rum. Leider ohne Erfolg. Deshalb bin ich kurz davor aufzugeben. Bevor ich das Mache, habe ich aber beschlossen hier mal, um Hilfe zu bitten.
Hat eine von euch eine Idee wie das Protokoll spezifiziert ist? Oder gibt es vllt. andere Projekte oder Komponenten um sowas zu realisieren?
Für Ideen und Hilfe bin ich sehr dankbar!
PS:
Hier ist für die Technikfreaks was ich bisher herausgefunden habe.
Die Datenübertragung findet zwischen zwei Pins mit einer Amplitude von etwa 5V statt.
Die Dauer der HIGH und LOW Zustände sind vielfache von etwa 416 Mikrosekunden.
Hier ist eine Beispielmessung für Weiche 27 nach Links
BUS hat 0V
Signal, nachdem die Taste gedrückt wurde:
416, 1236, 824, 1644, 416, 416, 408, 2064, 404 (HIGH für 416μs, LOW für 1236μs, HIGH für 826μs, usw...)
BUS hat wieder 0V solange die Taste noch gedrückt ist.
Signal, nachdem die Taste gelöst wurde:
416, 1240, 820, 1644, 416, 416, 408, 416, 408 (siehe oben)
BUS hat wieder 0V
Wenn ich ein von mir erzeugtes und ein vom Lok-Handy erzeugtes Signal messe und gemeinsam Plotte, sehen die Signale nahezu perfekt identisch aus. Meine Amplitude ist nur etwa 100mV über der originalen. Wenn ich den Arduino so einstelle, dass er die Flanken zählt, habe ich bei meinem Signal regelmäßig das Problem, dass er 2 Flanken statt einer zählt (12,404) statt (416). Ich vermute, dass die eigentlich nötige dritte Flanke fehlt weil der Arduino noch im Interrupt der 1. Flanke ist und die 2. damit übersieht. Ich denk, dass entweder dass das Problem ist, oder dass ich meine Signale einfach zu einem "falschen" Timing starte.