05/06 ZX636 ZX6R speedo upgrade
Hello everyone.
A while ago there was a big discussion on how to fit a P7 style ZX6 speedo onto an older model bike (typically the 05/06 C1H model).
The main reason for doing this was to have the nice white dial easily readable clocks instead of the quite trick but less clear LCD type.
Well the long and short of it was that you could replace the speedo (indeed the mounting bolts are exactly the same for both models) so long as you made up an adapter (because the speedo used a different connector on the new model). However you had to put up with an annoying flashing warning light caused by no ECU communication to the clocks. The only solution at the time was to tape over the light, but then you wouldn't have the benefit of any real warnings.
At long last I've got around to reverse engineering the communication signal between a P7 ECU and a P7 speedo. The idea is we fit a little micro chip circuit to fool the new speedo and make it all work perfectly on an 05 ZX636. In fact, not only does the warning light behave, but we can also make the gear indicator work properly (ie make a TRE type gadget) too.
I don't expect this to be much use to most folks, but I wanted to put the info into the public domain as its apparently not known. You would need to be an electronics engineer to make use of this stuff.
OK, here we go with part1. The signals:
The speedo ECU comms line has a built in pull-up resistor to 10v so to inject a signal we need an open collector drive.
The comms line is normally HI (9.8v or so)
Data is sent in three packets at 10ms period between the start of each data byte.
The data signal is repeated at a period of 80ms (or roughly 60ms from the end of one packet to the start of the next).
If the data is interrupted, then after a few seconds the speedo will report a FI error and do the flashy red light (LED) thing, so we need to keep the data packets going continuously.
The data starts only when the ignition is turned on.
The three packets of data are all serial 8 bits plus one start bit (lo). The period of each bit is 64us.
(The following data is written as if it were a timing diagram)
1st gear ...10100000001..(10ms)..10000000001..(10ms)..10100000001..(60ms)..
2nd gear ...10010000001..(10ms)..10000000001..(10ms)..10010000001..(60ms)..
3rd gear ...10110000001..(10ms)..10000000001..(10ms)..10110000001..(60ms)..
4th gear ...10001000001..(10ms)..10000000001..(10ms)..10001000001..(60ms)..
5th gear ...10101000001..(10ms)..10000000001..(10ms)..10101000001..(60ms)..
6th gear ...10011000001..(10ms)..10000000001..(10ms)..10011000001..(60ms)..
So for 1st gear, if we monitor the speedo to ECU signal line (on a P7 speedo to P7 ECU of course) then we see the signal go to 0v for 64us then 9.8v for 64us then 0v for 448us then back to 9.8v
There is then a gap of 10ms (less 576us) to the middle packet which is a null frame: 0v for 576us
After another gap of 10ms (less 576us) the first data byte is repeated.
The data line is then inactive (still at 9.8v) for around 60ms until the whole thing is repeated.
(In the data sequence shown, dots represent where the data line is at a steady 9.8v level)
The speedo uses these data packets to continually verify the comms to the ECU, but of course these also represent what gear we are in.
So long as any of these 3 byte data packets are being sent then the FI/red LED will not be activated due to comms fail.
If the bike is in neutral then no gear is shown on the LCD part of the speedo.
If the bike is in gear then the LCD segment shows gear 1-6 depending on what data packets are being sent on the ECU comms line.
We are now in a position to make our own automatic gear indicator using engine RPM and wheel tacho signal. This is done by dividing the engine RPM count by the wheel tacho count. Both these signals already go to the speedo for displaying speed and revs.
OK, so I'll follow this up with a part2: cheap hardware to do all the signal controls.
Finally part3: this will be the software to program into a PIC micro.
Cheers
Extr400
Hello everyone.
A while ago there was a big discussion on how to fit a P7 style ZX6 speedo onto an older model bike (typically the 05/06 C1H model).
The main reason for doing this was to have the nice white dial easily readable clocks instead of the quite trick but less clear LCD type.
Well the long and short of it was that you could replace the speedo (indeed the mounting bolts are exactly the same for both models) so long as you made up an adapter (because the speedo used a different connector on the new model). However you had to put up with an annoying flashing warning light caused by no ECU communication to the clocks. The only solution at the time was to tape over the light, but then you wouldn't have the benefit of any real warnings.
At long last I've got around to reverse engineering the communication signal between a P7 ECU and a P7 speedo. The idea is we fit a little micro chip circuit to fool the new speedo and make it all work perfectly on an 05 ZX636. In fact, not only does the warning light behave, but we can also make the gear indicator work properly (ie make a TRE type gadget) too.
I don't expect this to be much use to most folks, but I wanted to put the info into the public domain as its apparently not known. You would need to be an electronics engineer to make use of this stuff.
OK, here we go with part1. The signals:
The speedo ECU comms line has a built in pull-up resistor to 10v so to inject a signal we need an open collector drive.
The comms line is normally HI (9.8v or so)
Data is sent in three packets at 10ms period between the start of each data byte.
The data signal is repeated at a period of 80ms (or roughly 60ms from the end of one packet to the start of the next).
If the data is interrupted, then after a few seconds the speedo will report a FI error and do the flashy red light (LED) thing, so we need to keep the data packets going continuously.
The data starts only when the ignition is turned on.
The three packets of data are all serial 8 bits plus one start bit (lo). The period of each bit is 64us.
(The following data is written as if it were a timing diagram)
1st gear ...10100000001..(10ms)..10000000001..(10ms)..10100000001..(60ms)..
2nd gear ...10010000001..(10ms)..10000000001..(10ms)..10010000001..(60ms)..
3rd gear ...10110000001..(10ms)..10000000001..(10ms)..10110000001..(60ms)..
4th gear ...10001000001..(10ms)..10000000001..(10ms)..10001000001..(60ms)..
5th gear ...10101000001..(10ms)..10000000001..(10ms)..10101000001..(60ms)..
6th gear ...10011000001..(10ms)..10000000001..(10ms)..10011000001..(60ms)..
So for 1st gear, if we monitor the speedo to ECU signal line (on a P7 speedo to P7 ECU of course) then we see the signal go to 0v for 64us then 9.8v for 64us then 0v for 448us then back to 9.8v
There is then a gap of 10ms (less 576us) to the middle packet which is a null frame: 0v for 576us
After another gap of 10ms (less 576us) the first data byte is repeated.
The data line is then inactive (still at 9.8v) for around 60ms until the whole thing is repeated.
(In the data sequence shown, dots represent where the data line is at a steady 9.8v level)
The speedo uses these data packets to continually verify the comms to the ECU, but of course these also represent what gear we are in.
So long as any of these 3 byte data packets are being sent then the FI/red LED will not be activated due to comms fail.
If the bike is in neutral then no gear is shown on the LCD part of the speedo.
If the bike is in gear then the LCD segment shows gear 1-6 depending on what data packets are being sent on the ECU comms line.
We are now in a position to make our own automatic gear indicator using engine RPM and wheel tacho signal. This is done by dividing the engine RPM count by the wheel tacho count. Both these signals already go to the speedo for displaying speed and revs.
OK, so I'll follow this up with a part2: cheap hardware to do all the signal controls.
Finally part3: this will be the software to program into a PIC micro.
Cheers
Extr400