When you click on links to various merchants on this site and make a purchase, this can result in this site earning a commission. Affiliate programs and affiliations include, but are not limited to, the eBay Partner Network.
DIY Recommendations: Gauges and Hookups, Headliner Color
Alright, so maybe I'm a bit too cautious but I like to make sure I have all my stuff in perfect order before executing anything. In this case, temperature and pressure senders for critical engine systems and making sure I buy or craft quality components that I can be confident in to be reliable and not leak or interfere with the function of the appropriate systems.
I am working on installing gauges for my fuel pressure, coolant temp, oil pressure and temperature and AFR gauges for my 2011 GT. For me, gauges are a combination of important information and safeguarding of engine health as well as a nice little cosmetic. I just want to be ABSOLUTELY SURE that I don't screw something up and go back to rebuild land or a toasty engine fire.
Here's the plan, and what I plan to purchase:
Oil temp will be monitored by the Series 2 Blind Bolt with some CorkSport senders, but I'm debating if I want Prosport, AEM, FlowShift or CorkSport gauges.
Oil pressure will be monitored via a banjo bolt in the first oil cooler using a ProSport sender. Apparently the ProSport senders are short enough to not need as much spacing as to avoid interference with the oil flow, yet has the appropriate 150 PSI peak range.
Coolant temp will use the Racing Beat metal sleeve insert that slips into the coolant output hoses. As for the coolant sender, IDK if it really matters or what company or group offers the best product for the price.
Fuel pressure sender, IDK what the fitting size is off the top of my head but I can easily search for them using the handy "Search" function, I'd imagine. Either that, I can just go rent a fuel line removal kit and just hammer away at different sizes until something fits perfectly, then turn around and order that sized sender from somewhere. Probably ProSport.
AFR gauge, I want to use a wideband sensor and replace my rear O2 sensor (since I'm catless now) and just thread that into there for reading on a ProSport digital gauge. I like those blocky digital ProSport gauges for AFR readings.
Mounting the gauges, I am going to use a combo of the Racing Beat ash tray mount for my less critical gauges (AFR, Fuel Pressure, Oil Pressure) and my temp gauges I want to modify my headliner to put the other 2 gauges either in place of the sunglasses holder (that I never use, despite complaining about being blinded by the Sun) or extend from the plastic between the rearview mirror and the interior lights. I'll just buy a generic rectangular gauge housing for two and modify my headliner.
On a similar note, I have a distinct hatred for light beige interiors. The fact that my RX-8 has black leather, black plastic, chrome center console (that I plan to repaint to something OTHER THAN ABHORRENT CHROME!) but transitions to ugly beige pillars and headliner is disgusting to me. Are there any suggestions for recoloring the cloth headliner? Perhaps replacing the cloth entirety with something new?
The front O2 is already wideband, you could read AFR (and coolant temp) via OBD if you're running out of space to put gauges. A ScanGauge or similar device will do that, and a whole bunch of other useful real world stuff like fuel trims.
Someone on here recently came up with and was selling an addon module to make coolant and oil pressure gauges in the cluster work properly (like actually correspond to a scale). That leaves FP and oil temp that need standalone gauges. I dunno why you need fuel pressure except for diagnosis in case of future problems? I don't think it changes very much, it's controlled at the pump to a fixed setting.
So if you wanted a stealthier install and fewer extra taps in the engine you have options.
The front O2 is already wideband, you could read AFR (and coolant temp) via OBD if you're running out of space to put gauges. A ScanGauge or similar device will do that, and a whole bunch of other useful real world stuff like fuel trims.
I am already using an OBDLink MX+ to my phone for things like timing, coolant, fuel trims, RPMs, AFR, EGT, etc. I just want a physical gauge pod. I like seeing gauges, I think it looks cool.
Originally Posted by Loki
Someone on here recently came up with and was selling an addon module to make coolant and oil pressure gauges in the cluster work properly (like actually correspond to a scale). That leaves FP and oil temp that need standalone gauges. I dunno why you need fuel pressure except for diagnosis in case of future problems? I don't think it changes very much, it's controlled at the pump to a fixed setting.
While an addon module would enable custom movement of the coolant gauge, the Series 2 does not have an oil pressure gauge. I'd rather see the actual numbers than try to count all the teensy mini dashes on the instrument cluster. The Series 2 dash has probably 80 little mini ticks for the fuel and temp gauges!
I had my fuel pump died on me previously, as I'd rather have the benefit of knowing that my pressure is always normal from now on. Also I'm still trying to diagnose rough idle and the car also surges idle/searches for idle wildly whenever I fuel up now. It's really wierd.
Hey Bluspectre. Gauges are such an individual thing with unique requirements and expectations.
I was using OBD on an old phone for ages, found that i became reliant on it and just wanted gauges.
My setup is definitely a DIY and it was done on the cheap, and I am really happy with the end result.
Went with these gauges as they were the closest I could find to the OEM digital speed. I think there is about 10 colours you can choose from which gets a bit Christmas tree like. So i just run with basic white. These have all the usual high or low alarms also.
And yes this pod sits directly over the Bose dash speaker location. All still works and sounds great.
Note this is a series 1 with the lower oil pressure than on a series 2.
Good luck in your quest for gauge happiness!
Old thread, but will add my two cents incase a future reader benefits.
I went with the AutoMeter gauges. I liked them for using stepper-motors and matching the OEM dash gauges pretty well. However, there are fitment issues with the ashtray location. The bezels are slightly larger than you want them to be, so there isn’t quite enough room for them to sit flush against the RacingBeat cluster.
SakeBomb installed the sensors for me while doing some other work on the car. I should have asked the to take some photos of the install, but didn’t think of it until the car was already back together. The water temp sensor uses the RacingBeat adapter. I believe oil temp and pressure both come off the service port on the back of the engine. I think this giving the the temp of oil as it enters the engine, not as it exits—which is better than nothing but not really what I wanted. It usually shows 140-160°F when cruising down the freeway, and has never shown higher than 180° except at an autocross event at Crows Landing (long periods in 2nd gear and well over 100° outside).
I think the only way to get temp of oil coming out of the engine would be with an oil filter relocation kit. But if you mount the filter above the sump, the lines will drain and you’ll have to start the engine without lubrication. Not ideal.
Hey guys, Ive came up with a Arduino C++ code that if hooked up properly it will drive the oil temp and oil pressure gauge's. Here is the cavoite it requires modifying the cluster to tap the wires for the two gauges. along with installing two sensors on the engine via coolant= TMP36 sensor, and a 1-5v 0-200psi sensor. The ardiuno code cane be modified for whatever sensor you choose. just needs to be at least 0-5v range. If you need wiring detail or code help just shoot me a message. happy coding...
Code:
#define SMOOTHING_WINDOW 10 // Number of samples for moving average (input smoothing)
// Define the pins for the oil pressure gauge control
#define oil_sine_plus 6 // Pin 6 - Controls the voltage to the sine coil (PWM)
#define oil_sine_minus 10 // Pin 10 - Controls the polarity of the sine coil
#define oil_cosine_plus 4 // Pin 4 - Controls the voltage to the cosine coil (PWM)
#define oil_cosine_minus 2 // Pin 2 - Controls the polarity of the cosine coil
// Define the pins for the water temperature gauge control
#define water_sine_plus 9 // Pin 9 - Controls the voltage to the sine coil (PWM)
#define water_sine_minus 8 // Pin 8 - Controls the polarity of the sine coil
#define water_cosine_plus 7 // Pin 7 - Controls the voltage to the cosine coil (PWM)
#define water_cosine_minus 5 // Pin 5 - Controls the polarity of the cosine coil
// Define input pins
#define oilPressurePin A1 // Pin A1 - Potentiometer for oil pressure
#define waterTempPin A3 // Pin A3 - Potentiometer for water temperature
// Smoothing variables
int oilPotValues[SMOOTHING_WINDOW];
int waterPotValues[SMOOTHING_WINDOW];
int oilPotIndex = 0;
int waterPotIndex = 0;
long oilSum = 0, waterSum = 0;
int smoothedOilPotValue = 0, smoothedWaterPotValue = 0;
// Variables for needle positions
int lastOilPosition = 0;
int lastWaterPosition = 0;
// Smoothing factors
float smoothingFactor = 0.1; // Output smoothing factor for both gauges
int delayTime = 10; // milliseconds between each angular step
// Sinusoidal lookup table for 0-89 degrees in 8-bit resolution
const PROGMEM uint8_t Sine_Lookup[90] = {
0, 4, 9, 13, 18, 22, 27, 31, 35, 40, 44, 49, 53, 57, 62, 66,
70, 75, 79, 83, 87, 91, 96,100,104,108,112,116,120,124,127,131,
135,139,143,146,150,153,157,160,164,167,171,174,177,180,183,186,
190,192,195,198,201,204,206,209,211,214,216,219,221,223,225,227,
229,231,233,235,236,238,240,241,243,244,245,246,247,248,249,250,
251,252,253,253,254,254,254,255,255,255
};
// Scaling factor to ensure full range of PWM
const float PWM_ScaleFactor = 1;
void setup() {
Serial.begin(115200);
// Pins for oil pressure gauge
pinMode(oil_sine_plus, OUTPUT);
pinMode(oil_cosine_plus, OUTPUT);
pinMode(oil_sine_minus, OUTPUT);
pinMode(oil_cosine_minus, OUTPUT);
// Pins for water temperature gauge
pinMode(water_sine_plus, OUTPUT);
pinMode(water_cosine_plus, OUTPUT);
pinMode(water_sine_minus, OUTPUT);
pinMode(water_cosine_minus, OUTPUT);
// Pins for potentiometer inputs
pinMode(oilPressurePin, INPUT);
pinMode(waterTempPin, INPUT);
// Initialize arrays for smoothing
for (int i = 0; i < SMOOTHING_WINDOW; i++) {
oilPotValues = 0;
waterPotValues = 0;
}
// Modify PWM frequency for smoother output (optional, based on your setup)
TCCR1B = TCCR1B & B11111000 | B00000010; // PWM frequency of 3921.16 Hz for smoother transitions
}
void loop() {
// Read potentiometer values
int oilPotValue = analogRead(oilPressurePin);
int waterPotValue = analogRead(waterTempPin);
// Apply smoothing for oil pressure input
oilSum -= oilPotValues[oilPotIndex];
oilPotValues[oilPotIndex] = oilPotValue;
oilSum += oilPotValue;
oilPotIndex = (oilPotIndex + 1) % SMOOTHING_WINDOW;
smoothedOilPotValue = oilSum / SMOOTHING_WINDOW;
// Apply smoothing for water temperature input
waterSum -= waterPotValues[waterPotIndex];
waterPotValues[waterPotIndex] = waterPotValue;
waterSum += waterPotValue;
waterPotIndex = (waterPotIndex + 1) % SMOOTHING_WINDOW;
smoothedWaterPotValue = waterSum / SMOOTHING_WINDOW;
// Map smoothed potentiometer values to full gauge range (0 to 719)
int oilTargetPosition = map(smoothedOilPotValue, 204.6, 716, 0, 719); // 1-5v 0-200psi
int waterTargetPosition = map(smoothedWaterPotValue, 102, 921, 0, 719); // TMP36 -40 to +257F, .5-4.5v
// Smooth output positions using exponential moving average
lastOilPosition = smoothingFactor * oilTargetPosition + (1 - smoothingFactor) * lastOilPosition;
lastWaterPosition = smoothingFactor * waterTargetPosition + (1 - smoothingFactor) * lastWaterPosition;
// Update both gauges
setOilPressureGauge(lastOilPosition);
setWaterTempGauge(lastWaterPosition);
delay(delayTime); // Small delay to control the update rate
}
void setOilPressureGauge(int pos) {
int sinCoilValue;
int cosCoilValue;
while (pos > 359) pos -= 360; // Keep angle between 0 and 359 degrees
// Logic for controlling the oil pressure gauge (same as previously)
if (pos >= 270) {
digitalWrite(oil_sine_minus, HIGH);
digitalWrite(oil_cosine_minus, LOW);
sinCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[359 - pos]));
cosCoilValue = pgm_read_byte(&(Sine_Lookup[pos - 270]));
}
else if (pos >= 180) {
digitalWrite(oil_sine_minus, HIGH);
digitalWrite(oil_cosine_minus, HIGH);
sinCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[pos - 180]));
cosCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[269 - pos]));
}
else if (pos >= 90) {
digitalWrite(oil_sine_minus, LOW);
digitalWrite(oil_cosine_minus, HIGH);
sinCoilValue = pgm_read_byte(&(Sine_Lookup[179 - pos]));
cosCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[pos - 90]));
}
else {
digitalWrite(oil_sine_minus, LOW);
digitalWrite(oil_cosine_minus, LOW);
sinCoilValue = pgm_read_byte(&(Sine_Lookup[pos]));
cosCoilValue = pgm_read_byte(&(Sine_Lookup[89 - pos]));
}
// Write PWM values to the pins for the oil pressure gauge
analogWrite(oil_sine_plus, sinCoilValue);
analogWrite(oil_cosine_plus, cosCoilValue);
}
void setWaterTempGauge(int pos) {
int sinCoilValue;
int cosCoilValue;
while (pos > 359) pos -= 360; // Keep angle between 0 and 359 degrees
// Logic for controlling the water temperature gauge (same as oil pressure logic)
if (pos >= 270) {
digitalWrite(water_sine_minus, HIGH);
digitalWrite(water_cosine_minus, LOW);
sinCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[359 - pos]));
cosCoilValue = pgm_read_byte(&(Sine_Lookup[pos - 270]));
}
else if (pos >= 180) {
digitalWrite(water_sine_minus, HIGH);
digitalWrite(water_cosine_minus, HIGH);
sinCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[pos - 180]));
cosCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[269 - pos]));
}
else if (pos >= 90) {
digitalWrite(water_sine_minus, LOW);
digitalWrite(water_cosine_minus, HIGH);
sinCoilValue = pgm_read_byte(&(Sine_Lookup[179 - pos]));
cosCoilValue = 255 - pgm_read_byte(&(Sine_Lookup[pos - 90]));
}
else {
digitalWrite(water_sine_minus, LOW);
digitalWrite(water_cosine_minus, LOW);
sinCoilValue = pgm_read_byte(&(Sine_Lookup[pos]));
cosCoilValue = pgm_read_byte(&(Sine_Lookup[89 - pos]));
}
// Write PWM values to the pins for the water temperature gauge
analogWrite(water_sine_plus, sinCoilValue);
analogWrite(water_cosine_plus, cosCoilValue);
}
That kit is fairly expensive for what it is. yes ease of install but Id still want my own coolant sensor. Besides my build is a 2.3L duratech so im modifying everything anyways lol. This arduino code has been tested and works for my factory RX-8 gauges. What "work" are you referring to with the code? I did have to tweak the code with the values to make it read 75F to the high range vs -45 to high range but it can be messed with. But thats what this code is posted here for. Its for anyone interested in this method, it can be modified by ANYONE, even plug it in to chat GPT for some refining. I can post a video of this working in action if you need. thanks for the reply.