Hoymiles HM-1500 wird heiß - einige Ideen zur Kühlung

Nach nun rund 2,5 Monaten und einiger Bastelei möchte ich hier nun meinen vorerst Finalen Stand präsentieren.
Wie gesagt hat das alles dieses Video bei mir verursacht, wo einige ja der Meinung waren das es keinen Spaß macht sich Löterei anzuschauen :stuck_out_tongue:
Kleiner Seitenhieb vorbei, los gehts:

In meiner bisherigen Lösung habe ich eine smarte Steckdose bei 35°C ein- und unter 30°C wieder ausgeschaltet. In der Steckdose befand sich ein einfaches 12V Netzteil, an dem die drei 24V Lüfter betrieben wurden -> Hoymiles HM-1500 wird heiß - einige Ideen zur Kühlung - #61 von lethuer - Anleitungen / Tutorials - Akkudoktor Forum

Dieses einfache An und Aus war mir aber etwas zu wenig intelligent und ich wollte die Kühlleistung (Drehzahl) in Abhängigkeit der rückgemeldeten DTU Temperatur steuern.
Der eigentliche Plan die bisherigen 3 80mm 24V 2Pin Lüftern über eine PWM mit 25kHz zu betreiben war leider gescheitert, da die Pulspause zu kurz war als das sich der Strom über den Freilauf hätte abbauen können und somit war die Spannung mit einer getakteten PWM Spannung am Lüfter nicht wirklich zu beeinflussen.
Damit war nun also praktisch keine Drehzahlsteuerung möglich und ich sie durch 2 120mm 12V 4Pin Lüfter ersetzt, sieht dann jetzt so aus:

Die entsprechenden Vorlagen aus Thingiverse:

Lüfter stl.zip (949 KB)

Fan Cover: Fan Cover
Fan Connector: Fan Connector

Schaltplan: EasyEDA
Prinzipiell sollte damit der Einsatz von handelsüblichen 5V, 12V oder 24V PWM Lüftern machbar sein !
Über die Versorgungsspannung der Lüfter wird auch der D1 Mini versorgt.

Schematic_Fansteuerung_2023-09-29.pdf (45 KB)

Einkaufsliste:

20230929 Einkaufsliste Fan Steuerung.docx (13.6 KB)

Code:

20231011 wr-lueftersteuerung 4pin - Forum.txt (7.57 KB)

Das eigene Gehäuse passend zu der verwendeten Lochraster Platine: onshape

Gehäuse stl.zip (134 KB)

Nun zur Funktion:

Frei wählbar ist ein Temperaturbereich in denen die Regelung aktiv sein soll, in meinem Falle 30°C-50°C.
In diesem Bereich wird der Duty Cycle also in Abhängigkeit von der rückgelesenen DTU Temp linear eingestellt.
Ebenfalls frei wählbar ist eine Einschalttemperatur, bei mir 35°C.
Unterhalb von 30°C schaltet der Lüfter dann wieder ab, oberhalb von 50°C wird mit dem ebenfalls frei wählbaren maximalen DutyCycle angesteuert (bei mir 50%).
Der maximale Duty Cycle ist von mir lediglich aus akustischen Gründen gewählt, ich höre den Lüfter bei 50% Duty Cycle kaum noch.
Sollte es mal zu der Situation kommen, dass trotz maximaler Kühlung die eingestellte maximal Temperatur dennoch für mehrere Sekunden überschritten wird, so wird ein Alarm ausgegeben. Wenn man mag könnte man sich den dann aufs Handy schicken lassen oder sonst was damit tun.
Den "Helper Temp Sensor" darf man ignorieren, war mein Debugging Schieberegler...
Bei Aktivierung des Schalters "manuelle Lüftersteuerung" jederzeit den Duty Cycle manuell so einstellen wie man ihn gerne hätte.
Zu guter Letzt werden dann noch die beiden Drehzahlen der Lüfter ausgewertet und angezeigt, man könnte hier sicher noch eine Meldung erzeugen sofern eine der beiden 0 ist trotz ausgegebenem Duty Cycle, dann wäre der Lüfter entweder kaputt oder das Kabel abgerutscht.

Der Yaml Code der Karte:

type: vertical-stack
cards:
- type: entities
entities:
- entity: switch.lufter_wechselrichter
- entity: number.wr_lufter_balkonkraftwerk_media_centre_min_temperature
- entity: number.wr_lufter_balkonkraftwerk_media_centre_max_temperature
- entity: number.wr_lufter_balkonkraftwerk_media_centre_start_temp
- entity: number.wr_lufter_balkonkraftwerk_media_centre_max_pwm
- entity: binary_sensor.wr_lufter_balkonkraftwerk_media_centre_alarm
- entity: input_number.helper_temp_sensor
- entity: input_boolean.balkonkraftwerk_manuelle_luftersteuerung
- entity: sensor.wr_lufter_balkonkraftwerk_lfterdrehzahl_fan1
- entity: sensor.wr_lufter_balkonkraftwerk_lfterdrehzahl_fan2
title: Lüftersteuerung
state_color: true
show_header_toggle: false
- features:
- type: fan-speed
type: tile
show_entity_picture: true
vertical: false
name: Lüftergeschwindigkeit
entity: fan.wr_lufter_balkonkraftwerk_media_centre_fan

Heute sah das dann so aus:
Der rot hinterlegte Bereich veranschaulicht, wann die smarte Steckdose nun eingeschaltet ist und die Lüftersteuerung somit prinzipiell ihren Dienst verrichten könnte.
Die grüne DTU Temperatur steigt im Laufe des Vormittages an, bis bei Erreichen der eingestellten 35°C der Lüfter mit rund 14% Duty Cycle anspringt.
Folglich sinkt die Temperatur leicht ab (32°C), wodurch auch der Lüfter langsamer wird (7%).
Nun steigt aber die blaue Solarleistung und damit der Strom im WR weiter an, was die Temperatur wieder auf 35°C und den Duty Cycle zurück auf 14% bringt.
Nach dem Mittagspeak sinken Leistung und folglich die Temperatur wieder, wodurch der Duty Cycle bis auf 0% heruntergefahren wird.

Und auch hier wieder der Yaml Code der Karte:

type: custom:mini-graph-card
entities:
- sensor.solar_temperature
- entity: input_number.balkonkraftwerk_helper_lufter_pwm
name: Fan Duty Cycle
y_axis: secondary
color: '#ffc400'
show_line: true
show_points: false
show_fill: true
- entity: input_number.wr_lufter
name: Lüfter
y_axis: secondary
color: red
show_line: false
show_points: false
show_fill: true
color_thresholds:
- value: 25
color: '#90ee90'
- value: 50
color: '#ff8800'
- value: 70
color: '#ff0000'
align_icon: left
align_state: center
show_points: false
height: 100
hours_to_show: 12
points_per_hour: 24
hour24: true
name: WR Temperatur
show:
graph: true
name: true
extrema: true
labels: true
labels_secondary: true
lower_bound_secondary: 0
upper_bound_secondary: 50

Da der Duty Cycle in ESP Home nicht auf 0% gesetzt werden kann habe ich in einen Helper "input_number.balkonkraftwerk_helper_lufter_pwm" genutzt und diesen in einer kleinen Automation verbaut.
Nun werden auch 0% angezeigt wenn der Lüfter aus ist und andernfalls wird der aktuelle Duty Cycle übernommen.

alias: Balkonkraftwerk Helper Lüfterzustand PWM
description: ""
trigger:
- platform: state
entity_id:
- fan.wr_lufter_balkonkraftwerk_media_centre_fan
condition: []
action:
- service: input_number.set_value
data_template:
entity_id: input_number.balkonkraftwerk_helper_lufter_pwm
value: >-
{{ state_attr('fan.wr_lufter_balkonkraftwerk_media_centre_fan',
'percentage') }}
enabled: false
- if:
- condition: state
entity_id: fan.wr_lufter_balkonkraftwerk_media_centre_fan
state: "off"
then:
- service: input_number.set_value
data_template:
entity_id: input_number.balkonkraftwerk_helper_lufter_pwm
value: 0
- if:
- condition: state
entity_id: fan.wr_lufter_balkonkraftwerk_media_centre_fan
state: "on"
then:
- service: input_number.set_value
data_template:
entity_id: input_number.balkonkraftwerk_helper_lufter_pwm
value: >-
{{ state_attr('fan.wr_lufter_balkonkraftwerk_media_centre_fan',
'percentage') }}
mode: single

Auch wenn es für die Anwendung sicher Overkill war, mir hat's Spaß gemacht und man wird ja nicht dümmer dadurch.
Und wenn es dann vl. noch jemand gebrauchen kann umso besser :slight_smile:

Was man noch machen könnte:

