Forum: Analoge Elektronik und Schaltungstechnik Steuerung einer Pool Wärmepumpe


von Dominik (dominik_k575)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Pool Wärmepumpe (Marke: wellness2wellness) und würde diese 
gerne mit einem ESP32 via WLAN steuern. Anbei ein paar Bilder der 
Steuerungsplatine.

Die Platine hat 4 Knöpfe:
 - Ein/Aus
 - Temperatur rauf
 - Temperatur runter
 - Modus

sowie 2 LEDs die den aktuellen Betriebsstatus zeigen:
 - Silent Mode
 - Normal Mode
 - Aus (keine LED leuchtet)

Nun ist mein Ziel, dass ich den Taster Ein/Aus sowie den Taster Modus 
via ESP32 steuern möchte, sowie den Status der LEDs verarbeite um zu 
erkennen in welchen Status sich die Wärmepumpe befindet.
Die Platine selbst wird mit 12V versorgt, darauf ist noch ein 
Spannungsregler 78M05.

Folgendes mein Plan für die Taster:
 - Messung der Spannung am Taster
 - Messung des Stroms beim Überbrücken des Ein/Aus Tasters
 - Anhand des Stroms und Spannung Berechnung des Basiswiderstands für 
einen NPN Transistor (z.B. 5V / (10mA/200) => 100k Rb)
 - Gleiches für den Modus Taster

Und hier mein Plan zur Erkennung des aktuellen Status anhand der LED:
 - Spannung an der LED messen wenn sie an ist
 - Spannungsteiler mit 2 Widerständen bauen, damit ich die Spannung auf 
3V bekomme
 - Die 3V vom Spannungsteiler bzw. 0V wenn LED aus an einem GPIO 
anschießen der als Input konfiguriert ist
 - Gleiches für die 2. LED

Die Versorgung des ESP32 würde ich über die 12V mit einem DC-DC Step 
Down machen.

Ich würde mich über Feedback freuen ob das so funktionieren könnte oder 
ich was falsch bedacht habe. Danke!

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Die Taster arbeiten alle höchstwahrscheinlich hart gegen Masse, da 
kannst Du Dir die Strom-Berechnung sparen. Schalttransistor wie 'nen 
BC547C mit 10..22k in Sättigung und alles wird gut.

Bei den LEDs musst halt mal schauen wie die beschaltet sind, 
wahrscheinlich ist ein Pol +5V oder Masse und der andere geht an den 
Vorwiderstand der LED. Am anderen Ende dieses Widerstandes kann man 
prima messen, notfalls über einen hochohmig angebundenen Transistor.

Wenn die LEDs mit der Anzeige gemultiplext sind, dann wird's schwerer. 
Evtl. geht dann was über einen Optokoppler parallel zur LED wenn der 
Treiberstrom dafür ausreicht.

: Bearbeitet durch User
von Dominik (dominik_k575)


Lesenswert?

Genau, die Taster sind alle gegen Masse.

Danke für die Info mit den LEDs und die Optokoppler Idee. Eventuell 
finde ich auch noch einen anderen Punkt der einen sauberen Zustand 
wiederspiegelt.

Dann werde ich mich mal dran machen und das ausprobieren.

Danke für deine Hilfe!

von Dominik (dominik_k575)


Lesenswert?

Hi,
du hast Recht, die LED ist irgendwie mit der 7 Segment Anzeige 
zusammengeschaltet. Wie funktioniert das? Mir ist das nicht ganz klar. 
Die Spannung ist immer nahezu gleich an beiden Polen der LED.

Wenn ich den Optokoppler parallel schalte, was für einen würdest du 
empfehlen? Habe noch nir mit Optos gearbeitet.

Danke!

von Dominik (dominik_k575)


Lesenswert?

Ich habe mich mal schlau gemacht wie das mit den multiplexten LEDs ist.

Aus meiner Sicht brauche ich ja dann eigentlich nur die Eingänge der 
LEDs prüfen und abhängig von deren State HIGH/LOW müsste ich wissen 
welche LED leuchtet? Was mich wundert ist, dass ich gestern bei der 
Messung an der LED auf der Kathode immer ca. 1,6V hatte und auf der 
Anode bei EIN (eine von 2 LEDs) 2,5V und bei AUS (alle LEDs aus) 2,0V. 
Bedeutet aus meiner Sicht, dass bei 0,4V die LED wahrscheinlich nicht 
anspringt, aber darüber (0,5-0,6V?).

Wenn ich das richtig verstehe, muss ich also die 2,0V auf 0V bringen und 
die 2,5V auf 2,5V lassen damit ich es als Input für den ESP32 verwenden 
kann. Oder einen Bauteil der bei 2,1-2,4V schaltet. Oder ich verwende 
die analogen Inputs des ESP32.

