Control a 2006 Honda Civic Speedometer in dashboard with arduino

Hi everyone.

My 2006 (European) 8th gen. Honda Civic had some VSS (Vehicle speed sensor) troubles. The VSS sends a pulse signal to the ECU. The pulse signal is generated by a Hal sensor that reeds a magnet on the output shaft of the gearbox. I replaced the VSS with a GPS and Arduino generating a simulated pulse signal based on GPS speed:

This worked great, but eventually I solved the VSS problem (otherwise ECU didn’t receive a speed signal in tunnels and the cruise control wasn’t as spot on compared to the original VSS signal) . Which made my gps solution useless.

One problem that I have, is that the car’s speedometer is way off (deliberately, because if I read the speed from the OBDII port the speed is more accurate). About up to +6 km/h when driving 100km/h. Now I want to use the GPS / Arduino just to alter the (digital) speedometer in the dashboard. The speedometer combined with turn signal rev meter, eco meter and a malfunction light is a single unit on the dashboard. I thought this unit received a similar speed pulse signal, but I was apparently wrong. The left and right turn signals are separate wires, but it seems that the rev meter, eco meter, malfunction light and the speedometer is controlled by a single data wire… I want to read this signal with the Arduino, if there’s a good GPS fix I want to alter the speed signal with accurate speed, and pass through all other data to control the other lights.

So how can I reverse engineer this data stream? I hope someone over here can point me in the right direction, or maybe has some insight information about it.

I’ve hooked up an oscilloscope to make the data visible:


The voltage of the data pulses are 10V… seems a bit height. Need a voltage divider to receive this signal into the Arduino. And need some kind of transistor schematic to output this to the dashboard.
Looks like a single bit is about 100 microseconds

Looks like every data package starts (or ends) with about 5 milliseconds high. And the duration of a complete data package is 20mS.

Is anyone recognize this kind of signal based on my scope screenshots?

I have the same car and my guess is that this is a CAN bus because this kind of bus is used all over the car.

Thanks. I’ll shall try to decode the Can-bus with an Arduino. I've seen some shields that can communicate with the can bus

I've seen several Can-bus shields like these:

http://www.robotshop.com/en/sfe-can-bus-arduino-shield.html

http://www.robotshop.com/en/can-bus-shield-arduino.html

http://shieldlist.org/skpang/canbus

But I can't seem to find what signal voltage's a CAN bus supposed to be. It looks like these boards work on 5V I/O signals (i'm not sure). But I don't know what happens if I feed them a 10V I/O like my Honda seems to produce. What is the CAN bus voltage norm?
Also the CAN bus is using 2 data wires. A normal and an inverted signal to exclude interference. My Honda has only one data wire to the Dashboard. Does this still fit into the Can-bus norm?

I own one ATmega328P chip and one Ublox 7 gps, anybody want share a scheme and a skeet please?

Reading the datasheet for the MCP2551, used in a circuit like this one,

it would seem an active signal and always low signal would work.

Tony2k, is your question CANBUS related? If not, we can split it off into it's own topic.

No, it isn't canbus related. The signal come from the hall sensor and go directly to the speedometer.

Tony2k, Please start a new topic of your own, with some more details of what you're after.
scheme and skeet are not very clear. Schematic & sketch perhaps? How will you program the 328P?

Ok, I open a new thread.