[erledigt] DCC++ auf Pro Micro

[erledigt] DCC++ auf Pro Micro

Postby Duesselklaus » 09.01.2017, 18:35

Hallo Arduino- Begeisterte

In einem anderen Beitrag habe ich beschrieben, dass ich meine DCC++ Zentrale auf einem "Arduino"-artigen Pro Mirco laufen lasse. Der Grund dafür ist, dass ich die Zentrale als Ersatz für eine DCC232-Software-Zentrale verwende und später die DCC++-Zentrale auch gleich mit in das Gehäuse des Boosters einbauen möchte.

20170318.jpg


Sollte noch jemand auf die Idee kommen, so etwas zu machen, hier die Anleitung, was zu tun ist:
Die Datei DCCpp_Uno.h aus dem Sketch ist um einen Case für die "Micro" Variante zu erweitern. Eine geänderte Datei hänge ich an.
Das ist eigentlich alles.

Den Programmierausgang habe ich auf A9 umgelegt, da dies einer der PWM-fähigen Ausgänge ist. Ob er geeignet ist ein DCC--Signal zu erzeugen (da gab es noch eine weitere Eigenschaft, die beim UNO die Ausgänge auf A5 und A10 einschränkte), kann ich nicht sagen, da ich diess Feature nicht nutze.

Was noch zu bemerken ist: Wenn man den Pro Micro an einem Linux-Server betreibt (ich habe OpenSuse), dann meldet er sich nicht wie die "normalen" Arduinos als serielles Device an (z.B. /dev/USB0), sondern als HID-Device (denke ich, lasse mich aber gern eines Besseren belehren). Bei mir ist das dann /dev/ACM0

Die Begrenzung der maximalen Anzahl von Devices, die in der aktuellen Implementation von RocRail vorhanden ist, gilt natürlich auch hier. Details dazu in meinem Beitrag "DCC++ stellt einige Weichen nicht mehr".

Viel Spass damit
Klaus
You do not have the required permissions to view the files attached to this post.
Last edited by Duesselklaus on 27.03.2017, 09:30, edited 3 times in total.
Spur1 (indoor), DCC und Motorola gemischt, Loconet und DCCpp zum Fahren und Schalten. Automatik und Manuell über Start-Ziel auf Touch-Screen. Server Linux, Stelltisch Windows; Neigung: Software, Elektronik (incl PCBs)
Duesselklaus
 

Re: DCC++ auf Pro Micro

Postby Semba » 10.01.2017, 18:42

Hallo Klaus,

dem Bild entnehme ich,dass Du die Boostereingänge C und D auf die Pro Mikro - Ausgänge 9 (= Logikpegel Programierausgang) und 10 (= Logikpegel Hauptgleis) anschließt.
Was kommt da am Boosterausgang heraus :?:
Das kann doch kein DCC-Signal sein :!:
Sooo einfach kann es ja doch nicht sein - oder soll das Bild nur symbolisch die Boosteransteuerung darstellen :roll:

Beste Grüße
Rudi
Semba
 

Re: DCC++ auf Pro Micro

Postby Duesselklaus » 12.01.2017, 17:40

Hallo Rudi,

Das Bild war kein vorgezogener Aprilscherz ....

Wenn man sich die Eingangsbeschaltung des Lenz-Boosters ansieht und man das Datenblatt vom Optokoppler dazu nimmt, dann erkennt man, dass man ich meine 4mA Strom fließen lassen muss, damit der Optokoppler voll durchschaltet. Bei ~ 1/2 kOm Widerstand, 'ner Shottky-Diode und der Reversespannung im Optokoppler (Led) kann man leicht ausrechnen, dass ein 5V Rechteck-Signal auf den RailSync-Eingängen C und D voll ausreicht, um ein sauberes Signal aus dem Booster zu bekommen.

Wenn von Interesse, kann ich auch gern mal ein Demo-Video machen :D

Wenn Du die Rechnung nachvollziehen willst, muß ich die Daten noch mal raussuchen. Mache ich gerne, wenn von Interesse ....

Also: Klare Empfehlung für diesen Aufbau!

Ich betreibe die "große" Bahn auch so - allerdings im Moment mit einem UNO als Zentrale.

