___ __ __ __ ___
|\/| | | /__` | | |__) | /__` |__| | | __ |\/| | |__ \ /
| | | | .__/ \__/ |__) | .__/ | | | | | | | |___ \/
__ __ __
/ ` /\ |\ | |__) | | /__`
\__, /~~\ | \| |__) \__/ .__/
This project aims to document the OBD-II codes for Mitsubishi I-Miev electric vehicle.
Conventions used in this document:
- Message ID is always 3 hex characters
- Data bytes are zero-indexed: D0, D1, etc
- 1000ms (1 fps): 01C 1
- 200ms (5 fps): 568 1
- 100ms (10 fps): 012,101, 286, 298, 29A, 2F2, 374, 375, 377, 384, 385, 389 1, 38A 1, 3A4, 408, 412, 695, 696, 697, 6FA, 75A, 75B
- 50ms (20 fps): 38D, 564, 565, 5A1, 6D0, 6D1, 6D2, 6D3, 6D4, 6D5, 6D6, 6DA
- 40ms (25 fps): 424, 6E1/6E2/6E3/6E4
- 20ms (50 fps): 119, 149, 156, 200, 208, 210, 212, 215, 231, 300, 308, 325, 346, 418
- 10ms (100fps): 236, 285, 288, 373
- Key status (early iMiEV)
Transmitted every 100ms. Data bits:
- D2:
0x04
Key is turned on
- Key status (later iMiEV)
Transmitted every 100ms. Data bits:
- D0:
0x04
Key is turned on
- Rotation ESC
Transmitted every 20ms. Data bits:
- D4-D5: Rotation ESC:
(D5 * 256 + D4 - 32934) / 32.934
(OBDZero)
- Wheel rotation
Transmitted every 20ms. Data bits:
- D2-D3: Wheel rotation:
(D2 * 256 + D3 - 49152) / 19
(OBDZero) - D3-D4: Wheel rotation:
(D4 * 256 + D5 - 49152) / 19
(OBDZero)
- Brake pedal / Wheel rotation
Break pedal sensor data is transmitted every 20ms. Data bits seem to be following:
- D2-D3: Brake pedal position
(D2 * 256 + d3 - 24576) / 6.4
- D4-D5: Wheel rotation:
(D4 * 256 + D5 - 49152) / 19
(OBDZero) - D6-D7: Wheel rotation:
(D6 * 256 + D7 - 49152) / 19
(OBDZero)
- Gas pedal
Gas pedal sensor data is transmitted every 20ms. Data bits seem to be following:
- D2: gas pedal position (%)
D2 * 0.4
- Vehicle speed
Transmitted every 20ms. Data bits:
- D0-D1: vehicle speed:
(D0 * 256 + D1) / 128
- Brake pedal switch sensor
Transmitted every 20ms. Data bits:
- D4:
0x02
if brake is free,0x00
if brake pedal is pressed
- Steering wheel sensor
Transmitted every 10ms. Data bits:
- D0-D1: Steering wheel position with 0.5 degree accuracy, center point
(0.0 degrees) = D0:0x10, D1:0x00
.(((D0 * 256) + D1) - 4096) / 2 = steering wheel position in degrees)
. Negative angle - right, positive angle left. - D2-D3: possibly represents rate of change, defaults to
D2:0x10, D3:0x00
when steering wheel is at rest.
Transmitted every 10ms. Data bits:
- D0-D1: Acceleration
(D0 * 256 + D1 - 2000) / 400
Transmitted every 100ms. Data bits:
Transmitted every 100ms. Data bits:
- D0-D3: Motor temp
D* - 40
- D6-D7: Motor RPM
D6 * 256 + D7 - 10000
- Vehicle identification number
Transmitted every 100ms. Data bits:
- Estimated range, handbrake
Transmitted every 20ms. Data bits:
- D4 handbrake
D4 bit 32
released - D7 Estimated range:
D7
- Battery
Transmitted every 10ms. Data bits:
- D0: Battery Cell Maximum Voltage (V):
(D0 + 210) / 10
(OBDZero) - D1: Battery Cell Minimum Voltage (V):
(D1 + 210) / 10
(OBDZero) - D2-D3: Battery pack amps (A)
(D2 * 256 + D3 - 32768)/100
- D4-D5: Battery pack voltage (V)
(D4 * 256 + D5) / 10
- Battery SOC
Transmitted every 100ms. Data bits:
- D0: State of charge (%):
(D0 - 10) / 2
(OBDZero) - D1: State of charge (%):
(D1 - 10) / 2
- D4: Cell Maximum temperature (oC):
D4 - 50
(OBDZero) - D5: Cell Minimum temperature (oC):
D5 - 50
(OBDZero) - D6: Battery 100% capacity (Ah):
D6 / 2
(OBDZero)
- OBC (data from https://openinverter.org/wiki/Mitsubishi_Outlander_DCDC_OBC)
Transmitted every 100ms. Data bits:
- D0-D1: 12V battery voltage in mV:
D0 + D1
- D2 + D3 12V battery charging current in A:
(D2 + D3) / 10
- D4-D6 = temperatures of OBC:
D* - 40
- D7 = status bytes
Bits | D0 |
---|---|
0: | Error |
1: | In Operation |
2: | |
3: | |
4: | |
5: | Ready |
6: | |
7: |
- Heating / Cooling
Transmitted every 100ms. Data bits:
- D0: AC (A):
(D0 * 256 + D1) / 1000
- D3: Charging 12V Battery (A):
D3 / 100
(OBDZero) - D4: Heating (A):
D4 / 10
- D5: Heating water temp return:
(D5 - 32) / 1.8) - 3
ORD5 * 0.6 - 40
- D6: Heating water temp flow:
(D6 - 32) / 1.8) - 3
ORD6 * 0.6 - 40
- Charger
Transmitted every 100ms. Data bits:
- D0: Charge DC Voltage (V):
2 * D0 +1
(OBDZero) - D1: Charger Input voltage (V):
D1
- D2: Charge DC Input Current(A):
D2 / 10
(OBDZero) - D3: Charger temp:
D3 - 40
(D3 - 50
(OBDZero)) - D4: Charger temp:
D4 - 50
(OBDZero) - D6: Charging Input current (A):
D6 / 10
- Climate console
Transmitted every 100ms. Data bits:
- D0: Heating level:
D0 bit 15 = 7
MiddleD0 bit 15 < 7
CoolingD0 bit 15 > 7
Heating
- D0: Recirculation:
D0 bit 64
- D0: AC On:
D0 bit 128
- D0: Fan spee MAX:
D0 bit 32
- D1: Fan speed (%):
((D1 bit 15) * 12.5) + 0.5
- D1: Ventillation direction:
D1 >> 4
3- 1/2: Face
- 3/4: Legs + Face
- 5/6: Legs
- 7/8: Legs + Windshield
- 9: Windshield
- Speed + Odometer value
Transmitted every 100ms. Data bits:
- D0: Key On
D0 = 254
- D1: Speed
- D2-D4: Odometer
((((D2 >> 16) + D3) >> 8) + D4)
3
- Gearshift
Transmitted every 20ms. Data bits:
- D1:
80
: P82
: R78
: N68
: D131
: B50
: C
- Light
Transmitted every 40ms. Data bits:
Bits | D0 | D1 | D2 | D6 |
---|---|---|---|---|
0: | hazard lights | Unlock doors | ||
1: | Right Blinker | Unlock driver door | ||
2: | Automatic light | Upper Beam | ||
3: | Fog lights | Wiper rear | Rear window heating | |
4: | Rear fog light | Night headlights | ||
5: | Sidelights | |||
6: | ||||
7: |
- Motor
Transmitted every 100ms. Data bits:
- D2-D3: Motor current (A):
(D2 * 256 + D3 - 500) / 20
(OBDZero) - D6-D7: Regeneration amps (A):
(D6 * 256 + D7 -10000) /5
(OBDZero)
- CHAdeMO
Transmitted every 100ms. Data bits:
- D0: Connected
- D1: Percent (%) (OBDZero)
- D2: Charger current (A)
- Battery pack cells
Transmitted every 40ms. Data bits:
MessageID: 6E1 / 6E2 / 6E3 / 6E4
PID_ID: MessageID - 1761
- D0: CMU index (CMU_ID):
D0 bit 15
- D1: Temperature 1 (T1):
D[1] - 50
- D2: Temperature 2 (T2):
D[2] - 50
- D3: Temperature 3 (T3):
D[3] - 50
- D4-D5: Cell voltage 1 (V1):
((D4 * 256 + D5) / 200) + 2.1
- D6-D7: Cell voltage 2 (V2):
((D6 * 256 + D7) / 200) + 2.1
Voltage index (VOLT_ID): (CMU_ID - 1) * 8 + (2 * PID_ID)
Temperature index (TEMP_ID): (CMU_ID - 1) * 6 + (2 * PID_ID)
Voltage and temperature index modify based on CMU_id (because cmu 6 has only 4 cell)
If CMU_ID >= 7
-
voltage index:
VOLT_ID - 4
-
temperature index:
TEMP_ID - 3
-
VOLT_ID = V1
-
VOLT_ID + 1 = V2
Temperature index fix based on PID_ID
If PID_ID == 0
{
TEMP_ID = T2
TEMP_ID + 1 = T3
} else {TEMP_ID = T1
ifCMU_ID != 6 && CMU_ID != 12
(this 2 CMU contain T2) -TEMP_ID + 1 = T2
}
- 1: Possibly only sent in debug mode.
- 2: Available when car in sleep and wake up with CAN message
- 3: bitshift:
1 >> 1
==1 * 2
,1 >> 2
==1 * 4
,1 >> 8
==1 * 256
,1 >> 16
==1 * 65536
,
x >> 34
==x * 2^34