Here is a list of the PID conversions in the OBDZero app. Most of the useful conversions were found by others on this tread before I started looking.
Each PID contains 1 to 8 bytes. The first byte is numbered 1 and the last byte is numbered 8. When on/off information is code it is coded in the bits of a byte, a bit equal to 1 means on, except brake on/off where 2 equals on. The bits are numbered in the table above by positional value in the byte i.e. 1, 2, 4, 8, 16, 32, 64, 128. The low nibble in a byte is the number represented by the 4 least significant bits and the high nibble is the number represented by the 4 most significant bits.
I believe that acceleration, rotation, wheel speed, and steering wheel position are all part of the electronic stability system but this is just guess. and I’m not sure of the conversion factors.
The current to the 12 volt battery charger is very much a guess and I’m not at all sure of it.
I’m fairly sure that that these two conversions are motor amps and regeneration amps. In order to find the conversion factors I have compared these with battery amps in and out. However because of many other factors this comparison is difficult and the conversion factors are uncertain.
Until recently I have used the displayed speed (PID 412) as the speed of the car. However I now use the speed based on PID 215 because it indicates car movement 1 to 2 seconds before the displayed speed, it has a digit after the decimal point, and it is always in km/h. I received data from a car in the UK where the PID 412 speed was in mph. Knowing for sure whether the numbers are in metric or English units is necessary for the calculations the app performs.
There are two values for the State of Charge (SoC). Both are computed by the car as part of a system for estimating the present 100% capacity of the battery aka State of Health (SoH). As such neither is more correct than the other.
The battery amps in, the current to the battery can be both positive and negative. The sign is in relation to the battery so charging is positive and discharging is negative. However most of the computations in OBDZero are from the perspective of the motor and auxiliary functions. So for battery amps out calibrated, discharge is positive and charging is negative. The motor current is always positive and regeneration current is always negative. The heater current and the air-conditioning current are both positive. However this convention doesn’t apply to the charging unit current to the battery and the Chademo current to the battery both of which are positive. A description of the calibration of battery amps out can be found at:
I have compared this conversion with the measured temperature for my location and the agreement is good but not perfect. The car’s outside temperature is often below the measured temperature when first starting the car but increases to the measured temperature while driving.
The gear position is a bit complicated. The information is contained in PID 285. If byte(7) equals 12 then the position is either Park or Neutral with no indication of which. If byte(7) equals 14 and byte(8) equals 16 then the position is Drive. If byte(7) equals 14 and byte(8) doesn’t equal 16 then the position is Reverse. There is probably another PID where the gear position is more explicit, but I haven’t found it yet. Another thing, the iMiev has two more gear positions than the CZero and the iOn. Both these positions are shown as Drive in OBDZero.
The coding of the individual cell information is not shown above. See