Friday, February 13, 2009

Engine Oxygen Sensor reader







This is just for fun. Another weekend project for the weekend warriors.


For most modern engines, there is air fuel ratio control to ensure efficient operation. Mostly aimed at reducing those harmful gases of the exhaust that destroys the environment. Also, it helps protect the catalyst. Too rich mixture can melt the catalyst.



Items

1. PIC16F676 - (RM8)

2. 7805 power regulator - (RM1)

3. Capacitor (ceramic) -(RM0.3 x 4=RM1.20)

4. Capacitors (e caps) -(RM2)

5. Resistors -(RM0.05x3=RM0.15)

6. KK connector7 way (male and female) and 4 way– (RM5?)

7. IC socket for the PIC16f676 -(RM1)

8. 4MHz crystal - RM(2.50)

9. strip board/vero board -RM(6.50)

10. diode 1N4007 -(RM0.30)



Tools

1. Solder

2. Pic programmer

3. Any compiler for PIC (I use PICBASICPro)

4. Download free Selmaware StampPlotLite

5. USB to Serial (COMport) converter – you can get it from computer stores.


Depending on the engine make, the voltage signal from the oxygen sensor vary. On my TOYOTA it is about 0.1 to 0.8 volts. I think for PROTON also about the same. Actually, what I built was just voltage meter, and plotted the voltage read out on the laptop.





First build the thing. The source codes is here. The source codes is in PICBASICPro. The hex file is here.


The schematics is here.










To connect the 9pin com port to the board – ground to pin5 of the 9pin port, serial out to pin 2 of the 9pin port.


Get the free Selmaware StampPlotLite. http://www.selmaware.com/stampplot/






















Find the wires that leads to the oxygen sensor of the engine. Depending on the sensor type, comes with either 2 or 4 wires. Usually for the 4 wires, the black is ground,the red is 12v and one of the lighter coloured is the signal. First using multimeter. With engine ON, find the one that appears to have fluctuating signal.


Here is an example of the signal from the oxygen sensor. I save the data to excel. Note that there is a lot of noise in the data. I suspect that the noise comes from the poor serial communication ( there is a lot of invalid data coming in). I think that it is due to the inaccuracy of the crystal. Need to change that.