I’ve been wanting to add oil temperature and pressure gauges to my car for awhile, as Honda doesn’t monitor these at all beyond a simple pressure switch.
But shopping for traditional round 52mm guages was an exercise in massive frustration. First, most of them are poor quality. They use cheap sending units and cheap gauge internals, but charge you a small fortune in expense. But even the better ones are still very limited and don’t provide lots of useful function.
So, enter the high tech multigauge with OLED or whatever. But these are OBD based almost entirely. You can’t add external sensors that didn’t come with the engine and integrate them into the same data. The racing dash will work, but how can you package that in a street driven car? Not to mention those aftermarket setups are hugely expensive.
Could I build my own setup? One that was more accurate, had better functionality but kept the simplicity and utility that’s important to me? Indeed, I believe I can. Here’s the basic approach:
1) Source a professional grade pressure sensor that uses the 4-20ma output format and integrates easily in a vehicle environment while being robust to it.
2) Use an RTD temperature probe instead of the thermocouple. This will give 0.3º C accuracy in an easily integrated format.
3) Use a little Raspberry Pi Pico to process the signals from the transducers and power a compact display that has basic touch screen function.
In theory, there’s not much to it. You take 12V from the car via OBD pin 16, route it through a buck converter to get you down to 5V where the rest of the system lives. The 5v powers a small RTD amp board that talks to the Temperature sensor. The 4-20ma pressure sensor signal comes in and drops voltage across a precision 250 ohm shunt resistor which the Raspberry uses for pressure values based on a linear current/voltage relationship. 4ma is 1V, 20ma is 5v, and the pressure is therefore 0-150psig on that linear equation.
The pressure sensor is 0.5% accurate and has a 1ms response time, which means it’s going to need some signal conditioning to produce a readable value on the screen. In testing, a good refresh rate seems to be about 2hz, so we’ll have the Raspberry sample the pressure values every thousandth of a second for 500 samples, calculated an exponential moving average on that sample period, then display that value, updating every half second. This should provide a great balance of response and legibility. Since the sampling methodology and refresh rate are coded in the firmware, we can tune these as needed if a different balance of response and stability is desired. In simulation, an alpha value of 0.2 on an EMA seems about perfect.
The RTD just uses straight up resistance to measure temperature. This one has a resistance of 1000 ohms at 0C and follows a slope of 3.85ohms per degree it’s good to a max of 260C, which is quite sufficient for oil temp. On the bottom end it can monitor temps much colder than I will ever see and with excellent precision of under one half degree Celsius.
Then the Raspberry in its little brain box stashed under the dash talks to a separate display module via corded USB-C.
The display box houses a small 2.8” TFT that displays your data while providing touch screen functions for things like adjusting brightness, changing color schemes from day to night, resetting the min or max memory values, etc.
Here’s what I came up with for my display layout. It shows the day and night modes. I hate bluish light glare at night, so red at night as all I can approve. And green during the day seems useful in my experience. Because this is a touch screen, you can tap the brightness slider across the top and manually override if you don’t like what the ambient light sensor came up with. Tapping the “reset” button will reset the max and min values for temperature or pressure in its respective window. Tapping the unit button will switch units between ºF or ºC for temp, or kPa and PSI for pressure.
The display should be installable in a very compact 3d printed housing with only a single USB-C cable connected to it. The button arrangement should allow the display to be housed in a partially hooded housing to reduce glare from the side and top while still allowing your fingers to touch freely as needed.
So there it is— my plan for a more sophisticated oil temperature and pressure gauge that actually should cost less than some of the better off the shelf options while outperforming them.
But shopping for traditional round 52mm guages was an exercise in massive frustration. First, most of them are poor quality. They use cheap sending units and cheap gauge internals, but charge you a small fortune in expense. But even the better ones are still very limited and don’t provide lots of useful function.
So, enter the high tech multigauge with OLED or whatever. But these are OBD based almost entirely. You can’t add external sensors that didn’t come with the engine and integrate them into the same data. The racing dash will work, but how can you package that in a street driven car? Not to mention those aftermarket setups are hugely expensive.
Could I build my own setup? One that was more accurate, had better functionality but kept the simplicity and utility that’s important to me? Indeed, I believe I can. Here’s the basic approach:
1) Source a professional grade pressure sensor that uses the 4-20ma output format and integrates easily in a vehicle environment while being robust to it.
2) Use an RTD temperature probe instead of the thermocouple. This will give 0.3º C accuracy in an easily integrated format.
3) Use a little Raspberry Pi Pico to process the signals from the transducers and power a compact display that has basic touch screen function.
In theory, there’s not much to it. You take 12V from the car via OBD pin 16, route it through a buck converter to get you down to 5V where the rest of the system lives. The 5v powers a small RTD amp board that talks to the Temperature sensor. The 4-20ma pressure sensor signal comes in and drops voltage across a precision 250 ohm shunt resistor which the Raspberry uses for pressure values based on a linear current/voltage relationship. 4ma is 1V, 20ma is 5v, and the pressure is therefore 0-150psig on that linear equation.
The pressure sensor is 0.5% accurate and has a 1ms response time, which means it’s going to need some signal conditioning to produce a readable value on the screen. In testing, a good refresh rate seems to be about 2hz, so we’ll have the Raspberry sample the pressure values every thousandth of a second for 500 samples, calculated an exponential moving average on that sample period, then display that value, updating every half second. This should provide a great balance of response and legibility. Since the sampling methodology and refresh rate are coded in the firmware, we can tune these as needed if a different balance of response and stability is desired. In simulation, an alpha value of 0.2 on an EMA seems about perfect.
The RTD just uses straight up resistance to measure temperature. This one has a resistance of 1000 ohms at 0C and follows a slope of 3.85ohms per degree it’s good to a max of 260C, which is quite sufficient for oil temp. On the bottom end it can monitor temps much colder than I will ever see and with excellent precision of under one half degree Celsius.
Then the Raspberry in its little brain box stashed under the dash talks to a separate display module via corded USB-C.
The display box houses a small 2.8” TFT that displays your data while providing touch screen functions for things like adjusting brightness, changing color schemes from day to night, resetting the min or max memory values, etc.
Here’s what I came up with for my display layout. It shows the day and night modes. I hate bluish light glare at night, so red at night as all I can approve. And green during the day seems useful in my experience. Because this is a touch screen, you can tap the brightness slider across the top and manually override if you don’t like what the ambient light sensor came up with. Tapping the “reset” button will reset the max and min values for temperature or pressure in its respective window. Tapping the unit button will switch units between ºF or ºC for temp, or kPa and PSI for pressure.
The display should be installable in a very compact 3d printed housing with only a single USB-C cable connected to it. The button arrangement should allow the display to be housed in a partially hooded housing to reduce glare from the side and top while still allowing your fingers to touch freely as needed.
So there it is— my plan for a more sophisticated oil temperature and pressure gauge that actually should cost less than some of the better off the shelf options while outperforming them.
Last edited: