DPM8624-485 Software & Anleitungen gesucht

Hmm.

Eigentlich sollte das alles auch viel einfacher gehen. Ich würde den DPM8624 gerne über den Pi mittels Python-Code steuern (Spannung / Stromstärke). Der DPM8624 hat ja bekanntlich eine RS485 Schnittstelle. Wenn ich das Infoblatt richtig lese, dann kann er eigentlich auch TLL direkt lesen. Nun gibt es aber ja diese Schnittstellenkarte:

In diesem pdf ist sehr einfach beschrieben, wie man Steuerstrings mittels Raspberry und Python an eine RS-485-Schnittstelle (und somit an den DPM8624) schickt. Quasi: "Pi-Python to DPM8624 for dummies". Würden wir jetzt die Steuerstrings kennen, dann wäre das Problem eigentlich gelöst.

Ich habe mal eine Support-Anfrage an joy-it gestellt. Vielleicht rücken sie die Strings bzw. das Protokoll ja raus. Falls diese jemand schon kennt: gerne her damit. Oder (Frage an die Besitzer:) liegen diese dem Gerät beim Kauf vielleicht schon bei? {green}:face: Es ist ja von zwei Protokollen die Rede. U.a. einem "leicht verständlichen". Gefunden habe ich das bisher noch nicht...

PS: Coole Emojies!!

PPS: Scheint so, als häte ich da etwas gefunden. Da muss man sich aber auch erst mal hineinlesen. Sollte ich daraus schlau werden, würde ich mal ein eine Dummy-Anleitung posten. Bis dahin: gerne weitere Tipps posten...

Okay,

einen noch: Der Code scheint mir nachvollziehbar genug zu sein. Hoffe, der läuft auch auf dem Pico, wüsste aber nicht, warum nicht. Auf dem Pi4 scheint es wohl Probleme zu geben, es wird der Pi3 empfohlen. Ich hätte noch nen Pi2 auf Lager.

Insgesamt scheint die Sache zu laufen und ich habe mir den DPM8624-485 jetzt im Reich der Mitte bestellt. Soll kurz vor Weihnachten eintrudeln. Hierzulande scheint es den derzeit nicht zu geben. Die Konverterplatine gibt's für 7€ inkl. Versand bei ebay. Auch bestellt.

Zwei Strings also:

  • Power: 12V Akku -> Boost Up Konverter auf 56V, Strom volle Pulle -> DPM8624 -> Sapnnung auch auf 56V, Strom geregelt zum -> Solar-WR -> Steckdose.

  • Control: Pi Pico (Python) -> Konvertermodul -> DPM8624.

Bin mega gespannt ob's funktioniert...

@monokristallin Warum der Boost Up auf 56V? Die Solar-WR sind doch meistens auf 18V rum Solarplatten ausgelegt? Also müsstest du nicht nur auf eine der typischen Solarplatten Spannungen hoch?

Die Solar-WRs mögen teilweise keine hohen Ströme bei niedrigen Spannungen. Mein Letrika z.B. schaltet sich einfach ab. Generell haben die WRs aber eine maximale Strombelastung. Der kann man nur mit höheren Sannungen entgehen. Dürfte insgesamt auch effizienter sein, habe ich aber nicht überprüft.

Ichbin eh auf den Soysource umgestiegen, der der sich genauso einfach ansteiuern lässt wie der DPM. Und der Soysource hat schon alles drin was man sonst noch so bräuchte. Den steuere ich jetzt auch direkt mit 24V an. Auch hier erschienen mir die Strome bei 12V doch etwas zu hoch für eine akzeptable Effizienz.

1 „Gefällt mir“

@aloishockenschlohe

@aloishockenschlohe

Hallo Alois,

Ich habe mir deine Scripte durch gelesen. Denkst du es wäre möglich die Scripte auf den Hichi Lesekopf- wlan und iobroker umzustricken? Habe bisher 3 Balkonkraftwerke in Direkteinspeisung betrieben, mit 1,5kW bis 2kW. Die sollen nun um einen Speicher erweitert werden. Laden mit 3 PowMr. Einspeisung über DPMxxx und die frei gewordenen Wechselrichter.