Grüße
Klaus
Spur1 (indoor), DCC und Motorola gemischt, Loconet und DCCpp zum Fahren und Schalten. Automatik und Manuell über Start-Ziel auf Touch-Screen. Server Linux, Stelltisch Windows; Neigung: Software, Elektronik (incl PCBs)
Duesselklaus
 

Re: DCC++ auf Pro Micro

Postby Semba » 12.01.2017, 22:35

Hallo Klaus,

dass mit Logikpegel der Booster angesteuert werden kann, ist mir schon klar. Ich habs mit einem normalen Uno und einem Roco 10764 getestet und das funktioniert einwandfrei.
Ich habe am Uno den Pin 10/12 (Brücke), dass ist der "DCC_Signal_PIN_Main" Anschluss und GND mit den Booster verbunden.

Laut deiner Pin-definition in der DCCpp_Uno.h
---------------------------------------------------------------------------------------------------------------
#define ARDUINO_TYPE "MICRO"

#define DCC_SIGNAL_PIN_MAIN 10 // Arduino Micro - uses same pins as UNO
#define DCC_SIGNAL_PIN_PROG 9 // Arduino Micro - could be A9 or A7 (TBC)

---------------------------------------------------------------------------------------------------------------

ist der "C" -Anschluss mit Pin 10 (DCC_Signal_PIN_Main) und der "D"- Anschluss (Masse) mit den Pin 9 (DCC_Signal_PIN_Prog) verbunden!
D.h. Du schließt die zwei DCC-Signale am Booster an, hast aber keine Masseverbindung.
Möglicherweise liefert aber der Pin 9 des Pro Micro in dieser Konfiguration nur ein LOW-Signal und stellt damit die Erforderliche Masse dar!
Kannst Du das ev. mittels Oszillografen kontrollieren?

Weiters wird der Booster "sofort" eingeschaltet, sobald der Arduino an Spannung ist, da an den DCC_Sigalausgängen immer Signale generiert werden (Main und Prog, aber asynchron). Normalerweise wird der Motor Shield über die Signal_Enable_PIN_Main (Pin 3) und Signal_Enable_PIN_PROG (Pin 11) freigegeben und liefern erst dann eine Ausgangsspannung. Wie löst Du dieses Problem?

Beste Grüße
Rudi
Semba
 

Re: DCC++ auf Pro Micro

Postby Duesselklaus » 13.01.2017, 21:14

Hallo Rudi,

Du hat recht und ich hatte Glück! Der A10 geht auf C und den D-Anschluss habe ich tatsächlich an A9 angeschlossen. Das ist falsch - aber offensichlich kommt an A9 kein Signal, so dass es trotzdem funktioniert. Der D-Anschluss sollte an GND gehen. Ich werde bei der nächsten Gelegenheit die Leitung umstecken und ein neues Bild machen. Danke, dass Du das gemerkt hast !!!!

Wenn ich die Tage mal Gelegenheit habe, messe ich mal nach, was auf A9 genau drauf liegt.

Was die Masseverbindung angeht: Die Eingänge des Lenz-Boosters gehen, wie bei diversen anderen Boostern auch, auf einen Optokoppler. Damit brauche ich keine weitere Masseverbindung und es reicht das einphasige Rechtecksignal. Ich bin sogar froh, dass es keine Masseverbindung gibt, da ich sonst unkontrollierte Masseschleifen über den Server bauen würde.

Thema Roco-Zentrale:

Eine Roco-Zentrale (ich habe welche für Lokmaus1 und Lokmaus2 mit XBUS herum liegen), habe ich noch nicht versucht anzuschießen.
Ich denke, bei der Lokmaus1-Variante würde ich die H-Brücke direkt ansteuer müssen, so dass es nicht so simpel wird wie beim Lenz Booster. Suboptimal ....

Bei der Variante für den XBus (10764) liegt das Steuersignal für den Booster-Teil auf den beiden äußeren Pins des Western-Steckers. Einen Optokoppler habe ich nicht gesehen, so dass das Masse-Thema hier sicherlich noch genau zu betrachten ist. Aus dem Bauch heraus würde ich beim Einsatz so eines "Boosters" einen Arduino mit Ethernet-Shield nehmen, um wieder eine galvanische Trennung zu bekommen. Wenn Du damit schon Erfahrung hast, dann hänge doch bitte einfach eine Beschreibung mit Bild dazu hier mit an. Oder Du machst einen neuen Beitrag auf und in dem sammeln wir dann die Varianten, wie man einen Booster an den Arduino anschließen kann.

