Forum: Mikrocontroller und Digitale Elektronik ESP32 - Temperatursteuerung für Heizfolien


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Alex (suda_721)


Angehängte Dateien:

Lesenswert?

Ich soll für ein Projekt Heizfolien gezielt aufheizen. Dafür nutze ich 
bzw. soll folgendes nutzen:

-ESP32 Wrover

-BQLZR Runde Heizfolie 12V, 13W (siehe Amazon)

-L293D oder L298N

-zwei 9V Lithium Akkus (1000mAh) für den PIN an der H-Brücke der 
zusätzlich die Outputs des "Motors(=Heizfolie)" versorgt


Zusätzlich wurde mir empfohlen mit dem PWM Signal zu arbeiten und die 
H-Brücken (nur eine), damit ich mehr Spannung den Heizfolien geben kann, 
da der ESP32 max. nur 5V bereitstellen und diese zusätzlich noch für die 
anderen Bauteile verwendet und somit nicht die gesamten 5V bei den 
Folien ankommen. Ich programmiere mit µPython, aber dies ist nicht so 
wichtig, da C auch möglich ist. Ich habe die Messwerte, ab welchen 
Strömen/Spannungen welche Temperaturen sich einstellen. (-> Siehe 
Tabelle im Anhang!)

Zuerst habe ich mit Motorsteuerungen versucht nur eine Folien zu 
erhitzen, jedoch wurde diese nur langsam war, als wenn man die Folien 
direkt an eine 9V Batterien anschließt.


Im folgenden ist der Python Code für eine Motorsteuerung mit der ich 
zumindest die Heizfolien mit Potentiometer (max. 10kOhm) "anheizen" 
konnte. Später habe zwei 9V Batterien in Reihe an PIN 8 des L293D 
angeschlossen und selbst dann wurde die Folien nicht so schnell warm und 
nur max. 40 °C, was aber nicht sein kann, dann schon bei 9V 45 bis 50°C 
sein müssten. Die Heizfolie wurde anstelle des Motors an die PINS 3 und 
6 angeschlossen.

Nun der Code:

 from machine import ADC,Pin,PWM

 import time

 import math


 in1Pin=Pin(12, Pin.OUT)

 in2Pin=Pin(14, Pin.OUT)


 enablePin=Pin(13, Pin.OUT)

 pwm=PWM(enablePin,10000)

 adc=ADC(Pin(36))

 adc.atten(ADC.ATTN_11DB)

 adc.width(ADC.WIDTH_12BIT)

def driveMotor(dir,spd):

    if dir:

        in1Pin.value(1)

        in2Pin.value(0)

    else :

        in1Pin.value(0)

        in2Pin.value(1)

    pwm.duty(spd)

try:

    while True:

        potenVal = adc.read()

        rotationSpeed = potenVal - 2048

        if (potenVal > 0):

            rotationDir = 1;

        else:

            rotationDir = 0;

        rotationSpeed=int(math.fabs((potenVal-2047)//2)-1)

        driveMotor(rotationDir,rotationSpeed)

        time.sleep_ms(10)

except:

    pwm.deinit()


Ich wäre sehr dankbar, wenn jemand mir dabei helfen könnte damit ich 
eine Temperatursteuerung bzw. -regelung bauen kann. Ich weiß leider 
nicht, wie man nun weiter vorgeht. Es soll ohne spezielle Sensoren 
gebaut werden, sondern mit den vorgegebenen Bauteilen. Eventuell mit 
Schaltern könnte man verschiedene Temperaturstufen entwickeln. Aber 
zentral will ich verstehen, anhand des Codes, wie man mit dem ESP32(der 
nur 5V bereitstellt) gezielt einem Verbraucher, z.B 8, 9 oder 12 V 
zuführen kann. Vielen Dank!

: Bearbeitet durch User
von Thomas S. (thomas_s72)


Lesenswert?

Hallo,
zunächst einmal sehe ich im Schaltbild nur 5V und 3,3V, woher sollen die 
12V denn kommen?
Ist da eine Autobatterie oder andere 12V Quelle vorhanden?
Prinzipiell kann man die Heizfolie mit einem Bein an 12V klemmen, das 
andere Bein über einen NPN Transistor oder einen MOS-FET an Masse.
Der Prozesor kann dann mit einem einzigen GPIO den Transistor mit PWM 
steuern. Das Tastverhältnis für 6,7,8,9V muss man sich mal ausrechnen, 
Stichwort Effektivwert. Siehe hier:
https://www.redcrab-software.com/de/Rechner/Elektro/Rechteckimpuls-Effektivwert
Das beinhaltet aber keine Regelung da es keine Rückmeldung zur 
erreichten Temperatur gibt.

Mit dem Poti kann man sogar eine stufenlose Spannungsregelung erzeugen, 
Tastverhältnis in Abhängigkeit von der Potispannung.

: Bearbeitet durch User
von Alex (suda_721)



Lesenswert?

Im Anhang habe ich eine Variante mit LTspice erstellt und bin total 
fasziniert von den Transistoren. Ich habe nun die entsprechenden 
Transistoren bestellt. Der 2N2222 eignet sich besonders gut mit 0,8 Ic.

Gibt es noch bessere Transistoren die einen max. Strom von bis 1,2 A 
zwischen Collector und Emittor aushalten. Mir würde deine Erfahrung sehr 
helfen.

Ich habe nun beim Basissignal (ESP32) einen Strom von ca. 18mA (weil ich 
später noh eine rote LED verbauen würde und dieser Strom dafür 
ausreicht, damit er nicht kaputt geht. Dadurch hat man einen Ic von 
0,77A, was für eine Heizfolie (eventuell parallel schalten zum "Poti", 
zwischen A und B auf dem Schaltbild(Strom-und Spannungsverlauf LTspice) 
zu sehen) ausreicht, um auf ca. 45-50°C zu erhitzen.

wie würdest Du die Widerstände wählen? Ich brauche einen max. Strom von 
1A (und 9V) damit die Heizfolien mit fast max. Leistung betrieben werden 
können.
Anhand der oben genannten Messwerten würde bis eine Spannung von 9V und 
einem Strom von 0,751A die eine Heizfolie bis 50°C warm werden, was 
schon mal sehr gut ist.

Vielen Dank und es macht sehr viel Spaß!

: Bearbeitet durch User
von Rene K. (xdraconix)


Lesenswert?

Ich weiß nicht ob du die Funktionsweise einer solchen Heizfolie 
verstanden hast. Die betreibst diese mit 12V, und nur mit 12V... Wenn 
deine gewünschte Temperatur erreicht ist schaltest du sie ab, 
unterschreitet er einen Schwellwert - schaltest du sie wieder ein.

Schau dich Mal bei 3D Druckern und dessen Heizbetten um, schau dir dort 
etwas ab und verstehe es.

von Thomas S. (thomas_s72)


Lesenswert?

Hallo,
dem 2N2222 musst du eventuell recht viel Basisstrom spendieren oder die 
als Darlington verschalten, das hat aber dann wieder eine höhere 
Restspannung zur Folge (es bleiben dann etwa 1V am Kolektor übrig).
Besser und einfacher ist es mit einen MOSFET: Si2302DS z.B.

Der kann mit 3V gut schalten und kann über 2A ID, da ist dann etwas 
Reserve.
Schaltungsvorschläge gibts im Internet.

Beitrag #7336835 wurde von einem Moderator gelöscht.
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.