Servo-Ansteuerung für Weichenbefehle

Lorenzo
Beiträge: 34
Registriert: 20.04.2019, 19:24
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von Lorenzo » 10.05.2019, 21:21

Du bist der beste :D

Bei mir funktioniert das Dekodieren jetzt wie es soll. Übrigens mit folgender simpler Eingangsschaltung:
DCC Eingang.png
DCC Eingang.png (3.71 KiB) 7266 mal betrachtet
Am Wochenende werde ich das noch ausführlicher testen.

Beste Grüße
Lorenzo

Lorenzo
Beiträge: 34
Registriert: 20.04.2019, 19:24
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von Lorenzo » 11.05.2019, 10:38

Ich habe heute mal ein bisschen weiter getestet. Mir ist aufgefallen, dass der erste Wert im Servobefehl immer '0' ist und über config.json nicht beeinflusst werden kann.

Code: Alles auswählen

"turnout2value": { "0": "20", "1": "90"}
Daraufhin habe ich mir die config.cpp mal näher angeschaut und folgende Änderung vorgenommen:

Code: Alles auswählen

			int child = parser->getIdxByKey(idx, "turnout2value");
			child = parser->getFirstChild(child);
			child = parser->getFirstChild(child);
			int arraysize = 2 * parser->getNumberOfSiblings(child);
			int *array = new int[arraysize];
			int pos = 0;
			while (child != -1) {
//				child = parser->getNextSiblings(child);
				array[pos++] = parser->getString(child).toInt();
				array[pos++] = parser->getString(parser->getFirstChild(child)).toInt();
				child = parser->getNextSiblings(child);
			}
Danach wurden die richtigen Werte übernommen. Allerdings habe ich ein grundsätzliches Problem dabei. Ich arbeite mit der Arduino IDE. Ich will mich im Moment auch nicht in eine andere einarbeiten. Die IDE kompiliert den sketch fehlerfrei. Nach Hochladen der neuen firmware (inkl. format) resettet der ESP aber laufend, sobald ein DCC Signal anliegt. Ich konnte aber zwischen 2 resets immer einen Weichenbefehl abgeben und so sehen, dass die Änderung 'Erfolg' hatte. Jetzt vermute ich mal, ich muss in der IDE noch Einstellungen anpassen.

Folgende Einstellungen habe ich dort:
Board: NodeMCU 1.0 (ESP-12E Module)
CPU Frequency: 80 MHz
Flash Size: 4M (1M SPIFFS)
IwIP Variant: v2 Lower Memory

Könnte eine dieser Einstellungen evtl. nicht korrekt sein?

Beste Grüße
Lorenzo

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von little.yoda » 11.05.2019, 13:29

Hi

Dein Fix war komplett richtig. Ist eingbaut. Releases werden gerade erstellt.
https://github.com/littleyoda/littleyod ... r/releases

Ich habe aber bei meinem kurzen Test gerade gemerkt, dass irgendwie Weichenbefehle immer noch nicht ankommen. Muss ich mir später anschauen.


Bei Arduino IDE ist meine erste Frage, ob du 2.4.2 für das ESP8266 Framework ausgewählt hast.
Und in der Regel erst mal nur 40 MHZ

Kompilieren:
Schau dir mal die folgende Webseite an. Damit kannst du relativ einfach die gleichen Einstellungen nutzen wie ich.
https://littleyoda.github.io/littleyoda ... mIO%20CLI/

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von little.yoda » 11.05.2019, 14:00

Mit der Version 1.2.2 werden sie zumindest auf der seriellen Schnittstelle angezeigt.

Lorenzo
Beiträge: 34
Registriert: 20.04.2019, 19:24
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von Lorenzo » 11.05.2019, 17:18

So, hab jetzt etwas getestet. Ich hatte Version 2.5.0 im Framework. Habs erst einmal auf 2.4.2 geändert.

Außerdem habe ich PlatformIO installiert und damit ein neues bin erzeugt. Dabei ist mir aufgefallen, dass mit 40MHz die Servostellung fehlerhaft ist. Bei ca 30 Grad ist er bereits am Anschlag. Mit geänderter platformio.ini mit der Einstellung 80MHz für den nodemcuv2 (meine Plattform) funktionierte der Servo wieder wie er soll.

Eine Sache ist mir noch aufgefallen. Ein firmware update geht mehr oder weniger zeitig schief, solange DCC Interrupts anstehen. Das passiert sowohl über serielle Schnittstelle, als auch über das Web Interface. Zumindest über Web Interface sollte dazu der Interrupt disabled werden, damit der Decoder auch im eingebauten Zustand mal upgedated werden kann. An welcher Stelle müsste denn das passieren?

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von little.yoda » 11.05.2019, 20:48

