BMW E36 Guide
BMW E36 (1990 - 1999)
RPM
Use the wire connected to the instrument cluster #20, black wire. Also available on the round diagnostic connector at the back of the engine compartment (black wire, Pin #1)
RaceCapture/Pro Timer RPM Configuration
- Timer Mode: RPM
- Timer Speed: Medium
- Pulse Per Revolution: 3
Engine Temperature
In research
Fuel Level
In research
(Needs verification)
- 0 ohms empty
- ?? ohms 1/4
- ?? ohms 1/2
- ?? ohms 3/4
- 260 ohms full
Mapping in RCP
0.2v = 0 (empty)
1.33v = 25 (1/4)
2.2v = 50 (half)
2.95v = 75 (3/4)
3.53v = 100 (full)
Oil Pressure
Recommend a dedicated 10 bar / 145 PSI 0.5-4.5v pressure sensor. Pressure Sensor
Road speed (differential speed sensor based)
This calculates gear and speed based on the differential speed sensor.
Assumes:
- Engine RPM is connected to the first timer input.
- Differential speed pulse is connected to the 2nd timer input
The differential speed signal is on a black w/ white stripe wire and can be found in the following location:
- Pin 2 on connector X17 to the back of the gauge cluster
- Pin 10 on connector X22 on the cruise control module behind the glove box
- Pin 10 on radio connector
setTickRate(10) --10Hz
--virtual channels
--addChannel("name",SR,prec,min,max,"unit")
speeddiff_id = addChannel("Speed_",10,0,0,160,"MPH")
gear_id = addChannel("Gear_",5,0,0,5,"gear")
--global constants
--edit these to match your car
first = 4.20
second = 2.49
third = 1.66
fourth = 1.24
fifth = 1.00
final = 3.46
tirediameter = 24.7
--global variables
rpm = 0
rpm_diff = 0
speed = 0
function updateSpeedDiff()
rpm_diff = getTimerRpm(1)
speed = rpm_diff*tirediameter*0.002975
speed = speed + 0.5 -- round because 0 prec. truncates
setChannel(speeddiff_id, speed)
end
function updateGear()
rpm = getTimerRpm(0)
local gearErr = 0.15
local gear = 0
if speed > 2 then
ratio = rpm/(rpm_diff*final)
if ((first - ratio)^2) < (gearErr^2) then gear = 1 end
if ((second - ratio)^2) < (gearErr^2) then gear = 2 end
if ((third - ratio)^2) < (gearErr^2) then gear = 3 end
if ((fourth - ratio)^2) < (gearErr^2) then gear = 4 end
if ((fifth - ratio)^2) < (gearErr^2) then gear = 5 end
end
setChannel(gear_id, gear)
end
function onTick()
updateSpeedDiff()
updateGear()
end
