Im Folgenden wird eine relativ einfache mikroprozessorbasierte Sitzheizungssteuerung für einen VW Polo dargestellt.
Allgemeines
Im Freundeskreis wurde nach dem ziemlich kalten Sommer 2010 das Nachrüsten einer Sitzheizung in einen VW Polo beschlossen. Nun ist soetwas mit Originalteilen unverschämt teuer. So wurde auf eine fertiges Sitzheizungkit der Firma Waeco zurückgegriffen. Leider ist der Steuerungskomfort dieser Lösung minimal, es gibt drei Zustände: Aus, 1/2 Leistung, volle Leistung. Dabei kann man dies mit selbst mit einer sehr langsamen PWM problemlos wesentlich besser steuern. Auf einer, leider nicht mehr vorhandenen, Webseite wurde eine Schaltung mit einem analogen PWM-Generator vorgeschlagen, welche zunächst in Betracht gezogen wurde. Allerdings ist gerade das Modifizieren der sowieso sehr teuren Original VW-Steller eine preislich eher unattraktive Tätigkeit. Ferner fehlte uns eine Batterie-Unterspannungsüberwachung, nichts was nicht ein Komparator mit Hysterese auch gekonnt hätte, aber dies hätte den Bauteilaufwand noch einmal erhöht.
Der Auf- und Einbau solcher Schaltungen sollte nur mit fundierten Fachkenntnissen ausgeführt werden! In KFZ wird mit relativ großen Strömen gearbeitet welche bei unsachgemäßem Umgang schnell zu Bränden führen!
Schaltplan
Funktionsbeschreibung
Auslesen der VAG-Schalter
HINWEIS: Dieser Abschnitt bezieht sich ausschließlich auf Schalter der Bauart FIXME. Andere VAG-Sitzheizungsschalter können sich anders verhalten!
In dem Bedienelement der Sitzheizung sind mehrere Funktionen eingebaut. Zum Einen ein Schalter welcher in der Stellung "0" öffnet und den Stromkreis unterbricht. Ferner vermutlich ein 5k Ohm-Potentiometer welches die den Stellbereich in einen Widerstandsswert umsetzt und ein zuletzt ein Reihenwiderstand von etwa 2.7k Ohm. Diese Werte sind aus einer kleinen Messreihe gewonnen, die Differenzen der gemessenen Werte sind über die Toleranz von 10% bei konventionellen Widerständen zu erklären. Neben der Tabelle findet sich auch eine Skizze des elektronischen Schalterinnenlebens.
Pos. | Widerstand in Ohm | AD-Wert, rechnerisch |
---|---|---|
0 | oo | ~255 |
1 | 7.6k | 158 |
2 | 6.3k | 146 |
3 | 4.9k | 1R |
5 | 2.5k | 88 |
Damit ist das (stufenlose) Auslesen des Bedienteils über einen
Spannungsteiler möglich. Hierzu wird der Widerstand R auf der
rechten Seite der obigen Skizzze zu 4k7 Ohm gewählt. Daraus ergeben sich
die 8-bit A/D-Wandlerwerte wie sie in der Tabelle angegeben werden. Mit
diesen kann dann die Routine calc_pwm das einzustellende Tastverhältnis
(255 = Maximum bis 0 = Aus) berechnen:
-- Everything above 160 is considered "off"
if (tmp>160) then
return(0);
end if
-- Now take tmp-88 (minimum expected resistance)
tmp=tmp-88;
-- Clip to zero if an underflow happens
if (tmp<0) then
tmp=0;
end if
-- Scale to 255: Because (ADVAL_1 - ADVAL_5)=70 and 255/70=3.64
-- So making it a little faster we mulitply by 3.2 which is
-- a multiplication by 32 (equal to shl 5) and a division by ten.
tmp=tmp<<5;
tmp=tmp/10;
if (tmp>255) then
tmp = 255;
end if;
return(255-byte(tmp));
Tiefentladeschutz
Um zu verhindern dass diese Schaltung eine evtl. ohnehin schon leere Bordbatterie weiter leert und damit das Starten verhindert bzw. den Notlauf bei defekter Lichtmaschine verkürzt ist eine Vorrichtung zum Tiefentladeschutz vorgesehen. Dieser wird über einen weitern A/D-Kanal (AN2) des PIC implementiert und besitzt eine programmierte Hysterese um ein Flattern bei Betriebsspannungen gerade am Grenzwert zu unterdrücken. Hierzu wird die Batteriespannung direkt am Eingang abgegriffen und über einen Spannungsteiler mit dem Faktor 1:4,9 heruntergeteilt.
Damit ergibt sich bei einer Referenzspannug von +5V ein Faktor von 10,4 1/V [ \( V_x \cdot \frac{1}{3.9+1} \cdot \frac{255}{5 V} = V_x \cdot 10.4 \frac{1}{V} \) ]. Dies lässt sich dann bequem weiterverarbeiten. Es wird die globale Variable vbat_ok eingebaut welche sowohl den PWM-Ausgang deaktiviert als auch die Schaltschwellen beeinflusst. Die Funktion check_vbat() sieht wie folgt aus:
procedure check_vbat is
var byte curval;
-- Get A/D value of channel 2
curval=get_ad(2);
if ( vbat_ok == false ) then
-- Minimum 12.5 V when coming out of a low-power state
if ( curval >= 130 ) then
vbat_ok = true;
end if
else
-- Hysteresis for falling edge:
-- Minimum 11 V when entering low-power state
if ( curval <= 114 ) then
vbat_ok = false;
end if
end if
end procedure
Leistungsteil
Der Leistungsteil besteht aus IRFU 3711Z. Diese können eine Verlustleistung von weit mehr als 5W im Normalbetrieb aufnehmen. Der Rds(on) beträgt ca. 5,7 mOhm, damit ergibt sich bei einen Nennstrom pro Kanal von 3.7A eine Verlustleistung von etwa 0,078W.
[Download]
- sitzheizung.tgz: Archiv der PIC-Firmware, ist in JalV2 geschrieben (vgl. http://casadeyork.com/jalv2/)
- sitzheizung.T3001: Schaltplan und ein noch unfertiger Layout-Entwurf.