- bei Zeiten könnte man sicher mal eine Platine designen und dem Ganzen so einen schöneren Look verpassen. Den Link zum Schaltplan habe ich ja zur Verfügung gestellt. Feel free :slight_smile:

- für den Hoymiles 1500 würde ich mir noch Halter aus PETG vorstellen können, ich habe mir meine Halter einfach aus einem Stück Stahlband / Blechstreifen zurecht gebogen da 3d Designs beim ersten mal ja doch nie passen^^

1 „Gefällt mir“

Was ist das für ein Software-Hardware-System, was du da benutzt und was den yaml-Code verarbeitet? Das finde ich in deiner Beschreibung nicht. Ist das alles Teil des Ökosystems "ESPHome"?

@uwest,

Das ist doch eine richtig schöne Anleitung geworden.

Ändere doch Mal die Überschrift der ersten Post, so dass man erkennt was du alles beschrieben hast, und ich verschiebe den den Faden nach Anleitungen.

Wenn du möchtest.

Korrekt, die Steuerung ist alles ESPHome. Steht im Code der Lüftersteuerung oben aber habe ich nicht extra erwähnt.

nur die restlichen Karten etc sind klassisch HomeAssistant.

Ach so, also 2 verschiedene Systeme. Wie ist die Einarbeitungszeit in beide Systeme? Der Yaml-Code liest sich ja einfach.

Nja ESPHome ist buildin HomeAssistant, also praktisch ein AddOn.
Ich bin bei Leibe kein yaml Experte aber den Umstieg von ioBroker hab ich nicht bereut und kann es nur empfehlen…

@carolus

Kannst du gerne machen, auch wenn die letzten Beschreibungen nicht von mir sind.

Man hat den Thread gekapert, dann verdienst du auch die Ehre.

Hallo zusammen,

auch ich möchte meinen HM 1500 etwas kühlen, der hatte heute und in den letzten Tagen (Südbayern) über 50 Grad. Mein "Problem" ist die Stromversorgung eines Lüfters... deshalb meine Idee und Frage dazu: wenn ich einen 230V Lüfter mit 2,4W nehme, kann ich den zur Stromversorgung an das "kurze" Ende des AC Anschluss des WR (also von der silbernen Seite drauf gesehen rechts, wo String 1 und 2 angeschlossen werden) mittels Betteri BC01 Buchse stecken? Sind da immer 230V drauf, wenn der WR läuft? Dazu ein Thermoelement als "Schalter", damit der Lüfter nicht dauernd läuft, wenn der WR läuft. Sondern nur, wenn der WR warm wird.

Bin für jede Hilfe dankbar!

Viele Grüße, Andi

Der zweite Betteri ist direkt durchgeschliffen, da ist also immer 230V drauf. Man kann das grundsätzlich so machen, aber persönlich würde ich es nicht tun, weil es sehr schwer ist, dass wirklich sicher aufzubauen. Ein Lüfter, auf dem 230V sind, dürfte gar nicht so frei installiert werden. Selbst wenn du mit einem Netzteil auf 12V runter gehst, ist das Netzteil nicht für Betrieb im Außenbereich zugelassen.

Hast du nicht etwas Platz, um ein kleines 5W Solarmodul zu installieren? Oder wie schon beschrieben, die DC-Seite der Module anzapfen.

@win Ein zusätzliches, kleines Solarmodul will ich wegen der Optik und auch wegen Wind/Wetter nicht installieren. Die DC Seite (z.B. String 4) könnte ich anzapfen (mittels was am besten? Da bin ich für jeden Tip dankbar?), aber ich kann ja keinen 12 oder 24V Lüfter direkt dort anschließen, da brauche ich ja auch wieder Technik, die für den Außenbereich eher ungeeignet ist, denke ich...

Das ist lösbar. Eine Möglichkeit des Abzapfens wären sogenannten "Stromdieb-Klemmen". Da müsste man aber genauer schauen, was für Solarkabel passt. Oft findet man sie nur für den KFZ-Bereich. Solarkabel haben doppelte Isolierung, insofern stimmen die Durchmesser Isolierung zu Kabelquerschnitt nicht.

Eine andere Möglichkeit, die ich sympatischer finde: MC4-Stecker vom Modul abschneiden und neue MC4-Stecker anbringen. Hierbei ein dünnes zusätzliches Kabel mit einquetschen oder einlöten.