Für einen Tipp was die "sauberste" Lösung ist, wäre ich dankbar.

von K. S. (the_yrr)


Lesenswert?

Dominik schrieb:
> Was mich wundert ist, dass ich gestern bei der
> Messung an der LED auf der Kathode immer ca.

womit gemessen? wenn die gemultiplext ist, bringt dir ein Multimeter 
rein garnichts. bestenfalls zeigt es dir den RMS Wert an, falls es das 
kann. Wenn du was sehen willst, brauchst du schon ein Oszi. Ansonsten 
einfach den Tipp mit Opto + Vorwiderstand befolgen.

von Dominik (dominik_k575)


Lesenswert?

Hi,
ja, mit Multimeter gemessen. Sorry, aber kannst du mir erklären warum 
das mit Multimeter nicht funktioniert?
Wenn da ein Signal drauf wäre, dann würde ja die LED blinken oder 
weniger hell leuchten. Multiplext bedeutet ja nur, dass über die weniger 
Ausgänge mehrere LEDs steuern können. Der Ausgang ist aber dennoch 
stabil HIGH oder LOW und nicht moduliert. Ansonsten müsste die LED ein 
Signal verarbeiten.

Schon mal danke für deine Hilfe!

von Dominik (dominik_k575)


Lesenswert?

Ich glaube jetzt verstehe ich es, wenn natürlich 2 LEDs leuchten, dann 
müssen die Ausgänge klarerweise schnell umgeschaltet werden und somit 
ist es mit einem Multimeter nicht messbar.

Ok, dann werde ich einen Optokoppler parallel schalten. Ich würde 
einfach 10k Vorwiderstand probieren und testen ob der Optokoppler mit so 
wenig Strom "schaltet". Gibt es Empfehlungen welcher Opto für so eine 
Schaltung gut verwendbar ist?

Danke euch für die Hilfe hier!

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

10k sind etwas viel, ich würde das mit 1..2mA Strom durch die LED des 
Optokopplers probieren. Haben die LEDs ihrerseits Widerstände (kann 
keine erkennen) oder wird deren Strom durch den Treiber begrenzt? Was 
ist IC3 für ein Typ?

Von Optokopplern gibt es meistens Einteilungen nach CTR, also danach, 
wieviel Strom ihr Ausgang in Abhängigkeit vom LED-Strom zulassen würde. 
Optokoppler haben da eine recht hohe Exemplarstreuung, beim 
Allerwelts-Optokoppler PC817 z.B. kann man welche mit 50..600% CTR 
bekommen. Daher am besten einen Optokoppler mit möglichst hoher CTR 
nehmen und die Schaltung so auslegen, daß sie auch mit deutlich weniger 
klarkommen würde.

Falls die Parallelschaltung nicht funktioniert, kann man noch einen 
Schritt weiter gehen - originale LED rausschmeißen, Optokoppler an ihrer 
Stelle rein, die originale LED kann man dann entweder über die eigene 
Schaltung weiterhin leuchten lassen oder evtl. braucht man sie sowieso 
nie wieder.

Bei der Signalauswertung daran denken, daß man am Ausgang des 
Optokopplers die PWM-Frequenz des LED-Multiplexing sieht, da kommt also 
kein stabiles Signal raus. Dafür muss man selbst sorgen, entweder über 
ein RC-Glied oder in Software auf seinem µC.

von Fred F. (fred08151)


Lesenswert?

Der 7805 ist doch ein Linearregler, der verheizt unnötig.
Der ESP läuft mit 3,3 Volt, wenn du eine 5 Volt-Versorgung hast, ist da 
auch ein Linearregler drauf. Also warum nicht gleich von 12 Volt einen 
Stepdown auf 5 Volt für Platine und ESP ?
Oder gar einen Stepdown von den 5 Volt auf 3,3 für den ESP.

von Dominik (dominik_k575)


Lesenswert?

Die LEDs haben keine Vorwiderstände. So wie ich es sehen konnte, sind 
die direkt am TM1637 dran. Ich versuche mal einen Optokoppler mit 
garantiertem hohen CTR zu finden und werde den parallel schalten. Den 
LTV-817-C hätte ich da gefunden, muss nur mehr einen Distributor finden.

Den Vorwiderstand vom Optokoppler rechne ich mal mit einer Spannung von 
3V. Wenn der Optokoppler ca. 1,2V nimmt, so bleiben 1,8V am 
Vorwiderstand und somit wären es bei 1mA 1k8 Ohm.

Um das PWM Signal zu "glätten" werde ich ein RC-Glied einbauen, damit 
ich am ESP32 einen sauberen Zustand erhalte und der nicht ganze Zeit 
rechnen muss.

