Seite 4 von 6
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 10.05.2019, 21:21
von Lorenzo
Du bist der beste
Bei mir funktioniert das Dekodieren jetzt wie es soll. Übrigens mit folgender simpler Eingangsschaltung:
- DCC Eingang.png (3.71 KiB) 7786 mal betrachtet
Am Wochenende werde ich das noch ausführlicher testen.
Beste Grüße
Lorenzo
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 11.05.2019, 10:38
von Lorenzo
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.
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
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 11.05.2019, 13:29
von little.yoda
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/
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 11.05.2019, 14:00
von little.yoda
Mit der Version 1.2.2 werden sie zumindest auf der seriellen Schnittstelle angezeigt.
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 11.05.2019, 17:18
von Lorenzo
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?
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 11.05.2019, 20:48
von little.yoda
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.
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 12.05.2019, 09:52
von Lorenzo
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.
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 12.05.2019, 10:53
von little.yoda
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
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 12.05.2019, 11:39
von Lorenzo
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.
Re: Servo-Ansteuerung für Weichenbefehle
Verfasst: 12.05.2019, 11:59
von little.yoda
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.