Heizdecken-Temperaturregler

Da ja nun wieder langsam die kalte Jahreszeit vor der Tür steht und ich seit diesem Jahr stolzer Besitzer eines kleinen Hundes bin, hatte ich die Idee, für seine Hundetasche eine kleine Heizdecke zu basteln, damit er an kühleren Tagen nicht so leicht friert. Als Heizelement verwende ich eine 12V / 36 W Heizfolie von Pollin, welche noch in einen Stoffüberzug eingenäht wird. Diese Folie wird über einen Attiny85 gesteuert, welcher die Isttemperatur der Heizfolie über einen LM35 Temperatursensor erfasst und aus der Soll-/Isttemperatur das benötgte PWM-Verhältnis berechnet. Das PWM-Signal wird vom Attiny an einen Mosfet (IRLZ34N) weitergegeben, welcher die Heizfolie schaltet. Also Stromversorgung habe ich einen 3S-Lipo bzw. im Auto die Versorgung über den Zigarettenanzünder vorgesehen. Wegen der Verwendung eines Lipo´s habe ich auch noch eine Spannungsüberwachung integriert, welche bei einer Unterschreitung von 10,8 V dieses durch eine LED signalisiert. Außerdem wird ab einer Spannung von ca. 10 V die Heizfolie abgeschaltet.

So sieht die Heizfolie aus. Die Anschlüsse sind ca. 400 mm lang, die Folie selbst hat die Maße 320 x 137 mm.

Die Reglerplatine. In der Mitte der Attiny85, rechts der 78L05 mit Abblockkondensatoren, links der IRLZ34N.

Der fertige Prototyp. Den LM35 habe ich mit Isoband auf die Heizfolie geklebt, unten die Reglerplatine mit der Unterspannungs-LED.

So, hier die fertige Heizdecke. Als Stoffüberzug musste eine Bettwäsche von IKEA herhalten, als Gehäuse für die Steuerung habe ich ein leeres Schraubenschächtelchen verwendet.

Für unterwegs hab ich mir noch ein Anschlusskabel für den Zigarettenanzünder geschnitzt.

Erste Testläufe sehen ja schon mal vielversprechend aus :-)

Der Schaltplan der Regelung. Links der Spannungsteiler für die Überwachung der Versorgungsspannung. Als Gatewiderstand für den MOSFET habe ich einen 47 Ohm Widerstand verwendet. Da die PWM-Frequenz nur ca. 240 Hz beträgt, ist auch das Umladen der Gatekapazität kein Problem, Der Mosfet wird nichtmal ein bischen warm.

Hier noch der BASCOM-Code für den Attiny 85:

'Heizfolien-Temperaturregler
'Heizfolie mit FET an OCR0B (PB1)
'Temperatursensor LM35 an ADC2 (PB4)
'Spannungsmessung an ADC3 (PB3)
'Spannungsanzeige LED an PB2

$hwstack = 32
$swstack = 16
$framesize = 40


$regfile = "attiny85.dat"
$crystal = 1000000


Const Solltemp = 35
Const Faktor = 5 / 1023
Dim U As Word                                                     'Spannungsteiler Vcc--> 4,7 k

                                                                                '--> ADC3 --> 2,2 k --> Gnd'
Dim Temp As Single
Dim Messwert As Word                                        'LM35 an ADC2, gibt 10

                                                                                 'mV/°C aus
Dim Tempdiff As Single
Dim Ausgang As Single
Dim Channel As Byte
Channel = 0

Config Portb.2 = Output                                     'Spannungsanzeige LED
Config Portb.1 = Output                                     'Ausgang für Heizfolie
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer0 = Pwm , Prescale = 8 , Compare B Pwm = Clear Down

Do

Start Adc
U = Getadc(3)
Messwert = Getadc(2)


Stop Adc

Temp = Messwert

If U < 705 Then                                             'LED an, wenn Spannung unter

                                                                       '10,8 V
Portb.2 = 1
Else
Portb.2 = 0
End If

Temp = Temp * Faktor                                'Umrechnung ADC-wert Temp in °C
Temp = Temp / 0.01

Tempdiff = Solltemp - Temp                       'Berechnung Temperaturdifferenz 

                                                                      '(Solltemperatur 35 °C)

Ausgang = Tempdiff * 51                            'Berechnung des

                                                                      'PWM-Ausgangs für die Heizfolie

If Ausgang > 255 Then
Ausgang = 255
End If
If Ausgang < 0 Then
Ausgang = 0
End If
If U < 660 Then                                          'Abschaltung der Heizfolie unter 10 V
Ausgang = 0
End If

Ocr0b = Ausgang


Loop

End