Anzeige:
THEMA: Kennt Ihr schon DCC++? (4)
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 ) ?
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
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
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
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
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
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
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.
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
Grüße,
Harald.
Grüße,
Harald.
Grüße,
Harald.
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
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.: | 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.
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
Grüße,
Harald.
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
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
Grüße,
Harald.
Grüße,
Harald.
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
Grüße,
Harald.
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.
Wir danken Peter Akers von "Downunder".
Bald in einem EngineDriver und DCC-EX Release zu haben.
Grüße,
Harald.
Gruß 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
Gruß Holger
* 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.
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
Grüße,
Harald.
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.
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
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
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.
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
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
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.
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
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.
* Ü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.
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
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
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
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
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
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.
In V4.1.5 findest du getCurrentRaw() in MotorDriver.cpp
Gruß Uli
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.
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
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.
kannst du deine Lösung zur Strommessung veröffentlichen. Meine Versuche scheiterten leider kläglich.
Viele Grüße
Christian.
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.
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.
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
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.
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
Grüße,
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
Grüße,
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
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:
Version ändern:
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.
https://dcc-ex.com/news/posts/20230515.html
Designed in Steiermark
Grüße,
Harald.
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.
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
* 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.
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
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.
das Shield sieht super aus, hab mir eins bestellt.
Grüße
Daniel
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
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.
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.
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
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.
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 ?
Grüße,
Harald.
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
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
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
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;