I am building an integration adapter for someone to use their steering wheel audio controls with an aftermarket Panasonic head unit.
I've found the specs for the buttons. They change the resistance between the + and - steering wheel control leads coming off the wiring harness. Easy enough. I built a voltage divider circuit on a breadboard (V+ to 10k, 10k to both the A0 input and to the buttons, buttons to ground) and wrote a sketch to calculate the ideal ADC reading (allowance of +/- 10%) based on the expected resistance of the button. That works (*mostly).
Oddly, there isn't much info on the fancy head unit. It has a navigation input (for a mapping system that was never produced, AFAICT), a system expansion connector (for the iPod, TV/XM tuner, and Bluetooth modules) that I can't find any info on, and a "remote in" lead designated as "not used" in the manual. Turns out, this is just a secondary IR eye input. By using a 3-pin IR receiver and a pulse decoder sketch, I was able to record the sequences that the included remote sends. Then, I "quantized" them to nice round numbers, and successfully played them back on a digital output.
So at this point, I have a regulated high-power 12V PSU running the stereo, connected the Arduino, and I can control the source, mute, volume, and scan. Great.
Now, here's where I ran into some trouble... The mute and volume up buttons have very low resistance (22 and 90 ohms, respectively). The others (200 - 1.15k, and 4.7k at idle) are stable and everything's great. The low two worked fine when I powered the Uno from my computer (4.83v from USB) and an AC-powered hub (almost exactly 5.0v), but when I used a 7805 from the 12V PSU (roughly 5.2v), the mute and vol-up buttons were no longer detected.
My suspicion is that the voltage reference is very critical at low impedances. All my resistors for testing are 1%. I doubt Subaru was that picky, so I'm aiming for stability and accuracy of the ADC to try and tighten up the sample consistency as much as possible. Also, being in Alaska, temperature-dependent drift will need to cope with -20 to 90F ambient or so. So.. external reference, or are there any good tricks to stabilize the internal one?
Car power is probably noisy as hell, so I'm looking for advice on that aspect as well. I would really appreciate recommendations for a good DC-to-DC solution. Using a linear regulator to drop 4-10v is probably not the best option, and I'm not sure if that, alone, would filter enough noise to prevent crashes or analog reference issues. Anyone trod down this path yet?
I will probably implement a transistor power switch controlled by the ACC lead on the harness, so standby power draw is probably a non-issue. The less, the better of course.
I've attached my sketch -- both for the ADC sampling details, or just in case anyone finds it useful.
EDIT: I forgot to mention -- the end goal is to send a PCB design to Express PCB and have the entire thing built into a metal project box hidden behind the console. So, I have complete control over the design and layout for optimization of ground and power, etc. I just need to know what to expect given the relatively harsh operating environment and sensitive analog stages.
PanaIR.ino (7.86 KB)
