# Mazda MX5 2005-2015 (third generation, including NC/NCFL/NCFLFL or MK3/MK3.5/MK3.75) Here is information on some of the CAN IDs that you're most likely to use with RaceChrono and equations to get the right scale, etc. Please note there is still much work in progress, any contributions are welcome. ## CAN ID 0x081 Update frequency: 100 times per second. `0x081` contain data related to steering angle. This CAN ID is available only in cars with DSC module, so all cars from 2007 onwards. Only 4 bytes long. Byte | Meaning ---- | ------- 0 | unidentified 1 | on/off (EF/6F or 11101111/01101111) 2 & 3| signed values for the steering angle Channel name | Equation | Notes ------------ | -------- | ----- Steering angle | `bytesToInt(raw, 2, 2)` | positive values are from centered position (0) to right, negative otherwise ## CAN ID 0x085 Update frequency: 100 times per second. `0x085` contain data related to braking. This CAN ID is available only in cars with DSC module, so all cars from 2007 onwards. Byte | Meaning ---- | ------- 0 & 1 | together with byte 1 represent the pressure of the braking system 2 | brake siwtch ON/OFF, information contained in bit 0 (MSB, from left) 3 | Not changing 4 | Not changing 5 | Not changing 6 | Not changing 7 | Not changing Channel name | Equation | Notes ------------ | -------- | ----- Brake pressure | `(3.4518689053*bytesToInt(raw, 0, 2)-327.27)/1000.00` | multipliers are obtained from data from Leisurehound user on miata.net, may be wrong. Unit is kPa Brake percentage | `min(0.2*(bytesToInt(raw, 0, 2)-102),100)` | this is an alternative to get brake percentage. When not pressed the value is 102, after braking and releasing it goes briefly down to 99 so you may see slightly negative percentage. Digital | `bitsToUint(raw,17,1)/2` | 0-1 value ## CAN ID 0x090 Update frequency: 100 times per second. `0x090` WIP. Probably related to accelerations. This CAN ID is available only in cars with DSC module, so all cars from 2007 onwards. Byte | Meaning ---- | ------- 0 | WIP 1 | WIP 2 | WIP 3 | WIP 4 | WIP 5 | WIP 6 | WIP 7 | WIP Channel name | Equation | Notes ------------ | -------- | ----- ... | ... | ... ## CAN ID 0x200 Update frequency: 100 times per second. `0x200` WIP. Probably related to torque. Byte 7 contain Throttle Valve Position Byte | Meaning ---- | ------- 0 | WIP 1 | WIP 2 | WIP 3 | WIP 4 | WIP 5 | WIP 6 | WIP 7 | Throttle Valve Position (%) Channel name | Equation | Notes ------------ | -------- | ----- Throttle Position | `bytestouint(raw,7,1)*100/255.00` | Scale may need adjustment, doesn't take into account the offset for idle. Same value available in CAN ID 0x215 byte 6 ## CAN ID 0x201 Update frequency: 100 times per second. `0x201` This CAN ID is related to engine speed, vehicle speed and accelerator position. Byte | Meaning ---- | ------- 0 | With byte 1 represent engine speed 1 | With byte 0 represent engine speed 2 & 3| WIP: follows RPM 4 & 5 | represent vehicle speed 6 | Accelerator pedal position (%) 7 | Always FF Channel name | Equation | Notes ------------ | -------- | ----- Engine RPM | `bytestouint(raw,0,2)/4.00` | Speed | `((bytestoint(raw,4,2)/100.00)-100)/3.6` | Raw speed data is given in km/h with a 100 km/h offset. The "3.6" at the end of the equation is needed to switch to m/s that is the unit used internally for calculation by RaceChrono. In the calculation RaceChrono will then multiply automatically for the correct value to transform the m/s to your choice of units (i.e. km/h or mph). Accelerator Position | `bytestoint(raw,6,1)*2.00` | This is a percentage, increments of 0.5% ## CAN ID 0x215 Update frequency: 100 times per second. `0x215` WIP. Mostly related to fault codes but byte 6 contain Throttle Valve Position Byte | Meaning ---- | ------- 0 | WIP 1 | WIP 2 | WIP 3 | WIP 4 | WIP 5 | WIP 6 | Throttle Valve Position (%) 7 | WIP Channel name | Equation | Notes ------------ | -------- | ----- Throttle Position | `bytestouint(raw,6,1)*100/255.00` | Scale may need adjustment, doesn't take into account the offset for idle. Same value available in CAN ID 0x200 byte 7 ## CAN ID 0x231 Update frequency: 40 times per second. `0x231` Is related to transmission, probably has more significative data for AT cars. On MT cars only interesting bit is the clutch switch Byte | Meaning ---- | ------- 0 | Always FF (on MT) 1 | bit 7 (MSB, counting from left) clutch switch; bit 6 (MSB) may be related to neutral/in gear? 2 | Always FF (on MT) 3 | Always FF (on MT) 4 | Always 00 (on MT) 5 | Always 00 (on MT) 6 | Always 00 (on MT) 7 | Always 00 (on MT) Channel name | Equation | Notes ------------ | -------- | ----- Digital | `(bitstouint(raw,15,1)-4)/2` | 0 - 1 value ## CAN ID 0x240 Update frequency: 10 times per second. `0x240` Contains engine related data such as cooling water temperature, air intake temperature spark angle, calculated load, throttle valve position only interesting bit is the clutch switch Byte | Meaning ---- | ------- 0 | Calculated Load (%) 1 | Engine Coolant Temperature (°C) 2 | WIP: seems related to ignition timing (deg) 3 | Throttle Valve Position (%) 4 | Intake Air Temperature (°C) 5 | Always 00 6 | Always 00 7 | Always 00 (faults?) Channel name | Equation | Notes ------------ | -------- | ----- Percentage | `100*(bytestouint(raw,0,1)/255.00` | can't find Engine Load on RaceChrono list of channels Coolant temperature | `bytestouint(raw,1,1)-40` | RaceChrono does calculation in °C then converts to your unit of choice. Same data availble in byte 0 of ID 420 Throttle position | `100*bytestouint(raw,1,1)/255` | Scale may need adjustment. This ID should refer to absolute opening value, i.e. taking into account the opening at idle. Still, the value at idle for my measurements seems too high (11%...) Ignition advance Intake temperature | `bytestouint(raw,4,1)-40` | RaceChrono does calculation in °C then converts to your unit of choice ## CAN ID 0x4b0 Update frequency: 100 times per second. `0x4b0` is dedicated only to wheel speed representation Byte | Meaning ---- | ------- 0 & 1 | Front Left Wheel Speed 2 & 3 | Front Right Wheel Speed 4 & 5 | Rear Left Wheel Speed 6 & 7 | Rear Right Wheel Speed Channel name | Equation | Notes ------------ | -------- | ----- Vehicle Speed Front Left | `((bytestoint(raw,0,2)/100.00)-100)/3.6` | Raw speed data is given in km/h with a 100 km/h offset. The "3.6" at the end of the equation is needed to switch to m/s that is the unit used internally for calculation by RaceChrono. In the calculation RaceChrono will then multiply automatically for the correct value to transform the m/s to your choice of units (i.e. km/h or mph). Vehicle Speed Front Right | `((bytestoint(raw,2,2)/100.00)-100)/3.6` | Vehicle Speed Rear Left | `((bytestoint(raw,4,2)/100.00)-100)/3.6` | Vehicle Speed Rear Right | `((bytestoint(raw,6,2)/100.00)-100)/3.6` | ## Typical histogram of CAN IDs Here's what the distribution of CAN IDs looks like in the CAN bus while idling in a parking lot: CAN ID (hex) | CAN ID (decimal) | Number of packets received over a 10 second period ---- | --- | --- 081 | 129 | 1000 085 | 133 | 1000 090 | 144 | 1000 200 | 512 | 1000 201 | 513 | 1000 204 | 516 | 500 211 | 529 | 1000 212 | 530 | 100 215 | 533 | 1000 21A | 538 | 500 231 | 561 | 400 240 | 576 | 100 39A | 922 | 100 420 | 1056 | 100 430 | 1072 | 100 4B0 | 1200 | 1000 4EC | 1260 | 400 4F0 | 1264 | 10 4F1 | 1265 | 10 4FF | 1279 | 100