Hey guys, I posted about this in my Franken 550 project log, but I figured i'd post it over here in a little more depth.
Basically, I wasn't happy with the current methods of syncing carburetors, that is, using ATF in tubing or gauges because they're so hard to read. Well, I guess the ATF method might not be so bad, but it's messy.
So I went to the junkyard and got four identical MAP (manifold air pressure), or vacuum, sensors. These can be generally be found on import cars (honda, mitsu, toyota, some crystler) from the 90s to early 2000s. Point is to find four of the same down to every model number on the label as a different number most likely means a different output.
I found four MD305600 sensors from a wide range of Mitsubishis and some jeep like thing with a grand something badge (yeah sorry, cant remember).
Generally, all of these map sensors operate under the same basic principles with three connection pins: Power (typically 5volts), ground, and signal out. As the pressure changes, the sensor changes the sensor out voltage between 5v and ground, so an analog value. To get an actual pressure reading from the sensors instead of a voltage, you have to know the relationship between the two which is very hard to find....Fortunately, we dont care about the actual pressure and just want to compare the voltages between the four pressure sensors.
to make this method any better than gauges, I had to do analyze the data coming from the four sensors as just looking at the voltages and using needle valves to stabilize them would be no better than gauges. So, I hooked them up to a microcontroller which allowed me to rapidly collect data points on each sensor, find an average of the four, and then calculate a percent difference between each sensor and the average. This creates a graph something like this using a plotter tool:
The graph moves pretty slow as each point is a second apart. Better, quicker smoothing could be done with additional algorithms but I've got mine synced for now, so I haven't made any improvements yet. Maybe exponential smoothing?
Anyways, here's the Arduno (the microcontroller) code:
long val1, val2, val3, val4 = 0;
int count = 0;
void setup() {
Serial.begin(115200);
}
void loop() {
//increment the averaging counter
count += 1;
//collect sensor values and sum with previous value
val1 += analogRead(A0);
val2 += analogRead(A1);
val3 += analogRead(A2);
val4 += analogRead(A3 );
if (count > 100) //If we've collected data for 1 second,
{
//average the summed values and apply calibration values
//calibration values are found by running the code with the sensor exposed to atmosphere and making them all match.
val1 = val1 / count + 10;
val2 = val2 / count - 2;
val3 = val3 / count;
val4 = val4 / count - 3;
//calculate average of the four sensors
float avg = (val1 + val2 + val3 + val4) / 4;
//send the percent difference of each sensor from the average.
Serial.print(((val1 - avg) / avg) * 100);
Serial.print(" ");
Serial.print(((val2 - avg) / avg) * 100);
Serial.print(" ");
Serial.print(((val3 - avg) / avg) * 100);
Serial.print(" ");
Serial.print(((val4 - avg) / avg) * 100);
Serial.println(" ");
//reset the counters and values
count = 0;
val1 = 0;
val2 = 0;
val3 = 0;
val4 = 0;
}
}
Connecting the sensor is pretty easy once you figure out the pinout. I found a diagram online for mine :
Simply tie all the 5v pins together and connect to a 5v source (my microcontroller provided this) and then tie all the grounds together and ground those. Finally, wire each signal pin to an analog pin on the microcontroller.
Here's how mine turned out: