Zitat Verstehe ich das dann richtig das jetzt richtig dass ich sozusagen mit der 2 Spalte die Outpins der 1 Spalte mit schalte?
Ja, so ist das. Durch die Funktion FSIGNAL0 wird die Spalte mit der vorhergehenden FSIGNAL2 zusammengefasst, und Du hast insgesamt maximal 6 Output-Pins, die mit den Bits 0-5 der iniPar1/iniPar2 der beiden Spalten geschaltet werden. Du kannst dann mit den iniPar1/2 beider Spalten insgesamt bis zu 4 Signalbilder mit bis zu 6 verschiedenen Ausgängen schalten.
Zumindest macht das Signal am Decoder jetzt das, was auch das Signal an der Z21 anzeigt. Von daher ist die Konfiguration ok.
Wie allerdings die Buttons auf dem Touch-Screen funktionieren sollen und wie Weichen und Signal zusammenhängen ist mir nicht klar. Ich verstehe auch nicht, wo das Signal auf deinem Gleisplan überhaupt stehen soll. Die Abfolge der Signalbilder, wenn Du immer nur auf des Signalsymbol drückst, ist auf jeden Fall nicht vorbildgerecht. Da dürfte das Signal nie direkt von grün auf grün/gelb oder umgekehrt schalten. Aber bei so einem Gleisplan kann es eh kein 'vorbildgerecht' geben . Es ist da nur die Frage, was Du überhaupt erreichen willst.
Ich will's mal ganz grob beschreiben. Das ist für die Gartenbahn meines Vaters wo nur Akku Loks und Echtdampf Loks fahren. Die Gleise sind Spannungslos und bisher war alles Analog gesteuert, das heist die Signale waren an die Weichen gekoppelt und je nach Stellung der Weiche war das Signal geschaltet. Die Anlage wird nun zum kleinen Teil digitalisiert also Steuerung der einzelnen Weichen und Signale mit dem Tablet und ganz simple Fahrstraßen mit Signalen.
Auf Grund der Akku Loks welche mit Fernsteuerung gefahren werden wird es auch kein Automatikbetrieb geben. Für meine eigene Gartenbahn welche ich für die Zukunft plane soll natürlich alles digital funktionieren auch mit Automatikbetrieb über PC. Das war jetzt etwas Offtopic. Könnt ja mal eure Vorschläge bzw. Meinung dazu äußern. Grüße Andre
Hier noch die Lösung damit es so funktioniert wie im Video. Ist vielleicht für Franz auch ganz interessant. Wenn man in der Roco App ein 3 begriffiges Signal anlegt werden 2 Adressen vergeben als Beispiel bei mir 17 und 18. Zum manuellen durchschalten des Signals tippt man einfach drauf und es wird Rot , Gelb/Grün, Grün durchgeschaltet. Der Grundzustand der Z21 und der App nach einem Start ist Signal auf Rot, auch der Decoder zeigt Rot. Das bedeutet der Zustand des Signals ist 17/0. Bei manuellen durchschalten ist es immer folgende Reihenfolge 17/0, 18/0, 17/1 und dann geht es wieder von vorn los. Aus dem Grund musste ich im Sketch dann auch eine Änderung vornehmen. Ich denke Franz du weißt was ich meine. Eigentlich wird nur in der FSIGNAL0 Spalte der Eintrag von iniPar1 und 2 getauscht. Hoffe das hilft ein paar Leuten. Grüße Andre
Wenn ich also Grün schalten will muss immer erst Grün/Gelb geschalten werden, das ist ja blöd? Das hieße ja Halt/Rangierfahrt (HP0/sh1), also 18/1, müsste dann erst alles durchgetippt werden?
Hallo Naja die Doku zur App ist halt spärlich. Ich hab mir jetzt alles selbst erarbeitet. Vielleicht geht es auch anders, aber so wie ich das sehe hat man ja nur einen Button zum durchschalten und kann dadurch keinen einzelnen Signalzustand auswählen. Lade dir die App einfach mal runter da kannst du mal testen. Was aber funktioniert wenn du eine Fahrstraße hast kannst du ja die Weichen und Signalzustände die du brauchst zuordnen. Grüße Andre Bei Fragen immerzu.
/* Universeller DCC - Zubehördecoder ************************************************************************************************** * Beispieldatei für L i c h t h a u p t s i g n a l e (ohne Vorsignale am gleichen Mast). * Die Pins sind für den Arduino Nano ausgelegt. * Es können 3- oder 5-begriffige Hauptsignale angesteuert werden. Die Anzahl der * Ansteuerbaren Signale hängt von der Zahl der Led's ab: * Ohne Zugbeeinflussungsrelais können 6 3-Begriffige (3 Leds) oder 3 4-begriffige Signale ( 5/6 Leds) angesteuert werden * Es müssen nur gegebenenfalls die PinZuordnungen angepasst werden. Alle anderen Paramter können * unverändert bleiben. * Die Leds werden aktiv HIGH angesteuert. Für 16V ausgelegte Lichtsignale müssen über einen invertierenden * ULN2803 (o.ä.) angesteuert werden * Beim Lichtsignaldecoder ist kein Rückkanal für das Auslesen der CV-Werte vorgesehen ************************************************************************************************** * * 2 Ausgänge / Zubehöradresse * Einstellbare Funktionalität: * - Servo mit Umschaltrelais zur Weichenpolarisierung * - Doppelspulenantriebe * - statische/blinkende Ausgänge * - Einstellen der Servoendlagen per Drehencoder. * Der Drehencoder bezieht sich immer auf die zuletzt gestellte Weichenposition . * - Die Betriebsmodi und Startverhalten wird über die Analogeingänge A4/A5 (parametrierbar) eingestellt. Dazu * müssen dort Pullups eingebaut werden. Jenachdem wieweit die Spannung heruntergezogen wird werden * die Modi eingestellt: * A5: 5V (offen) normaler Betriebsmodus, kein PoM * 3,3V (Spannungsteiler 1:2) PoM immer aktiv, Adresse immer aus defaults * 1,6V (Spannungsteiler 2:1) IniMode: CV's werden immer auf init-Werte aus .h-Datei gesetzt * 0V Programmiermodus / PoM ( 1. Empfamgenes Telegramm bestimmt Adresse ) * A4: wird A4 auf 0 gezogen , wird der aktuell vom Drehencoder beeinflusste Servo in die * Mittellage gebracht. Sobald der Encoder wieder bewegt wird, bewegt sich das Servo wieder * zur vorhergehenden Position. * Ist A4 beim Programmstart auf 0, werden alle CV's auf die Defaults zurückgesetzt * * Eigenschaften: * Bis zu 8 (aufeinanderfolgende) Zubehöradressen ansteuerbar. Je nach verfügbaren Digitalausgängen * sind ggfs auch mehr möglich. * 1. Adresse per Programmierung einstellbar * * Das Verhalten der konfigurierten Funktionen wird über CV-Programmierung festgelegt: * Bei Servoausgängen die Endlagen und die Geschwindigkeit * bei Doppelspulenantrieben die Einschaltzeit der Spulen. * bei blinkenden Ausgängen das Blinkverhalten ( in V3.0 noch nicht realisiert ) * * Aufteilung der CV's: * CV Bedeutung * 47 Kennung für Erstinitiierung, allgemeine Optionen die für den gesamten Decoder gelten * 48/49 Pom-Adresse * 50-54 Parameter für 1. Weichenadresse * 55-59 Parameter für 2. Weichenadresse * ... * Bedeutung der CV's bei den verschiedenen Funktione (CV-Nummern für 1. Weichenadresse) * FSERVO Servo: * CV50 Bit0 = 1: AutoOff der Servoimpulse bei Stillstand des Servo * CV51 Position des Servo für Weichenstellung '0' ( in Grad, 0...180 ) * CV52 Position des Servo für Weichenstellung '1' ( in Grad, 0...180 ) * CV53 Geschwindigkeit des Servo * CV54 aktuelle Weichenstellung ( nicht manuell verändern! ) * * FCOIL Doppelspulenantrieb: ( derzeit nur mit automatischer Abschaltung ) * CV50 Bit0 = 1: Spulenausgang automatisch abschalten * = 0: Spulenausgang über DCC-Befehl abschalten * CV51 Einschaltdauer der Spule 1 ( in 10ms Einheiten ) * CV52 minimale Ausschaltdauer der Spule ( in 10ms Einheiten ) * CV53 - * CV54 aktuelle Weichenstellung ( nicht manuell verändern! ) * * FSTATIC statischer/Blinkender Ausgang * CV50 Bit0 = 1: Blinken, 0: statisch * Bit1 = 1: Beim Blinken starten erst beide Leds dann Wechselblinken * Bit2: mit weichem Auf/Abblenden * CV51 Einschaltzeit des Blinkens ( 10ms Einheiten ) * CV52 Ausschaltzeit des Blinkens ( 10ms Einheiten ) * CV53 1. Einschaltzeit beim Start des Blinkens * CV54 aktueller Zusatnd ( nicht manuell verändern! ) * * FSIGNAL2 Lichtsignalfunktion mit 1..3 Weichenadressen * bei den Folgeadressen ist als Typ FSIGNAL0 einzutragen * Lichtsignale starten beim Einschalten immer im Zustand 0 (Bitmuster CV51) * CV50 Signalmodus: Bit7=1 : invertiert die Softled-Ausgänge (HIGH=OFF) (MobaTools ab V0.9) * Bit 2..0: Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1) * und welche Ausgänge weich überblenden (Bit=0) * CV51 Bitmuster der Ausgänge für Befehl 1.Adresse 0 (rot) * CV52 Bitmuster der Ausgänge für Befehl 1.Adresse 1 (grün) * CV53 Index des Vorsignals am gleichen Mast ( 0 …. ) * CV54 Bitmuster der Zustände, bei denen das Vorsignal dunkel ist: * Bit 0: Befehl 1.Adresse 0 (rot) * Bit 1: Befehl 1.Adresse 1 (grün) * Bit 2: Befehl 2.Adresse 0 (rot) * u.s.w. * FSIGNAL0 1. Folgeadresse (optional) * CV55 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1) * und Welche Ausgänge weich überblenden (Bit=0) * CV56 Bitmuster der Ausgänge für Befehl 2.Adresse 0 (rot) * CV57 Bitmuster der Ausgänge für Befehl 2.Adresse 1 (grün) * CV58 reserved * CV59 reserved * FSIGNAL0 2. Folgeadresse (optional) * CV60 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausgänge 'hart' umschalten (Bit=1) * und Welche Ausgänge weich überblenden (Bit=0) * CV61 Bitmuster der Ausgänge für Befehl 3.Adresse 0 (rot) * CV62 Bitmuster der Ausgänge für Befehl 3.Adresse 1 (grün) * CV63 reserved * CV64 reserved * * FVORSIG Vorsignalfunktion * weitgehend wie FSIGNAL2 ausser: * CV53 low Byte der Adresse des angekündigten Hauptsignals * CV54 high Byte der Adrsse des angekündigten Hauptsignals */ #define ENCODER_DOUBLE // Eigenschaften des Drehencoders (Impulse per Raststellung)
// vom Anwender änderbare Parameter um den Zubehördecoder an die verwendete HW anzupassen
// Beispiel für Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an Pin 13 (interne Led)
//---------------------------------------------------------------- // Hardwareabhängige Konstante ( nicht per CV änderbar) //----------------------------------------------------------------
// Eingänge analog: ( Bei Nano und Mini - Versionen kann hier auch A7 und A6 verwendet werden, um mehr // digital nutzbare Ports freizubekommen. // beim UNO sind A7+A6 nicht vorhanden! ) const byte betrModeP = A5; // Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim // Programmstart eingelesen! const byte resModeP = A4; // Rücksetzen CV-Werte + Mittelstellung Servos
// Eingänge digital (die Ports A0-A5 lassen sich auch digital verwenden): ---------
// Drehencoder zur Servojustierung ........... //#define ENCODER_AKTIV // Wird diese Zeile auskommentiert, wird der Encoder nicht verwendet. // Die Encoder-Ports werden dann ignoriert, und können anderweitig // verwendet werden. const byte encode1P = NC; // Eingang Drehencoder zur Justierung. const byte encode2P = NC; // ............................................ //------------------------------------------------------------------------------------------------------- // Betriebswerte ( per CV änderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben. // Der Initiierungsmodus lässt sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine // sinnvollen Werte im CV47 stehen. //------------------------------------------------------------------------------------------------------- const byte DccAddr = 25; // DCC-Decoderadresse const byte iniMode = 0x50 | AUTOADDR | ROCOADDR; // default-Betriebsmodus ( CV47 ) const int PomAddr = 50; // Adresse für die Pom-Programmierung ( CV48/49 )
//Konstante für Lichtsignalfunktion //#define SIG_DARK_TIME 300 // Zeit zwischen Dunkelschalten und Aufblenden des neuen Signalbilds //#define SIG_RISETIME 500 // Auf/Abblendezeit
// Ausgänge: mit NC gekennzeichnete Ausgänge werden keinem Port zugeordnet. Damit können Ports gespart werden, // z.B. wenn bei einem Servo kein Polarisierungsrelais benötigt wird const byte modePin = 13; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
//#define MAX_LEDS 16 // default ist 16. Kann auf die tatsächlich benutzte Zahl reduziert werden, um RAM zu sparen. // Pro Softled werden 19 Byte benötigt
Der Decoder nimmt die Befehle jedoch nur sporadisch an. Meistens muss ich einen Befehl mehrmals senden (was aber nur mit der Lokmaus geht) mit der Roco App ist es ein Glücksspiel. Hab schon den 6N137 ausgetauscht, die Diode getauscht, Vorwiderstand zum 6N137 auf 1,5 kO gewechselt aber es funktioniert einfach nicht. Der Vorwiderstand wird auch ziemlich warm. Wo könnte ich ansetzen mit messen. Parallel zur Diode messe ich ca 435 mV Gleichspannung und wenn ich die DCC Spannung vom Gleis anders herum anschließe messe ich 235 mV Gleichspannung (ist nur ein einfaches Multimeter). Bei der Variante mit 430mV funktioniert es besser. Hast du eine Ahnung was hier los ist? Und was mir noch aufgefallen ist, egal ob UNO oder NANO auf D4 kann ich keinen statischen Ausgang schalten. Grüße André
Das mit D4 ist klar - das ist der Rückmelde-Port für die DCC-Lib (ackPin) . Steht irgendwo weiter oben in der Konfigurationsdatei, kann man auch auf einen anderen Port legen.
Ok. Naja manchmal sind es Kleinigkeiten die man übersieht. Jetzt muss ich nur noch die andere Ursache finden. Grüße Andre Laut Anleitung sollen doch aber 16 Ausgänge maximal möglich sein. Das heißt doch aber dass A6, A7 und D4 auch dazu gehören müssen. Edit: D4 kann man mit NC ausschalten wenn man ohne CV auslesen arbeitet. A6 und A7 sind nur analoge Eingängen. Also gehen 16 Ausgänge D3 bis D12 und A0 bis A5. Danke Franz.
ich bräuchte einmal dringend eine Empfehlung von Euch.
Bisher habe ich mich noch nicht mit dem Arduino DCC Decoder befasst. Arduino-Programmieren ist kein Problem. Ich würde gerne eine ganze Anzahl (16 Stück) von Relais ansteuern. Dazu habe ich bereits eine fertige Plaine mit 5V-Relais vorrätig. Ich brauche also keine Servos ansteuern, oder ähnliches. Also eine Aufgabe fast wie Magnetartikel- Weichen ansteuern. Nun die Frage: Mit welcher Software (Moba-Tool?) und mit welchem Beispiel fange ich am besten an? Ich brauche einmal einen Einstieg in die Materie.
Hallo Zimmerle, wie willst Du die Relais denn ansteuern? Einfach nur je Zubehöradresse ein Relais und per Zentralenbefehl ein bzw. aus? Oder doch wie ein Magnetartikel mit 2 Relais je Adresse und dann nur eine Impulsansteuerung? Die MobaTools sind da wahrscheinlich etwas 'oversized' für eine einfache ON/OFF Steuerung. Was Du auf jeden Fall brauchst, ist die nmraDcc Library. Wenn Du dich mit Arduino-Programmierung auskennst, sollte das dann keine große Aufgabe sein.
ZitatIch würde gerne eine ganze Anzahl (16 Stück) von Relais ansteuern. Dazu habe ich bereits eine fertige Plaine mit 5V-Relais vorrätig. Ich brauche also keine Servos ansteuern, oder ähnliches. Also eine Aufgabe fast wie Magnetartikel- Weichen ansteuern. Nun die Frage: Mit welcher Software (Moba-Tool?) und mit welchem Beispiel fange ich am besten an? Ich brauche einmal einen Einstieg in die Materie.
sprichst Du von einer fertigen Platine als Gesamtheit, oder von den "Billig-Mehrfach-Relais-Platinen" ? In dem Fall solltest Du Dir als erstes Gedanken zur Elektrik machen - die Spulen ziehen ca. 70mA (nicht am Signal-Eingang, aber in der Summe). Also sollten nie mehr als zwei gleichzeitig vom Arduino über die 5V-Versorgung bedient werden, sondern auf jeden Fall über eine separate 5V-Versorgung ...
Ansonsten bietet Franz-Peters Software doch gerade auch für Relais genügend Optionen (als STATIC, Impuls (FCOIL), als Herzstück-Polarisierung, ...).
Viele Grüße, Bodo
Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)
Den elektrischen Aufbau kenne ich. Ich brauche nur ein ganz einfaches Beispiel und welche Libs hier am besten geeignet sind. Wo kann ich denn Franz Peters Library downloaden?
Hallo Zimmerle, meine MobaTools gibt's hier. Aber für deinen einfachen Anwendungsfall sind die eigentlich unnötig. Was Du auf jeden Fall brauchst, ist die nmraDCC-Lib, die Du über den Bibliotheksverwalter der IDE direkt installieren kannst. Einfach im Suchfeld 'nmradcc' eingeben. Für deinen Zweck dürfte eines der Beispiele von Geoff Bunza ausreichend sein: Beispiele->NmraDcc->SMA->AccDec_17LED_1Ftn Im Setup schaltet er einmal alle Leds an und dann wieder aus. Das solltest Du für deine Relais vielleicht rauslöschen. Ansonsten dürfte das einfache Beispiel genau das tun, was Du brauchst.
vielen Dank! Ich werde mir das genau ansehen. Sobald die Optokoppler da sind, werde ich das Ganze dann einmal austesten. Das ist auf jeden Fall einmal ein Einstieg in das Thema Arduino-Decoder. Ich hab da noch ein paar ganz spezifischer Dinge im Kopf, aber dazu mehr wenn ich etwas Erfahrung gesammelt habe. Ich melde mich auf jeden Fall.
Nochmals allen vielen Dank für Euere schnelle Hilfe,
Hallo Zimmerle, beschreib doch mal bitte genau was du schalten willst, nur Relais (an/aus), Magnetartikel (Weiche Rechts/links), Servos, etc. Und was willst du mit diesen Relaiskarten ansteuern, vielleicht kann man die ja weglasen, je nachdem was du schalten willst. Einige Weichenantriebe brauchen schon mal einen Schaltstrom von 1A, da brauchst du auch ein entsprechendes Netzteil im Hintergrund.