Reading Honda MAP sensor without adverse affects?

Hey everyone, I come from the field of automotive electrical installation and mechanical repair, i am using arduino as my segway into microelectronics and coding!

so, i've already written a few successful sketches, done a little interfacing, but i have a problem.

i have a 1992 Honda Prelude and i wanted to use the arduino to create a little diagnostic information display. i have tapped into the signal wire coming from the manifold absolute pressure sensor (MAP sensor for short) to the ECU and connected it to analog pin 0 (5v input w/ common ground and laptop power supply for arduino) the MAP sensor runs on a 5v supply from the ECU and outputs a varying voltage between ~ 0.3V - 3.0V based on intake manifold vacuum pressure and is used to calculate engine load among other important data points.

The problem is, the engine seems to run/idle rougher and be less responsive when the wire is plugged into the arduino and even worse if the arduino is connected to the MAP wire but the arduino is disconnected from power.

i can only assume this happens because the arduino is throwing the signal off a bit.

So, the question is, WHY exactly does this happen? and WHAT can i do to remedy the problem while still receiving data from the sensor? (what and why are important since im in it for the learning!) make a transistor circuit to boost the signal from the MAP so the arduino and ECU can still use the MAP wire without any signal degradation? i know i could just use a secondary MAP sensor but i would rather learn how to do it right than slap a band-aid on the issue :slight_smile:

Any information shared is greatly appreciated! I truly value your expertise and willingness to help others learn!

Never ever connect a signal to an arduino or any other chip without it being powered, you could fry it.

How is this wired? The analogue input has a very high input impedance so it should not affect the signal. Measure the signal with a scope before and then after it is connected to a powered arduino.

Hi!

Any update on this? I'm about to tap into the Throttle Position Sensor (TPS) and Manifold Absolute Pressure sensor (MAP) on my motorbike. I want to be able to do this without messing up the signal and upsetting the original ECU.

Typically the sensors are supplied with 5v from the ECU and outputs 0-5v back to the ECU.

Any ideas?

Thanks!
/Tobias

I see no movement on this post for over 12 months. I also am doing a similar thing with my motorbike. I tapped the Gear Position Sensor to an Arduino analog input and measured the voltage. The arduino is powered from the bike battery and the gear position sensor middle wire (sensor has ground, + and a third for the variable voltage output) which outputs between 0-5 volts depending on what gear you are in. When the bike is idle and running I can move through the gears and see the voltage change and hens map the gear, but when I was out riding on the track, I noticed the dashboard would only display 4th gear and no higher. When I disconnected the Arduino, the dashboard went back to showing up to 6th gear. I don't fully understand electricity, but it seems to me when the Arduino is connected, its affecting the voltage being read by the bike ECU.

I don't understand why when riding, the bike dashboard (which gets its display values from the ECU) would be effected. It seems the ECU is no longer reading the correct voltages from the sensor when the Arduino is connected.

If anyone knows why this may be happening your help would be appreciated. I want to also do the same for the Throttle Position sensor which also works by voltage levels which I can read with the the Arduino analog input.

Here is the gear part of my code which works fine when the bike is idle in the shed.

void getGears() {
gearSensor = analogRead(A0);
if (gearSensor > 350 && gearSensor < 400) {
gearSensor = 1;
}
else if (gearSensor > 450 && gearSensor < 550) {
gearSensor = 2;
}
else if (gearSensor > 550 && gearSensor < 690) {
gearSensor = 3;
}
else if (gearSensor > 690 && gearSensor < 825) {
gearSensor = 4;
}
else if (gearSensor > 825 && gearSensor < 930) {
gearSensor = 5;
}
else if (gearSensor > 930 && gearSensor < 1000) {
gearSensor = 6;
}
else (gearSensor = 0);
}

what answer do you get when the analog voltage results in gearSensor = 550 ?

It never sees 550. I made the ranges as large as possible for each of the gears. When I took the readings using the analog input, I read the raw values in each gear then just made the range large. Because in each gear the reading is not precise, but it only fluctuates at a very small rate. Well within the ranges I have.

The analog input of the arduino should have fairly high impedance and should not interfere with the circuit between the sensor and the ECU.

It somewhat surprises me that this works off 5V and not 12V.

How are you supplying the arduino ?

Is there a common ground between the arduino and the ecu 5V systems ?

Yeah the gear sensor is only 5v. The service manual also explains how it works with the voltage levels.
I have a 12v -> 5v converter connected directly to the bike battery which powers the arduino. I must admit though I think when I originally did the coding and testing I was in the shed with the arduino powered from the bike battery which is the same battery obviously that everything on the bike runs from and I had the USB connected on the arduino to the laptop with the data output via the serial. Not sure how the ardunio takes the power with both sources connected.

In the real test when I was on the track the ardunio uses a bluetooth shield to send the data to my phone, but it is powered directly from the battery. I don't fully understand how electricity works when you tap into circuit, but I'm sure the arduino was 'stealing' volts (sorry don't know the technical term for it if there is such a thing) and so the ECU thinks there is less voltage so it does not register over 4th gear.

I wonder do I need to somehow use the power source with a pull-up resistor or something to bring the volts back to where it should be? This is wat I don't understand with how the electricity works.

if there is no common ground (arduino powered from say a 9v battery) can it still read the voltage from the gear sensor?