OBD or special hardware?
We are now working on several car installations and face a dilemma - we want to display current car data (odometer, rpm, consumption, voltage etc.), but we are not sure whether to use OBD. The facts are:
- OBD does not always provide the total distance counter, which is pretty important for calculating the distance driven, average consumption etc.
- OBD is sometimes pretty slow (with OBDPro adapter, we are getting like 3 readings/second)
- It is pretty difficult to implement support for all the vendor-specific OBD functions.
- We can have a special USB device that takes the speedometer Hall sensor input (for rather precise distance measurements), the signal for the injectors, rpm etc. The device works when the computer is not connected (storing data in a non-volatile memory), is much faster, has some free binary and analog inputs. The cost, even for small quantities is roughly comparable to OBD adapters (ca USD 100).
So the question is which way should we go - proprietary hardware or OBD? Considering our target group are normal (i.e. non-geek) users, is it really important to have the option to read error codes etc?
odometer and OBDII
Where do you get this special USB device that reads the Hall sensor output of the odometer? That's a good idea, and I would like to see how this is done. Contact me privately if need be.
I don't see a way to get the odometer via OBD, but I can tell you that if it is available, the update speed can be increased way beyond three times a second with better equipment... but not in the $100 range perhaps.
How would you get fuel consumption data?
If you want producing a device for the market, choose OBD and USB.
In other case, you can use a small and cheap microcontroller, eg. PIC 18f4525/I. There are a lot internal timers and counters. Voltage measurement done by 10 bits built-in AD. Measuring temperatures I use four DS1820.
The main problem is the connection to the computer, because
EVERYBODY wants USB and this is extremely difficult to program for a mortal.
The market also wants to use it with frontends...
I suggest to use a different method. I personally prefer the parallel, but serial, infra also good. My reading frequency just limited by the internal AD of the microcontroller.
These values are not read so frequently by a driver. The only exception is the RPM, that changes so fast, it does worth to send the value in every 1/10 second.