RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#451 von 211064 , 04.11.2018 23:13

Hallo Franz-Peter,

danke für die ausführliche Erklärung. Ich bin gelernter Theologe und habe außer bei Bibelstellen mit Zahlen nicht viel am Hut (okay, Einmaleins und Dreisatz ausgenommen ). Aber deine Erklärung habe ich verstanden.

Zitat

Mit dem richtigen Wert bei iniFmode sollten deine Signale im Ruhezustand dann auch Hp0 anzeigen.



Leider nein . Bei Start zeigt das Signal an A0/A1 nach wie vor HP2 (A1 ist also aktiv, also in meinem Fall low). Die angepassten Parameter:

1
2
3
4
5
6
7
8
9
10
11
 
const byte iniTyp[]     =   { FSIGNAL2, FSIGNAL2, FSIGNAL2 };
const byte out1Pins[] = { A0, A2, NC}; //Ich habe erst jetzt geschnallt, dass ich die Ports A4/A5 auf Bodos Platine nicht verwenden kann.
const byte out2Pins[] = { A1, A3, NC}; //Weil ich jetzt gerade nicht parat habe, welche die nächsten sind, steht hier NC ... :oops:
const byte out3Pins[] = { NC, NC, NC };

const byte iniFmode[] = {0b10000000, 0b10000000, 0b10000000 };
const byte iniPar1[] = { 0b001, 0b001, 0b001 };
const byte iniPar2[] = { 0b110, 0b110, 0b110 };
const byte iniPar3[] = { 0, 0, 0 };
const byte iniPar4[] = { 0, 0, 0 };

 



Nach einem Schaltvorgang an der LokMaus passt es dann. Ich kann die LokMaus-Symbole gerade nicht in ON/OFF übersetzen, das Symbol im Display zeigt den abzweigenden Strang. Nächste Tage löte ich die nächste Platine zusammen, dann kann ich den DCC-Sniffer parallel laufen lassen. Vielleicht sollte ich als erstes einen anderen Nano ausprobieren, nicht dass es daran liegt. Das geht aber erst nächstes Wochenende. Unter der Woche sind die Abende oft zu kurz ...

Danke für deine Beratung und vor allem für die großartige Decoder-Software! rost:


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.227
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#452 von MicroBahner , 05.11.2018 16:42

Zitat

Leider nein . Bei Start zeigt das Signal an A0/A1 nach wie vor HP2 (A1 ist also aktiv, also in meinem Fall low). Die angepassten Parameter:


Hallo Christoph,
nur mal so eine Idee: welche Version der MobaTools hast Du im Einsatz?. Die Invertierung mit Bit 7 funktioniert erst am Version 0.9 der MobaTools.

Zitat

Vielleicht sollte ich als erstes einen anderen Nano ausprobieren, nicht dass es daran liegt

Das kann ich mir nicht vorstellen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#453 von 211064 , 10.11.2018 12:28

Hallo Franz-Peter,

heute morgen hatte ich Gelegenheit, mich mit dem Decoder zu beschäftigen. Die Lösung ist - wie oft - sehr einfach ops: . Ich habe das Signal an den drei verschiedenen Anschlusspaaren getestet - und dabei irgendwann aufgehört, jedes Mal nachzumessen, ob die beiden Adern des Flachbandkabels auch korrekt angeschlossen sind. Im letzten Zustand waren sie vertauscht. Deshalb war der Start mit der grünen LED völlig korrekt. ops: ops:

Tut mir leid, dass ich das nicht als erstes überprüft habe ... Ich lerne daraus, statt eines Flachbandkabels besser einzelne Adern zu verwenden, am besten farblich passend.

Damit funktioniert der Decoder auch bei mir, wie er soll!

Danke für deine Unterstützung. rost:


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.227
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#454 von MicroBahner , 11.11.2018 17:16

Hallo Christoph,

Zitat

Damit funktioniert der Decoder auch bei mir, wie er soll!

Das ist doch mal der wesentliche Punkt .
Freut mich, dass es jetzt so funktioniert wie gedacht.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#455 von KabaSoft , 22.01.2019 11:29

Hallo,

ich bin hier neu im Forum. Modellbahn mache ich seit mehr als 55 Jahren (ich werde 61 ) und Elektronik seit mehr als 40 jahren weil ich es halt mal studiert habe.

Diese Lösung ist für mich als H0m-Bahner (RhB Epoche 2-3) insofern top, als ich nutze:

- Weichen via Servoantrieb mit drehender Weichenlatern
- RhB-Lichtsignale
- binäre Schaltausgänge (Blinkgeber, Lampen, Schranken etc.)
- binäre Eingänge (Rückmeldungen etc.)

und alles via LocoNet (seit meinem längeren beruflich bedingten USA-Aufenthalt 2000). ich finde das LocoNet top!

Nun habe ich diesen Decoder nicht einfach nachgebaut, sondern 2 Platinen gemacht:

Platine 1 80 * 90mm
1 vierbegriffiges HS RhB
1 vierbegriffiges VS RhB (am Signalmast z.B. des Einfahrsignals, wegschaltbar)
2 dreibegriffige HS RhB
- alle Signalspannungen über LMw317 (B3170) einstellbar
- mit Arduino Micro

Platine 2 80 * 90mm
4 Servoantriebe
8 Relais als Polarisierungsrelais der 4 Weichen
- zusätzlich ein LM350 als Power-Schalter der Servospannung (über Arduino-Ausgang und Transistor)
- mit Arduino Micro

weitere Platinen (8 oder 16 * DO mit ULN 2803A) oder Relais sind in Arbeit

Laut dem Handbuch gibt es ein Bespiel:
- LocoNet
- Servosignal

bei dem auch D0 und D1 genutzt werden.

Ich weiss... es sind RxD und TxD, aber ich nutze nur die USB-Schnittstelle und ich habe auch gefunden wo das DEBUGGIG eingeschaltet wird.

D1 ... alles ok
- Servo rührt sich, alls TOP
- die zugehörigen Herzstückrelais schalten nach ca. 6 Sekunden um

D0... kein Signal
- Servo rührt sich nicht
- die zugehörigen Herzstückrelais schalten sofort um, nicht nach ca. 6 Sekunden

Habe ich etwas falsch gemacht, überlesen etc. oder gibt es evtl. einen Bug in der Arduino-Bibliothek bzgl. des D0? Laut der Darstellung im Handbuch muss es ja schon einmal funktioniert haben?

Noch zu dem Geber zum Justieren des Servos: Sobald ich an dem Geber bei mir drehe baut der Arduino scheinbar einen Reset... Geht da nicht jeder Geber?

Danke für jede möglich Hilfe und der Decoder ist EINE TOP LÖSUNG!

LG Wolfgang

PS: Man muss nicht auf SMD ausweichen. Alle IC gibt es bei namhaften Distributoren immer noch langfristig in DIP!


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#456 von MicroBahner , 22.01.2019 12:12

Hallo Wolfgang,
erstmal herzlich willkommen bei den Moba-verrückten Stummies. Schön, dass Du hergefunden hast.

Um dir bei dem Decoder helfen zu können, bräuchte ich schon noch ein paar Informationen, wie Du ihn eingesetzt hast. Insbesondere das Konfigurationsfile und deinen Schaltplan solltest Du mal einstellen.
Welchen Drehencoder verwendest Du? Eigentlich hatte ich da noch nie solche Probleme. Es gab zwar mal Probleme mit billigen Encodern, die extrem stark geprellt haben. Aber Resets hatte ich eigentlich nie.
Da Du den Arduino Micro einsetzt, ist die Verwendung von D0 und D1 an sich kein Problem, da bei diesem Arduino die USB-Schnittstelle unabhängig von Tx/Rx ist.
Welche Version der MobaTools un setzt Du ein?


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#457 von KabaSoft , 22.01.2019 17:04

Hallo Franz-Peter,

super! Vielen Dank für das Hilfeangebot.

Zu den Tools: MoBaTools: 1.0.1
NMRA-Tools: 1.4.2
Arduino 1.8.8

Zu dem Stromlaufplan. Anbei ... ich habe ihn von KiCad nach PDF konvertiert. Es ist der SPL der Servobaugruppe. Und die *-h Datei mit der Konfiguration ist ebenfalls dabei.

Ich bin gespannt woran es liegt ...

Danke und liebe Grüße


Wolfgang

PS: Die Konfigurationsdatei ist als PDF benannt damit ich sie hochladen konnte... sorry ...

Dateianlage:
Sie haben nicht die nötigen Rechte, um die angehängten Dateien zu sehen

 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#458 von MicroBahner , 22.01.2019 22:28

Hallo Wolfgang,
dein PDF mit der Konfigurationsdatei kann ich leider nicht öffnen. Solche Texte solltest Du aber auch direkt als Code in deinen Post einstellen.
Dazu verwendest Du das Icon mit </> oben im Editor. Zwischen die beiden Code-Tags kopierst Du dann den Inhalt der Konfig-Datei hinein. Das sieht dann z.B. so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
 
/* Universeller DCC - Zubeh&#246;rdecoder
* 3 Ausg&#228;nge / Zubeh&#246;radresse
* Einstellbare Funktionalit&#228;t:
* - Servo mit Umschaltrelais zur Weichenpolarisierung
* - Doppelspulenantriebe
* - statische/blinkende Ausg&#228;nge
* - Lichtsignale
* - Einstellen der Servoendlagen per Drehencoder.
* Der Drehencoder bezieht sich immer auf die zuletzt gestellte Weichenposition .
* - Die Betriebsmodi und Startverhalten wird &#252;ber die Analogeing&#228;nge A4/A5 (parametrierbar) eingestellt. Dazu
* m&#252;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&#252;ckgesetzt
*
* Eigenschaften:
* Mehrere (aufeinanderfolgende) Zubeh&#246;radressen ansteuerbar. Die m&#246;gliche Zahl von Adressen h&#228;ngt
* von den verf&#252;gbaren Digitalausg&#228;ngen ab.
* Es k&#246;nnen maximal 16 Servos angesteuert werden
*
* 1. Adresse per Programmierung einstellbar
*
* Das Verhalten der konfigurierten Funktionen wird &#252;ber CV-Programmierung festgelegt:
* Bei Servoausg&#228;ngen die Endlagen und die Geschwindigkeit
* bei Doppelspulenantrieben die Einschaltzeit der Spulen.
* bei blinkenden Ausg&#228;ngen das Blinkverhalten ( in V3.0 noch nicht realisiert )
*
* Aufteilung der CV's:
* CV Bedeutung
* 47 Kennung f&#252;r Erstinitiierung, allgemeine Optionen die f&#252;r den gesamten Decoder gelten
* 48/49 Pom-Adresse
* 50-54 Parameter f&#252;r 1. Weichenadresse
* 55-59 Parameter f&#252;r 2. Weichenadresse
* ...
* Bedeutung der CV's bei den verschiedenen Funktione (CV-Nummern f&#252;r 1. Weichenadresse)
* FSERVO Servo:
* CV50 Bit0 = 1: AutoOff der Servoimpulse bei Stillstand des Servo
* Bit1 = 1: 'Direct-Mode' auch w&#228;hrend der Servobewegung wird auf einen erneuten
* Stellbefehl reagiert, und gegebenenfalls sofort die Drehrichtung ge&#228;ndert
* Bit3 = 1: kein &#220;berpr&#252;fung auf Servoposition bei Empfang eines DCC-Befehls
* bei AUTOOFF und gleicher Position werden wieder Impulse ausgegeben
* CV51 Position des Servo f&#252;r Weichenstellung '0' ( in Grad, 0...180 )
* CV52 Position des Servo f&#252;r Weichenstellung '1' ( in Grad, 0...180 )
* CV53 Geschwindigkeit des Servo
* CV54 aktuelle Weichenstellung ( nicht manuell ver&#228;ndern! )
*
* FCOIL Doppelspulenantrieb: ( derzeit nur mit automatischer Abschaltung )
* CV50 Bit0 = 1: Spulenausgang nur automatisch abschalten
* = 0: Spulenausgang auch &#252;ber DCC-Befehl abschalten
* Bit3 = 1: kein &#220;berpr&#252;fung auf Weichenposition. Gegebenenfalls wird auch an gleichen
* Anschluss wiederholt ein Puls ausgegeben
* CV51 Einschaltdauer der Spule ( in 10ms Einheiten )
* 0= keine automatische Abschaltung, Bit0 im Modebyte muss 0 sein
* CV52 minimale Ausschaltdauer der Spule ( in 10ms Einheiten )
* CV53 -
* CV54 aktuelle Weichenstellung ( nicht manuell ver&#228;ndern! )
*
* FSTATIC statischer/Blinkender Ausgang
* CV50 Bit0 = 1: Blinken, 0: statisch
* Bit1 = 1: Beim Blinken starten erst beide Leds dann Wechselblinken
* Bit2 = 1: 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&#228;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&#228;nge (HIGH=OFF) (MobaTools ab V0.9)
* Bit 2..0: Bitmuster hard/soft gibt an, welche Ausg&#228;nge 'hart' umschalten (Bit=1)
* und welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV51 Bitmuster der Ausg&#228;nge f&#252;r Befehl 1.Adresse 0 (rot)
* CV52 Bitmuster der Ausg&#228;nge f&#252;r Befehl 1.Adresse 1 (gr&#252;n)
* CV53 Index des Vorsignals am gleichen Mast ( 1 &#8230;. )
* CV54 Bitmuster der Zust&#228;nde, bei denen das Vorsignal dunkel ist:
* Bit 0: Befehl 1.Adresse 0 (rot)
* Bit 1: Befehl 1.Adresse 1 (gr&#252;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&#228;nge 'hart' umschalten (Bit=1)
* und Welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV56 Bitmuster der Ausg&#228;nge f&#252;r Befehl 2.Adresse 0 (rot)
* CV57 Bitmuster der Ausg&#228;nge f&#252;r Befehl 2.Adresse 1 (gr&#252;n)
* CV58 reserved
* CV59 reserved
* FSIGNAL0 2. Folgeadresse (optional)
* CV60 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausg&#228;nge 'hart' umschalten (Bit=1)
* und Welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV61 Bitmuster der Ausg&#228;nge f&#252;r Befehl 3.Adresse 0 (rot)
* CV62 Bitmuster der Ausg&#228;nge f&#252;r Befehl 3.Adresse 1 (gr&#252;n)
* CV63 reserved
* CV64 reserved
*
* FVORSIG Vorsignalfunktion
* weitgehend wie FSIGNAL2 ausser:
* CV53 low Byte der Adresse des angek&#252;ndigten Hauptsignals
* CV54 high Byte der Adrsse des angek&#252;ndigten Hauptsignals
*/
#define ENCODER_DOUBLE // Eigenschaften des Drehencoders (Impulse per Raststellung)
 

// vom Anwender &#228;nderbare Parameter um den Zubeh&#246;rdecoder an die verwendete HW anzupassen
 
// Beispiel f&#252;r Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an Pin 13 (interne Led)
// f&#252;r Arduino Nano
 
//----------------------------------------------------------------
// Hardwareabh&#228;ngige Konstante ( nicht per CV &#228;nderbar)
//----------------------------------------------------------------
const byte dccPin = 2;
const byte ackPin = 4;
 
// Eing&#228;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! )
// #define FIXMODE NORMALMODE // Ist dieses define aktiv, wird der Betriebsmode fest gesetzt, betrModeP wird dann
// nicht gelesen und ignoriert. M&#246;gliche Werte:
// NORMALMODE, POMMODE, INIMODE, ADDRMODE
const byte betrModeP = A1; // Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim
// Programmstart eingelesen!
const byte resModeP = A0; // R&#252;cksetzen CV-Werte + Mittelstellung Servos
 
// Eing&#228;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&#246;nnen anderweitig
// verwendet werden.
const byte encode1P = 1; // Eingang Drehencoder zur Justierung.
const byte encode2P = 0;
// ............................................
//-------------------------------------------------------------------------------------------------------
// Betriebswerte ( per CV &#228;nderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben.
// Der Initiierungsmodus l&#228;sst sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine
// sinnvollen Werte im CV47 stehen.
//-------------------------------------------------------------------------------------------------------
const byte DccAddr = 20; // DCC-Decoderadresse
const byte iniMode = 0x50 | AUTOADDR /*| ROCOADDR*/; // default-Betriebsmodus ( CV47 )
const int PomAddr = 50; // Adresse f&#252;r die Pom-Programmierung ( CV48/49 )
 
//Konstante f&#252;r Lichtsignalfunktion
#define SIG_DARK_TIME 300 // Zeit zwischen Dunkelschalten und Aufblenden des neuen Signalbilds
#define SIG_RISETIME 500 // Auf/Abblendezeit
 
// Ausg&#228;nge: mit NC gekennzeichnete Ausg&#228;nge werden keinem Port zugeordnet. Damit k&#246;nnen Ports gespart werden,
// z.B. wenn bei einem Servo kein Polarisierungsrelais ben&#246;tigt wird
const byte modePin = 17; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
 
#define COILMOD NOPOSCHK|CAUTOOFF
#define SERVOMOD SAUTOOFF|NOPOSCHK|SDIRECT
#define STATICMOD CAUTOOFF|BLKSOFT|BLKSTRT // Wechselblinker mit beiden Leds an beim Start
const byte iniTyp[] = { FSTATIC, FSERVO, FSIGNAL2, FSIGNAL0, FVORSIG, FCOIL };
const byte out1Pins[] = { A2, 3, /*rt*/ 9, /*rt*/10, /*ge*/15, 5 }; // output-pins der Funktionen
const byte out2Pins[] = { A3, NC, /*gn*/14, /*ws*/ 8, /*gn*/16, 6 };
const byte out3Pins[] = { NC, NC, /*ge*/ 7, NC, NC, NC };

const byte iniFmode[] = {STATICMOD, SERVOMOD, 0, 0, 0, COILMOD };
const byte iniPar1[] = { 50, 30, 0b01001, 0b10001, 0b01, 50 };
const byte iniPar2[] = { 50, 150, 0b00010, 0b00110, 0b10, 50 };
const byte iniPar3[] = { 50, 8, 5, 0, 19, 0 };
const byte iniPar4[] = { 0, 0, 0b00101, 0, 0, 0,}; // nur f&#252;r Lichtsignale!
//------------------------------------------------------------------------------------
 

 

Nur als Beispiel, wenn's bei Dir klappt, nehme ich es wieder raus

P.S. hast Du auch den Code des Decoders verändert? Ich habe gesehen, dass Du die Servospannung über einen IO Pin schaltest. Das ist ja im Decoder so nicht vorgesehen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#459 von KabaSoft , 22.01.2019 22:44

Hallo Franz-Peter,

im Code wollte ich das Bit nutzen, habe es aber noch nicht umgesetzt. Ich habe den Code nur "umgeschrieben", d.h. alle TABS gegen Leerzeichen im Abstand 4 Zeichen getauscht weil ich als Editor "Notepad++" verwende.

Das Problem mit dem Servo an D0 besteht wenn ich die unveränderten Dateien von Dir nutze, aber auch wenn die die mit Leerzeichen aufgefüllten Dateien nutze. Es müsste etwas generelles sein, oder?

Ich versuche jetzt mal den Code einzufügen... Sonst muss ich ihn Dir direkt per Mail zusenden.

