Ford方向盤控制器轉SONY主機
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: http://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:
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:
The functions are in different order in the resistor ladders: you will need to modify the circuit more than just replace the resistors.
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.
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.
OperationThis 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.
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:
File name | Description |
---|---|
fordsony.hex | Standard software (pull SEEK for SEEK+) |
fordsonr.hex | Reversed SEEK button (push SEEK for SEEK+) |
點這里下載所有的程序 | 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.
- Check that the supply current is something like 150 µA (when the FORD IN is open).
- Set a multimeter to resistance range and connect it to J2 (COM probe to the ground and Ω probe to the tip). It shall show infinite (or very high) resistance.
- Connect each of the following resistances (or close values) between the FORD IN and GND: 54 Ω (VOL-), 147 Ω (VOL+), 301 Ω (SEEK+), 562 Ω (SEEK-), and 1037 Ω (MODE). The multimeter shall show corresponding resistance values (see table 3).
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!)
- Connect a 5 kΩ potentiometer (preferably a multi-turn one) between the FORD IN and GND. Before connecting, check that the resistance of the potentiometer is set at ~50 Ω. (If it is at 0 Ω, it may damage the adapter!)
- Then carefully turn the potentiometer so that resistance increases. Find the point where the multimeter reading changes from 23.5 kΩ to 16.9 kΩ.
- Disconnect the potentiometer, measure its resistance and write it down. Continue to the next point where the multimeter reading changes.
- Calculate new timeout values for each software loop by using formula: T1 = T0 * R0 / R1, where R1 is the potentiometer resistance at the change.
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 |
- Replace corresponding parameter values in FORDSONY.INC with the new values (T1) and recompile.
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"
- Test the circuit operation with the new software.
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...
7.2.2005 www@panuworld.cjb.net
|
|
|
||||||||||||||||||||||||
|
|
|
|
|