@Fred, ich habe schon einen Stepdown von 12V auf 3,3V drin der mir den 
ESP32 versorgt.

von Fabian H. (hdr)


Lesenswert?

Das ist Murks. Gehe lieber auf die Verbindung zwischen Prozessor und 
TM1637 und lausche dort die Datenübertragung mit. Es ist ein ein 2-wire 
Interface. D.h. du brauchst auch nur zwei Eingänge am ESP, wovon einer 
einen Interrupt triggert. In diesem liest Du dann das aktuelle Bit des 
zweiten Eingangs ein und schiebst es in eine Variable.

von Dominik (dominik_k575)


Lesenswert?

Fabian H. schrieb:
> Das ist Murks. Gehe lieber auf die Verbindung zwischen Prozessor und
> TM1637 und lausche dort die Datenübertragung mit. Es ist ein ein 2-wire
> Interface. D.h. du brauchst auch nur zwei Eingänge am ESP, wovon einer
> einen Interrupt triggert. In diesem liest Du dann das aktuelle Bit des
> zweiten Eingangs ein und schiebst es in eine Variable.

Diese Lösung gefällt mir gut, weil dann könnte ich sogar alles mitlesen 
was an den TM1637 gesendet wird und somit auch die aktuelle Temperatur 
(die am 7-Segment angezeigt wird) auslesen.
Da muss ich mich mal schlau machen wie das TM1637 Protokoll aussieht 
bzw. wie ich es mit ESPHome dekodieren kann, da ich das als Basis 
verwende.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Die LEDs haben keine Vorwiderstände
Das ist schlecht, dann ziehen sie die Spannung weg, die für einen 
Optokoppler mitsamt Vorwiderstand bleiben müsste. Keine Ahnung wie hoch 
die Spannung am LED-Treiber für eine LED sein darf, falls es für 
Optokoppler und die LED in Reihe reicht, könnte man das probieren.

Den Datenverkehr zum LED-Treiber mitlesen hatte ich auch schon drüber 
nachgedacht, aber das hängt davon ab, wie fit Du mit dem ESP32 bist.

von Harald W. (wilhelms)


Lesenswert?

Dominik schrieb:

> Nun ist mein Ziel, dass ich den Taster Ein/Aus sowie den Taster Modus
> via ESP32 steuern möchte,

Wenn man sicher gehen will, nimmt an einfach zwei kleine Reedrelais.
Dann braucht man sich um die Signale, die über den Taster laufen,
nicht zu kümmern.

von Dominik (dominik_k575)


Lesenswert?

Ben B. schrieb:
>> Die LEDs haben keine Vorwiderstände
> Das ist schlecht, dann ziehen sie die Spannung weg, die für einen
> Optokoppler mitsamt Vorwiderstand bleiben müsste. Keine Ahnung wie hoch
> die Spannung am LED-Treiber für eine LED sein darf, falls es für
> Optokoppler und die LED in Reihe reicht, könnte man das probieren.

Stimmt, danke für die Info. Da müsste ich dann wohl eher die LED 
"umgehen" und in meine Schaltung integrieren.

> Den Datenverkehr zum LED-Treiber mitlesen hatte ich auch schon drüber
> nachgedacht, aber das hängt davon ab, wie fit Du mit dem ESP32 bist.

Ich denke das bekomme ich hin. Hab mir schon ESPHome Custom Sensor 
(https://esphome.io/components/sensor/custom.html) angeschaut. Wenn ich 
das auslesen der beiden GPIOs (CLK, DIO) dort einbaue und dann richtig 
verarbeite, sollte das klappen. Wird ein paar Tage/Wochen dauern das 
Software Projekt :) Aus diesem Code hier 
https://esphome.io/api/tm1637_8cpp_source.html sollte sich das Protokoll 
auch gut rekonstruieren lassen. Wenn es klappt, poste ich hier den 
custom code.

Harald W. schrieb:
> Wenn man sicher gehen will, nimmt an einfach zwei kleine Reedrelais.
> Dann braucht man sich um die Signale, die über den Taster laufen,
> nicht zu kümmern.

Ich versuche Relais in solchen Schaltungen wg. der Größe zu vermeiden. 
Daher hab ich den BC547C verbaut der die Taster sehr sauber ansteuert. 
Das funktioniert auch schon für alle 4 Taster. Aber ja, du hast Recht, 
mit dem Relais müsste man sich gar keine Sorgen machen.

von Dominik (dominik_k575)


Lesenswert?

Eine Frage, würdet ihr zwischen den TM1637 und den ESP32 noch einen 
Widerstand empfehlen? Ich hätte sonst mal sicherheitshalber 10k 
reingegeben zwischen TM1637 CLK/DIO und den GPIO des ESP32. Danke euch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.