Was this article helpful?
From raw bytes to readable numbers: how PID formulas work
Your app shows 87 °C. The car sent the byte 0x7B. The conversion between them is defined by the standard, and knowing it explains some odd readings.
Ask a vehicle for coolant temperature and it replies with a single byte. Ask for engine RPM and it replies with two. Neither is in the units you want, and the standard defines exactly how to convert.
Related: Mode 01 current data explained and reading live data basics.
Some real examples
| Parameter | Bytes | Formula |
|---|---|---|
| Coolant temperature | 1 | A − 40 |
| Intake air temperature | 1 | A − 40 |
| Engine RPM | 2 | (256A + B) ÷ 4 |
| Vehicle speed | 1 | A |
| Engine load | 1 | A × 100 ÷ 255 |
| Throttle position | 1 | A × 100 ÷ 255 |
| Fuel trim | 1 | (A ÷ 1.28) − 100 |
| MAF rate | 2 | (256A + B) ÷ 100 |
| Fuel rail pressure | 2 | (256A + B) × 0.079 |
Each one exists for a reason.
Why the −40 offset
A single byte holds 0 to 255. Temperatures need to go below zero.
Subtracting 40 shifts the range to −40 °C to 215 °C, which covers every realistic case with one byte and no sign bit.
That is why a disconnected temperature sensor reads exactly −40 °C. The circuit returns 0, and 0 − 40 = −40. It is not a measurement; it is the bottom of the scale.
Recognising that saves a lot of confusion: P0111 and P0112 intake air temperature sensor and P0116 to P0119 coolant sensor performance.
Coincidentally, −40 is the same in Celsius and Fahrenheit, which is why the value looks familiar in both unit systems.
Why RPM is divided by four
Two bytes give 0 to 65,535. Dividing by four gives a maximum around 16,383 rpm with a resolution of 0.25 rpm.
That resolution matters: the misfire monitor detects tiny variations in crankshaft speed, and coarse resolution would lose them.
How the misfire monitor works.
Why fuel trim looks the way it does
Fuel trim is a percentage that can be negative, so the same shifting trick applies. Dividing by 1.28 and subtracting 100 maps a byte to roughly −100% to +99.2%.
A trim of exactly 0% means byte value 128, the midpoint. That is why trims cluster around specific values rather than moving perfectly smoothly.
Fuel trim STFT and LTFT explained.
Where resolution shows in your graphs
Knowing the underlying resolution explains apparent oddities.
| Parameter | Resolution | Consequence |
|---|---|---|
| Coolant temperature | 1 °C | The graph steps rather than curving |
| Vehicle speed | 1 km/h | Same, at low speeds |
| Engine load | ~0.4% | Fine enough to look smooth |
| RPM | 0.25 rpm | Very smooth |
| Fuel trim | ~0.78% | Small steps visible |
A temperature graph that looks like a staircase is not a faulty sensor. It is one-degree resolution, drawn honestly.
Reading live data graphs properly.
Calculated versus measured
Not everything the vehicle reports is measured directly.
Calculated load is derived from airflow, RPM and displacement.
Fuel consumption shown on many tools is computed from MAF and fuel trim, not measured. It is an estimate, and it inherits any error in the inputs.
Torque values on newer vehicles are model outputs, not readings from a sensor.
So a wrong MAF makes several other displayed values wrong too, which is worth remembering when several parameters look implausible at once: MAF/MAP sensor diagnostics.
Units and where confusion creeps in
The standard defines metric units. Tools convert for display, and conversion is where mistakes happen — kPa against psi against bar, grams per second against pounds per minute.
When comparing your reading against a specification, check both are in the same units. More than one unnecessary repair has started with a psi figure compared against a kPa reading.
Why any of this matters to an owner
Three reasons.
Recognising defaults. −40 °C, 0 kPa, exactly 0.45 V on an oxygen sensor — these are what a circuit returns when nothing is connected, not measurements.
Judging resolution. Knowing that coolant temperature steps in whole degrees stops you chasing a sensor that is behaving correctly.
Distinguishing measured from calculated. A calculated value that looks wrong may be reporting a problem with its inputs rather than with itself.
Supported PIDs and why parameters are missing.
Pair an ELM327 adapter, open the free tier of the app and watch a temperature reading step in whole degrees during warm-up. Once you know why, the data reads very differently.
Comments …
Loading…