My ski car is a 1997 Subaru Outback. It’s a great ski car, but it has one big drawback: it lacks the seat heaters that we have in our Legacy GT.
I’ve decided to remedy that. My first thought was to find some seats from a wrecked car and just install them, but that has a couple of drawbacks. The first is the cost; seats are expensive and their shipping is also expensive. The second is that most heated seats are leather, and leather and rain/wet snow do not get along well. When doing some browsing, I came across the seat covers from Wet Okole that have heaters as an option. This gives me a set of heated seats plus a water-tolerant cover material, for quite a bit less money. They come with a wired controller that has three power levels, accessed by pressing a button and indicated by LEDs.
I could have just wired them into the car and been done with it, but I liked the factory approach better, both for appearance and interface::
The controller has a 4-position switch on each side with detents.The rotating switch part has a little window in it so that you get an LED “on” indication that moves to show the power level. Simple, clean, and not something you will bump. So, my plan is to get one, figure out how it drives the factory heaters, and adapt based on that. The exact adaptation will depend on the implementation; it might be purely a wiring problem (though I suspect not because the factory shop manual shows 4 connections to each heater), I might build something to adapt the current controller’s output to what I need, or I might build a PWM controller from scratch. Or perhaps some combination of options.
Of course the internets can supply me one for a reasonable cost (though in tan because that’s the interior color of the car). Nicely, the switch goes together with lock-together connectors, which were easily released, and left me with the following:
The wheel controls move little a little wiper up and down over the circuit board, making and breaking connections. Sort of a cheap version of a rotary switch. Here’s a close-up of the board:
This side mostly just has LEDs and switches. Ten of the LEDs are part of the general illumination for the instrument panel gauges, and the remaining two are “power on” indicators. The backside connector (which I didn’t take a picture of) connects to the 9 heavy terminals at the top of the board. Armed with a schematic of the wiring in the board, I started tracing:
Not surprisingly, there is a relay driven off the accessory circuit (which I may have to add to the system) that power the seat controller. I then started mapping the pinout of the connector (C2) with the terminals on the board. I labeled the board terminals A-J on the LED side, as follows:
A B C H J
D E F G
The mapping is as follows:
Pin on C2 | Board pin | Description |
1 | A | Seat 1 |
2 | B | Seat 1 |
3 | C, D | Seat 2 ground |
4 | H | Seat 2 |
5 | J | Seat 2 |
6 | C, D | Chassis ground |
7 | C, D | Seat 1 ground |
8 | E | Illumination dimmer (ground) |
9 | F | Seat 2 12V |
10 | F | Seat 1 12V |
11 | F | 12V from seat heater relay |
12 | G | Illumination 12V |
I hooked up 12V to the illumination circuit, and got the LEDs to light up. I then hooked up 12V and ground to pins F and C, and played around with the slider switch. The “power on” led did show up in the different situations, but I didn’t see any change in voltage on the seat connections. I had expected that maybe this would be a PWM controller, but that’s clearly not the problem.
I don’t plan on trying to reuse the stock connector, so I got out my dremel and used the heavy abrasive disk to cut off the terminals from the back, which exposed the backside of the board. I then unsoldered all of the connections, which made the board more visible.
First impressions… Well, it’s clearly two separate identical circuits with a bit of auxiliary circuitry. TR1 and TR2 are very likely transistors, and given their side and bonding to the board, they are the ones switching the heater on and off.
Let’s start searching for components. The transistors say K3386, which ends up being a 2SK3386 N-channel MOSFET. It’s a MOSFET designed – not surprisingly – for high current switching applications. It has a resistance of around 36 milliOhm at 17 amps current (!) when driving with a 4V switch current, which means it will be dissapating around 600mW, which is pretty low. A good choice.
Given the number of discrete resistors and capacitors and the use of two separate chips, it’s unlikely that this is a microcontroller implementation. A search for the 10393 leads me to the BA10393 Dual Comparator. This makes things a little clearer; what we have is a traditional thermostat-type controller. Two of the wires to the heater are connected to a thermistor in the heater, and the rotary switch sets the voltage that feeds into the comparator. A fairly elegant design, and you can easily tune it merely by changing the resistor values. I haven’t traced the use of the second comparator, but my guess is that it merely buffers the output of the second channel of the slider to turn on the “power on” LED. Not sure what TR3 is for.
Now that I’ve torn it apart, I have a general idea of the plan.
I can’t reuse the circuit because my heater doesn’t have a thermistor in it, so I’m going to go with a microcontroller-based PWM solution. It will be pretty straightforward:
- I’ll send 5V to the board, connected to one slide of the wiper contact.
- I will pull four separate connections from the other part of the wiper back to the microcontroller.
- I will send two grounds to the board for the “power on” LEDs.
- I will send power/ground for the existing general illumination LEDs, using the existing approach.
I need a microcontroller with 8 inputs and 4 outputs and preferably two outputs of PWM. That will make the code pretty trivial to write.
My next step is to dig into the outback and see what wiring is there. I *think* the power wiring is probably there because it’s on the same harness as the power outlet in the console, but I could be wrong. Or, I can just power off the console power outlet, assuming there’s enough ampacity.