@monokristallin Alles klar! Ich plane auch gerade so ein System und war bisserl am stöbern, was ich für eine Batterie einsetzen will. Dachte letztlich auch auf 24V zu gehen und mir den Boost Up zu sparen - einfach um mir dort die Verluste zu sparen. Aber mit deinen Informationen habe ich jetzt nochmal in den Wechselrichter geschaut und da habe ich echt ein Problem. Der hat zwei Eingänge mit 16-60V und max. kontinuierlichem Strom 11.5A - also selbst wenn ich von der Batterie auf beide Eingänge aufteile bin ich nur bei 23A - das wären dann ja max. 24V*23A=552W - damit könnte ich ohne Boost Up die 600W nicht mal voll ausreizen. Und ganz so am Limit will man ja eh nicht unbedingt arbeiten. Also vielen Dank für die Info - kann sein das ich dann sogar mit nem Boost arbeiten muss!

Hallo zusammen,

ich habe ein kleines Problem mit dem DPM8624-485.

Und zwar schwankt der Ausgang ( V/Amp) ziemlich stark unter Last..

Eingang ist von einer 48V Lithium und Super Stabil. Ausgang tanzt wie ein wilder :frowning:

Ich denke das ist nicht Normal, oder ?

DPM8624 Last

hi

ich denke das liegt genau wie bei mir auch am Wechselrichter mppt verhalten. Ich habe den dpm8624 ausgangsseitig mal auf 28 V und 24 A eingestellt aber der Wechselrichter zieht eben nur 21v und 20a wegen der mppt regelung (grid tie 1000w billigwechselrichter). eine fixe Spannung einstellen am DC Wandler ist hier wahrscheinlich gar nicht möglich

Berichtigt mich falls ich hier etwas falsch sehe aber wenn der Wechselrichter nicht mehr Zeit dann kann der DC Wandler auch nicht mehr liefern so zumindest mein Verständnis liebe Grüße Tom

dpm8624

hier könnt ihr euch das mal live ansehen

lg tom

Tatsächlich werde ich meine Zellen auch nur bis 3.0V entladen und käme dann auch auf 24V.

Hier meine Überlegung zu dem Thema:

Insgesamt muss man mal rechnen, wieviel kWh man denn so vom Dach holt. Hast Du wenig Verbrauch und 3kWp auf dem Dach, dann sind 500W etwas wenig, stimmt. Ich habe momentan nur 1kWp und ein Verbrauch von mehr als 500W kommt über den Tag nur sehr selten vor. Mein Akku hat jetzt (etwas überdimensioniert) etwas über 7kWh. Somit reicht eine Einspeiseleistung von 500W vollkommen aus. Denn was hast Du davon, wenn Du den Wasserkocher voll mir Strom versorgst, Dir aber dann un 2h Nachts der Akku leer läuft. Sollte ich noch mehr Solarleistung bekommen, werde ich den Teil meines Python Skriptes aktivieren, dar mit bei einem Verbauch von mehr als 1000W (ein/aus) noch einen kleinen 310W-WR dazuschaltet. Z.B immer dann, wenn der Geschirrspüler 20min lang mit 2000W vor sich hin heizt. Macht aber derzeit bei mir noch keinen Sinn, weil ich meine gesammelte Energie eben auch so, mit 500W Maximaleinspeisung, los werde.

Hi Christian, ne Frage, in welchem Knoten wird denn der USB Port für den Modbus eingestellt? sehe das nicht und bin Nodered einsteiger.

Danke VG

Hallo,

ich bin auch neu hier und habe dieses Forum über die Arduino Lib für den DPM86XX gefunden. Ich kann mit meinem Arduino float Werte von einem Poti einlesen und an den DC/DC Limiter über die TTL-Schnittstelle weiter geben. Leider muss ich den DPM immer einmal für 0,5s ausschalten und dann wieder einschalten wenn ich den Wert ändern möchte. Was schon mal jemand an dieser Stelle? Und kann einen Weg sagen, wie ich dem DPM Werte übermittel kann ohne einmal converter.power(false); aufzurufen?