Gute Frage.
Eine saubere Lösung habe ich trotz überlegen, noch nicht gefunden.

Als Hack für dich:
Webserver.cpp => handleUpload()

In der if(upload.status == UPLOAD_FILE_START) könntest du dann detachInterrupt aufrufen.


EDIT: Ich habe bei meiner Schaltung inkl. Optokoppler keine Probleme mit Updates.

Lorenzo
Beiträge: 34
Registriert: 20.04.2019, 19:24
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von Lorenzo » 12.05.2019, 09:52

Ich habe jetzt testhalber deinen Vorschlag mit detachInterrupt versucht. Das firmware update funktioniert danach ohne Probleme. Probleme habe ich allerdings immer noch nach einem reset :(
Mal funktioniert es einwandfrei, mal braucht es unterschiedlich viele resets bis es läuft. Allerdings nur, wenn DCC Interrupts anstehen.

Code: Alles auswählen

Setup finish!
DCC-Speed: 23 D: 1 1 29
Speed</td><td>23</td><td>1/1/29</td><td>0
DCC-Speed: 1 D: 1 1 29
Speed</td><td>1</td><td>1/1/29</td><td>0
DCC-Speed: 2 D: 1 1 29
Speed</td><td>2</td><td>1/1/29</td><td>0
DCC-Speed: 3 D: 1 1 29
Speed</td><td>3</td><td>1/1/29</td><td>0
DCC-Speed: 4 D: 1 1 29
Speed</td><td>4</td><td>1/1/29</td><td>0
DCC-Speed: 5 D: 1 1 29
Speed</td><td>5</td><td>1/1/29</td><td>0
DCC-Speed: 6 D: 1 1 29
Speed</td><td>6</td><td>1/1/29</td><td>0
DCC-Speed: 7 D: 1 1 29
Speed</td><td>7</td><td>1/1/29</td><td>0
Wifi status changed: Disconnected => Connected IP:192.168.1.50
Connection to: 30:46:9A:25:4C:01 (Q:-41)

Exception (0):
epc1=0x40212fa0 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys 
sp: 3fffebb0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3fffed50:  3ffecc5d 017f0300 dd34fe18 00000009  
…
Da muss ich noch mal weiter testen, woran es liegen könnte. Etwas wundern tut mich aber schon, dass es bei dir läuft. Ich kann mir nur schwer vorstellen, dass es am Optokoppler liegt. Vielleicht liegt es eher am 'Drahtverhau' auf dem Steckbrett...

Wenn alles nichts hilft, probier ich dann auch mal einen Optokoppler aus.

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von little.yoda » 12.05.2019, 10:53

komisch .... ich habe es gerade nochmal getestet und es läuft.

Aber ... Bei mir hing er nach dem Update im Controller Bereich, der Watchdog hat den ESP8266 neu gestartet und danach ging es.

Ich kann mir darauf gerade keinen Reim machen.

Welchen Pin benutzt du für den DCC Eingang?

Code: Alles auswählen


 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
@cp:0
     ld
       MEM 37160 / Setup
Started!
Compiledate: May 12 2019 10:05:14 {NONGITVERSION}
MEM 36928 / Controller

 ets Jan  8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld
   MEM 37160 / Setup
Started!
Compiledate: May 12 2019 10:05:14 {NONGITVERSION}
MEM 36928 / Controller
MEM 34344 / Wifi

Lorenzo
Beiträge: 34
Registriert: 20.04.2019, 19:24
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von Lorenzo » 12.05.2019, 11:39

ich nutze D7 für DCC in und D5 für die Servo Ansteuerung. Weitere Pins nutze ich derzeit nicht. Später kommen noch 2 MDP23017 als Erweiterung zu. Die werden dann über D1/D2 angesprochen.

little.yoda
Site Admin
Beiträge: 882
Registriert: 14.09.2018, 19:05
Hat sich bedankt: 33 Mal
Danksagung erhalten: 143 Mal

Re: Servo-Ansteuerung für Weichenbefehle

Beitrag von little.yoda » 12.05.2019, 11:59

ok. Die von dir gewählten PINs sind unproblematisch.


Ich überlege immer noch, ob es evtl. ein Problem ist, dass keine einheitliche Masse vorhanden ist. Aber ich weiß auch nicht, ob man die Massen in deinem Fall einfach verbinden kann.

Antworten