Sitzheizungssteuerung für einen VW Polo

Mon 12 November 2012

Analogtechnik, Auto, Elektronik, PIC

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

Schaltplan der Steuerplatine

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

Elektrischer Aufbau des Schalters
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]