Zum Thema "Power-On":

Ich benutze die DCC++ - Zentrale um die Digitalsignale für Signale, Weiche und sonstige Ausgänge zu generieren. Da habe ich ohnehin die Option "Ignoriere Gleisspannungs-Befehle" aktiviert. Im Grunde ist es aber so, dass der Booster die Ausgänge abschaltet, wenn kein Eingangssignal mehr anliegt. Also müßte man beim "Gleisspannung-Aus" nur den Timer im Arduino anhalten, der das DCC-Signal generiert. Einen Befehl zum Ein- und Ausschalten der Spannung gibt es mit <1> und <0> ja schon. Mal sehen, ob ich die Zeit finde, mal in den Sketch hinein zu schauen. Versprechen kann ich noch nichts .....

Grüße
Klaus
Spur1 (indoor), DCC und Motorola gemischt, Loconet und DCCpp zum Fahren und Schalten. Automatik und Manuell über Start-Ziel auf Touch-Screen. Server Linux, Stelltisch Windows; Neigung: Software, Elektronik (incl PCBs)
Duesselklaus
 

Re: DCC++ auf Pro Micro

Postby Semba » 14.01.2017, 10:48

Hallo Klaus,

alles klar...

Bezüglich "Masse" zur Klarstellung: Es geht hierbei nicht um eine "Masseverbindung" sondern um das Bezugspotential des Digitalsignals des Arduino (Rückleitung des Pin 10). Natürlich kann man das alles Potentialfrei machen mittels Optokoppler, Trennverstärker, Funk- oder was auch immer.. Für die reine Funktion ist das aber nicht maßgeblich.

Beim Roco- Verstärker 10764 (welcher aber auch ein Booster ist) habe ich das Arduino - DCC-Signal an Pin 1 (DCC) und Pin 2 (GND) des Westernsteckers angeschlossen. Bei den Buchsen "Master", "Booster out" und "Booster in" sind intern die Leitungen DCC, GND und Overload verbunden. D.h. an jeder dieser 3 Buchsen ist an Pin 1 das DCC Signal, an Pin 2 GND und Overload an Pin 4 (Booster in und out) bzw. Pin 6 (Master).
Zu bemerken ist, dass dieses Gerät eine Kurzschlussstrombegrenzung (< 3,2 A) besitzt, aber nicht abschaltet, sondern nur ein Signal an Overload ausgibt (zusammen mit der LED-Anzeige). Die entsprechende "Zentrale" sollte mit Hilfe dieses Signals dann abschalten. Wie lange der 10764 einen Kurzschluss verträgt, kann ich nicht beurteilen - mehrere Sekunden sind aber kein Problem. :mrgreen:
Darum wäre es (in Verbindung des 10764) wichtig, dass das DCC-Signal natürlich auch abgeschaltet werden kann. Ob man ein Sketch umschreiben muss, oder eine elktronische Hardwarelösung findet, ist ein anderes Thema...

Beste Grüße
Rudi

P.S.: Ich bin dann mal Schifahren 8)
Semba
 

Re: DCC++ auf Pro Micro

Postby Duesselklaus » 27.03.2017, 07:53

Hallo RocRailer,

auf dem Usermeeting am 18.03.2017 in Langenfeld habe ich die DCC++-Zentrale auf dem "Arduino-artigen" Pro-Mirco life vorgeführt. Bei der Gelegenheit habe ich auch ein neues Foto gemacht. Jetzt ist die Masseleitung wirklich an GND angeschlossen. Das Bild oben im Beitrag, das den falschen Anschluss gezeigt hat, habe ich ersetzt.

Grüße
Klaus
Spur1 (indoor), DCC und Motorola gemischt, Loconet und DCCpp zum Fahren und Schalten. Automatik und Manuell über Start-Ziel auf Touch-Screen. Server Linux, Stelltisch Windows; Neigung: Software, Elektronik (incl PCBs)
Duesselklaus
 


Return to Arduino (DE)