#include <DPM8600.h>
DPM8600 converter;
float v_res;
float strom;
int sensorValue = 0;
void setup() {
Serial.begin(9600);
// Initating power converter
converter.begin(Serial);
converter.power(true);
// Setting both Voltage and Current to 2V and 0.1A respectively
converter.writeVC(2, 0.1);
}
void loop() {
// Turn on the power
converter.power(true);
delay(5);
sensorValue = analogRead(A0);
Serial.println(sensorValue);
//Spaß Werte
v_res =sensorValue*0.01;
strom= sensorValue * 0.005;
//v_res = map(sensorValue, 0, 1023, 5.0, 40.0);
Serial.print("v= ");
Serial.println(v_res);
Serial.print("i= ");
Serial.println(strom);
// Read voltage if we want to.
// Measurements should be taken at least 0.5s after power on, as converter needs time to adjust
converter.writeVC(v_res, strom);
// Turn off the power
delay(5000);
converter.power(false);
delay(5);
}

Hallo,

hast du schon eine Lösung gefunden? Wenn nicht, welchen Arduino nutzt du? Du brauchst auf jeden Fall zwei serielle Schnittstellen, eine für die Datenübertragung zum DPM und eine zur Kommunikation mit dem Rechner, der die die Werte über das Serielle Terminal ausgibt.

Ich würde sagen, in dem angehängten Script schickst Du auch die anderen seriellen Ausgaben zum DPM...

Ich nutze daher einen Arduino Mega, der 4 serielle Schnittstellen hat. Eine wird für die Kommunikation über USB gebraucht, die anderen 3 sind verfügbar. Damit funktioniert der DPM einwandfrei!

Viele Grüße,
steve

Meine allgemeine Frage, ist denn hier schon jemand mit einem DPM86XX und Regelung über einen Raspberry mit RS485 im Dauerbetrieb?

Könnte das oben genannte Pulsen nicht dadurch verhindert werden, wenn man mit dem DPM86XX den WR oberhalb seiner MPPT Spannung versorgen würde?

Andreas

Ich vermute, dass das nur heißt, dass der Inverter innerhalb dieses Bereichs den MPPT sucht. Zumindest zeigen das einige Versuche von diesem Video: 24V DIY LiFePO4 Nachteinspeisung Teil 2: Verschiedene Anschlussmöglichkeiten ( dann eben kein Link, einfach den Titel zu YouTube kopieren... )

Aber das hängt vermutlich auch vom verwendeten Wechselrichter ab. Hat da jemand andere Erfahrungen gemacht?
Mich würde außerdem interessieren, wie man bei diesem Setup (PV --> LC --> (Batterie || DPM) --> WR) vermeidet, dass die Batterie unnötig oft entladen wird. Theoretisch braucht man doch irgend einen niederohmigen Pfad von PV direkt zum DPM um das ständige Be- und Entladen der Batterie im obersten Spannungsbereich zu verhindern, oder sehe ich das falsch? Ist das bei LFP-Akkus kein Problem mehr?

@stc danke das werde ich mal ausprobieren.
Ich habe einen arduino Uno verwendet. Kann sein, das er damit Stress hat.

gehört hier wohl auch in die Sammlung: man kann das Teil auch über Tasmota Script auslesen und steuern.. leider nur auf der Weboberfläche steuern, per MQTT kommen Spannung / Strom etc. .

Ich hab allerdings nicht die 485-Version

Also Tasmota mit diesen Optionen in der user_config compilen

#ifndef USE_WEBSERVER
#define USE_WEBSERVER
#endif
#ifndef USE_SCRIPT
#define USE_SCRIPT
#endif
#ifndef USE_SCRIPT_WEB_DISPLAY
#define USE_SCRIPT_WEB_DISPLAY
#endif
#ifndef USE_SML_M
#define USE_SML_M
#endif
#ifndef USE_SML_SCRIPT_CMD
#define USE_SML_SCRIPT_CMD
#endif
#ifdef USE_RULES
#undef USE_RULES
#endif
#ifndef SUPPORT_MQTT_EVENT
#define SUPPORT_MQTT_EVENT
#endif
#ifndef USE_SCRIPT_SUB_COMMAND
#define USE_SCRIPT_SUB_COMMAND
#endif