Eine weitere Möglichkeit wäre ein Y-Kabel, wo du den MC4 von einem Strompfad abkneifst und an die Lüfterelektronik anschließt.

Um auf 30-50 V auf 12V Lüfterspannung zu kommen, gibt es ganz billige DC-DC-Wandlerplatinen. Die in ein hinreichend dichtes Gehäuse einbauen und das Gehäuse unter dem Modul, wo eh keine direkte Feuchtigkeit hinkommt.

DC-DC Wandler z.B. sowas hier:

@win Vielen Dank, ich werde mir das Ganze mal ansehen, ob ich es evtl. so hin bringe!

Here it is:

Ich selber habe die Platine noch nicht bestellt oder gestestet, für den Fall der Fälle hier aber die nötigen Gerber Files:

Gerber_PCB_Fansteuerung_2023-11-05.zip (53.3 KB)

Als das WLAN mal nicht gaz so zuverlässig war habe ich noch festgestellt, dass bei nicht verfügbarem Temperatur Wert der DTU nicht der letzte Cycle eingestellt wurde sondern der Lüfter ausging.

Der Steuerung sollte also kein Wert "unavailable" zur Verfügung gestellt werden.

Hier der entsprechende Sensor, der das nun verhindert:

# Helper Wechselrichter Temperatur
- trigger:
- platform: state
entity_id: sensor.solar_temperature
not_to:
- unknown
- unavailable
sensor:
- name: Solar Temperature Helper
unique_id: solar_temperature_helper
state: '{{ trigger.to_state.state }}'
device_class: temperature
unit_of_measurement: '°C'

Nun habe ich aber noch folgende Frage:

Ich überlege diese Art der Steuerung unabhängig von HomeAssistant und DTU umzusetzen.

Dazu würde ich noch auf einen externen Temperatur Sensor zurückgreifen der dann auf den Wechselrichter angebracht werden würde.

Ist es möglich aus dem praktisch fertigen yaml Code eine eigene Software zu erstellen die dann geflasht werden könnte ?

Diese sollte noch eine eigene Oberfläche besitzen in der das heimische WLAN konfiguriert wird und Temperatur sowie Lüfterdrehzahl anzeigt.

Kleines Update:

die Platinen sind da und bei funktioniert es :slight_smile:

als nächstes begebe ich mich dann vielleicht mal an den Anschluss eines eigenen Tempfühlers.

der Vorteil läge eben darin, dass es so für jeden nutzbar sein sollte (also auch ohne HomeAssistant) da keine DTU nötig wäre mit der ich aktuell ja die WR Temperatur bekomme.

wie ich erfahren habe gibt es nämlich einen eigenen Webserver über den dann bereits eine Oberfläche zur Verfügung steht. Dort können dann die Einstellungen vorgenommen und Temperatur sowie Drehzahl angezeigt werden.

Das binary kann wohl auch direkt über ESPHome Web statt über HomeAssistant geflasht werden.

alternativ könnte man wohl ESPHome auch ohne HomeAssistant installieren und dann das Programm uploaden.

Ich weiß, schon halb tot hier, aber ich kanns Maul nicht halten.

Hab zwei HM1500 im Einsatz. sind waagrecht auf Ost/West 15° Gestelle montiert. der Luftzug vom Kamineffekt ist ausreichend um selbst bei Max Last bei 60° zu halten, was in meinen Augen voll OK ist.

Alsoo so einen WR nicht im warmen Dach verstecken, sondern einfach unter die Module und alles ist "cool".

Wenn 60° C für dich cool sind ist ja alles bestens.

Es gibt einige Bauteile, die finden das nicht cool.

Bei mir schnurrt derzeit bei 1.5 kW der Ventilator quasi im Dauerbetrieb und hält den 1500 bei 40°.

2 „Gefällt mir“

In meiner Welt ist Computer + Steckernetzteil + WLAN + DTU + programmieren übertrieben. Kannst auch mit ca. 10 Teilen aus der Bastelkiste zambaun, Spannung von 1 Panel abgreifen. Q1 misst Temperatur, muß aufm WR sitzen. Q2 verballert bissel Leistung, kleiner Kühlkörper.

Da reicht auch ein LM7808 Festspannungsregler, 2 100nF Kondensatoren und ein kleiner Kühlkörper. Mit 8V läuft ein 12V Lüfter in der Regel hinreichend schnell für ausreichende Kühlung. Temperatmessung ist überflüssig, einfach laufen lassen, stört doch nicht.

@uwest

Elkos z.B.