It has been almost forever since my last log, and to my followers, I apologize.
In point of fact, I'm terrible at logging things, but I did manage to write down some of the process as I went through it, so here I will bundle not one, but Three logs that I wrote long ago, but didn't post until now:
From some time in May 2015:
Greetings from the Road
The road trip has begun. I write this from the woods outside Mendocino, CA. New to the ECUality arsenal is the dash terminal - an Arduino Mega 2560 equipped with an Xbee and lit LCD display. The unit is powered from an ignition-switched 12V line from the dash fuse panel, so it comes on when the ignition is turned on. The ECU, which is in the engine compartment, communicates with the dash monitor via the Xbee wireless board. All serial functionality can be easily directed to USB or Xbee, so the dash terminal can access the full compliment of commands.
Currently I am only using the dash monitor it to measure oil pressure, but much more is in store for this unit. Eventually it will enable all of the following:
Remote control access to common commands (performance mode, log data)
Remote control selection of readings to display.
Alerts for electrical faults and unsafe sensor readings
Control the bow-mounted pneumatic traffic axe. (just kidding. probably)
And maybe: Remote re-programming (still mulling this over)
From a couple days later
Houston, We have a miss
So far, ECUality has gotten us to our destinations on the road trip, but the steep, winding driving through the coastal redwoods has surfaced a miss of unknown origin, and it appears to be getting worse. A list of observable miss properties:
- Duration: each miss lasts an estimated 1-10 cylinder fires (it bucks)
- Frequency: Started once every few minutes, now I get several misses in succession when exiting every curve.
- Throttle dependency: no definite dependency
- Warm/Cold dependency: seems to happen mainly when engine is warm, but not 100% sure it doesn't happen cold
- RPM dependency: More pronounced at low RPM, but no strong dependency.
Guesses about cause :
- Closed-loop calibration is sending mixture too lean.
- Tach signal from Hall sensor is cutting out
- Air sensor signal is cutting out
- injector driver is cutting out
Techniques to determine cause:
- Add ECU code to check for and report anomalous readings for RPM and air flow
- Manually enrich the mixture and see if performance improves.
- Add ECU code to talk to the injector driver via SPI. (Wire library)
I'm going to do all of these. In this order.
From some time in June 2015
ECUality development has slowed, but it has by no means stopped. I have now taken ECUality up the California coast twice to Mendocino and once up to the woodlands near Eureka.
It hasn't been smooth sailing every time. The trips to Mendocino revealed a miss, which I later diagnosed as being caused by a mistake in the tach input circuit. I had erroneously assumed that the tach signal was the same 0-5V coming from the ignition module as it was going in. It turns out that while the signal going to the ignition module was 0-5, the signal from the module (and to the ECU) was 0-12V. My circuit had protection that kept it from being damaged, but the signal was clipped so severely that the signal to noise ratio was way bad, and occasionally the ECU would sense noise as extra tach pulses.
The code I wrote to check for anomalous RPM readings (see previous post) was what lighted the way. Every time the engine would miss, I would see RPM fault reports on the dash terminal. This let me know to look at the tach sub-circuit for problems.
The solution was very simple. I hacked a voltage divider onto the board at the input to the comparator to bring the signal down to the 0-5V level that the Schmitt trigger wants.