1zu160 - Forum



Anzeige:
Spur N Ersatzteile

THEMA: Kennt Ihr schon DCC++? (4)

THEMA: Kennt Ihr schon DCC++? (4)
Startbeitrag
wassi - 01.07.22 17:50
da der dritte Thread ( https://www.1zu160.net/scripte/forum/forum_show.php?id=1232970 ) auch schon wieder voll war geht es hier jetzt weiter

Hallo Frank,

Zitat - Antwort-Nr.: 99 | Name: ELNA5


Hast Du schon den Relase 'v 1.1.1 rc3' auf den Arduino Mega eingespielt? Könnte vielleicht schon mal weiter helfen. Meine DCC-EX hängt ohne Funk- und Ethernetmodul am RasbPi 4B dran. Leider kann ich Dir nicht noch weiter helfen.



nein die habe ich nicht.

Jetzt mal nur Mega+Ethernetshield getestet, Ethernet geht,

Dann Motorshield oben drauf (mit pin 12 und 13) abgewinkelt, Ethernet geht immer noch

Doppelbelegung der Pins 12 und 13 für Ethernet und Motorshield ?

Sollte das Ethernetshield auf dem Mega nicht via der isp-Verbindung angesprochen werden ?

Gibt es eigentlich irgendwo eindeutige Verdrahtungsschema für die verschiedenen Board-Shield-Kombis ?

VG wassi

PS: da scheinen noch mehr PINs sich nicht zu vertragen, das Motorshield mit dem Mega alleine geht, im dreier Sandwich nicht


PS2: hat einer eigentlich schon ausser der 2poligen Umschalterlösung etwas gefunden, wie man auf den Prog Ausgang im Normalbetrieb (nicht Programmierung)  auch das Tracksignal bekommt? Gibt es eigentlich auch Statusausgänge, wie Track-On oder Prog-On (auch wenn das nicht nach Norm ist ) ?


Hallo,

nachdem ich mein Ethernet-Shield nicht zusammen mit meinem Motor-Shield in meiner Konfiguration zum Laufen bekommen habe, habe ich mir nocheinmal die WIFI-Verbindung angesehen.

mein esp-01s hat nun die FW AT-Firmware_1.1.0.0_SDK_1.5.4 drauf, schein jedoch damit keinen DHCP-Server zu haben, zumindest bekommt mein Handy vom esp im AP-Mode keine IP.

Mit einer entsprechenden IP für mein Handy, läuft damit aber nun die engine driver app.

Als software-Equivalent für die "2polige Umschalterlösung" bin ich auf die Option "join" für den Power-Befehl der DCC-EX gestoßen, damit kann ich dann auch auf dem Prog-Ausgang das normale Fahrsignal bekommen

VG wassi
Hallo Wassi,

da hatte ich auch Probleme: Sobald eth und Motor Shield gesteckt waren, hat das Motor Shield verrückt gespielt. Das haben wir dann auf dem Discord noch eine Weile versucht zu lösen, leider ohne Erfolg.

Es scheint ein Design - Bug im eth zu sein (sowohl original als auch China Klon): Wenn es ein Signal über die ISP Ports bekommt gibt es auch eines über Pin 12 & 13 aus ; das ist in Verbindung mit dem Motor Shield natürlich kontraproduktiv... Im Arduino Forum habe ich auch nur einige Threads gefunden in denen das diskutiert wurde; leider immer mit dem Ergebnis dass ethernet und Motor Shield nicht zusammen funktionieren, wenn sie gestacked werden.

Lösung: Entweder das eth nicht stacken und nur über die ISP anschließen oder die Pins versuchen zu umgehen, zum Beispiel durch rausbiegen.

Ich müßte mal die Signale vergleichen, bin mir aber ziemlich sicher dass 12 und 13 historisch bedingt mit den ISP gleichgesetzt sind - am Uno sind sie es in der Pinbelegung des ATmega328


LG - Tom
Hallo,

Zitat - Antwort-Nr.: | Name:

auf den Prog Ausgang im Normalbetrieb (nicht Programmierung)  auch das Tracksignal


Wie wäre es mit einem Flag "Befahrbares Programmiergleis"?

Grüße, Peter W
Hallo Frank,

die LAN Verbindung habe ich mit dem offiziell empfohlenen Ethernet-Board und angeblich ja getesteten (wohl nur nicht im Zusammenspiel mit dem org. Arduinio Motorshield) https://dcc-ex.com/reference/hardware/ethernet...nder-ethernet-shield versucht. Dieses LAN-Board hat kein PoE, einfach nur einen Wiznet 5100.

Für das Wifi nutze ich jetzt kein Shield, da zu teuer und unflexibel.

Dafür  nutze ich ein seperates Modul https://dcc-ex.com/reference/hardware/wifi-boards.html#esp-01s mit fliegenden Drähten verbunden.

VG wassi
Hallo Frank,

das hat mit dem Sketch nichts zu tun, ich habe so ungefähr ab der 3.0 alle getestet. Das ist eindeutig ein Problem im Ethernet Shield, das gibt alles was über die ISP Pins kommt auch auf den normalen Pins aus - andersrum aber nicht.

Wie gesagt, das hatten wir auf dem Discord ausführlich durchgesprochen - mit den Netzwerk-Spezialisten aus der Entwickler-Gruppe

Du kannst das Problem nur in Hardware umgehen indem Du die Pins des Motor Shield raus biegst und per Kabel umgehst. Das war der Grund warum ich dann auf ein Micro Ethernet Shield umgestiegen bin, das braucht dann weniger Platz und kann irgendwo frei platziert werden.

Und Tante Edit meint noch daß das Original Arduino Shield mit dem W5500 genauso funktioniert wie ein Klon mit W5100 - nämlich prima, solange es nicht mit einem Motor Shield gesteckt wird...

VG - Tom
Hallo Frank,

ich möchte nur keine falsche Hoffnung aufkommen lassen. Genau wie du war auch ich der Meinung, das muss doch funktionieren - bis ich im Verlauf des Debugging den Bug im Ethernet Shield gefunden habe...

Zwischendurch ging mal kurz gar nichts mehr mit dem Netzwerk, das war tatsächlich ein Bug in einer Betaversion des Sketch. War aber in deutlich unter 24 Stunden behoben und kam so nie in eine released Version. Die Jungs wissen schon was sie machen und sind mit Vollgas dran wenn es mal nicht richtig läuft!

Dass nach wie vor das Shield als funktionierend empfohlen wird ohne einen Hinweis auf das Thema mit der störenden Ausgabe des Signals auf die entsprechenden Pins ist unschön - aber lösbar. Interessant finde ich aber auch dass anscheinend bei so gut wie allen das WiFi funktioniert; auf der JMRI - Seite wird ausdrücklich davon abgeraten! Ich hatte damit auch noch nie Probleme


LG - Tom
Zum Ethernetshield: Also ich hab keines aber wenn es nicht shields geben würde die als 3er Sandwich ohne rausbiegen von Pins gehen dann würde wir das auch nicht sagen. Ich habe die Vermuting da gibts verschiedene HW. Wenn mir jemand 3 verschiedene Ethernetshields kauft teste ich das gern

Wenn aber die Ethernetshieldeigentümer eine Lösung haben (Pins rausbiegen, Jumper setzen, eigene Shielddefinition) dann einfach zeigen und in einer Woche ist es in der Doku, das wird dann in Australien zuverlässig gefixt.

Zitat


Bei anspruchsvollen vollautom. Anlagen ist es aber nicht empfehlenswert.


Was funktioniert denn nicht, also z.B. im Vergleich mit "angeboten am Markt"?


Zitat


Es fehlt leider bisher ein LocoNet auf I2C Adpaterboard. mangels manpower.


I2C wird es wohl kaum da hereinkommendes I2C auch mit Interrupts nur som um sich wirft. Aber vielleicht Serial. Code halt etwas langsamer als der Hans Tanner (der hat das schon in seinem RedHat Stick), vielleicht auch etwas anders.

Grüße,
Harald.

Hallo,

eine Frage zur Version 4.0.0:

Sind die Pins 20 + 21  frei für eine definition als Eingang/Sensor?

Versuche seit einiger Zeit diese in WDP einzurichten, leider ohne Erfolg.

Vielleicht kann mir da jemand weiter helfen?

Grüße

Peter
Google Images: Arduino Mega pinout. Da steht dann:  pins 20/21 SCL/SDA Also sind die Pins schon für I2C verwendet und DCC-EX started normal I2C um zu sehen ob da ein paar Expanders dranhängen.

Grüße,
Harald.
Unsere fleissigen Dokumentierer haben das ganze DCC-EX Web überarbeitet. Also https://dcc-ex.com/ Ob es jetzt besser ist? Ich hoffe. Zumindest anders als davor

Grüße,
Harald.
"Geht das?" Mit dem Decoder (MM = Märklin Methusalem) war das Resultat ja zu erwarten. Übrigends braucht man die 9V Versorgung nicht solange man den USB dran hat. Der Decoder muss mindestens 28, besser 126 Fahrstufen können. DCC byte und bitwise programming. So fast alle DCC Decoder der letzten 20 Jahre können das.

Grüße,
Harald.
Hallo zusammen,

vielleicht ein Tip: Um nicht mit mehreren Netzteilen hantieren zu müssen, habe ich mir für meine Experimente bei Reichelt für 3,80€ einen Spannungswandler von 6-40V auf zwei USB-Anschlüsse (bis 3A)  besorgt. Er wartet allerdings bislang noch seiner Nutzung. Die Bezeichnung ist DEBO DC 2XUSB, falls jemand soetwas gebrauchen kann.

Klaus
Mit dem nächsten Release brauchst du dann den stationären Decoder nicht mehr. Ok, der Decoder kanns wahrscheinlich besser, aber rudimentäres PWM kanns dann direkt ans Gleis.


Das mit dem 9V oder 7.5V extra Netzteil für den Arduino (edit, besser erklärt) muss ich mir in der Webanleitung noch Mal ansehen , da besteht vielleicht noch mehr Aufklärungsbedarf.

Grüße,
Harald.

Zitat - Antwort-Nr.: 22 | Name:

9V Netzteil


Worauf beziehst Du Dich?

Grüße, Peter W.
Zitat - Antwort-Nr.: | Name: https://dcc-ex.com/ex-commandstation/get-started/purchasing.html

a 7-9v DC power supply
for the Arduino (while it is connected to the PC, this is not needed)


Steht ja sogar daneben dass man es nicht braucht wenn der PC dran hängt. Unsere Dokumentationsgruppe von down under ist doch gut 🦘

Grüße,
Harald.
Hallo,

technisch geht es bis 12 V, darüber wird es dem ollen Längsregler etwas warm ums Herz wenn der AVR volle Tube läuft.

Es wäre sinnvoll ein Motorshield zu bauen wo ein 5 V Schaltregler mit drauf ist, damit man nur eine single Supply benötigt - also ein Netzteil 15...18 V. Eventuell muss man nur so einen 7805-kimpatiblen drop-in Regler (Traco, Gaptec etc.) drauf spaxen,

Grüße, Peter W
Ich hab das billigste Experimentshield genommen und je einen gaptec für 3.3V und einen 5V draufgetan damit für Oled und ESP Strom genug da ist. Funzt. Pololu hat ein Shield mit 3 Löchern wo man genau einen 7805 compat einlöten kann. Leider kann ich das Shield nicht empfehen da die integrierte H-Brücke die da drauf is bei Richtungswechsel 4us Pause macht. Und was mach DCC so alle 58 oder 100us - genau....Also bekommt man damit kein normgerechtes DCC Signal hin. Das scheint die meisten Decoder zwar nicht zu stören aber empfehlen kann man das Shield deswegen eben nicht.

Grüße,
Harald.
Hallo,
wenn ich es richtig sehe, geht es in diesem thread hauptsächlich um die DCC-EX-Commandstation. Ich beschäftige mich im Moment mit DDC-EX-Rail (Automation) - zumindest theoretisch. Natürlich entstehen Fragen. Soll ich hierfür einen neuen thread aufmachen - wäre übersichtlicher.

Viele Grüße
Uli
Hallo Frank,

PC-lose Steuerung der Modellbahn finde ich gut, obwohl ich (noch) ein Tablet mit EngineDriver benutze. Dies wird irgendwann durch einen Arduino mit "richtigen" Schaltern und Drehknöpfen ersetzt.
Habe nochmal intensiv die Anleitung zu EX-RAIL gelesen und dabei ist mir "ein Licht aufgegangen". Fast alle Fragen haben sich erledigt.

Nach meinem Kenntnisstand (Recherche im Inet) soll ein Block länger als der längste Zug sein und keine Weichen enthalten. Daraus folgt, dass es auch blockfreie Strecken gibt, speziell Weichen. Für folgendes Szenario (siehe Bild) finde ich mit EX-RAIL noch keine Lösung:

- zwischen Blöcken ist eine Verbindung, sogar kürzer als der kürzeste Zug.
- Zug1 möchte von Block3 in den freien Block1 und gleichzeitig möchte Zug2 von Block4 in den freien Block2
==> es kommt zu einem Unfall im roten Bereich

Wie kann man das lösen?

Danke
Uli

Die von Henuli zu diesem Beitrag angefügten Bilder können nur von registrierten Usern gesehen werden - Login

Du musst bedenken, dass der Block den man reserviert nur in Gedanken existiert. Dann gibt es auf der Moba Sensoren die der Logik sagen wo gerade die Züge sind. Bevor mal also einen der Züge aus Block 3 oder aus Block 4 weiterfahren lassen kann muss man das Gebiet Weichen und Engstelle reservieren. Danach hat EINER der Züge es für sich und dann kann die Automatik als nächstes die Weichen für ihre Strecke umlegen und dann den Zug auf den Weg schicken. Dann irgendwann sagt uns ein Sensor dass der Zug aus dem kritischen Bereich wieder raus ist und löst die Reservierung wieder auf. Ob das ein Belegtmelder über den ganzen kritischen Block ist oder ein Belegtmelder der eine Zuglänge hinter Block 3 (wo der Zug ja durch sein muss) ist spielt da keine Rolle. Oder vielleicht erst wenn der Zug im nächsten Bahnhof ist falls die Melder nicht so dicht liegen. Dann muss der andere Zug eben etwas länger warten. Du solltest allerdings versuchen mit den EXRAIL-Experten im Discord zu reden, die können das viel besser erklären als ich. Doch glaube ich nicht auf Deutsch.

Grüße,
Harald.
Da die meisten Entwickler von DCC-EX entweder Arduino IDE 1.8.X mit X >= 13 oder PlatformIO anwenden, würde ich empfehlen, dass sich alle, die sich nicht an "bleeding edge" schneiden wollen, das auch so machen. Mein letzter Test mit 2.0.0 hat einen größeren Sketch produziert der dann u.U. in den Uno nicht mehr rein geht. Beim ESP32 Paket empfehle ich dagegen das recht neue 2.0.4 oder sogar neuer (ESP32 Paketversion nicht zu verwechseln mit der Arduino IDE Version).

Grüße,
Harald.
Hallo zusammen,

ich als altgedienter Kommandozeilen-Fan experimentiere bei meinen Projekten mit CMake, gcc, clang herum sowie mit einem LSP-fähigen Editor. Ist allerdings noch ziemlich holprig und geht, weil ich mit ARM-Chips arbeite, deren Support zumindest bei Ubuntu schon dabei ist. Die Arduino-IDE hatte ich mal kurz ausprobiert, aber ich bin kein Freund von Applikations-Magie, die dort unzweifelhaft vorhanden ist, und hatte auch keine Lust zu durchdringen, was da im Hintergrund passiert.

Klaus
Ich bin ja auch so ein Kommandozeilenmensch, also ärgert es mich schon ein wenig dass es im Hintergrund der Arduino IDE nicht einfach einen Makefile gibt. Also  anwende ich die API so dass ich nicht überall mich händsisch mit Interruptvektoren und Portregistern rumschlagen muss aber im Endeffekt macht man es manchmal doch wieder weil die API zu buggy ist oder zu langsam oder es halt nicht kann was man will. Mit externem Editor benütze ich halt die Einstellungen der IDE und den ((->))  Knopf.

Grüße,
Harald.
Also das 4.1.1-Prod ist fast wie das 4.0.0-Prod außer dass wir da halt ein paar kleinere Probleme gefixt haben. Da fand ich es dann nicht mehr so superwichtig dass das noch irgendwie groß getestet werden muss und hab dann halt das -rcX weggemacht und einen Release-Tag gesetzt. Wenn was nicht funzt macht man halt einen 4.1.2. Alles nicht so dramatisch.

Wer etwas mehr rumtüfteln will und auch vor "latest und greatest" keine Angst hat kann das 4.2.4-Devel nehmen. Das ist ein Snapshot von der PORTX_HAL Branch wo gerade die ganzen Veränderungen stattfinden. Da kann man dann auch so lustige Sachen machen wie:

Prog und Hauptgleis vertauschen:

<= A PROG>
<= B MAIN>

2x Hauptgleis für "Fahranlage"

<= A MAIN>
<= B MAIN>

Nur Proggleis:

<= A PROG>
<= B OFF>

Auf einer "Spielanlage" mit 2 Ovalen Gleichstromlok mit PWM fahren, ein Oval rechtsrum, das andere umgekehrt gepolt linksrum
(Adresse 17 auswählen):

<= A DC 17>
<= B DCX 17>

Für DC PWM braucht man aber einen Mega oder ESP32 und ein Motorshield mit Anschluss "Brake" und das ist wirklich noch experimentell.

Und dann haben wir auch noch ganz viel gemacht mit EXRAIL.

Grüße,
Harald.
Zitat - Antwort-Nr.: | Name: von woanders


.... Er könnte ja in die Versuchung kommen, eine DCC-EX CS ....



Deswegen könnte man mit <= A EXT> eine Art "Booster Modus" machen (mit der richigen Verkabelung, da ist noch nix dokumentiert, deswegen gibts das offiziell noch gar nicht).

Grüße,
Harald.
Brandneues Video mit neuen Features in EngineDriver und DCC-EX: https://youtu.be/q5FezGEmAis
Wir danken Peter Akers von "Downunder".
Bald in einem EngineDriver und DCC-EX Release zu haben.

Grüße,
Harald.
Sieht richtig gut aus. Ist das ein L298 Shield? Oder täuscht die Ansicht?
Gruß Holger
Hallo Holger,

das sieht durchaus nach einem L298NH aus - steht ja auch auf der Liste der unterstützten Boards als easy to use:

https://dcc-ex.com/reference/hardware/motorboar...nh-motor-shield.html

Ich habe das auch in beiden Command Stations verbaut und bisher keine Probleme damit gehabt. Allerdings habe ich mir vorsichtshalber Kühlkörper drauf geklebt und beide Gehäuse haben Lüfter.


VG - Tom
Ich frage deshalb, weil Harald den L298 nicht mag. Ich arbeite in ziemlich großen Stückzahlen damit und bin zufrieden. OK, als bipolare Technik kann man von einem sehr kleinen Innenwiderstand a'la Mosfet nur träumen, aber wenn man das von vorn herein mit einrechnet, ist der "olle" schon noch gut!
Gruß Holger
Weder in Spur G noch bei RailCom reisst der L298 was. Klar kann man ihn da anwenden wo es passt aber ich träume halt von einem Shield mit folgenden Eigenschaften:

* Plug+Play kompatibel mit dem Standard Shield für ENABLE/DIR/BRAKE
* ENABLE schaltet alles high-Ohm
* BRAKE schaltet low side brake (unabhängig von DIR)
* DIR schaltet schnell genug um für DCC
* Wenn IOREF=3.3V dann ist das Shield im Analog out 3.3V kompatibel und wenn IOREF=5V dann 5V kompatibel
* Die Referenzspannung am Analog out nutzt den ganzen Bereich von 0 bis IOREF.

Mein Ansatz an Komponneten wäre NAND + MAX22201 + OPAMP sollte das schaffen aber ich bin kein Elektronikdesigner. Für Spur G dann MAX22205.

Wenn jemand das ernstlich machen will, bitte PM.

Grüße,
Harald.
Sag Bescheid wenn das Shield verfügbar ist

Wie sieht es eigentlich mit der Eigenentwicklung aus, die hier
https://www.1zu160.net/scripte/forum/forum_show.php?id=1244918&start=1
schon mal erwähnt wurde? Hier ist das Thema ja tot, auf dem Discord finde ich dazu auch nichts - kann allerdings auch an mir liegen.

Inzwischen kann ich mit dem L298 leben...


VG - Tom
Meiner Meinung nach ist das Problem dass sich viele Designer gern verzetteln. Da muss noch dieses und jenes mit drauf designt werden ohne dass man sich auf eine Basisfunktion konzentriert und die dann erstmal gescheit macht. Auch hätte ein generelles Shield einen viel größeren Markt (Roboter etc) als ein Spezialdesign mit "noch was drauf". Aber ich mach Software und nicht Hardware. Da bin ich bedeutend effektiver.

Grüße,
Harald.
Musste das mal mit euch teilen, man braucht keine webbapp
https://www.youtube.com/watch?v=brL30t1Nac0

Grüße,
Harald.

PS: Wir sind bei Version v4.2.17-Devel und ich arbeite an einem DCC-Sniffer der DCC-EX Kommandos ausspuckt.
Genial!
Schöner Flashback in die 80er/90er, hatte zwar nie einen Atari ST, aber mit vergleichbaren Kollegen in der Zeit zu tun.

Grüße
Daniel
Hallo,

ich habe DCC++ für mich entdeckt und bin begeistert. Momentan warte ich auf das Motorshield und versuche mich durch den Rest zu "wühlen". Auf Grund der umfangreichen Beiträge nicht einfach.

Ich fand heraus, dass es die Möglichkeit gibt , Ein I2C Display anzuschließen. Das habe ich auch zu laufen gebracht. Das zeigt aber neben der Versionsnummer und dem freien Speicher nur Power on bzw Off an. Ich habe aber bisher keine Möglichkeit gefunden, wie ich die Anzeige konfigurieren kann. Es gibt im 2. Teil dieses Threads einen Beitrag dazu, der aber schon lange zurückliegt und nicht mehr passt.

Gibt es irgendwo einen Hinweis oder eine Prozedur, die mich dahin weiterführt, wie und welche Informationen auf dem Display zu konfigurieren sind. Spannung, Strom sind schon mal 2 relevante Größen die interessant wären. Weiterhin Gleisspannung ON/OFF, Fehlerinformationen sowie Kurzschluss, Fehler in der Datenübertragung per USB, WiFi oder Ethernet. Die Auflistung könnte sicher noch ergänzt werden.

Wie man diese Größen filtert und zur Anzeige bringt, habe ich bisher nichts gefunden.

Viele Grüße
Christian
Für das Display gibt es bis jetzt noch nicht so viel fertig vorbereitet - außer man macht es selber in C++. Es gibt ein LCD Macro. Auch kann man in 4.2.x von EXRAIL aus auf dem Display Text anzeigen.

Spannung: Ja, woher soll man die nehmen, wenn du dir dafür Hardware baust, dann weiss man die Spannung, dann kann man die auch anzeigen

Strom: Der Strom wird überwacht, doch haben wir gerade alle Hände voll zu tun das in Zukunft für maximal 8 Ausgänge unterbringen.

Fehler- und Statusmitteilunge: Ja, da könnte man bestimmt mehr machen. Aber man muss auch Realist sein weil gerade beim Display gibt es mindestens so viele verschidene Wünsche wie Modelleisenbahner.

Die besten TIps wie man was gemacht bekommt gibts auf unserem Discord Kanal. Einen Button wie man dorthin kommt gitbs da: https://dcc-ex.com/support/index.html

Man muss auch beachten dass der Arduino ein sehr sehr kleiner CPU ist, also ist zum Beispiel nix drin mit Berechnungen mit Kommazahlen, machen wir alles ohne

Grüße,
Harald.
Hallo Christian,

willkommen im "Club". Harald war schneller.
Feste Texte kannst du ausgeben, wenn du in mySetup.h folgendes einträgst:
LCD(5,F("Zeile 5 Text"));
LCD(6,F("Zeile 6 Text"));
LCD(7,F("Zeile 7 Text"));
Auch Änderungen innerhalb des Programmcodes kannst du vornehmen, dort sieht der Befehl beispielhaft so aus:
LCD(4,F("%s:%d"),ipString,port);

Sollte die Datei mySetup.h nicht vorhanden sein, einfach erstellen.
Der Discord Kanal ist empfehlenswert, hat mir schon viel geholfen. Am Anfang etwas gewöhnungsbedürftig.

Viel Spass und viel Erfolg
Uli




Hallo,

danke für die Tipps. Wie beschrieben, ist es als Neueinsteiger sehr aufwändig eure seit Jahren diskutierten und hervorragend umgesetzten Ideen zu verstehen und nachzuvollziehen.

Zum Thema Strom kam mir die Idee der Anzeige auf dem Display, da die Übertragung zu JMRI scheinbar funktioniert (ich warte auf das Motorschilde, deshalb "scheinbar"). Damit könnte es möglich sein, die Anzeige auch auf dem Display zu organisieren.

Ich knoble da mal weiter. Es ist dazu bestimmt schon etwas vorgesehen, nur finden muss man das.

Viele Grüße
Christian  
Die Strommessung ist gar nicht so trivial, da im Mikroprozessor zwischen dem Zeitpunkt wo man dem ADC fragt und dem Zeitpunkt wo man die Antwort bekommt locker 20us vergehen. In einem trivialen Arduinosketch vom Typ Blink macht das natürlich nichts aber bei DCC-EX können wir die 20us nicht verschenken. Also mussten wir uns bei  Version 4.2 was einfallen lassen. Den Rest müssen wir noch anpassen und das hat dann Auswirkungen bis zum Protokoll mit JMRI. So Bitte noch etwas Geduld bis die Strommessung ganz so geht wie man will.

Wenn du Code ansehen willst, dann bitte in der devel branch weil master wird nicht mehr weiterentwickelt sondern beim nächsten großen Release wird devel zu master.

Grüße,
Harald.
das ist ja das Schöne an DCC++ (bzw. DCC-EX). Der Programmcode ist offen gelegt und jeder kann nach seinen Bedürfnissen ändern oder erweitern.

Gilt für V4.1.x
Mit motorDriver->raw2mA(lastCurrent) erhält man den aktuellen Strom am Gleis in Milliampere.
Nach meinem Kenntnisstand schreibt LCD auf das Display und gleichzeitig auf den seriellen Monitor.

Viel Erfolg wünscht Uli
Ich habe ein LCD Display 4 x 20 angeschlossen und so konfiguriert, das nach den Startmeldungen im Betrieb
die aktuelle gemittelte Stromstärke,  (Mittelwert der gemessenen Wert innerhalb der Abtastrate)
die maximale Stromstärke,                   (Erfassung wird mit Power On gestartet und bei Power Off wieder auf Null gesetzt.
Power On / Off und
den freien Speicher anzeigt.
Ich verwende derzeit die DCC++Version 4.0.0

https://www.1zu160.net/scripte/forum/forum_show.php?id=1232970#aw54

Die dafür notwendigen Modifikationen habe ich in Post #54 Kennt Ihr schon DCC++? (3) beschrieben. Bisher muss ich diese bei jedem Update nachziehen und sicher kann man dabei noch einiges verbessern.

Wir können das Thema gerne weiter verfolgen. Vielleicht findet dies dann auch einen Weg ins Github Master.

Wir werden oft gefragt, warum wir nicht dieses und jenes im Quellcode integrieren. Z.B. das Mittelwertdisplay von Uli. Auch wenn es für ihn und seien "use case" bestimmt blendend funktioniert haben solche Änderungen oft Nebenwirkungen. Hier dass der uCPU mit Kommazahlen rechnen muss. Da der AVR ein sehr kleiner CPU ist braucht er dafür recht lang und auch noch extra Speicherplatz für die ganzen Kommarechnungsroutienen. So deswegen nehmen wir das dann nicht gern "für alle" mit ins Angebot. Dann sind wir jetzt bei der Entwicklung bei 4.2.24 angekommen und da sind alle Routinen die vom ADC Werte lesen neu und schneller. So wenn wir eine Mittelwertberechnung ohne Kommazahlen hinbekommen dann können wir das mit reinnehmen. Was ist euer Ziel mit der Anzeige?

* Überwachung einzelner Loks?

* Überwachung wie viel "Luft" noch in der Endstufe nach oben ist?

Welcher Wert ist intressant? Momentan? Mittel? Maximal?

Erledigt sich das Problem mit einer 4.5A Endstufe (da wird es doch reichen)?

Wenn man sich mal etwas näher mit der Materie Strommessung beschäftigt dann sieht alles plötzlich nicht mehr so einfach aus

Ich rate allen die den Code modifizieren sich 4.2.24 anzusehen und bei Bedarf auf Discord nachzufragen, weil die Änderungen im Vergleich zu 4.1 oder gar 4.0 sind schon ordentlich.

Grüße,
Harald.
Hallo Harald,

dann werde ich mal versuchen, meine Änderungen in die neueste Version zu integrieren.

Die derzeitigen Endstufen auf dem Arduino-Motorshield sind nicht allzu leistungsstark. Daher ist es gut zu wissen, wie hoch der aktuelle Wert, wie hoch der maximale Wert und wieviel Luft noch nach oben ist; auch um Hitzeprobleme an den Endstufen zu vermeiden. Ist es sinnvoll, da eine Temperaturüberwachung zu integrieren? Kennt oder hat jemand dafür eine Lösung?

Dies hilft mir auch bei der Entscheidung ob ich mit Digitalstrom weitere Verbraucher, wie Weichen oder Signale betreiben kann, oder ob ich mich mit dem Beleuchten von Waggons zurückhalten muss.

Das mit der Geschwindigkeitsoptimierung der Mittelwertberechnung und dem benötigten Speicherplatz dafür werde ich im Auge behalten. Ich werde berichten.  

Gruß Uli


Hallo Namensvetter,
für MAIN (=Fahrgleis) nehme ich ein Modul IBT_2. Auf diesem Modul sind 2 MOSFET BTS7960 als H-Brücke verbaut. Bei passendem Netzteil können diese MOSFETs 43(!)A und haben eine Übertemperatur- und Überstromsicherung eingebaut. Abfrage dieses Pins müsste noch programmiert(?) werden. Fürs Programmiergleis kommt das Arduino-Motorshield zum Einsatz.
Temperaturanzeige würde ich, wenn überhaupt über ein externes Temperaturmessgerät mit Digitalanzeige machen. Gibst im Inet schon ab ca. 10€ .

IoTT (Internet of Toy Trains) bietet ein IBT_2 als Arduino-Shield an. Strom ist dort auf 5A begrenzt.
https://www.tindie.com/products/tanner87661/5-amp-powershield-for-arduino/  

Viel Spass mit DCC-EX
Uli
"Gilt für V4.1.x
Mit motorDriver->raw2mA(lastCurrent) erhält man den aktuellen Strom am Gleis in Milliampere."


Ich komme hiermit nicht zurecht . Fehlermeldung: 'motorDriver' was not declared in this scope.

Durch die umfangreichen Änderungen funktioniert meine bisherige Abfrage (Ampere = DCCWaveform::mainTrack.getCurrentmA();) des aktuellen Stromes nicht mehr.

Danke
Hallo Uli,
so ist das halt mit den Entwicklungsversionen. Meines Wissens gab es bei V.4.2.x Versionen, wo die Strommessung nicht mehr implementiert war.
Zur Zeit benutze ich V4.2.27. Diese werde ich auch beibehalten, bis für mich relevante Änderungen kommen. Aktuell ist 4.2.31(?).
In V4.2.27 gibt es die Strommessung wieder. Nach Eingabe von <c> in den seriellen Monitor erhält man:
<c CurrentMAIN 814 C Milli 0 3998 1 3998>

Den zugehörigen Code findest du in TrackManager.cpp unter void TrackManager::reportObsoleteCurrent(Print* stream)

Schönes Wochenende
Uli


Hallo Uli,

du verwirrst mich mit den Versionsnummern etwas .
Von der Seite https://dcc-ex.com/ kann ich ein eine Production release 4.1.5 sowie eine developer version 4.2.26 finden. Im GIT gibt es ebenfalls nichts anderes.
Zitat - Antwort-Nr.: | Name:

Den zugehörigen Code findest du in TrackManager.cpp unter void TrackManager::reportObsoleteCurrent(Print* stream)


Das kann ich in den oben zitierten Version 4.1.5 ebenfalls nicht finden.
Wo kommen denn deine Versionen her? Lade ich von einer falschen Seite?

Viele Grüße
Christian
Unter https://dcc-ex.com  steht noch 4.2.26, aber es wird aktuell 4.2.31 heruntergeladen. Steht auch in version.h
Ich nehm immer den direkten Weg zur aktuellen Entwicklerversion: https://github.com/DCC-EX/CommandStation-EX/tree/devel
Unter V4.1.5 gab es noch keinen TrackManager, sollte irgendwo anderst stehen.

Gruß
Uli

Die developerversion ist mittlerweile als 4.2.33 verfügbar.

Die Entwickler waren über das Wochenende sehr aktiv.
In V4.1.5 findest du getCurrentRaw() in MotorDriver.cpp

Gruß Uli
In der neusten Devel Version gibt es raw2mA() und getCurrentRaw(). Aber es gibt bis zu 8 Gleise (0 bis 7). So für welches Gleis darf es denn bitte sein? Für das erste Gleis:

uint16_t track0mA =  track[0]->raw2mA(track[0]->getCurrentRaw());

Das <c> Kommando wird noch ersetzt damit man alle 8 Gleise abfragen kann.  Bitte noch etwas Geduld bis 5.0.0.

Die Versionsnummer is bei 4.2.34 angelangt, das meiste sind Fixes für I2C (wenn man kein I2C anwendet nicht so spannend).

Grüße,
Harald.


In der aktuellen Produktivversion 4.1.5 habe ich die Routine zum Anzeigen der maximalen und der aktuellen Stromstärke auf meinem LCD2004 wunderbar am laufen. In den beiden anderen Zeilen werden noch Power On oder OFF und der freie Speicher (Free RAM) angezeigt. Es gibt aber auch nur ein MAIN-Track.

Wenn DCC++EX jetzt 8 Gleise detektieren kann, bräuchte man auch entsprechend viele Motorshields... Kann ich denn dann 4 Motorshields übereinander auf den Arduino MEGA stecken oder braucht es andere Hardware ?

Natürlich braucht es nur die Gleise abzufragen, die auch benutzt werden. Man könnte die Max. und die aktuelle AVG auch in einer Zeile unterbringen. Dann ist das ganze von der Displaygröße abhängig. Einen Scrollmodus halte ich für die Anzeige der Stromstärke für ungeeignet. Bei langsamen Scrollen ist die Aktualität nicht gegeben und bei schnellem Scrollen ist die Anzeige nicht mehr lesbar.
Ein Vier- oder Mehrzeilges Display müsste man trennen in feste Zeilen mit kurzem Aktualisierungsintervall (ca. 1 sek.) und in scrollbare Zeilen mit längeren Aktualisierungszyklus (> 3 sek.). Aber so etwas ist schon sehr speziell
>> Kann ich denn dann 4 Motorshields übereinander auf den Arduino MEGA stecken oder braucht es andere Hardware ?

Zwei übereinander mit "Jumpern" geht, der rest muss dann mit Kabeln angeschlossen werden.

Das Display kenn z.Z 3 verschiedene Scrollarten wenn es weniger als die 8 Zeilen die der Pufferspeicher halten kann in der HW verhanden sind.

Das mit dem schellen Scrollen stimmt wohl. So man sollte vielleict wählen können....

Grüße,
Harald.
Hallo Uli,

kannst du deine Lösung zur Strommessung veröffentlichen. Meine Versuche scheiterten leider kläglich.

Viele Grüße
Christian.
Meine Ergänzungen in Version 4.1.5

CommandStation-EX_master.ino:

a) vor dem void setup() habe ich eingefügt:

#include "DCCWaveform.h"
// Variablen-Definition for "DCCCurrentAmpereDisplay.h"
uint16_t rawAmpere = 0;
uint16_t avgAmpere1 = 0;
uint16_t maxAmpere = 0;
uint16_t maxAmpere1 = 0;
uint16_t numValue = 0;
uint32_t SampTime = 0;

b) und am Ende der void loop() - Schleife ein

#include "DCCCurrentAmpereDisplay.h"

eingefügt (vor der letzten geschweiften Klammer)

Der Include-File "DCCCurrentAmpereDisplay.h" ist mit folgendem Inhalt neu zu erstellen :

// AmpSampRate - Current ampere sampling rate in milliseconds defined in myConfig.h
// <#define AmpSampRate 1e3>  (=LCD_SCROLL_TIME)
// Variablen werden in .ino definiert

  if ( millis() < (SampTime + AmpSampRate) ) {
    numValue++;
    rawAmpere += DCCWaveform::mainTrack.getCurrentmA();
  }
  else {
    uint16_t avgAmpere = (rawAmpere/numValue);
    if ( avgAmpere > maxAmpere ) maxAmpere = avgAmpere;  // maxAmpere ermitteln
    if ( avgAmpere == 0 ) maxAmpere = 0;                 // Reset maxAmpere wenn Power Off

    if ( avgAmpere != avgAmpere1 ) {
    LCD(0,F("Main AVG= %4d mA"), avgAmpere);
    avgAmpere1 = avgAmpere;
    }

    if ( maxAmpere != maxAmpere1 ) {    
    LCD(1,F("Main MAX= %4d mA"), maxAmpere);
    maxAmpere1 = maxAmpere;
    }  
    
//  LCD(0,F("%4d - %4d mA"), avgAmpere, DCCWaveform::mainTrack.getCurrentmA());

    SampTime = millis();
    numValue = rawAmpere = 0;
  }

