Steering wheel remote control stalk adapter

Connect Ford Focus remote control to your Sony main unit

I was used to use easy-to-use MDs in car with my Sony MDX-C5960R MD player. However, my new Ford Focus (year 2004 model) was going to be equipped as standard with Ford's own CD player 6000CD with remote control stalk near the steering wheel. Finally, after my friend already driving with Focus said that the remote controller is a great thing to have, I needed to find a solution for it when replacing the original player with my Sony.

Note that the interface described here applies only to cars equipped originally with a Ford 6000CD or compatible player (e.g. Ford Focus 2004). Cars designed for other player models may have a different remote controller interface.

Interfaces

As you guess, Ford's remote control and Sony's RM-X4S are not compatible with each other. However, after searching the web for a while, I found out that both of them are simple resistor networks (as the remote controller of my Sony MZ-R2 MD Walkman).

My measurements of the Focus controller matched with Half_Geek's message on the Unofficial Empeg BBS:

Figure 1. Equivalent circuit for Ford Focus remote control for Ford 6000CD player.

I have checked later the Focus controller schematics from Ford's wiring diagrams, and it is correct. (Resistance values were not present in the manual.)

Because I do not own any Sony RM-X4S to measure, I had to rely on this Polish web page that shows the following circuit for the Sony RM-X2S remote control:

Figure 2. Equivalent circuit for Sony RM-X2S remote controller. [Source: www.studio24.prv.pl]

My MDX-C5960R officially supports RM-X4S controller. However, it seems to work correctly with these RM-X2S resistances. Now the only thing I needed was a circuit that converts the resistances used in Ford's controller to those used by Sony. The Ford controller has five buttons and I decided to use them as follows:

Table 1. Cross-reference table for Ford and Sony remote controllers.
Ford function
Ford resistance
Sony function
Sony resistance
VOL-
54 Ω
VOL-
23.6 kΩ
VOL+
147 Ω
VOL+
16.8 kΩ
SEEK+
301 Ω
SEEK+
8.8 kΩ
SEEK-
562 Ω
SEEK-
12.1 kΩ
MODE
1037 Ω
SOURCE
2.2 kΩ
(none)
5057 Ω
(none)
high impedance


As you can see, I decided to map the Mode button to the Source function, i.e. make the Mode button to switch between the radio and MD modes (and power-up the unit, too). This is a practical choice as I do not have any multi-disc player (in such case you may want to have a button to change the current disc).

You may think that the simplest way to use the remote with Sony unit would be changing the resistors in the Ford controller. However, there are three reasons why I did not want to do it that way:

Adapter

First I planned to use a simple analogue circuit to convert the resistances from Ford stalk to Sony input. However, such circuit is not so simple. That is why I ended to a microcontroller-based solution.

Figure 3. The schematic diagram of PanuWorld's Ford-to-Sony remote control stalk adapter.

I decided to use inexpensive and easy-to-find microcontroller PIC12C508. However, this most common (and old) 8-pin PIC does not have any integrated AD converter so I needed to read the Ford stalk by measuring the time constant of an RC circuit with I/O pin GP2 (the only Schmitt Trigger input). The resistor network for the Sony output required 4...5 output pins, and because GP3 is an input-only pin, it has no use in this circuit. GP2 is then used for both sensing the capacitor voltage (in the input mode) and charging the capacitor (in the output mode). Q1 amplifies the charcing current and ensures that the capacitor is charged enough also when there is a low impedance on the FORD IN connector.

Table 2. Component list for PanuWorld's Ford-to-Sony adapter.
Component
Type
Comment
U1
LP2950-5.0
Any low-quiescent current 5 V voltage regulator (up to 100 mA)
U2
PIC12C508-04
One-Time-Programmable 8-pin microcontroller + socket
Q1
2N3904
Probably any NPN switching transistor (check the pin-out!)
D1
1N4005
Any rectifier diode
C1, C2
10 µF 35 V tantalum
Good margin for the voltage specification
C3
100 nF
Critical component, preferably a polyester capacitor?
R1
2 kΩ Not so critical
R2
21.4 kΩ
R3
10.0 kΩ
R4
2.1 kΩ
R5
16.9 kΩ
J1
pin header, 2.54 mm pitch
Something to be attached to the Ford connector
J2
3.5 mm stereo plug
Preferably a 90-degree plug?

Note that the newer mask version PIC12C508A has slightly different electrical properties and may not work here without changes in the time constants defined in the software.

Figure 4. Circuit layout for copper-striped board.
This kind of circuit is non-critical, so you may probably use standard components instead of components rated for industrial temperature range. (However, I used a PIC12C508-04I/SM. Because it is an SMD version, I had to solder the chip on a DIL socket to be able to use my PIC programmer with a DIL socket...)

I recommend using a screw connector for connections because it easies mounting the adapter on radio's wiring harness. The circuit board fits in a film box. DIL-packaged microcontroller allowed building the circuit on a copper-striped board without the effort of etching a PCB.

I used a five-pin pin header (actually a piece of some connector) for the Ford connection. Two pins are enough but five pins shows implicitly the place of the Ford connector where to plug the header (there is only one five-hole group on the connector). The plastic guides prevent reversed insertion of the header to the connector.

The cable is soldered to the correct pins on pin header (see Figure 3) and then insulated with shrinking tubes and hot-melt glue.

Operation

This circuit does nothing without any software programmed on the PIC. The PIC must "read" the input resistance using the RC circuit connected to GP2 and then use resistors connected to GP0, GP1, GP4, and GP5 to control the Sony unit.

