I was faced with the challenge of installing a Manifold Absolute Pressure (MAP) sensor on my Kawasaki GPZ900R fuel injection project. This sensor, together with an intake air temperature sensor is used in calculating the density of air entering the engine, and therefore how much fuel to inject using the Speed-Density algorithm.
The challenge is that the Yamaha FJR1300 throttle bodies that I have chosen for the project come with a neat little MAP sensor, mounted in a perfect location but I couldn’t find any specifications or calibration data for the sensor so I have no way to tell the MicroSquirt engine management system how to use the sensor.
The first solution would be to obtain a sensor with known calibration values such as the GM 1-bar MAP sensor from General Motors and just use that, so this is what I did.. the problem is that when it arrived, it was much larger than i was expecting and i couldn’t find a neat place to mount the sensor. After a bit of digging around on the internet, I couldn’t find any smaller sensor that met my size requirements.. back to square one.
But then it occurred to me that I could possibly use the GM sensor as a reference to calibrate the Yamaha sensor. Here is the process that I used to obtain the calibration values that the MicroSquirt expects in order to use the sensor:
- Join the two sensors together with a T-piece so that they are at the same pressure
- Measure the voltage of both sensors and record it
- Use a vacuum pump (powered or hand-pump) to reduce pressure to both sensors and once again measure and record the voltages
- Use a linear equation to extrapolate the calibration values that the MicroSquirt needs
- Set the calibration in the MicroSquirt and confirm that the Yamaha sensor reads the same as the GM sensor
Read on if you want the details of how this is all done:
Firstly, I connected the GM MAP sensor to the MicroSquirt and selected that sensors configuration in TunerStudioMS and verified that the sensor is reporting expected pressure of about 94kPa. Next I joined the two sensors together with a T-piece as pictured below, the blue line runs to my vacuum pump.
Without the vacuum pump switched on, I measured the voltage on the new sensor with a multi meter and recorded the pressure that the MicroSquirt is reporting for the GM sensor. This happened to be about 3.708V @ 94.6kPa (atmospheric pressure at the time), now we have a single known voltage on the new sensor for a known pressure.
Next, I switched on the vacuum pump and reduced the pressure down to as close to zero kPa as i could get it. Theoretically this could be done with any two points of reference but it will yield a more accurate calibration with a larger gap between values. Now I measured the voltage of the Yamaha sensor and recorded it with the pressure that the GM sensor was reporting, this was about 0.413V @ 10.4kPa. I did this for a couple of different points so that I could plot them on a graph to ensure that the sensor had a linear output.
Now I have two points of reference and can use a linear equation in slope intercept form to extrapolate the pressure values for 0V and 5V that we need for the MicroSquirt configuration. The next part involves some simple secondary school math, don’t get scared off it’s quite easy! you can either do in a spreadsheet or on paper but it’s nice to plot the points on a graph just for an extra sanity check. The two points that I measured and that are needed for the following equations are:
(x1,y1) = (0.413V, 10.4kPa)
(x2,y2) = (3.708V, 94.6kPa)
The linear equation I used is the “slope-intercept form”:
y = m x + b
This is called the slope-intercept form because m is the slope of the line and b is the y-intercept. In my case, the y axis is pressure in kPa and the x axis is voltage from the sensor. Basically I want to know the pressure (y) for 0V (x) and I also want to know it for 5V since this is what the MicroSquirt expects. But first I need to calculate the slope of the line which is simply “the difference in the y values divided by the difference in the x values” or more commonly known as the “rise over run”
m = rise / run
m = (y2 – y1) / (x2 – x1)
m = (94.6 – 10.4) / (3.708 – 0.413)
m = 25.5539
The y-intercept (b), can be determined by simply re-arranging the equation to solve for b for any pair of x and y (choose either of the points, it doesn’t matter). In this case, i’m using the point (x2,y2) = (3.708V, 94.6kPa):
y = m x + b
b = y – m x
b = 94.6 – 25.5539 * 3.708
b = -0.15375
And now that I have the slope and the y-intercept, I can solve for the two values that the MicroSquirt wants (pressure at 0V and pressure at 5V):
y = m x + b
y (5V) = 25.5539 * 5 + (-0.15375)
y (5V) = 127.616kPa
y (0V) = 25.5539 * 0 + (-0.15375)
y (0V) = -0.15375kPa
So now I know that when the sensor reads 5V, the pressure is 127.616kPa and when it is at 0V, the pressure is -0.15375kPa but theoretically you can’t have a pressure value less than 0kPa since a complete vacuum is zero pascals thus the error in this calibration can be assumed to be only 0.12% which is excellent! This is well within the tolerances needed for engine fuel control and we can safely call the 0V reading 0kPa in the MicroSquirt configuration. Now I just need to plug these values into TunerStudioMS under “Calibrate MAP/Baro” and confirm that it works.
For testing, I configured the Yamaha sensor as the MAP sensor and I setup the GM sensor as a secondary Barometric correction sensor so that I could see them both on the gauges. The GM sensor and the Yamaha sensor output the same value over the entire range that I tested so the calibration was successful! I know this post is a bit detailed but if you are stuck on calibrating a MAP sensor you should be able to follow this step by step, it’s pretty straightforward once you understand the method. Leave me a comment if you have any questions!