Arduino Controlled Car Dashboard

In preparation for a road trip I've been building a tiny house (aka "The Mopar Mansion") to put into my old '77 Dodge Truck. One thing that needed to be addressed before heading out on 5000 plus miles of road is having some way to know when or if the truck is broken. One time, because the oil pressure sensor was busted, I failed to realize that I had run out of oil until I heard terrible clicking. The speedometer is unreliable, there is no tachometer, I'm going to have a transmission cooler, so I'd want a temperature sensor on that. I researched gauges, and along with the cost of wiring all the senders, to get individual gauges, would cost several hundred dollars. Not to mention I'd lack any programmatic control to enhance the functionality.

Design Spec

Enter Arduino, by coupling several readily available parts and sensors, I'll be able to construct a more flexible information display with better control at a lower cost. Below are the initial design criteria:

Required Design Criteria

  • Voltage Gauge
  • Vacuum Gauge
  • Oil Pressure Gauge
  • Coolant Temperature Gauge
  • Transmission Temperature Gauge
  • Fuel Level Gauge
  • Tachometer
  • Speedometer / Odometer

Nice to Have Criteria

  • External Temperature
  • Data Logging of Parameters
  • Entry of Fuel Fill for Millage Calculation
  • Trip Odometer
  • Warning Functionality
  • Display Off

Implementation Summaries

The general planned implementation is to couple an Arduino Uno to a Data Logging and Clock Shield, a 20x4 LCD Display, and a Matrix Keypad for input. Much of the required criteria only need the display and sensors, however I'll be building with an eye toward the requirements of the keypad and logger boards. The planned implementation for each of the design criteria are as follows:

  • Voltage Gauge - Use a voltage divider circuit to map the 11-14 Volts from the truck to a 0-5 Volt range that could be measured by the Arduino analog input.
  • Vacuum Gauge - Attach the manifold vacuum line to this vacuum sensor and reading it through the Arduino.
  • Oil Pressure Gauge - Using the existing oil pressure sender, which I'll be replacing. Assuming it varies some resistance value, it should just be a matter of measuring the voltage tapped out of a divider circuit, using the sender as one resistor, and another value for the second.
  • Coolant Temperature Gauge - There is a pre-existing sender for this as well, so I'd use the same strategy as the Oil Pressure Gauge.
  • Transimission Temperature Gauge - I'm going to use the same sender as for the coolant temperature, but integrated into a transmission cooling unit, where the t-block is grounded the frame. Should require the same divider circuit.
  • Fuel Level Gauge - Again, same as the other pre-existing senders, a divider circuit through the sender to ground.
  • Tachometer - At first I considered taping the ignition somewhere, but didn't want to possibly fry my Arduino, and also I want real crank rotation, not ignition pulse. The current plan is to use one of these Hall effect sensors on either the crank pulley or the alternator pulley with a magnet. The benefit of using the alternator pulley is that if the RPM goes to zero, I get a free indication that the alternator/fan belt has broken.
  • Speedometer - The current transmission cable method is pretty clunky, and GPS was both costly and might stop in tunnels or bad weather. For this I'll probably use another Hall effect sensor on either the drive shaft or one of the front wheels somewhere.
  • External Temperature - Just a nice to have, this would use one of the many Arduino sensors available, I might re-purpose the temp/humidy sensor from the dormant Climate Controller Project.
  • Data Logging - Mostly handled via software and the SD Card Shield I mentioned above. I'd like to regularly log all the gauge parameters with time and climate conditions. This would be even better with geo location, but that might be a far in the future project.
  • Fuel Fill Millage Calculation - The real purpose of the data logging shield is to provide a way to track millage. By providing a facility on the user interface to record a fuel fill up, I could calculate in software the millage since the last fill up and display a recent and average miles per gallon. My thought is that when I fill up (all the way), I could select a "Record Fill Up" option and be prompted to enter the gallons and cost with the keypad.
  • Trip Odometer - Would be handled by software, this is pretty low priority, I have never really cared about this.
  • Warning Functionality - Either specified through the interface, or hard coded into the software, when some parameter above falls outside of a range, the screen could blink or a warning light would flash. I think I'd like to have a bright, "shit just got bad" light on the dash.
  • Display Off - When driving at night, I'd like to have all the lights in the car off. It should be a mater of wiring a switch to one of the digital pins and only displaying output when the switch is on.

Next Steps

I've ordered parts and will begin prototyping the basic interface and testing voltage divider circuits, the vacuum, and Hall effect sensors. Once I have a good working bread board prototype, I'll wire things into the car and calibrate. The last step will be to package the hardware.

If you enjoyed reading this or learned something, please consider sharing via , , or . Thanks!

A full list of projects can be found on the Projects page.