When the device is idle, all GPIO pins are in high-impedance state (i.e. configured as inputs). R1 keeps Q1 closed so the power consumption is minimized. The Sony unit sees high impedance on J2 (= no button pressed). When a reading cycle starts, C3 is charged via Q1 by setting GP2 to output '1' level for 4 µs. Then the software waits for five predefined moments checking the state of C3 with GP2 input after each timeout.

When C3 has been discharged via the resistors in the Ford remote controller, the GP2 input changes to '0'. Because GP2 is a Schmitt Trigger input, the voltage over C3 must drop considerably before GP2 input detects the change. How quickly this happen depends on the button pressed (if any) on the Ford controller. If C3 is not discharged enough after those five timeouts, the connected resistance is so high (> 3 kΩ) that no button is pressed on the controller. In such case, the PIC goes into low-power sleep mode and wakes up for a new reading cycle after watchdog timeout (set to nominal 36 ms). This low-power operation drops the average current consumption of the circuit down to 150 µA (including the voltage regulator loss) so the adapter may be connected to the car battery all the time.

If '0' state is detected on GP2, the number of the timeout loop specifies the button which has been pressed on the Ford controller. To avoid incorrect results due to EMI or buttons pressed/released during the measurement cycle, the program repeats the reading cycle until 64 consecutive same results are detected. This will take time up to ~20 ms depending on the button pressed (if any).

After 64 same results, the PIC changes the output resistance by switching the pins GP0, GP1, GP4, and GP5 between '0' output and high-impedance. The selected combination depends on the detected button.

Table 3. Output pin combinations used by the software ('0' = output low, 'Z' = high-impedance).
Sony function
GP0
GP1
GP4
GP5
Resistance on J2
VOL-
0
Z
Z
Z
23.5 kΩ
VOL+
Z
Z
Z
0
16.9 kΩ
SEEK+
0
0
Z
Z
8.9 kΩ
SEEK-
Z
0
Z
Z
12.1 kΩ
SOURCE
Z
Z
0
Z
2.1 kΩ
(none)
Z
Z
Z
Z
high-impedance

This simple way of using three-state outputs and resistors for generating the output impedances works because the Sony unit reads the remote control resistance using a voltage less than the PIC power supply (5 V).

Software

I made a mistake in the software of my own adapter which reversed the SEEK+ and SEEK- functions (compared to the original Ford radio and car handbook). However, I started to like the way of "going back" (seek down, previous track) by pulling the SEEK button and "going up" (seeking up, next track) by pushing it. You may select which way you like:

Table 4. Adapter software for downloading.
File name
Description
fordsony.hex
Standard software (pull SEEK for SEEK+)
fordsonr.hex
Reversed SEEK button (push SEEK for SEEK+)
fordsony.zip
Source code for Microchip's MBLAB

You may program your PIC with any compatible programming tool. I used JDM's incredible simple PIC programmer on MS-DOS.

Testing

The software timeouts are optimized with my own adapter. However, the variation in the microcontroller, C3 capacitor, etc. may cause the adapter behave incorrectly. Therefore you will need to test the adapter before installing it!

To test the adapter, power it with a 12 VDC power supply or battery.


If the output values do not match the input resistors correctly, you need to fine-tune the software timeouts. (To do that you have to use Microchip's free MBLAB IDE for recompiling the software from the source code!)
Table 5. Current timeout values in the software.
Change on J2
T0 (original timeout)
R0 (target resistance)
Parameter name
23.5 to 16.9 kΩ 10 µs
100 Ω VOL_DOWN
16.9 to 8.9 kΩ 23 µs
224 Ω VOL_UP
8.9 to 12.1 kΩ 44 µs
432 Ω SEEK_UP
12.1 to 2.1 kΩ 81 µs
800 Ω SEEK_DOWN
2.1 kΩ to infinite
310 µs
3047 Ω MODE
For example, if the change from 23.5 kΩ to 16.9 kΩ on J2 is detected at potentiometer resistance R1 = 130 Ω, you need to change the VOL_DOWN parameter from  T0 = ".10" to T1 = 10 µs * 100 Ω / 130 Ω =  7.7 µs ~ ".8"

Note that PIC12C508 is one-time-programmable (OTP). You need to use a new PIC for the changed timeout values. However, there is some space reserved for timeout modifications in FORDSONY.ASM. If you want to reuse the same PIC, remove one movlw H'FF' in each five loops and add a nop after the last movlw command. For example:

Original code
Modify to
movlw H'FF'
movlw H'FF'
movlw H'FF'
movlw VOL_DOWN
movlw VOL_DOWN
nop

This allows you to program the same PIC again after changing the timeout values in FORDSONY.INC.


Installation

Ford does not use standard ISO radio connectors so connecting a Sony to a Ford requires an inexpensive Ford-to-ISO wiring harness adapter. That is why the complete harness will be rather huge.

To get power for your adapter you need to add some wires to your wiring harness: Branch the +12 V Continuous and Ground wires and isolate the branches carefully. I recommend protecting the connections with shrinking tube. (You may probably use also the +12 V Switched instead but the current consumption of the adapter is so low that it does not drain car's battery even if it is continuously powered.)

Connect the power wires and input/output wires to the adapter and close the adapter in its box before connecting the wiring harness to your car. The pin header connector is connected to the FORD IN and GND terminals, and the 3.5 mm plug is connected to SONY OUT and GND terminal. (I used a 3.5 mm plug from inexpensive headphones but the green cable was so thin that I had to solder it directly on the adapter circuit board instead of using the screw terminal.) Be careful when making any connections -- bad connections may cause short-circuits, and the short-circuit current is limited only by car's fuse!

Installation of the adapter is simple. Just connect the pin header to the correct pins (see Figure 3) on the Ford's connector and plug the 3.5 mm plug into the Sony unit. -- And remember to test the operation before inserting the main unit into the slot...

 
To see PanuWorld's finest appearance, update your web browser!