Arduino Boost Gauge

Here is a simple project involving an Arduino to construct your own boost gauge with a peak hold and reset. Now you can look smart but really don’t have to be. It’s really simple stuff, and I’m new to it also, but with simple soldering skillzzz you can be a DIY bad boy. It’s the internet! Anything is possible, it’s where dreams come true.

DSC_1116

This is a basis for a whole bunch of other options like more sensors and in later posts, will go into. I am not taking credit for designing this, the original project originated from this guy with a sikwitit 2JZ Volvo Brick:

Ehh link is dead!

Anyways, I made some improvements including an LED lit button and some changes to the code due to some refresh issues that occurred during my original installation. Depending on what screen you use, you may want to modify the delay/refresh.

List of materials:

Arduino Uno (most Arduinos should work, this is just one of the cheapest)
MPX4250AP MAP Sensor (DigiKey)
Serial 16×2 LCD Display (SparkFun.com)
10k resistor (Pull up on button)
.01 uF Capacitor (for buffering the MAP signal)
Momentary switch (SparkFun.com)
Associated Wiring
Computer and USB cable to load the code

For the switch I bought the breakout board for it and I wanted an LED lit one so I had to put in a resistor to LED circuit (100 Ohm seen in the diagram).

ArduinoBoost

And the code:

int mapsen = 0; // Set MAP sensor input on Analog port 0
int boost = 0; // Set boost value to 0
int mapval = 0; // Set raw map value to 0
volatile int peakboost = 0; // Set peak memory to 0

void setup()
{
attachInterrupt (0, preset, LOW); // defines reset interrupt on D2
Serial.begin(9600); // Open serial port
Serial.write(254); // SerLCD instruction
Serial.write(01); // Clear display
Serial.write(254); // SerLCD instruction
Serial.write(128); // “Powered by:” on first line, left align
Serial.print("PROJECT Z61");
Serial.write(254); // SerLCD instruction
Serial.write(194); // “NSFabrication” on second line, left align
Serial.print("CLARISSA ST165");
delay (2000); // Display splash screen for 2 seconds
Serial.write(254); // SerLCD instruction
Serial.write(01); // Clear display
Serial.write(254); // SerLCD instruction
Serial.write(128); // “MAP:” at top right of display
Serial.print("MAP:");
Serial.write(254); // SerLCD instruction
Serial.write(136); // “kPa” three digits to the right of “MAP:”
Serial.print("kPa");
Serial.write(254); // SerLCD instruction
Serial.write(192); // “Peak:” at bottom right of display
Serial.print("Peak:");
Serial.write(254); // SerLCD instruction
Serial.write(201); // “kPa” left of peakboost
Serial.print("kPa");
}

void loop()
{
mapval= analogRead(mapsen); //Reads the MAP sensor raw value on analog port 0
boost = (mapval*(.00488)/(.022)+20); //Converts raw MAP value to kPa

if (boost > peakboost) // If current boost is higher than peak, store in peak memory
{
peakboost = boost ; // Store current boost in peak memory
}

if (peakboost >= 100) // Shifts peak value 1 character to the right if < 100kPa { Serial.write(254); // SerLCD instruction Serial.write(197); // Peak display after “Peak:” Serial.print(peakboost); } else { Serial.write(254); // SerLCD instruction Serial.write(197); // Go to position 22 Serial.write(32); // Load clear bit at position 22 Serial.write(254); // SerLCD instruction Serial.write(198); // Peak display after “Peak:” Serial.print(peakboost); } if (boost >= 100) //Shifts the MAP value 1 character to the right if < 100kPa { Serial.write(254); // SerLCD instruction Serial.write(132); // boost after “MAP:” Serial.print(boost); } else { Serial.write(254); // SerLCD instruction Serial.write(132); // Go to position 4 Serial.write(32); // Load clear bit at position 4 Serial.write(254); // SerLCD instruction Serial.write(133); // boost after “MAP:” Serial.print(boost); } delay(300); // prevents LCD display from ghosting. Lower number refreshes faster, higher number has less ghosting on slow LCD’s } void preset() //peak reset if D2 goes low { peakboost = boost; //sets peakboost to current boost reading, resetting the peak memory }

My assembly pictures:

DSC_1103

DSC_1104

DSC_1105

DSC_1106

DSC_1108

DSC_1112

DSC_1113

DSC_1112

DSC_1113

DSC_1114

DSC_1115

DSC_1120

Next, integrated intercooler water pump controller, with all the feeexens!

5 Comments

  • dean
    May 31, 2015 - 3:34 am | Permalink

    Hi.
    How did this work out did it need further calibration??

    Do you get stable readings??

    • admin
      June 4, 2015 - 10:12 am | Permalink

      Dean,

      It worked fine, and still is. I never double checked the readings but after a year and a half I had zero problems. Check out my newer gauge for better packaging and screen output.

  • Pingback: DIY Boost Gauge

  • gourtz
    August 27, 2015 - 1:28 pm | Permalink

    hello to conver in bar is easy? want to make this project but i dont like psi kpa etc….

    • admin
      October 5, 2015 - 7:45 am | Permalink

      Yes, it’s a simple math equation you include in the code.

  • Leave a Reply

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