In der config.h habe ich das 4zeilige LCD Display definiert, die Scrolltime reduziert und die Definition für die Abtastrate eingefügt (beides auf 1000 ms):

// #if !defined(LCD_SCROLL_TIME)
#define LCD_SCROLL_TIME 1000     // 1000 milliseconds
// #endif

// 1000 milliseconds max. 5000
#define AmpSampRate 1000

Dann sollte das ganze bereits funktionieren. Ich habe dann in der Datei "WifiInterface.cpp" noch die beiden LCD ausgaben für Zeile 4 und 5 ausklommentiert, um ein Scrollen auf dem Display zu verhindern und in der Datei "LCDDisplay.h" habe ich die Zeile 47 "// static const long LCD_SCROLL_TIME = 3000;  // 3 seconds" auskommentiert, damit die Scrolltime aus der config.h gezogen wird. Da ich nur 4 Zeilen ausgebe scrollt das Display nicht wirklich, aber die Scrolltime bewirkt auch den Refresh der Displayausgabe.

Falls du kein LCD Display sondern ein OLED-Display verwendest, sind dann andere Dateien dafür anzupassen.

Viel Erfolg.
Ich musste eine kleine Korrektur vornehmen, Auf Grund der langen Abtastsrate gab es einen Überlauf bei der Variablen rawAmpere. Diese habe ich jetzt in uint32_t geändert.