Auf WEMOS D1 mini flashen, D1/D2 und GND mit dem DPM8650 (in meinem Fall) verbinden, Modus 5CS- auf 1 stellen. Unter Edit Script das hier unten einfügen und aktivieren:

>D
Vmax=60
Cmax=24
v=0 ;store device voltage state (targeted)
V=0 ;store WebUI voltage state (targeted)
c=0 ;store device current state (targeted)
C=0 ;store WebUI current state (targeted)
sw=0 ;store device switch state
SW=0 ;store WebUI switch state
rV="01060000" ;ModBus register (voltage)
vV="" ;store hex value of V to append to rV
rC="01060001" ;ModBus register (current)
vC="" ;store hex value of C to append to rC
rSW="01060002000" ;ModBus register (switch)
vSW="" ;store hex value of SW to append to rSW
>B
tper=10
smlj=0 ;disable publishing at MQTT teleperiod, on boot
->sensor53 r
>R
smlj=0 ;disable publishing at MQTT teleperiod, on reboot
>S
if upsecs>30
then
smlj=1 ;re-enable publishing at MQTT teleperiod, after boot
endif
>W
bu(SW "DPM ON" "DPM OFF") ;toggle switch via WebUI
nm(0.0 60.0 0.01 V "DPM out (V)" 200 2) ;set voltage output via WebUI
nm(0.0 24.0 0.01 C "DPM out (A)" 200 2) ;set current output via WebUI
>T
sw=DC#sSwitch ;load switch state from ModBus variable >M
v=DC#sVolt ;load voltage state from ModBus variable >M
c=DC#sCur ;load voltage state from ModBus variable >M
if ((chg[sw]>0) and (SW!=sw)) ;update WebUI based on physical input (switch)
then
SW=sw
endif
if ((chg[v]>0) and (V!=v)) ;update WebUI based on physical input (voltage)
then
V=v
endif
if ((chg[c]>0) and (C!=c)) ;update WebUI based on physical input (current)
then
C=c
endif
if chg[V]>0 ;update ModBus register based on WebUI input (voltage)
then
if V>Vmax ;prevent out of bound value (voltage max)
then
V=Vmax
endif
if V<0 ;prevent out of bound value (voltage min)
then
V=0
endif
vV=rV+sb(hx((V*100)) 4 4)
sml(1 3 vV)
endif
if chg[C]>0 ;update ModBus register based on WebUI input (current)
then
if C>Cmax ;prevent out of bound value (current max)
then
C=Cmax ;prevent out of bound value (current min)
endif
if C<0
then
C=0
endif
vC=rC+sb(hx((C*1000)) 4 4)
sml(1 3 vC)
endif
if ((chg[SW]>0) and (sw!=SW) ;update ModBus register based on WebUI input (switch)
then
vSW=rSW+s(SW)
sml(1 3 vSW)
endif
>M 1
+1,4,m,16,9600,DC,5,2,010300000001,010300010001,010300020001,010310010001,010310020001 ;ModBus register taken from JT-DPM86XX_Communication_protocol_2022-07-06.pdf provided by Joy-IT
1,010302SSssxxxx@i0:100,Voltage (set),V,sVolt,2
1,010302SSssxxxx@i1:1000,Current (set),A,sCur,2
1,010302SSssxxxx@i2:1,Switch (set),,sSwitch,0
1,010302SSssxxxx@i3:100,Voltage (disp),V,dVolt,2
1,010302SSssxxxx@i4:1000,Current (disp),A,vCur,2
#

jetzt brauche ich nur noch jemand, der die WEBOberfläche-Eingabe (Zeilen mit nM) in MQTT Eingaben umwandelt, und schön wäre eine automatische Steuerung möglich

oder hat jemals jemand das hier zum laufen gebracht? GitHub - d4rken/jt-dpm8600-psu-mqtt: Use an ESP8266 to control a JT-DPM8600 power supply using MQTT.

@ste2k gibt es irdendwelche Besonderheiten die man beachten müsste?

Hab meinen WEMOS nach der Anweisung eingestellt, bekomme aber keine Daten vom DPM gesendet bzw. empfangen?