Auf der Suche nach DCC Weichendecodern mit Arduino Hirn kam ich auch auf der Seite von Philipp Gahtow vorbei, der einen kleinen Weichendecoder für maximal vier Weichen mit Servoantrieb auf Basis eines Atmel AtTiny85 designed hat.
Seinen Weichendekoder mini 4x Servo habe ich als Startpunkt gewählt und wollte die sehr günstig zu erwerbenden DigiSpark-Module als Controller einsetzen.
Im Zuge der Portierung des Decoder-Programms vom nackten AtTiny85 auf den DigiSpark hatte ich Probleme, so dass ich als nächste sinnvolle Erweiterung meines “DCC-Fuhrparks” einen DCC-Monitor in Angriff nahm, mit dem ich sehen konnte, welche Telegramme über welchen Port aus dem Booster auf die Decoder losgelassen werden.
Nach langen Versuchen hat sich dann herauskristallisiert, dass das DigiSpark Modul mit installiertem Micronucleus Bootloader nicht in der Lage ist, das erforderliche Timing zu erfüllen, um das zugeführte DCC-Signal zu decodieren. Leider hat sich niemand aus der Entwicklungsmannschaft des DigiSpark Moduls zu diesem Sachverhalt geäußert oder gar eine Lösung des Problems angeboten.
Ich musste also den Micronucleus Bootloader im AtTiny85 überschreiben und den DigiSpark somit zum nackten AtTiny85 mit etwas Peripherie degradieren. Durch diese Maßnahme haben sich alle Probleme in Luft aufgelöst, der Decoder funktioniert auf diese Weise wie von Philipp vorgesehen.
Nachdem der Bootloader entfernt war, musste eine andere Methode zur Programmierung des Chip gefunden werden, es entstand ein recht übersichtlich aufgebauter Programmieradapter für den DigiSpark.
Ein sehr ähnliches Layout habe ich als Untersatz für den DigiSpark im Einsatz als Weichendecoder entworfen:
(Click auf das Bild für volle Auflösung)
(Click auf das Bild für volle Auflösung)
Hier die Ansichten in 3D gerendert, von oben...
.. und von unten
Hier noch schnell das Original:
Im Wesentlichen habe ich den DCC-Eingangsteil vom DCC-Adapter für den Weichendecoder für 16 Servos übernommen. Die DCC-Spannung wird über den
Gleichrichter dem DigiSpark zugeführt, dessen OnBoard verbauter Spannungsregler aus maximal 35 V Eingangsspannung immerhin 500 mA auf 5 V liefern kann. Das reicht aus
um die vier Servos mit zu versorgen, wenn sie nicht gleichzeitig mit voller Geschwindigkeit verfahren werden.
Sollte sich diese Art der Stromversorgung als ungenügend erweisen, kann alternativ zu C2 ein käuflich zu erwerbendes StepDown Schaltregler-Modul eingebaut werden. Man suche in einem großen Onlinekaufhaus nach Folgendem:
“10Pcs Mini DC-DC Converter Step Down Module Adjustable 1V 5V 12V 16V”
und wird massenhaft fündig.
Der Siebkondensator C2 wird dann als Piggyback auf der Unterseite des Schaltreglers angelötet.
Die vier Servos werden an den Stiftleisten angesteckt.
Die Designunterlagen im EAGLE V7.7 Format.
Hinweis
Durch die vier 4k7 PullUp-Widerstände an den Signalleitungen der Servos wird deren Zucken beim Einschalten der Spannung unterbunden. Diesen Hinweis habe ich im Netz
gefunden, ein fleißiger Kollege, Wolfgang Schlegel, hat das in Versuchsreihen mit
unterschiedlichen Servos herausgefunden. Vielen Dank für den Tipp!
Der Taster wird benötigt um den Decoder in den Programmiermodus zu versetzen, Einzelheiten dazu findet ihr auf der Seite von Philipp.
An dieser Stelle möchte ich mich auch nochmals herzlich für die Unterstützung bei der Fehlersuche und beim Aufbau des Verständnisses von DCC Accessory Decodern bei Phillipp bedanken.
Nachtrag
Phillip hat eine neue Version V2.0 seines Weichen-Decoders online gestellt (Stand 07/2019).
Die Bedienphilosophie ist etwas verändert gegenüber V1.6. In den Modus zum CV- Programmieren kommt man jetzt immer, wenn der Taster beim Einschalten der Versorgungsspannung gedrückt ist.
Der Zustand wird nicht mehr gepeichert, ein Spannung Aus-Ein bringt den Decoder somit sofort wieder zurück in den normalen Betriebsmodus.
In Folge ist die Signalisierung des Modus hinfällig geworden, der Servo zappelt jetzt beim Einschalten nicht mehr.
Hinweis
Für den Betrieb mit DCC++ muss das #define SHIFTADR aktiviert werden.