Zitat - Antwort-Nr.: | Name:

Meine Ergänzungen in Version 4.1.5

CommandStation-EX_master.ino:

a) vor dem void setup() habe ich eingefügt:

#include "DCCWaveform.h"
// Variablen-Definition for "DCCCurrentAmpereDisplay.h"
uint32_t rawAmpere = 0;
uint16_t avgAmpere1 = 0;
uint16_t maxAmpere = 0;
uint16_t maxAmpere1 = 0;
uint16_t numValue = 0;
uint32_t SampTime = 0;

b) und am Ende der void loop() - Schleife ein

#include "DCCCurrentAmpereDisplay.h"

eingefügt (vor der letzten geschweiften Klammer)

Der Include-File "DCCCurrentAmpereDisplay.h" ist mit folgendem Inhalt neu zu erstellen :

// AmpSampRate - Current ampere sampling rate in milliseconds defined in myConfig.h
// <#define AmpSampRate 1e3>  (=LCD_SCROLL_TIME)
// Variablen werden in .ino definiert

  if ( millis() < (SampTime + AmpSampRate) ) {
    numValue++;
    rawAmpere += DCCWaveform::mainTrack.getCurrentmA();
  }
  else {
    uint16_t avgAmpere = (rawAmpere/numValue);
    if ( avgAmpere > maxAmpere ) maxAmpere = avgAmpere;  // maxAmpere ermitteln
    if ( avgAmpere == 0 ) maxAmpere = 0;                 // Reset maxAmpere wenn Power Off

    if ( avgAmpere != avgAmpere1 ) {
    LCD(0,F("Main AVG= %4d mA"), avgAmpere);
    avgAmpere1 = avgAmpere;
    }

    if ( maxAmpere != maxAmpere1 ) {    
    LCD(1,F("Main MAX= %4d mA"), maxAmpere);
    maxAmpere1 = maxAmpere;
    }  
    
//  LCD(0,F("%4d - %4d mA"), avgAmpere, DCCWaveform::mainTrack.getCurrentmA());

    SampTime = millis();
    numValue = rawAmpere = 0;
  }

In der config.h habe ich das 4zeilige LCD Display definiert, die Scrolltime reduziert und die Definition für die Abtastrate eingefügt (beides auf 1000 ms):

// #if !defined(LCD_SCROLL_TIME)
#define LCD_SCROLL_TIME 1000     // 1000 milliseconds
// #endif

// 1000 milliseconds max. 5000
#define AmpSampRate 1000

Dann sollte das ganze bereits funktionieren. Ich habe dann in der Datei "WifiInterface.cpp" noch die beiden LCD ausgaben für Zeile 4 und 5 ausklommentiert, um ein Scrollen auf dem Display zu verhindern und in der Datei "LCDDisplay.h" habe ich die Zeile 47 "// static const long LCD_SCROLL_TIME = 3000;  // 3 seconds" auskommentiert, damit die Scrolltime aus der config.h gezogen wird. Da ich nur 4 Zeilen ausgebe scrollt das Display nicht wirklich, aber die Scrolltime bewirkt auch den Refresh der Displayausgabe.

Falls du kein LCD Display sondern ein OLED-Display verwendest, sind dann andere Dateien dafür anzupassen.


Hallo Uli,

nach langer Pause habe ich es nun endlich geschafft, mich wieder mit DCC++ und deiner Lösung zu beschäftigen. Absolut vorweg - super und es funktioniert. Vielen Dank für die Veröffentlichung deiner Lösung.

Ein kleines Problem bleibt aber, nicht ganz befriedigend.

Ich habe ein 2-zeiliges LCD in der Bastelkiste, welches eigentlich  ausreichen sollte. Ich habe inzwischen verstanden, dass die LCD oder OLED-Anzeige für andere Anzeigen, als jetzt verwendet, gedacht ist. Angezeigt werden neben Lizen, Projekttitel, freien Speicher auch Informationen aus der Ethernet-bzw. WiFi-Einbindung, sofern vorhanden, Diese Informationen werden alle gescrollt (schönes Wort). Wenn kein Ethernet oder WiFi vorhanden ist, werden nur die Informationen gescrollt:
- Anzeige DCC++ mit LCD(0, F("DCC++ EX v%S"), F(VERSION));
- Anzeige Lizenz mit LCD(1, F("Lic GPLv3"));
- Anzeige Ready mit LCD(3, F("Ready"));
- Anzeige freier RAM mit LCD(3, F("Free RAM=%5db"), ramLowWatermark);
- Anzeige Gleisspannungsstatus mit LCD(2, F("Power %S%S"), state == '1' ? F("On") : F("Off"), reason);

Ich hätte nun erwartet, dass mit  LCD(0,F("AVG %4d mA"), avgAmpere); und LCD(1,F("MAX %4d mA"), maxAmpere); die Informationen aus der set-up Routine (obige beiden ersten Zeilen) überschrieben werden, da diese ja nur einmalig im set-up beschrieben werden. Dem scheint aber nicht so zu sein, bei mir scrollen diese beiden Informationen mit. (Ich habe die Texte gegenüber deiner Version gekürzt, da mein Display nur 16 Zeichen hat). Beim Schreiben fällt mir auf, dass es bei der Anzeige LCD(3, ...) funktioniert (ohne Nachprüfung auf der Anlage, kann sein, dass ich mich irre). Die Information "Ready" wird überschrieben.

Meine Frage nun:
1. Habe ich irgendeine Einstellung noch falsch gemacht, da die Infos auf dem LCD nicht überschrieben werden?
2. Eigentlich braucht man die o.g. Infomationen (einschließlich der Informationen aus dem ETHERNET bzw WiFi-Anschluss nur einmalig im / nach dem Anlauf. danach ist das Display eigentlich frei für andere Anzeigen.
3. Gibt es eine andere Möglichkeit (außer auskommentieren) um die nicht mehr benötigten Infos, die aus einem Broadcast immer wieder aktualisiert werden, auszublenden. Ich habe im Moment mir mit der Auskommentierung geholfen, was aber nicht "im Sinne des Erfinders" ist.

Viele Grüße
Christian

Im neusten Entwickercode sollte es möglich sein mit EXRAIL eine Leerzeile zu schreiben und dann sollte die Zeile aus dem Scroll wieder weg sein.

Bei Displays ist es schwer es allen recht zu machen. Es gibt sehr viele verschiedene Displays und Meinungen was denn darauf erscheinen soll.

Grüße,
Harald.
Hallo Harald,

recht machen kann man niemanden etwas komplett, da bin ich vollkommen bei dir.

Mich wundert nur, warum LCD(0….) und LCD(1….) nicht gelöscht bzw. überschrieben werden, obwohl diese nur im Setup erzeugt werden. Es muss also noch irgendwo eine Stelle geben, an der diese beiden Informationen immer wieder wiederholt werden. Diese habe ich aber nicht gefunden.

Viele Grüße
Christian
Es wird nicht wiederholt sondern in einen Buffer geschrieben der je nach Scrollmodus an LCD/OLED ausgegeben wird. Wenn du die neuste devel Version vom GitHub runterlädst dann sollte ein LCD Kommando mit "" (leerem String) die Zeile löschen.

Grüße,
Harald.
Hallo Harald,

Danke für die Info. Ich werde in die Setup am Ende eine kleine Wartezeit einbauen und dann den leeren String senden. Allerdings komme ich erst Ende der nächsten Woche dazu.

Trotzdem ist es mir nicht klar. LCD(0,….) wird über den Setup beschrieben und in einen Buffer geschickt, einverstanden. In der Ergänzung für die Stromanzeige wird LCD(0,…) zyklisch beschrieben und an das LCD ausgegeben. Ist das dann eine andere „Bufferzelle“ oder funktioniert Ulis Script unter Umgehung der Buffer? Das ist mein Verständnisproblem.

Viele Grüße
Christian
Von welcher Version redest du gerade genau?

Grüße,
Harald.
Hallo Harald,

Ich habe die aktuell freigegeben Version geladen. Ich bin nicht zu Hause und kann nicht nachsehen, aber ich glaube 4.1.5., auf keinen Fall aber eine Entwicklungsversion.

Viele Grüße
Christian
Also die eigene Veränderungen/Verbesserungen wollen dürfen sich gern auch etwas mit der Entwicklerversion auseinandersetzen. Zum einen weil dann eventuelle Veränderungen gleich in die Entwickerversion übernommen werden können und zum anderen weil ihr uns dann als Beitrag beim Testen helft. Ich versuche den Entwicklerversionen "Tags" zu geben, komme aber da auch nicht immer mit. Alle Versionen mit Tags sind da:

https://github.com/DCC-EX/CommandStation-EX/tags

Auch geht es recht diszipliniert zu im devel, andere Projekte hätten da schon längst einen Release gemacht.

https://github.com/DCC-EX/CommandStation-EX/tree/devel

Auch kann man sich überlegen ob man nicht doch sich etwas in git einarbeiten will (auch unter Windows). Upgrades/downgrades werden dann plötzlich sehr sehr einfach.

Das erste Mal:
Zitat - Antwort-Nr.: | Name:


git clone https://github.com/DCC-EX/CommandStation-EX



Version ändern:
Zitat - Antwort-Nr.: | Name: Beispiel


cd CommandStation-EX
git pull
git checkout v4.2.45-Devel


Git gibt's auch integriert als Plugin zu Visual Studio Code, aber manchmal sind 2-3 Kommandos auf der Kommandozeile einfacher.

Als extra Bonus arbeiten wir auch an einem besseren Installer.
Prototyp für Linux: https://raw.githubusercontent.com/DCC-EX/CommandStation-EX/devel/installer.sh
Prototyp für Windows: https://raw.githubusercontent.com/DCC-EX/Comma...tation-installer.exe

Grüße,
Harald.

PS: Beim Arduino IDE rate ich von 2.x ab, 1.8.19 funktioniert für mich immer noch besser.
So, jetzt gibt es ein Treiber-Shield mit etwas mehr Kraft (2x 5A). Das sollte doch für die meisten reichen. Natürlich kann man auch weniger per Software einstellen. Auch ist der Spannungsabfall und damit die Erwärmung sehr gering. Ihr wisst, wegen Abfallvermeidung und Global Warming. Oder war das jetzt wegen zukünftigem RailCom? Naja, wie auch immer, hier ist die Ankündigung:

https://dcc-ex.com/news/posts/20230515.html

Designed in Steiermark

Grüße,
Harald.
Hallo,

das sieht ja richtig gut aus, super cool Danke @Erwin P. und @Klaus St.

https://www.tindie.com/products/semify/semify-dcc-ex-motor-shield/

Viele Grüße nach Graz, Peter W.


Finde ich auch gut,

Für mich geht damit der „Charme“ des günstigen selber zusammenstellens einer _sehr_ günstige Zentrale zu bauen ein bisschen ab,

Außerdem fahre ich mit einem Arduino Nano eine noch kompaktere Zentrale mit der ich noch nicht an die Grenzen komme.

Ich weiß aber, dass der Preis für voll in Ordnung geht, und wenn damit mehr Menschen DCC Ex fahren, umso besser. Insofern danke für eure Mühe.


Grüße

Das neue Shield hat u.A. folgende Argumente für sich:

* Genug Ampere für größere Spuren (wichtig für den totalen Markt)
* 3.3V kompatibel (ESP32, Nucleo)
* RailCom möglich wenn die Software es hergibt
* Nur noch ein Netzteil (das muss man beim Preisvergleich beachten)

Wir wissen dass nicht gleich jetzt sofort alle Vorteile für alle zum Tragen kommen und dass viele auch mit dem alten Shield glücklich sind. Anleitungen wie man 2 Shields für total 4 Ausgänge (alt und neu oder neu und neu) zusammenbaut kommen noch.

Grüße,
Harald.

Hallo,

semify versendet aus Österreich :)
Tindie mit allen verkäufen in Dollar ist natürlich nicht ganz ideal, mittelfristig werden wir da eine bessere Lösung finden.

Schöne Grüße
Erwin
Wenn ein Verkäufer das in seine Produktpalette aufnehmen will, dann darf er sich gerne bei DCCEX melden. Steht alles in der langen Beschreibung und es gibt auch eine Webseite wo steht was gilt für die Designlizenz (offen) und die Logolizenz (nicht so offen, wer will seil Logo auf einem miesen clone sehen).

Tindie ist nicht das allerbeste aber das Produkt musste jetzt Mal raus, können euch die Schmankerl ja nicht ewig vorenthalten.

So in der EU braucht es keinen Gang zum Zoll oder so. Auch in Brexonien und Australien gibt es das Shield im Land zu kaufen. Rest der Welt kommt auch noch...


Grüße,
Harald.
Hallo zusammen,

das Shield sieht super aus, hab mir eins bestellt.

Grüße
Daniel
Hallo,

vielleicht hat dieser Händler Interesse an dem Motor Shield:
https://electronics.semaf.at/

Amazon Marketplace wäre natürlich auch ein Hit...

Grüße, Peter W
@rudwe

Zitat - Antwort-Nr.: | Name:

Meine Frage nun:
1. Habe ich irgendeine Einstellung noch falsch gemacht, da die Infos auf dem LCD nicht überschrieben werden?
2. Eigentlich braucht man die o.g. Infomationen (einschließlich der Informationen aus dem ETHERNET bzw WiFi-Anschluss nur einmalig im / nach dem Anlauf. danach ist das Display eigentlich frei für andere Anzeigen.
3. Gibt es eine andere Möglichkeit (außer auskommentieren) um die nicht mehr benötigten Infos, die aus einem Broadcast immer wieder aktualisiert werden, auszublenden. Ich habe im Moment mir mit der Auskommentierung geholfen, was aber nicht "im Sinne des Erfinders" ist.



Hallo Christian, ich weiß nicht, ob deine Fragen schon beantwortet sind...

Meine Änderungen bewirken, dass nach dem Booten LCD0 bis LCD3 im Puffer beschrieben werden. Beim 2zeiligen LCD wird dann regelmäßig umgeschaltet.
LCD0 und LCD1 werden beim Booten beschrieben, diese überschreibe ich regelmäßig mit den Amperewerten. LCD2 (Power On/Off) und LCD3 (Free RAM) werden von DCC++EX bei einer Statusänderung aktualisiert. Alle anderen LCD Zeilen für WiFi habe ich auskommentiert um das Scrollen zu vermeiden. Ich brauche diese Infos auch nicht..
LCD2 nutze ich auch für Ausgaben aus der myAutomation.h

Mit den neueren Versionen nach 4.1.5 funktioniert leider meine Methode zur Ermittlung der Stromstärke so nicht mehr und ich habe noch nicht den richtigen Weg dafür gefunden. Aber noch hat die Version 4.1.5 alles was ich benötige. Vielleicht ändert sich das in der Zukunft mit Unterstützung neuerer Hardware.
Jimmy war wieder suuuupernice.

https://youtu.be/5WXPA0uVFXw

Neuheiten: Wenn wir oder ihr bei der neusten Version 4.2.68 keine gravierenden Fehler findet, dann wird das so 5.0.0. Der neue Installer sollte es einfach machen reinzuschnuppern, der macht wirklich alles was man normal braucht. So keine Angst man müsse eine Textzeile ändern oder sonst irgendwie Rocket Science anwenden.

Grüße,
Harald.
Jetzt isses endlich soweit: Version 5 ist offiziell da:

https://dcc-ex.com/news/posts/20230807.html

Grüße,
Harald.

Für alle die DCC-EX auf Arduino Mega2560 mit ESP8266 Wifi anwenden oder anwenden wollen:

Warnung: viele ESP8266 Wifi Adapter werden mit nicht funktionierender AT Firmware ausgeliefert und dann sieht es so aus als würde DCC-EX übers Wifi nicht funktionieren. Oder es funktioniert nur einmal. Firmware auf dem ESP8266 mit Versionen 0.x, 2.0.x, 2.1.x und 2.2
0.0 sind alle betroffen.

Im Start-Log sieht das dann so aus
Zitat - Antwort-Nr.: | Name:

AT version:2.2.0.0-dev(s-57dd9a4 - ESP8266 - Feb  9 2021 06:34:21)



Wie man die Firmware 1.7.4 auf den ESP8266  bringt steht auf der dccex Homepage kann aber ein fummeliger Prozess sein.

Und ja, es ist ärgerlich wenn man davon abhängig ist dass andere eine Firmware gebacken bekommen, vor allem wenn die ältere Version schon besser war.

Grüße,
Harald.
Zitat - Antwort-Nr.: | Name:

Jetzt isses endlich soweit: Version 5 ist offiziell da:



Läuft auf meiner Testumgebung Uno mit EX8874

Ist es bei dieser Version immer noch so, dass man mit einemArduino UNO kein OLED Display ansteuern kann ?



Wenn man im Uno die Möglichkeiten EEPROM und Decoderprogrammierung zu nutzen abstellt könnte das RAM reichen aber ich denk mir: Investier halt 15 EUR in einen ESPDUINO32 (Netzwerk) oder einen Mega2560 (mehr I/O).

Grüße,
Harald.
Moin,

Den minimalen Aufpreis für einen Arduino Mega kann man dann doch verschmerzen, zumal der RAM des Mega doch ein wenig größer ausfällt.

Ich habe aus vorhandenen Teilen einen neuen ProtoType zusammengebaut.
Es geht wirklich einfach einzurichten.
Die Android Apps "Engine Driver" und "EX-Toolbox" haben problemlos den DCC-EX Server gefunden und sich verbunden

Ich habe folgende Teile (ausschließlich China Ware benutzt)
Suchhilfe für eBay
R3 ATmega2560 ESP8266 USB-TTL CH340 7-15V 32M Memory for Arduino Mega NodeMCU
L298P Shield 2A H-Bridge 2way For Arduino UNO 2560 R3 DC Motor Driver Module
0.96" Blue I2C SPI Serial 128X64 OLED LCD Display SSD1306
LM2596 DC zu DC AbwäRtswandler 3,0-40V 1,5-35V Netzteil AbwäRts Z8W2
Prototype PCB DIY Shield Board UNO R3 2mm+2.54mm Pitch FR-4 Fiber for Arduino

Vom Mega habe ich die Buchse für die Spannungsversorgung abgelötet und auf dem ProtoShield weiter verwendet.
Das Motorshield passt nicht, wenn die Buchse auf dem Arduino Mega aufgelötet ist.


Das ist ein Arduino Mega mit auf der Platine aufgesetztem ESP8266
das Standard Motorshield (das DCC-EX ist im Moment im Shop für Europa nicht verfügbar, ich muss nicht wirklich alles selber bauen ..)
ein OLED Display, da kann man nach Lust und Laune ja nehmen was gerade da ist
ein StepDown Regler, für die Versorgung des Arduino, so kann aus der 18V Spannung der Arduino mit versorgt werden
und ein ProtoShield für den UNO (Formfaktor), wo der StepDown und das Display ihren Platz gefunden haben

Ich denke, dies ist eine wirklich preiswerte Alternative um mal in die digitale MoBa Steuerung einzusteigen.

Wer sich mit den Anleitungen schwer tut: Fast jeder Browser kann inzwischen die kompletten Seiten übersetzen.

P:S. Es ist auch bei dem Arduino Mega WIFI notwendig, die Firmware zu ändern.
Das Aufspielen hat wirklich erst mit vielen Anläufen geklappt.
Dies liegt an einem fehlerhaften Windows Treiber für den CH340, der von Windows installiert wird, erst nach der Installation eines älteren Treibers hat es dann funktioniert.
Das perfide: auch der falsche Treiber meldet, dass er fehlerfrei funktioniert ....

Viele Grüße, Franzi

Die von vbh zu diesem Beitrag angefügten Bilder können nur von registrierten Usern gesehen werden - Login

Wenn man uns die Treiberversionen verrät können wir die auf unseren Seiten publizieren.

Die ESP8266 machen uns wirklich Probleme da weder firmware 2.0 noch 2.1 noch 2.2.0.0 zufriedenstellend funktionieren.

So also muss man 1.7.6 flashen was auch nicht einfach ist. Es sei denn man nimmt den ESP32 als Haupt-CPU, dann braucht man keinen Rucksack mit ESP8266.

Grüße,
Harald
Hallo Harald,

Den Link, unter dem ich Gestern den Treiber geladen habe, hab ich gerade nicht parat - der Treiber war von 2019
Vom Hersteller wäre dies der aktuelle Treiber
https://www.wch-ic.com/downloads/CH341SER_EXE.html

Der ESP muss angesteckt sein, dann am Besten mit dem Setup des Treibers den aktuell installierten Treiber deinstallieren, anschliessend den Treiber installieren.

Ich habe es mit dem aktuellen Treiber nicht nochmals probiert.

Der Mist am Vorgehen ist, das Windows per default auch Treiber updatet, wenn MS der Meinung ist, es wäre wieder an der Zeit ...

Klar kann das Verhalten abgestellt werden, doof ist es trotzdem.


Edith:
Nachtrag: Ich habe den Link meiner Gestrigen Suche gefunden:
https://superuser.com/questions/1781851/esptool...figuring-serial-port
Verweis auf diese URL mit dem Treiber von 2019:
https://electropeak.com/learn/download/ch341ser-zip/

Viele Grüße, Franzi

die 100 Einträge sind erreicht.
hier geht es weiter:

https://www.1zu160.net/scripte/forum/forum_show.php?id=1379860&ins#unten



Nur registrierte und eingeloggte User können Antworten schreiben.
Einloggen ->

Noch nicht registriert? Hier können Sie Ihren kostenlosen Account anlegen: Neuer N-Liste Account





Zum Seitenanfang

© by 1zu160.net;