Benachrichtigungen
Alles löschen

DPM8624-485 Software & Anleitungen gesucht

91 Beiträge
40 Benutzer
6 Reactions
12.8 K Ansichten
 stc
(@stc)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 76
 

Veröffentlicht von: @fifadoc

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


   
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

@stc 

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.


   
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

@stc

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:

#include <DPM8600.h>

 
DPM8600 converter;

float v;
 
void setup() {
  Link entfernt (9600);
  Serial2.begin(9600);
  // Initating power converter
  converter.begin(Serial2);

 

 Serial.begin(9600);

 Serial.println("DCDC Test");
 
}

voidloop(){

 converter.power(true);
 delay(2000);

 converter.write('v',12);

  v = converter.read('V');
 Serial.print("v = ");
 Serial.println(v);
 delay(2000);
 converter.power(false);
 delay(2000);
}
 
Folgende Verkabelung habe ich:
 
MEGA -> Adapter
In:
Tx2 -> DI
Rx2 -> RO
DE/RE -> Pin2
 
Out:
GND -> GND
5V -> VCC
 
 
Adapter -> DC/DC
A -> A
B -> B
 
Ich habe also DI, DE, RE und RO mit dem Arduino verbunden. Dazu VCC und GND vom TTL Ausgang mit angeschlossen. Vom TTL A/B gehe ich dann an den DPM. Weiter ist beim DPM nur ein Input und ein Output zum Test angeschlossen.
power und write funktionieren, aber sobald ich mir die Ausgabe vom write oder read geben lasse, bekomme ich die Felercodes der Library.
 
Danke dir für die Hilfe.
 

   
AntwortZitat
 stc
(@stc)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 76
 

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


   
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

@stc 

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... -.-


   
AntwortZitat
(@nili76)
Vorsichtiger Stromfühler
Beigetreten: Vor 12 Monaten
Beiträge: 8
 

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"

 

 

 

 


   
Potti reacted
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

@stc 

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...


   
AntwortZitat
 stc
(@stc)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 76
 

@fifadoc 

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


   
AntwortZitat
(@nili76)
Vorsichtiger Stromfühler
Beigetreten: Vor 12 Monaten
Beiträge: 8
 

@fifadoc

0 ist simple, 1 ist modbus


   
Potti reacted
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

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?


   
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

@nili76 

ja, steht auch so in der Anleitung. Für TTL Kommunikation braucht der DPM aber 0, sonst kommt gar nix an.


   
AntwortZitat
 stc
(@stc)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 76
 

@fifadoc

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.


   
AntwortZitat
(@nili76)
Vorsichtiger Stromfühler
Beigetreten: Vor 12 Monaten
Beiträge: 8
 

@fifadoc

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 🙂 

 


   
Potti reacted
AntwortZitat
(@fifadoc)
Vorsichtiger Stromfühler
Beigetreten: Vor 11 Monaten
Beiträge: 47
 

Veröffentlicht von: @nili76

@fifadoc

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 Smile

 

 

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?

 

Veröffentlicht von: @stc

@fifadoc

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.

 


   
AntwortZitat
(@nili76)
Vorsichtiger Stromfühler
Beigetreten: Vor 12 Monaten
Beiträge: 8
 

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...)

 


   
AntwortZitat
Seite 4 / 7
Teilen: