Digital Dashboard: Factory Sensors and Pinouts

Here is a summary of the connections I made to the factory E36 sensors.

RPM

The RPM signal is a clean 12V pulse train who’s frequency is proportional to the engine speed. If you setup a rising edge interrupt and a timer, it is easy to measure the signal’s period. Be sure to scale the 12V appropriately for your devices I/O levels. It gives one pulse per cylinder fire and there are three pulses per rotation so the equation boils down to:

So RPM = MeasuredPeriod(micros) / 20000000(micros)

The RPM signal can be found at three fairly convenient locations that I know of. The wire is always solid black:

  1. Pin 1 on the round diagnostic connector under the hood on the passenger side
  2. Pin 20 on connector X16 to the back of the gauge cluster
  3. Pin 8 on connector X22 to the cruise control module behind the glove box

Speed

The Speed signal is also a clean 12V pulse train who’s frequency is proportional to the vehicle’s speed. Be sure to scale the 12V appropriately for your devices I/O levels. The sensor is in the rear differential and outputs 9 pulses per revolution.

Speed = 6313.13 * TireCircumference / MeasuredPeriod(micros)

The Speed signal is black with a white stripe and can be found on:

  1. Pin 2? on connector X16 to the back of the gauge cluster
  2. Pin 10 on connector X22 on the cruise control module behind the glove box
  3. Pin 10 on radio connector

Throttle Position

The TPS signal comes form a potentiometer mounted on the throttle body. It’s middle pin/wire outputs 0-5V proportional to the throttle position. Note that there is about a half a volt of deadband on both ends resulting in an effective range of about 0.5V to 4.5V. I ran this into an ADC and scaled to provide a percentage.

 

5 thoughts on “Digital Dashboard: Factory Sensors and Pinouts

  1. chet

    Thanks Dan. I will be traveling overseas for the next three weeks and may have some time to start working over the software. I will let you know how it works out.

    Reply
    1. Dan

      The formula is RPM = period (in microseconds) / 20000000 (in microseconds). Note that it’s not the pulse width you’re after, it’s the period between pulses (inverse of frequency). The RPM isn’t pulse width modulated, it’s frequency modulated.

      Hope that helps!

      Reply
  2. Kazi

    Nice projects you have here, i found your project on google while searching for custom obc display,
    just start learning arduino and raspberry, and i thought this would be challenging
    project to work and would be fantastic replacement for my 323i e36 6 button OBC 🙂

    Did you share the code for this display project?
    (already checking your gitHub pages)

    If you don’t mind,
    would you sharing the code or psuedocode or diagram for me to start with?

    Thanks for wonderful site!

    Reply
    1. Dan Post author

      Sorry for the delay. I actually wrote the code using the mbed.org’s online IDE/platform. So the code is there. I would like to add it to my Github repo, though, so I will copy it there shortly. It would be really cool to integrated it with the E36 OBC. Thanks!

      Reply

Leave a Reply to Dan Cancel reply

Your email address will not be published. Required fields are marked *