Hallo zusammen,
ich belebe diesen Thread hier wieder um keinen neuen zu eröffnen.
Ich probiere aktuell den DPM8624-485 mit Arduino anzusteuern. Das ganze ist noch ein Trockenversuch ohne angeschlossene PV.Angeschlossen ist der DPM über einen Seriellen Port am Arduino MEGA. Ich nutze den RS485 Adapter auf TTL und die DPM8600.h Library.Sämtliche write Befehle funktionieren gut und ich kann Problemlos an/aus schalten und spannung/strom vorgeben. Aber read liefert kein Ergebnis. Der Empfang scheint einfach tot.
Hat jemand Vorschläge, was ich probieren kann? Danke
Hallo,
ich nutze den gleichen Arduino, die gleiche lib und auch einen TTL to RS485 Adapter wie du. Hast Du bedacht, das USB die erste serielle Schnittstelle (serial0) belegt? Den RS485 Adapter habe ich auf serial1 laufen, das funktioniert:
//Serielle für die Kommunikation mit dem RPI Serial.begin(9600); //Serielle zur Steuerung des DPM8624 Serial1.begin(9600); charger.begin(Serial1); //DPM Initialisieren <snip> void loop() { u_dpm = charger.read('V'); //Werte aus DPM8624 lesen i_dpm = charger.read('C'); w_aktuell = i_dpm * u_dpm; //Leistung berechnen cc_cv = charger.read('S');
Viele Grüße,
steve
Danke dir für deine Antwort.
Probiert habe ich es an Serial1 und Serial2. Ich habe sogar probeweise die Libraray so verändert, dass er die Steuerpins vor dem Senden auf HIGH und nach dem Senden auf LOW setzt. Jeweils mit einem Delay von 500.
Deinen Code werde ich morgen mal mit meinem vergleichen und nochmal testen. Dann schreibe ich auch meine Verkabelung auf, evtl. ist dabei etwas fehlerhaft.
Wenn es bei dir mit der Config funktioniert und bei mir nicht, vermute ich bei mir einen Fehler. Vllt könen wir das abgleichen um den Fehler zu finden:
Mein Code sieht folgendermaßen als einfaches Testbrett aus:
converter.write('v',12);
Hallo,
nachdem du gepostet hast, wie dein RS485 Adapter verdrahtet ist, gibt es einen Unterschied zu deinem und meinem Setup. Du nutzt so was in der Art, oder? :
https://www.makershop.de/module/kommunikation-module/ttl-rs-485/
Und ich nutzte den hier:
https://www.makershop.de/module/kommunikation-module/ttl-rs485-adapter/
Beide nennen sich TTL RS 485 Adapter, nur das meiner direkt mit RX/TX angesprochen werden kann und deiner eine etwas andere Logik zur Ansteuerung braucht. Dazu gibt es eine spezielle Arduino Lib.: https://www.do-it-neat.com/arduino-max485-library/
Leider sind die IC's bei meinem Adapter nicht beschriftet, so dass ich nicht sagen kann wo genau der Unterschied liegt. Vielleicht probierst du mal so einen Adapter.
Viele Grüße,
steve
Danke dir. Ich probiere es mit dem Adapter mal.
Habe mir zum testen einen bestellt. Wenn mir langweilig ist, bis der da ist, probiere ich nochmal die andere Lib.
Ich melde mich, wenn ich ein Update habe.
PS: Parallel versuche ich noch den Victron MPPT und das Daly BMS auszulesen. Beides noch mit mäßigem Erfolg... -.-
Hallo nochmals,
neben der Variante, die ich vor einiger Zeit gepostet habe, habe ich mich durch diesen Beitrag inspirieren lassen und mich mit dem Thema ESPHome beschäftigt. Herausgekommen ist dann eine ganz nette Übersicht in meinem Home Assistant, die alles beinhaltet, was man zum automatisieren benötigt.
Für die Config habe ich folgendes zur Standardconfig vom ESPHome hinzugefügt:
uart: id: mod_bus tx_pin: 5 rx_pin: 4 baud_rate: 9600 stop_bits: 1 parity: none modbus: id: modbus1 uart_id: mod_bus modbus_controller: - id: epever address: 0x1 modbus_id: modbus1 command_throttle: 1000ms update_interval: 10s sensor: - platform: modbus_controller modbus_controller_id: epever name: "DPM Output Voltage" id: dpm_output_voltage register_type: holding address: 0x1001 unit_of_measurement: "V" accuracy_decimals: 2 filters: - multiply: 0.01 icon: "mdi:lightning-bolt" - platform: modbus_controller modbus_controller_id: epever name: "DPM Output Current" id: dpm_output_current register_type: holding address: 0x1002 unit_of_measurement: "A" accuracy_decimals: 2 filters: - multiply: 0.001 icon: "mdi:sine-wave" - platform: modbus_controller modbus_controller_id: epever name: "DPM Temperature" id: dpm_temperature register_type: holding address: 0x1003 unit_of_measurement: "°C" accuracy_decimals: 1 icon: "mdi:thermometer" switch: - platform: modbus_controller modbus_controller_id: epever name: "DPM Status" id: dpm_status address: 0x0002 register_type: holding bitmask: 1 icon: "mdi:toggle-switch" number: - platform: modbus_controller modbus_controller_id: epever id: dpm_set_voltage name: "Set Output Voltage" min_value: 0 max_value: 60 step: 0.1 mode: box address: 0x0000 unit_of_measurement: "V" multiply: 100 icon: "mdi:lightning-bolt-circle" - platform: modbus_controller modbus_controller_id: epever name: "DPM Set Current" id: dpm_set_output_current address: 0x0001 unit_of_measurement: "A" min_value: 0 max_value: 10 step: 0.1 mode: box multiply: 1000 icon: "mdi:sine-wave"
so, den adapter habe ich nun, aber ich kann trotzdem nicht über ihn sauber mit dem DPM8624 kommunizieren.
Ich kann ihn starten und abschalten. Sende geht also. Aber nur mit folgender Verkabelung:
Tx -> Tx A->A
Rx -> Rx B->B
Dazu GND am 8624.
Damit schaffe ich das gleiche verhalten, wie wenn ich den 8624 direkt an Tx/Rx anschließe. Es kommt auch über den Adapter keine Antwort zurück.
Wenn ich anders verkabele wie z.b. zustäzlich ein GND am Input vom Adapter, dann ist die Kommunikation so gestört, dass nichtmal write funktioniert. Entferne ich stattdessen GND am DPM, dann leuchtet COM dauerhaft, aber führt nichts aus.
Und als Ausgaben von read('V') nur entweder -10 oder 0.00 raus. Beides falsche Werte, denn die Ausgangsspannung ist definitiv gestellt und liegt auch an. Zum Test betreibe ich am Out einen PC Lüfter.
Kannst du mir deine Verkabelung teilen? Ich werde langsam irre...
Ich nutze folgende Verdrahtung:
Arduino Mega -> RS485 Adapter
+5V VCC
TX1 TX
RX1 RX
GND GND
(diese TX und RX Beschriftung kann auch je nach Hersteller des Adapters umgekehrt sein. Hab schon beides gehabt)
RS485 Adapter -> DPM-8624
A A
B B
GND GND
Zwei Ideen hab ich noch: Hast du das DPM-8624 auf "simple protocol" eingestellt? Was hast du für eine Spannungsversorgung für das DPM-8624? Es war schon mal von Masseschleifen in Verbindung mit dem DPM irgendwo zu lesen, die die Kommunikation gestört haben.
Sonst fällt mir jetzt auch nichts mehr ein.
Viele Grüße,
steve
Danke dir für die Infos.
Deine Verkabelung prüfe ich nochmal ganz exakt. Aus dem Kopf würde ich sagen, dass ich den Aufbau gestern auch hatte, aber das kann trügen.
simple protocol ist eingestellt, also '0'. Als Spannung schließe ich aktuell ein 32V Labornetzteil an, da es ja ein Testaufbau ist.
Hast du bei deinem Aufbau wirklich auch ein GND vom Arduino an den 3. Out vom Adapter angeschlossen? Also an 3 Stellen (IN, OUT und DPM) jeweils den GND(Minus) Port vom MEGA angeschlossen?
ja, steht auch so in der Anleitung. Für TTL Kommunikation braucht der DPM aber 0, sonst kommt gar nix an.
Klar, GND an der richtigen Stelle muss sein, sonst bekommt der Adapter keine vernünftige Spannungsversorgung und die Kommunikation ist Glücksache. Mein Adapter hat auf der einen Seite Vcc, TX, RX und GND. Die gehen zum Arduino. A,B, GND auf der anderen Seite der Platine zum DPM. Eine weitere GND Verbindung vom Arduino zum DPM kann die Kommunikation stören, da die beiden GND Anschlüsse am RS485-Adapter keine Verbindung haben! In der Anleitung zum RS485 Adapter ist von "GND" zum Arduino die Rede und von "Ground" zur RS485 Seite. Das deutet schon darauf hin das die nichts mit einander zu tun haben. Gemessen habe ich gerade 40MOhn, also Isolation.
Entschuldige, ich hatte gehofft helfen zu können. Denn mindestens 2 Leute hier bekommen eine Verbindung zum DPM hin. Ich hab übrigens eine 3 adrige Verbindung vom Arduino zum Adapter (VCC braucht der Adapter wohl nicht) und auch 3 adrig vom Adapter zum DPM.
Ich bleibe aber bei der Version mit Modbus 🙂
Entschuldige, ich hatte gehofft helfen zu können. Denn mindestens 2 Leute hier bekommen eine Verbindung zum DPM hin. Ich hab übrigens eine 3 adrige Verbindung vom Arduino zum Adapter (VCC braucht der Adapter wohl nicht) und auch 3 adrig vom Adapter zum DPM.
Ich bleibe aber bei der Version mit Modbus
Blos nicht entschuldigen. Nicht dafür. Ich bin für jeden Vorschlag und Codebeispiel dankbar. Denn bei euch funktioniert es und ich drehe mich im Kreis.
Aktuell finde ich, dass die Chaostheorie, der Zusammenhang des Lyapunov-Exponenten mit der Feigenbaumkonstante oder auch sämtliche Beweise der Sprachentheorie in der theoretischen Informatik irgendwie alle mit der Zeit versändlich waren... aber das hier 🙃
Du betreibst den DPM also per Modbus und kannst schreiben und Lesen über das Signal?
Klar, GND an der richtigen Stelle muss sein, sonst bekommt der Adapter keine vernünftige Spannungsversorgung und die Kommunikation ist Glücksache. Mein Adapter hat auf der einen Seite Vcc, TX, RX und GND. Die gehen zum Arduino. A,B, GND auf der anderen Seite der Platine zum DPM. Eine weitere GND Verbindung vom Arduino zum DPM kann die Kommunikation stören, da die beiden GND Anschlüsse am RS485-Adapter keine Verbindung haben! In der Anleitung zum RS485 Adapter ist von "GND" zum Arduino die Rede und von "Ground" zur RS485 Seite. Das deutet schon darauf hin das die nichts mit einander zu tun haben. Gemessen habe ich gerade 40MOhn, also Isolation.
Deine Verkabelung habe ich Probiert. Schreiben klappt damit weiterhin. Er liefert beim Lesen auch keinen Fehler mehr. Aber Trotz eingestellten 12v oder 9v liefert read jetzt immer 27.00. Korrekt ist das auch noch nicht.
Zum Testen habe ich mitlerweile auch einen DPM ohne 485. Der mag die Schaltung über den Adaper natürlich nicht. Den kann ich aber mit dem anderen Modbus Adapter oder direkt über Serial ansprechen. Aber auch da klappt nur write und kein read.
Ich war mal so frei und habe Bilder meiner Verkabelung zum DPM8624-485 gemacht. So funktioniert schreiben (geprüft: an, aus, Setzen von 9v).
Lesen liefert immerhin keinen Fehler mehr, aber V liefert immer 27.00 obwohl 9V eingestellt sind.
Kommentare über mein übersichtliches Testsetup darf übrigens jeder selbst behalten. Solange ich tüftel lohnt es nicht was richtig sauber zu machen.
Du betreibst den DPM also per Modbus und kannst schreiben und Lesen über das Signal?
Jop. In Home Assistant schön eingebunden. Da ich mittlerweile Bilder hinzufügen darf kann ich nun bessere Bilder zeigen:
Ist jetzt allerdings kein Arduino Entwicklungsboard mehr, sondern schon mein kleiner Wemos D1.
Und wo du schon wilde Verkabelung zeigst... hier meine (vielleicht kommt Dir der TTL Adapter bekannt vor...)