Im Arduino - Code steht auskommentiert... (siehe unten). Mehr habe ich noch nicht gemacht da ich das D0-Problem vorher klären will...

LG Wolfgang

1
2
3
4
5
6
7
8
9
10
11
12
13
 

void setup()
{
 
#ifdef __STM32F1__
disableDebugPorts(); /* JTAG und SW Ports freigeben */
#endif
 
#ifdef ENCODER_AKTIV
// _pinMode( U_Servo_act, OUTPUT );
// digitalWrite( U_Servo_act, LOW );
/* Einschalten der Servospannung */
#endif
 



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
 
/* Universeller DCC - Zubeh&#246;rdecoder
**************************************************************************************************
* angepasst f&#252;r 4 Servoantriebe (Weichenantrieb Senn) mit 8 Relais zur aktiven Herst&#252;ckpolari-
* sierung
* Die Pins sind f&#252;r den Arduino Micr&#252; ausgelegt.
* Beim Servodecoder ist noch kein R&#252;ckkanal f&#252;r das Auslesen der CV-Werte vorgesehen
**************************************************************************************************
*
* 2 Ausg&#228;nge / Zubeh&#246;radresse
* Einstellbare Funktionalit&#228;t:
* - Servo mit Umschaltrelais zur Weichenpolarisierung
* - Doppelspulenantriebe
* - statische/blinkende Ausg&#228;nge
* - Einstellen der Servoendlagen per Drehencoder.
* Der Drehencoder bezieht sich immer auf die zuletzt gestellte Weichenposition .
* - Die Betriebsmodi und Startverhalten wird &#220;ber die Analogeing&#228;nge A4/A5 (parametrierbar) eingestellt. Dazu
* m&#252;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&#252;ckgesetzt
*
* Eigenschaften:
* Bis zu 8 (aufeinanderfolgende) Zubeh&#246;radressen ansteuerbar. Je nach verf&#252;gbaren Digitalausg&#228;ngen
* sind ggfs auch mehr m&#246;glich.
* 1. Adresse per Programmierung einstellbar
*
* Das Verhalten der konfigurierten Funktionen wird &#252;ber CV-Programmierung festgelegt:
* Bei Servoausg&#228;ngen die Endlagen und die Geschwindigkeit
* bei Doppelspulenantrieben die Einschaltzeit der Spulen.
* bei blinkenden Ausg&#228;ngen das Blinkverhalten ( in V3.0 noch nicht realisiert )
*
* Aufteilung der CV's:
* CV Bedeutung
* 47 Kennung f&#252;r Erstinitiierung, allgemeine Optionen die f&#252;r den gesamten Decoder gelten
* 48/49 Pom-Adresse
* 50-54 Parameter f&#252;r 1. Weichenadresse
* 55-59 Parameter f&#252;r 2. Weichenadresse
* ...
* Bedeutung der CV's bei den verschiedenen Funktione (CV-Nummern f&#252;r 1. Weichenadresse)
* FSERVO Servo:
* CV50 Bit0 = 1: AutoOff der Servoimpulse bei Stillstand des Servo
* CV51 Position des Servo f&#252;r Weichenstellung '0' ( in Grad, 0...180 )
* CV52 Position des Servo f&#252;r Weichenstellung '1' ( in Grad, 0...180 )
* CV53 Geschwindigkeit des Servo
* CV54 aktuelle Weichenstellung ( nicht manuell ver&#228;ndern! )
*
* FCOIL Doppelspulenantrieb: ( derzeit nur mit automatischer Abschaltung )
* CV50 Bit0 = 1: Spulenausgang automatisch abschalten
* = 0: Spulenausgang &#252;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&#228;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&#228;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&#228;nge (HIGH=OFF) (MobaTools ab V0.9)
* Bit 2..0: Bitmuster hard/soft gibt an, welche Ausg&#228;nge 'hart' umschalten (Bit=1)
* und welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV51 Bitmuster der Ausg&#228;nge f&#252;r Befehl 1.Adresse 0 (rot)
* CV52 Bitmuster der Ausg&#228;nge f&#252;r Befehl 1.Adresse 1 (gr&#252;n)
* CV53 Index des Vorsignals am gleichen Mast ( &#252;.&#228;. )
* CV54 Bitmuster der Zust&#228;nde, bei denen das Vorsignal dunkel ist:
* Bit 0: Befehl 1.Adresse 0 (rot)
* Bit 1: Befehl 1.Adresse 1 (gr&#252;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&#228;nge 'hart' umschalten (Bit=1)
* und Welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV56 Bitmuster der Ausg&#228;nge f&#252;r Befehl 2.Adresse 0 (rot)
* CV57 Bitmuster der Ausg&#228;nge f&#252;r Befehl 2.Adresse 1 (gr&#252;n)
* CV58 reserved
* CV59 reserved
* FSIGNAL0 2. Folgeadresse (optional)
* CV60 Bit 2.. 0 Bitmuster hard/soft gibt an, welche Ausg&#228;nge 'hart' umschalten (Bit=1)
* und Welche Ausg&#228;nge weich &#252;berblenden (Bit=0)
* CV61 Bitmuster der Ausg&#228;nge f&#252;r Befehl 3.Adresse 0 (rot)
* CV62 Bitmuster der Ausg&#228;nge f&#252;r Befehl 3.Adresse 1 (gr&#252;n)
* CV63 reserved
* CV64 reserved
*
* FVORSIG Vorsignalfunktion
* weitgehend wie FSIGNAL2 ausser:
* CV53 low Byte der Adresse des angek&#252;ndigten Hauptsignals
* CV54 high Byte der Adrsse des angek&#252;ndigten Hauptsignals
*/

#define ENCODER_DOUBLE /* Eigenschaften des Drehencoders (Impulse per Raststellung) */
 
/* vom Anwender &#228;nderbare Parameter um den Zubeh&#246;rdecoder an die verwendete HW anzupassen */
 
/* Beispiel f&#252;r Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an */
/* Pin 13 (interne Led), angepasst in der Version 0x52 auf Pin 1 */
 
/* ---------------------------------------------------------------- */
/* Hardwareabh&#228;ngige Konstante ( nicht per CV &#228;nderbar) */
/* ---------------------------------------------------------------- */
 
/* Eing&#228;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! ) */
/* Version f&#252;r Micro */
 
const byte betrModeP = A5; /* Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim */
/* Programmstart eingelesen! */
const byte resModeP = A4; /* R&#252;cksetzen CV-Werte + Mittelstellung Servos */
 
const byte U_Servo_act = A0; /* Low = Einschalten U-Servo, High = Abschalten U-Servo */
 
/* Eing&#228;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&#246;nnen anderweitig */
/* verwendet werden. */
 
/* Eing&#228;nge Drehencoder zur Justierung */
const byte encode1P = A2;
const byte encode2P = A3;
/* ................................... */
 
/* ------------------------------------------------------------------------------------------------------- */
/* Betriebswerte ( per CV &#228;nderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben. */
/* Der Initiierungsmodus l&#228;sst sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine */
/* sinnvollen Werte im CV47 stehen. */
/* ------------------------------------------------------------------------------------------------------- */
 
const byte DccAddr = 17; /* DCC-Decoderadresse 1 - 8 */
const byte iniMode = 0x50 | AUTOADDR /*| ROCOADDR*/;
/* default-Betriebsmodus ( CV47 ) */
const int PomAddr = 82; /* Adresse f&#252;r die Pom-Programmierung ( CV48/49 )*/
/* Ersatz f&#252;r LocoIO Modul 82 */
 

/* Konstante f&#252;r Lichtsignalfunktionen */
/* Zeit zwischen Dunkelschalten und */
/* Aufblenden des neuen Signalbildes */
#define SIG_DARK_TIME 300
 
/* Auf/Abblendezeit */
#define SIG_RISETIME 500
 
/* Ausg&#228;nge: mit NC gekennzeichnete Ausg&#195;&#164;nge werden keinem Port zugeordnet. Damit k&#246;nnen Ports gespart */
/* werden, z.B. wenn bei einem Servo kein Polarisierungsrelais ben&#246;tigt wird */
 
/* Anzeige Betriebszustand (Normal/Programmierung) (Led) */
/* const byte modePin = 13; */
const byte modePin = A0;
 
#define MAX_LEDS 16
/* default ist 16. Kann auf die tats&#228;chlich benutzte Zahl reduziert werden, um RAM zu sparen. */
 
/* Die Basissoftware hat noch einen Fehler da der D0 als Ausgang nicht funktioniert, D1 ist ok */
/* f&#252;r RhB Preda Seite Berg&#252;n */
/* Adressen LocoNet 17 18 19 20 */
/* Position in der Tabelle f&#252;r Par3 HS 1 2 3 4 */
 
/* Weiche 1 Weiche 2 Weiche 3 Weiche 4 */
#define COILMOD NOPOSCHK|CAUTOOFF
#define SERVOMOD SAUTOOFF|NOPOSCHK|SDIRECT
#define STATICMOD CAUTOOFF|BLKSOFT|BLKSTRT /* Wechselblinker mit beiden Leds an beim Start */
const byte iniTyp[] = { FSERVO, FSERVO, FSERVO, FSERVO };
const byte out1Pins[] = { 0, 1, 3, 5 }; /* output-pins der Funktionen */
const byte out2Pins[] = { 6, 8, 10, 12 }; /* Herzst&#252;ckpolarisierungsrelais g */
const byte out3Pins[] = { 7, 9, 11, 13 }; /* Herzst&#252;ckpolarisierungsrelais a */

const byte iniFmode[] = { SAUTOOFF, SAUTOOFF, SAUTOOFF, SAUTOOFF };
const byte iniPar1[] = { 40, 40, 40, 40 }; /* Einschalten 30 Grad vor NULL */
const byte iniPar2[] = { 140, 140, 140, 140 }; /* Einschalten 30 Grad vor 180 */
const byte iniPar3[] = { 8, 8, 8, 8 };
const byte iniPar4[] = { 50, 50, 50, 50 }; /* wird nur bei Lichtsignalen benutzt */
 
 


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#460 von MicroBahner , 22.01.2019 22:57

Hallo Wolfgang,
ich werde mal versuchen, das mit deiner Konfig nachzuvollziehen, weis aber noch nicht, ob das morgen klappt.

Was versprichst Du dir von Schalten der Servo-Versorgung?

Das mit den TABS ist etwas seltsam. Ich verwende auch den Notepad++ parallel zur IDE und beide sind so eingestellt, dass sie mit Leerzeichen einrücken. In den Dateien sollten also eigentlich gar keine Tabs drin sein....


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#461 von KabaSoft , 22.01.2019 23:23

Hallo Franz-Peter,

ich werde morgen oder übermorgen meine Konfig mit Deinem O-Code noch einmal zusammen übersetzen und testen. ich muss dazu den Testaufbau wieder "hervorholen".

Das mit dem Wegschalten der Servospannung hat 2 Vorteile:

- die Servos laufen nicht immer im Vollregelbetrieb. Das hat den Vorteil dass das Brummen, was durch Drift in den Antrieben passiert, vermieden wird. Das brummen kann gerade bei Servos in "Normalgröße" lästig werden.
- Die Servos halten halt länger, zumal in meinen 10 Weichen Miniaturservos eingebaut sind die von Conrad sind, die Conrad ohne Ersatz aus dem Programm genommen hat und ich ggf. bei defektem Antrieb die Mechanik neu machen muss.

Das mit dem Wegschalten machen auch kommerzielle Anbieter von Servoantrieben für Weichen. Es geht auch wenn die Weichen die jeweiligen Endlagen stabil erreicht haben (Es ist auch im sogenannten "Flüsterantrieb" verbaut etc.)

Ich habe die Arduino IDE 1.8.8 und ich finde sie gegenüber der vorhergehenden irgendwie "anders". Vor allem kann ich den externen Editor nicht einbinden...
Mit den eingebauten Tabs habe ich im Code auch die roten Linien als Marker für die Gültigkeitsbereiche der geschweiften Klammern nicht gesehen... Ich nutze Notepad ++ V 7.6.1. als 64Bit Version.

ich hoffe dass die Arduino IDE sauber auf Windows 7 64 Bit läuft. 32 Bit habe ich seit 3 Jahren nicht mehr weil ich den PC auch für den Job nutze und für die Programmierung im Job (C++ und SPS) ein 64Bit Windows brauche.

LG Wolfgang


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#462 von MicroBahner , 23.01.2019 09:23

Hallo Wolfgang,

Zitat

- die Servos laufen nicht immer im Vollregelbetrieb. Das hat den Vorteil dass das Brummen, was durch Drift in den Antrieben passiert, vermieden wird. Das brummen kann gerade bei Servos in "Normalgröße" lästig werden.
- Die Servos halten halt länger, zumal in meinen 10 Weichen Miniaturservos eingebaut sind die von Conrad sind, die Conrad ohne Ersatz aus dem Programm genommen hat und ich ggf. bei defektem Antrieb die Mechanik neu machen muss.

Meine Erfahrung ist da etwas anders. Ich weis, dass das einige kommerzielle Decoder machen, aber ich halte nichts davon, die Servospannung ständig aus- und einzuschalten. Ich glaube auch nicht, dass die Servos dadurch länger halten. Um die aktive Regelung des Servos zu unterbinden, reicht es normalerweise den Ansteuerimpuls abzuschalten. Dann wird der Motor nicht mehr angesteuert und das Servo steht absolut ruhig und braucht auch praktisch keinen Strom mehr ( außer den Ruhestrom für die Elektronik ).
Dieses Abschalten des Ansteuerimpulses macht der Decoder automatisch, wenn das Flag SAUTOOFF bei dem jeweiligen Servo gesetzt ist ( was auch in deinem Konfigfile der Fall ist ).


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#463 von KabaSoft , 23.01.2019 09:53

Moin, moin,

das mit dem "Wegschalten" werde ich anders lösen. Da kommt A0 weg, falls es mit D0 nicht machbar zu bekommen sein wird brauche ich A0 anstelle D0, und ich nutze 2 4-fach-Dioden SAM44 + 1 Widerstand via Steckbrücke um die Funktion Wegschalten optional zu haben. ich selber habe mit dem Abschalten positive Erfahrungen gemacht.... Hinzu kommt dass ich die Servospannung aus der 12VDC ableiten kann ohne 5VDC extra einspeisen zu müssen.

Ist es machbar zum Testen das Array auszugeben in dem die "Pins" übergeben werden? Mich würde interessieren ob die ganzen Pin-Nummern richtig übergeben und ausgewertet werden. Ich habe den Eindruck dass durch das sofortige Anziehen der Relais bei der Nutzung von D0 sich das Programm evtl. "verrechnet". Nutze ich A0 anstelle von D0 läuft alles korrekt ab.
Bei S0 kommen keine Servoimpulse an D0, bei einem einfachen Umstellen auf A0 (derselbe Code, nur Umstellung im h-File) kommen die vermissten Servoimpulse an A0 und die Zeiten laufen auch richtig ab. Bei D0 scheinen die Zeiten quasi "0" zu sein.

Weiterhin habe ich den Wunsch, sonst muss ich es ggf. selber umsetzen, ob die Signalliste für die Vorsignalfunktion am Hauptsignalmast, sich nicht auf zumindest 2 Signale erweitern lässt. Es ist in DE und auch CH sehr oft so dass die Einfahrsignale sogenannte Ausfahrvorsignale tragen und die Bahnhöfe / Stationen haben oft mehr als ein Ausfahrsignal (meistens 2, sehr oft auch 3 oder 4).

LG Wolfgang


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#464 von MicroBahner , 23.01.2019 14:35

Hallo Wolfgang,

Zitat

das mit dem "Wegschalten" werde ich anders lösen. Da kommt A0 weg, falls es mit D0 nicht machbar zu bekommen sein wird brauche ich A0 anstelle D0, und ich nutze 2 4-fach-Dioden SAM44 + 1 Widerstand via Steckbrücke um die Funktion Wegschalten optional zu haben. ich selber habe mit dem Abschalten positive Erfahrungen gemacht.... Hinzu kommt dass ich die Servospannung aus der 12VDC ableiten kann ohne 5VDC extra einspeisen zu müssen.

Mhmm, verstehe ich jetzt nicht so ganz. Aber wenn es für dich so OK ist, dann passt es ja. Du kannst dann aber wohl auch das SAUTOOFF-Flag weglassen.

Zitat

Ist es machbar zum Testen das Array auszugeben in dem die "Pins" übergeben werden?

Ich hab's jetzt nicht nochmal ausprobiert, aber wenn ich mich recht erinnere, werden auch diese Werte ausgegeben, wenn das debugging eingeschaltet ist.

Zitat

Weiterhin habe ich den Wunsch, sonst muss ich es ggf. selber umsetzen, ob die Signalliste für die Vorsignalfunktion am Hauptsignalmast, sich nicht auf zumindest 2 Signale erweitern lässt.

Da verstehe ich jetzt nicht so ganz, wie Du das meinst. Auch im Fall mehrerer Ausfahrtsignale ist am Mast des Einfahrsignals doch nur ein Vorsignal. Und das richtet sich auch immer nur nach einem Ausfahrsignal. Nur das dieses Ausfahrsignal dynamisch - je nach eingestellter Fahrstraße - zugeordnet werden muss.
Von der eingestellten Fahrstraße weis der Decoder aber nichts. Wenn Du dem Vorsignal jetzt 2 Hauptsignale zuordnest - woher soll er wissen, nach welchem er sich richten soll, wenn das eine Hp0, und das andere Hp1 anzeigt? In dem Fall kann das meiner Meinung nach nur die Ansteuersoftware leisten, und im Decoder wird gar kein Signal zugeordnet.

Zum Ausgang D0:
Ein erster Test hat ergeben, dass die MobaTools in der Tat ein Problem mit dem Pin 0 haben. Das muss ich mir nochmal anschauen, woran das liegt. Da ich die Port aus Performancegründen direkt ansteuere ( über Portadr/BitNr. ) funktioniert da evt.l etwas mit der Umrechnungsfunktion nicht.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#465 von MicroBahner , 23.01.2019 17:49

Hallo Wolfgang,
die Fehlersuche in den MobaTools war erfolgreich. Eigentlich noch ein Design-Fehler aus den ersten Anfängen.
Wenn Du magst, kannst Du dir die Entwicklerversion von Github herunterladen - mit der sollte es gehen. Bis ich die als neue Release freigebe, will ich aber noch ein wenig testen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#466 von KabaSoft , 23.01.2019 23:39

Moin moin, Franz-Peter,

SUPER! Das finde ich top dass Du Dir die Sache angeschaut hast und gelöst hast, denn ich hatte doch schon Zweifel an mir selber. Ich werde die MobaTools. morgen neu laden und am Abend testen was geht.

Das mit dem Vorsignal etc. Ja, es würde gehen wenn ich ein GBS oder eine GBS-Software hätte, nur habe ich nicht. Es sollte von der Logik her klappen wenn garantiert werden kann dass nur eines der Ausgangssignale immer einen Fahrbegriff zeigt bzw. zeigen kann.

ich persönlich würde eine solche Option als eine super Option für diese tolle Lösung von Dir halten. Oder ich schaue mal selber was geht oder nicht ...

Den DEBUG-Modus hatte ich nach einigem Suchen einschalten und ausschalten können. Aber die PIN-Matrix habe ich nicht gefunden... Mal sehen: nächste Woche Dienstreise und vielleicht ist an den stupiden Abenden Zeit zu schauen. Muss nur den Testaufbau mitnehmen.

Nochmals vielen herzlichen Dank und LG Wolfgang


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#467 von KabaSoft , 24.01.2019 11:45

Moin Franz-Peter,

ich habe bis nach Mitternacht noch getestet. Mit den MoBaTools als Entwicklerversion geht es nun. Ich habe mal die Codes verglichen... Alles ok!

Was das Vorsignal am Hauptsignal angeht: ich baue nebenbei noch an einem "Stellwerk" mit Z80/Z8 (wenn Zeit ist) und dort werden die Hauptsignale exklusiv ausgewertet und schalten das Vorsignal. Es ist wie beim SPDrS2 angelehnt, aber es gibt keine virtuellen Signaladressen.

Mal sehen ob ich eine einfache Lösung finde diese tolle Option einfach und sicher zumindest auf 2 HS zu ergänzen... Ok, da muss ich schauen wann Zeit ist.

Jetzt kommt der Test mit dem Encoder, dann die Platinenbereinigung von 2 kleinen Fehlern, die 8/16-Bit DO ....und der Einbau in der Anlage.

Gibt es schon Erfahrungen mit dem Lesen von Daten aus dem Controller via Loconet (also Nutzung des LN TxD)?

LG Wolfgang


 
KabaSoft
S-Bahn (S)
Beiträge: 15
Registriert am: 19.01.2019


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#468 von andiii_98 , 24.01.2019 21:18

Hallo zusammen,
hallo Franz-Peter,

ich quäle mich derzeit damit, das DCC-Signal auf den Arduino bzw. Attiny85 zu bekommen.

Und zwar vermute ich, dass das Problem in der Schaltung mit dem Optokoppler 6N137 liegt.

Ich habe derzeit folgenden Aufbau:
DCC-Signal geht auf die Optokoppler-Schaltung (wie im Manual im ersten Posting dargestellt) und von dort zum Arduino oder zum Attiny85.
Dort läuft ein DCC-Sniffer-Programm oder alternativ ein Programm, dass die interne LED schaltet.
Jedoch passiert mit der LED schlicht überhaupt nichts.

Ich bin der Ansicht, dass irgendwas an der Optokoppler-Schaltung bei mir nicht stimmt, da der Arduino oder Attiny85 mit denselben Programmen perfekt das tut, was er soll, wenn ich das DCC-Signal über die Schaltung von robokalle (https://stummiforum.de/viewtopic.php?f=5&t=156698&start=25), also nur mit Gleichrichter und Widerstand darauf leite.

Ich habe die Optokoppler-Schaltung inzwischen 2mal mit komplett unterschiedlichen Bauteilen aufgebaut, um defekte Bauteile auszuschließen. War jedoch ohne Effekt.

Hat irgendjemand eine Idee, was ich überprüfen könnte (z.B. Strom/Spannungen messen?), um zu schauen, ob der Optokoppler das tut, was er soll?

Viele Grüße und vielen Dank,
Andreas


andiii_98  
andiii_98
S-Bahn (S)
Beiträge: 19
Registriert am: 21.01.2015
Spurweite H0
Stromart AC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#469 von MicroBahner , 24.01.2019 22:03

Hallo Andreas,
welche Schaltung aus dem Manual hast Du denn aufgebaut? Die etwas komplexere mit den 2 Optokopplern, die auch zum Auslesen funktioniert, oder die einfachere ganz am Ende des Manuals? Wenn es mit der 'Direktschaltung' von robokalle funktioniert gehe ich auch mal davon aus, dass es nicht an Arduino und der Software liegt.
Hast Du die Möglichkeit, am Gleiseingang eine Gleichspannung von ca. 12-16V anzulegen? Dann könntest Du am Arduinoeingang messen, ob sich dort - je nach Polarität der Gleichspannung - ein HIGH ode LOW Signal einstellt. Das wäre zumindest mal ein grundsätzlicher Test, ob da überhaupt eine Signalverbindung besteht.

Hallo Wolfgang,

Zitat

Gibt es schon Erfahrungen mit dem Lesen von Daten aus dem Controller via Loconet (also Nutzung des LN TxD)?

Für welche Anwendung meinst Du das? Grundsätzlich ist die Kommunikation ja immer bidirektional. Du kannst auch die SV-Werte ( entsprechen ja den DCC-CV's ) bereits auslesen. Da ist ja auch die Datenrichtung vom Decoder zur Zentrale.
Was nicht funktioniert, ist einen Eingang am Arduino auszulesen. Das ist bisher nicht vorgesehen, es würde ja auch nur mit LocoNet und nicht mit DCC funktionieren.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#470 von hubedi , 24.01.2019 22:11

Hallo Andreas,

der 6N137 ist für diesen Zweck eigendlich gut geeignet. Wenn Du wissen willst, ob der Optokopler prinzipiell funktioniert, kannst Du den Eingang mit der LED auch mir einer Gleispannung betreiben. Vorsicht ... natürlich darfst Du die Spannung nie direkt an die Pins 2 (+)und 3 (-) anlegen, sondern immer über einen passenden Vorwiderstand. Dann kannst Du mit einem Voltmeter am Ausgang messen, ob der Koppler durchschaltet. Das müsste PIN 6 gegen Masse sein.

LG
Hubert

PS: Da war der Franz-Peter schneller ...


Hier geht's zu den Bauberichten der "Mark Michingen"
Und hier stelle ich mich kurz vor ...

Wer immer tut, was er schon kann, bleibt immer das, was er schon ist. (Henry Ford)


 
hubedi
ICE-Sprinter
Beiträge: 5.878
Registriert am: 24.10.2015
Ort: Südhessen
Gleise Selbstbau-/Umbaugleise
Spurweite N
Steuerung YaMoRC YD7001, Lenz
Stromart Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#471 von andiii_98 , 24.01.2019 22:14

Hallo Franz-Peter,
Vielen Dank für die schnelle Rückmeldung. Super!
Ich hatte vergessen zu erwähnen, dass ich mit Märklin fahre.
Ich habe die ganz einfache Schaltung gebaut, also. Nur Optokoppler und ein "paar Widerstände drumherum".
Ich probiere es morgen mal mit der Gleichspannung auf der Gleisseite aus und melde mich, was rauskommt.
Viele Grüße
Andreas

Noch eine Ergänzung, da ich Huberts Posting gerade erst gesehen habe:
Ja, die Gleisspannung geht über einen Vorwiderstand (1 kOhm) auf den Optokoppler.
Auch deinen Vorschlag mit der Messung von Pin 6 gegen Masse schaue ich mir morgen an. Vielen Dank!


andiii_98  
andiii_98
S-Bahn (S)
Beiträge: 19
Registriert am: 21.01.2015
Spurweite H0
Stromart AC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#472 von MicroBahner , 25.01.2019 14:41

Hallo Wolfgang,

Zitat

Den DEBUG-Modus hatte ich nach einigem Suchen einschalten und ausschalten können. Aber die PIN-Matrix habe ich nicht gefunden...

Ich habe nochmal nachgeschaut. Eine komplette Pin-Matrix gibt's nicht. Die Pins werden beim Einrichten der Objekte im Konstruktor ausgegeben. Beim Servo werden die Pins aber in der Tat nicht ausgegeben. Offensichtlich hatte ich da nie ein Problem mit den Pins, deshalb fehlt im Konstruktor da eine entsprechende Debugausgabe.
Um das einzurichten, musst Du in der Datei FuncClasses.cpp beim Konstruktor des Servos noch eine Zeile einfügen:

1
2
3
 
    // Weichenservo einrichten
DB_PRINT( "Fsservo CV=%d, Pins %d,%d,%d ", _cvAdr, _outP[0], _outP[1], _outP[2] );
 
 

Dann werden im Debugmode beim Einrichten des Servoobjektes die Pins ausgegeben.

Nochmal zum Vorsignal:

Zitat
Das mit dem Vorsignal etc. Ja, es würde gehen wenn ich ein GBS oder eine GBS-Software hätte, nur habe ich nicht. Es sollte von der Logik her klappen wenn garantiert werden kann dass nur eines der Ausgangssignale immer einen Fahrbegriff zeigt bzw. zeigen kann.

Das sagt doch auch nicht unbedingt, dass das Vorsignal zu dem Signal gehört, dass einen Fahrbegriff zeigt. Es könnte doch sein, dass die Einfahrt in ein Gleis geht, wo das Signal auf HP0 steht, während gleichzeitig aus dem Gleis daneben ein Zug mit Hp1 oder HP2 ausfährt.
Mag sein, dass das bei dir nicht vorkommt, aber allgemein kann man das nicht ausschliessen. Deshalb würde ich das im Standard-Decoder nicht vorsehen wollen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#473 von andiii_98 , 25.01.2019 20:44

Hallo Franz-Peter und Hubert,

ich habe nun die Schaltungen gemessen.

Ich habe am Ausgang des Optokopplers (Pin 6 gegen Masse) ca. 0,2 V. Der Optokoppler macht zumindest etwas - wenn ich die Eingangsspannung abschalte, geht auch die Ausgangspannung auf null.
Am Eingang des Optokopplers (Pin 2 und 3) liegen ca. 1,5 V.
Diese Schaltung findet man ja an vielen Stellen im Internet, aber ich habe keine Angaben zu den Spannungen gefunden. Ich habe auch nochmal den Widerstand zwischen Eingang und Gleisspannung geprüft - 1 kOhm, wie in den Schaltungen im Internet.

Dann habe ich noch eine Gleichstromquelle angeschlossen. Die Werte oben sind fast identisch. Auch hier ist bei ausgeschalteter Stromquelle nichts messbar, nach dem Einschalten, habe ich ein Ergebnis am Ausgang des Optokopplers.

Dagegen liefert die Schaltung von Robokalle am Pin, der dann an den Eingang vom Attiny geht, 9 V.

Viele Grüße,
Andreas


andiii_98  
andiii_98
S-Bahn (S)
Beiträge: 19
Registriert am: 21.01.2015
Spurweite H0
Stromart AC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#474 von MicroBahner , 25.01.2019 21:18

Hallo Andreas,
da ist an deiner Schaltung aber etwas 'oberfaul' .
Die 1,5V zwischen Pin 2 und 3 sind die Durchlassspannung der LED im Optokoppler. Die kannst Du messen, wenn die Spannung am Eingang anliegt. Am Pin 6 muss die Spannung dann nahe 0V sein. Wenn Du die Eingangsspannung abschaltest, musst Du am Ausgang des Optokopplers ca 5V ( die Versorgungsspannung ) messen.
Ist der Widerstand am Ausgang ( zwischen Pin 6 und VCC/Pin8 ) korrekt angeschlossen? Und Du hast die Versorgungsspannung des Optokopplers schon auch eingeschaltet ( Da ist auf der Ausgangsseite eine aktive Schaltung drin, die versorgt werden will ).

Zitat

Dann habe ich noch eine Gleichstromquelle angeschlossen. Die Werte oben sind fast identisch.

Was hast Du denn dann in der obigen Messung angeschlossen? Ich dachte Du misst das grundsätzlich alles mit Gleichspannung. Sonst kannst Du da mit einem einfachen Multimeter nichts vernünftiges messen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#475 von andiii_98 , 25.01.2019 22:04

Hallo Franz-Peter,

im ersten Versuch hatte ich einen Gleichrichter zwischen Gleis und der Schaltung. Aber den sollte ich wohl weglassen, um nicht noch mehr Fehlerquellen einzubauen.

Also geht jetzt Gleichstrom direkt auf die "Gleisseite" der Schaltung. Und der Arduino versorgt die Ausgangsseite mit 5 V.
- Die Eingangsseite verhält sich wie von dir beschrieben, also die ca. 1,5 V zwischen Pin 2 und 3 liegen an, wenn Strom vom "Gleis" kommt. Wenn der Strom abgeschaltet ist, sind es 0 V.
- Wenn die Eingangsspannung aus ist, habe ich an Pin 6 ca. 1,7 V.
- Wenn die Eingangsspannung an ist, sind es an Pin 6 ca. 0 V.

Abgesehen davon, dass ich keine 5 V am Pin 6 habe, funktioniert es wie von dir beschrieben.

(Vergiss, was ich vorhin gemessen habe. Keine Ahnung, wie diese Werte (0,2 auf der Ausgangsseite) zustande gekommen sind...)

Viele Grüße,
Andreas


andiii_98  
andiii_98
S-Bahn (S)
Beiträge: 19
Registriert am: 21.01.2015
Spurweite H0
Stromart AC, Digital


   

Lenz Booster LV102 mit Booster Mangementsystem BMS-D von Boll
rtDrive Lenz Digikeijs DR5000

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz