Benachrichtigungen
Alles löschen

DPM8624-485 Software & Anleitungen gesucht

89 Beiträge
39 Benutzer
6 Likes
12.3 K Ansichten
Monokristallin
(@monokristallin)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 112
 

Veröffentlicht von: @samreciter

@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!

 

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.

 


   
AntwortZitat
(@riker1)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 33
 

Veröffentlicht von: @guenter_46

Hallo Christian,
...

...

im Browser aufrufen:
http://"IP-Adresse-raspi":1880 -dann oben rechts das Menü aufklappen, Import Flow DPM8624.json, danach Übernahme(deploy) anklicken
http://"IP-Adresse-raspi":1880/ui/ -dann max.Spannung und max.Strom eingeben, Ein/Aus Schalter mit Maus betätigen. Dann sollte die Anzeige am DPM8624 die Spannung anzeigen, wenn ein Verbraucher dranhängt auch den Strom.

-- attachment is not available --

 

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

 


   
AntwortZitat
(@herrx)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 4
 

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);
}

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

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


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

Veröffentlicht von: @donmillo

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 🙁

Ich denke das ist nicht Normal, oder ?

DPM8624 Last

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


   
AntwortZitat
(@aaron_wnklr)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 9
 

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?

Diese r Beitrag wurde geändert Vor 1 Jahr 3 mal von aaron_wnklr

   
AntwortZitat
(@herrx)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 4
 

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


   
AntwortZitat
STE2k
(@ste2k)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 47
 

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
#

   
AntwortZitat
STE2k
(@ste2k)
Vorsichtiger Stromfühler
Beigetreten: Vor 2 Jahren
Beiträge: 47
 

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? https://github.com/d4rken/jt-dpm8600-psu-mqtt


   
AntwortZitat
(@bauer1418)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

@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?


   
AntwortZitat
(@gerry-f)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

@aloishockenschlohe  Hallo Alois,

ich habe Deine Bash-Scripte auf github zur Ansteuerung eines DPM86xx genau angeschaut und z.T. ausprobiert (bisher "nur" auf einem Linux-Notebook, scheint ganz gut zu funktionieren).

(Mein Plan ist, den DPM86xx zeitabhängig anzusteuern...)

 

Dazu nun einige Fragen:

  • Was ist der Grund auf Python umzusteigen? Sind die bash-Scripte in der Praxis zu instabil?
  • Im Script dpm86.sh wird am Anfang eine Funktion/Datei ./basic-functions aufgerufen - diese ist nicht dokumentiert und liegt nicht mit ab...  Arrow was steckt dahinter?

'Hoffe Du liest hier mit - dank Dir für eine Antwort Smile  


   
AntwortZitat
 Head
(@head)
Vorsichtiger Stromfühler
Beigetreten: Vor 1 Jahr
Beiträge: 79
 

Übrigens, ich habe einen DPM8608-485 von Ali bestellt und mich jetzt doch dagegen entschieden. Wenn jemand aus Frankfurt/Wiesbaden/Mainz kommt und Interesse an dem Teil hat könnten wir auch ein wenig zusammen basteln, Software kann ich.


   
AntwortZitat
(@raspi)
Newbie
Beigetreten: Vor 1 Jahr
Beiträge: 1
 

@monokristallin 

Hallo, gibt es denn schon eine Option ohne die Adapter-Platine zu empfangen und zu steuern? Oder hab ich vielleicht nicht genau gelesen? Hab momentan den vom DPM8624-485 mit mitgelieferten USB-Anschluss an einen Raspberry 2 angeschlossen. Wird auch soweit erkannt. Weiter komme ich jedoch nicht.

... Update am frühen morgen ...

Die Kommunikation läuft jetzt. Hab doch nicht aufmerksam gelesen. Der gelieferte USB-Anschluss ist schon ein TTL/RS485 Adapter. In deinem Python-Script hast du oben bei "Be aware" gut beschrieben, dass Protokoll auf "0" bleiben soll (The power supply has to be set to "simple protocol"). Das war bei mir das Problem. 

Also alles immer genau lesen!!!

Nerd

 ... tolles Forum Inlove  

Diese r Beitrag wurde geändert Vor 1 Jahr von raspi

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

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


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

Hallo zusammen,

 

ich habe die letzten Wochen mal meinen Wemos D1 mit dem Script zum Laufen gebracht und habe auch versucht mit Tasmota einige Erfahrungen zu sammeln.

Dem Script habe ich MQTT-seitig nachgeholfen, indem ich folgendes als >B Sektion eingebaut habe:

>B
smlj=0 ;disable publishing at MQTT teleperiod, on boot
->sensor53 r

if mqtts>0
then
=#publish
endif

#publish
+>Subscribe V, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sVolt, msg
+>Subscribe C, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sCur, msg
+>Subscribe SW, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sSwitch, msg

Dadurch habe ich den Workaround geschaffen, dass ich zumindest per MQTT Explorer z.B. im jeweiligen topic 

Topic: tele/tasmota_owndevice/SENSOR/sVolt/
Message: {"msg":"12.00"}

Topic: tele/tasmota_owndevice/SENSOR/sCur/
Message: {"msg":"5.00"}

Topic: tele/tasmota_owndevice/SENSOR/sSwitch/
Message: {"msg":1}

alles soweit steuern kann. Mein Wissen zu mqtt und tasmota ist noch sehr begrenzt und mir ist bewusst, dass dies nicht die schöne Art ist, aber bislang das Beste, was ich so googeln konnte. Am Liebsten würde ich gerne in tasmota den DPM8624 als Device anlegen und per eigener Firmware als Device im Home Assistant auftreten lassen. Aber ich konnte leider weder so eine tasmota device Konfiguration finden, noch in HA irgendwelche Geräte, wo die Entitäten Inputfelder haben. Den Switch könnte man ja noch vielleicht hinbekommen, aber so schöne Eingabe- / StepUp- / StepDown- Felder wie auf der Weboberfläche?!

Egal. Ich hoffe, dass dies hier irgendjemand nützlich findet.

Da das komplette Script mit Änderungen zu groß ist, habe ich einige Kommentare gelöscht und komplett sieht es dann wie folgt aus (wobei der Name des MQTT-Devices noch angepasst werden muss)

>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=60
smlj=0 
->sensor53 r

if mqtts>0
then
=#publish
endif

#publish
+>Subscribe V, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sVolt, msg
+>Subscribe C, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sCur, msg
+>Subscribe SW, tele/%Name des eigenen MQTT Gerätes%/SENSOR/sSwitch, msg

>R
smlj=0 

>S
if upsecs>3
then
smlj=1 ;re-enable publishing at MQTT teleperiod, after boot
endif

>W
bu(SW "DPM 8624 ON" "DPM 8624 OFF")
nm(0.0 60.0 0.01 V "DPM Ausgang (V)" 200 2)
nm(0.0 24.0 0.01 C "DPM Ausgang (A)" 200 2)

>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,010310030001
1,010302SSssxxxx@i0:100,DC Spannung (set),V,sVolt,2
1,010302SSssxxxx@i1:1000,DC Strom (set),A,sCur,2
1,010302SSssxxxx@i2:1,Switch (set),,sSwitch,0
1,010302SSssxxxx@i3:100,DC Spannung (disp),V,dVolt,2
1,010302SSssxxxx@i4:1000,DC Strom (disp),A,dCur,2
1,010302SSssxxxx@i5:1,Temperatur,C,cTemp,1 
#

   
wm2103 reacted
AntwortZitat
Seite 3 / 6
Teilen: