ECU - Current focus and progress

This site has been superceded by the new My16M site

ECU project home page
Latest 3rd november 2002
The new site (still under construction)

Current focus

Generally ride the bike around with the new ECU and try and optimise the map with the Optimiser.
Tidying up the loose ends so that I can offer the ECU to others.


6 Oct 2001
The EPROM programmer ( kit from Altronics ) seems to be reading 24 pin proms ok. There are some flaws in the kit so I've had to do some mods to correct it.
7 Oct 2001
Picked up my bike from the shop, $1000 dollars thanks, ouch. Also picked a bike stand. Had a quick ride then gave bike a wash and polish. Will have to get myself a digital camera and put some shots of it in this site.
9 Oct 2001
Pulled the ECU out of the bike. Took out the EPROM (27C512) and downloaded its image. My programmer must be ok as when I put back the EPROM and ECU the bike started ok. That was a relief. I would have been just a little depressed if the bike was dead again.
Found some great info at FIM, particularly their FAQ
My microcontroller development kit based on the AVR chip arrived.
13 Oct 2001
Not much luck yet with the EPROM out of the original ECU. Some of the basic structures like reset and interrupt vectors were not there. Might be a mix of external memory ( EPROM ) and on chip memory used so currently this path is stalled.
Added four wires to the back of the ECU plug. These are on pins 11 (PMS/TDSC 2), 28 (PMS/TDSC 1), 34 ( ground ) and 35 ( +12V and PMS/TDSC 3 ). This will allow me to plug my ECU in parallel with the original ECU.
Looked at the signals from the PMS/TDSC with an oscilloscope. Not what I expected. I was expecting a sinusoid packet, like they use for decribing particles in quantum theory, for each of the 48 lugs on the timing wheel. Instead there was a fairly pure sinusoid waveform with 1 cycle per lug and a strange transient for the missing 49th and 50th lug. This was about 5V p-p with a +2V DC offset and 500Hz at idle.
21 Oct 2001
The AVR cpu is proving simple to program. It is generating a pulse train similar to the signal from the crank from its main loop. This signal is being fed back into the Input Capture pin and some interrupt software is timing these pulses and figuring out where the two missing pulses are. In addition the Timer Output Compare interrupt is generating a pulse at a fixed position in the pulse train.
Both these interrupts appear to be working as expected so we have the basics of the ECU operational.
I've made up a circuit (wow 2 resistors and a transistor) to feed the crank signal into the new ECU. Today I connected the new ECU in parallel with the original and it successfully synced to the real crank signal. Here is a picture of the new ECU taped to the rear seat and a picture of the orignal ECU with the shell off the connector. Here are two shots of the new ECU sync pulse versus the crank signal - 1 2. The lock on the crank signal seems rock solid with no jitter or misses.
1 Nov 2001
Got stuck into the wiring harness of the ECU this week. I have taken the current signals of interest, coil and injector outputs, throttle position sensor, and added my own connector on these wires. I have also made a Y adapter that allows me to run my ECU in parallel.
My ECU now has some extra circuitry to take these signals as inputs so that I can monitor their timing. That's a Tooheys OLD in the background :-).
I captured some more signals on the CRO. The top trace is the sync output from my ECU. The engine was free revving at about 2500rpm, putting the 2nd sync at about 9 1/2 divs ( 5 ms/div ). 2nd trace is taken after my input circuitry, as the CPU will see it, its clamped by a 4.7V zener.
Here is coil1, coil2, injector1, injector2.
Last week I programmed the ECU to dump the timing signals out to a serial port. I also noticed that the throttle position sensor is producing about 500mv at idle. This sounds way off. Could explain why the current setup pings under load.
13 Nov 2001
My ECU has been able to log the timing data of the orginal ECU while the bike is running. I also found by accident that I could fool the current ECU into thinking that the engine was running with the test signal that my ECU generates. This has allowed me to run the orginal ECU through its envelop and get timings for various RPMs and throttle settings.
I've also wired two high voltage power transistors onto my ECU and managed to produce a healthy looking spark. Here is the signal on my transistor as viewed by my inupt circuitry. Thats at 1 ms/div ie 20,000 rpm!!. Of concern is the relatively high voltage across the transistor due to its on resistance of ~ 1.4 ohm. If need be I can parallel this transistors.
24 Nov 2001
We have ignition!.
Finally got the software to the stage where I could reliably produce a 2ms pulse where I wanted within the engine sync pulses. So I hook my ECU on the bike ( in parallel with the existing ECU ) and compare my spark pulse with the existing spark. Turns out that I'm about 5ms advanced. My timing estimate was based on the assumption that the engine sync was from a 48 pulse train with 2 gaps. In fact there are 46 pulses plus two gaps. FIM are either mistaken on their FAQ or the Ducati's are a little different. I adjust my software and things are looking pretty good.
Now for the real test. I cut the wire on one cylinder spark output from the original ECU and allow my ECU to fire that spark. Fire up the bike. Bingo we have a reasonable idle, perhaps a little rougher than usual. I allow the bike to idle for about a minute and shutdown. The output transistor is feeling a little warm. Looks like I will need to add a 2nd transister to drive the sparks. I try the same with the other cyclinder and it's ok also. Unfortunately I'm unable to start the engine when trying to drive both sparks. It looks like at cranking speed the engine sync output was to low in amplitude to drive my simple circuitry. I also will have to address the turn on transient at some stage. Got a nice pop out of the left exhaust when I turned the ignition on, although that was after some unsuccessful cranking.
06 Dec 2001
Had a small setback last week when the CPU module I was using on the prototype failed. Not sure why but the on board 5V regulator was given out over 10V. Work on the next version, using discrete components is progressing well. It was always intended that the prototype would be a hack just to determine what circuitry was required. The new version is intended to be boxed and permanent on the bike.
08 Dec 2001
Been a busy week building the Mk2 ECU following last weeks unfortunate setback. However the new ECU is better than before. I have added two extra drive transistors for injectors, the new input circuitry is in and I've added a output control circuit to enable/disable the drive transistors. This will give the 2 sec of fuel pump when ignition is turned on etc. I've added to the software such that it generates pulse for injectors and a deadman timer for the output control circuit. As far as I can tell on the bench it all looks good. Perhaps tomorrow I'll throw it on the bike after I've had a ride.
02 Jan 2002
It's been a while since the last update but things have progressed well. Today I had the bike idling, just, with my ECU providing all the spark and injector pulses.
The last month has been taken up mostly with software development for the ECU. It turned out to be fairly tricky to get it to work on the low engine signal at cranking speeds. The development process was rather tedious also. It was write the software and test on the bench with a pure sine wave and some test mode software tweaks to pretend its sees the sync in the signal. Then when it looks ok take it down to the bike with the oscilloscope and video camera. Then capture the video onto the computer and study the signals frame by frame and try and figure out why its not working as it should. I finally hit on the idea of capturing the waveform of the engine sync signal using the computer. Now I could simply play the sound to test the software under simulated real conditions and not wear the bike's starter motor out.
I finally ending up with two seperate modes of operation. From startup to about 1200 RPM, the ECU is performing continous analog to digital conversions on the engine sync signal, and following the rise and fall of the sinusoid signal in real time. Once the speed and amplitude have increased sufficiently it goes into edge triggered mode which is more efficient computationally.
Yesterday I run the bike driving both the sparks but not the injectors. It idled well and responding to small throttle blips well. Today I ran the bike running both the sparks and the injectors. It idled slowly and did not respond to any attempt from the throttle to increase the idle speed at all. To be expected though, was probably too lean and when the throttle was opened with no adjustment to injection it just got leaner.
20 Jan 2002
Tricky stuff realtime software. Although the ECU was working perfectly when it was generating fixed duration pulses, when I made the duration of the injector pulses variable, strange glitches and invalid pulses where being generated. I finally managed to debug the software. As is usual it was just a matter of a couple of lines of code needing to be fixed.
I have a potentiometer on the unit so that I can manually adjust the mixture. The idle was much healthier and I was able to blip the throttle and run the engine to over 2500 RPM. It had the occasional miss. Overall the engine seemed smooth and responsive. I even thought the idle was smoother than normal, however that may be a slightly subjective opinion.
There is still a lot more software development ahead. However I'm going to switch back to the hardware side of things. I want to transfer all the extra functions across to my ECU, things like the control of the relay for coils and fuel pump etc. The next goal is to run without the other ECU.
25 Jan 2002
Ta Da ! Got the bike running with the original ECU completely out of the picture.
Turned out to be relatively simple. All I had to do was to control two relays, so it only required two transistors and a few diodes. The hard part was trying to figure out what the circuit was in this area. I had a schematic and a wiring list that proved to be both inconsistant with each other and incorrect.

So what's missing.
1) The Map
I need to determine the spark advance and injector pulse width across the entire throttle/RPM operating envelop. I have some data already but I think I need to have a ride with my ECU logging data from the original.
2) The other inputs.
The original ECU uses air temperature, air pressure, and oil temperature to provide an adjustment to the mixture. I could accomodate these or ignore them and allow the rider to provide the adjustment, in a similar way that a pilot of a light aircraft adjusts the cruising mixture.
3) The Tacho
Of course you can't ride without a tacho. Adding this is simple. Maybe it can also function as a voltmeter when the engine's not running.
22 Feb 2002
Damn software development can be a pain!. Its been a bit slow. This last month has seen enhancements to the pulse generation logic and redistribution of the pulse calculation times. I've also just got serial input going so that I can give it commands to adjust time etc, and the EEPROM writing code is working. I just need to put these two together. It will be simple coding, just need to figure out what I want to do here.
I took a few more recordings of the bike, this time with a bit more revving and variation to make sure the ECU would track it correctly. This part is looking really good.
6 Mar 2002
Added a command line interpreter to the ECU. I can now type in cryptic commands like c0 for choke off, c1 for choke on, d5000 for a 5ms injector pulse, etc.
I've nearly finished a Win32 MFC App to hide all the command line nasties behind an easy to use, intuitive, GUI. That's mostly working now. A few more days to polish up the software at both ends and its back to the bike again.
16 Mar 2002
First ride with the new ECU!
I've put together a quick and dirty GUI to configure the ECU. Here's a screen capture of the ECUController. Ok I'm not a GUI designer. The grid at the top left is RPM(x) vs Throttle(y). You select the portion of the map that you are interested in from the grid. The ECU sends the data for that map location and updates the horizontal sliders at the right. You then tweak the sliders to what ever you like and then press the Update EEPROM button to save the new data. The vertical sliders are the 7 analogs (only throttle so far) to the ECU updated near realtime. The check box at the lower right is the choke ( gives a 50% increase to injector period ). It all seemed to work ok on the bench but for some reason refused to talk to when put on the bike. Probably need to use a proper RS232 chip. Cranking and cranking the bike wouldn't start. I'd had a ride less than an hour ago and it felt warm. I plugged in my Psion 5MX. It's talking to the ECU ok. Type "c1" to turn the choke on and the bike starts straight away. "c0" to turn the choke off. Duck tape my ECU on top of the battery and we're off for a short ride. First up round and round the cul-de-sac about 5 times. Bike feels ok and is reasonably responsive. Quick stop to grab my mobile phone and we're off doing all the little streets in the area. Up hill if possible. Fortunately all the streets around here end in cul-de-sacs. Overall I was pretty impressed. Bike was generally smooth and responsive although there where times where you could feel the mixture was not close to where it should be, but hey the current map was a guess anyway. I probably took it up to 5000 rpm in first( no tacho ) and cruised at 60km. No sign of the misses of the original ECU unit. This is looking very promising. Here is the bike after the ride and here is the ECU on the bike and a close up of the ECU. The reason the ECU is mounted up there at the moment is it doesn't fit where it should. The original ECU is about 165mm x 100mm x 45mm. Most boxes you buy are around 170mm x ?? x 55mm. I'm going to try and shoe horn it into the smaller box of 120x95x35mm. Also I was unsuccessful at getting the connector of the original ECU. I tried with the local AMP man but they're an obsolete part.
29 Mar 2002
Added some circuitry to drive the tacho. The tacho seems to have some circuitry of its own as all you need to do to drive it is give it a pulse stream. Added some extra software for the tacho. Seems to work ok although its over reading. It displays 1800 when the engine is doing 1700. I think its the 46/48 teeth timing wheel that is not being compensated for. It will do for now.
Removed the default map out of the program memory as memory is getting a bit tight. The map is now stored in EEPROM and must be downloaded seperately. Already tried to start the bike before loading a map. Had a strong smell of fuel as a result but fortunately no big bangs.
15 Apr 2002
Off to the dyno today. As if the Weber Marelli ECU sensed its demise, it gave a poorer than usual performance in the slow peak hour ride to Ten Tenths. Unfortunately putting the bike on the dyno was to prove more of a learning experience than imagined and I don't think I was able to get anywhere near the data I had hoped for. A number of factors conspired against me.
1 - The CO exhaust sensor did not fit properly.
I was unable to get any reasonably information about the mixture so we had to rely on maximising the torque instead.
2 - The torque output of the dyno is anything but a smooth readout.
The power pulses of the V twin coupled with the update frequency made it difficult to gauge if it was increasing or decreasing.
3 - The control sofware was not a good fit to the real world situation.
We'd setup the bike up in a particular section of the map. However while I was tapping away at the keys trying to adjust the mixture and spark advance, the engine would drift into another section of the map and invalidate what I was doing.
I've still to analyse the new map and see if I got anything useful data out of the exercise. Some good points are
The new ECU performed flawlessly throughout, excluding the lack of a good map.
The noise from my bike while overtaking in the higher gears that I assumed was pinging. Yep that's pinging alright. Did quite a bit of pinging today fortunately not more than a few seconds. Some portions of my map had too much spark advance.
The bad points are that it is a rather stressful procedure on the bike and rider. Most of my exhaust seems to have a slight tinge now. I'm sure the bike was missing more on the way home than on the way there. Fortunately the infamous Roper will be servicing my bike next week so its it good hands.
Looking forward I think that I need to go back to trying to data log the current unit. I'll do I few rides with my unit in parallel with the current unit and try and get a complete map that way. Then going back to my unit with a good map I want to add some dislay and buttons onto the handle bars so that I can monitor and tweak while riding.
29 Apr 2002
I've mounted my ECU in parallel with the original and with special software been able to log the timing data. It was quite easy to get all the data points I needed. All I did was apply the rear brake and apply throttle for a few seconds. Two laps around the block was all I needed. Fixed the squeal from the rear brake at the same time. I now have to analyse the data and put it in a form suitable for my unit. From next weekend I hope to be completely on my control unit on a permanent basis.
4 May 2002
I think I'm finished with the Weber Marelli unit. From now on I'm riding with my ECU. The map I came up with from the data logging doesn't feel as good as the first guess I had but I'll improve it bit by bit. I wired in the oil temp sensor so that it will know when to choke the bike for starting. I apply increments of 1/8 of the injector duration depending on the degree of cold and then an extra 1/4 if less than 1000 RPM.Starts surprisingly well.
I've also made the tacho alternate between RPM and throttle position so that I can tell what part of the map the bike is operating from.
12 May 2002
My ECU is still on the bike and generally it is performing well. From the hardware point of view it is performing flawlessly. I still need to add in the air temperature and pressure sensor. This is a trivial exercise. I just need to wire it up. Also an input from the battery may be useful. The battery voltage has an effect on the mixture as a higher voltage opens the injectors more quickly. Apart from those issues, the hardware is complete.
The software needs a little more enhancing. I only interpolate spark and injector timing in one direction at the moment. Spark is interpolated in the RPM direction and injectors in the throttle direction. This is resulting in a few discontinuities as the engine moves across the map. I need to interpolate spark and injectors in both directions.
Work has started on a module that will be mounted on the handle bars and allow the rider (me) to modify the ECU timing in realtime. It will have a 16 character by two line LCD display, a number of buttons and a potentiometer or two.
More on the bike performance. I haven't had too many trips on the bike yet. Two trips of about 10km each are the only ones of significance. There are a few operating points where the bike feels constipated. It will struggle up to 3000 RPM, then take off as the engine moves into another section of the map. This is purely a matter of optimising the map further and fixing the interpolation that was mentioned earlier. There is no sign of the hiccups, while cruising at 3000-4000 RPM, that plague the Weber Marelli unit and I haven't had the idle drop off. Not yet anyway. This could also be due to the fact that my bike is currently idling faster than it used to at about 1500 RPM. I don't want to fix this just yet incase I need to go back to the original ECU. The faster idle is because I have the spark a bit more advance at idle.
26 May 2002
Last weekend was a stuff up. I completed the software that interpolates data points from the map. Unfortunately the extra mobility of some of the pulses uncovered some deficiencies in the pulse generation. I only managed to go about 50 metres down the road before I noticed problems. The motor would reach about 2000 rpm and then lose power. A rogue injector pulse on the right hand cylinder was completely flooding that side. After nursing it back home and turning it off, vapours could be seen eminating from the RHS exhaust. The CRO confirmed that the RHS injector was sometimes being turned on for all the time.
This week I have sorted out the problem and bike is performing reasonably well. The new interpolation has really smoothed out the problems of 2 weeks ago. Also coming along well is the ECU command module that will mount on the handle bars. It is driving the LCD (Dick Smith provides a data sheet that tells you half of what you need to know) and monitoring the buttons and potentiometer. Hopefully by the end of the week I'll have it interfaced to the ECU. It should really help trying to sort out the map while riding.
2nd June 2002
Here it is, The Optimiser. Looks a bit tacky I know but unfortunately I have no style. It will probably look just as tacky on the bike when I figure out where I'm going to mount it. It's a bit hard to make out but the first line says "Optimiser V1.008". That's as far as I go in terms of product management. The second line says "T 3.64 RPM 0200". The first number is the throttle position, ( 0 - 7.99 ), the next is obvious. I can press the left button and cycle through to two other menus, the Spark Advance menu and the Injector Duration menu. While in these menus I can turn the potentiometer to tune the engine and then program the new value back into the map.
The weather and other commitments have conspired against a road test today. That and the fact that the LCD shorted out because of metal dust from the case work. Its working now though. I'll spend another week fine tuning the user interface before I try it next weekend. Hopefully I'll figure out where to mount it by then. I'm thinking of just taping it on top of a sponge on the fuel tank. There doesn't seem to be enough space on the triple clamp.
10th June 2002
It was a long weekend and I was determined to get some time on the bike. Saturday I had the first ride with the Optimiser, so I headed off towards Wisemans Ferry. It didn't take long to realise that even with the Optimser it was not going to be easy to tune the bike in practise.
Firstly the throttle does not get opened much in the normal cruise. If you imagine the throttle can give values from 0 to 8, idle is 0.9. Cruising about 60-70 kmh only uses around 1.5. The only time you see 2 or 3 or 4 are the momentary times that you accelerate from start. Its difficult to do any adjustments at these times.
The bike did not feel particularly inspiring with the current map. To make matters worse after about 10k the bike died completely. I check the fuses and gave them and the relays a jiggle and also the wiring harness to my ECU and it came good. I turned around and after about 1 km and a bump, it died again. Another jiggle and it came good again and got me home. Rather fustrated and depressed after that ride.
Armed with new insight into the throttle values I decided to have another go at interpretting the data from the Weber Marelli unit. This time I imported it into a spreadsheet and generated some graphs. I generated a new map for my controller. Funny how each time I reinterpret the same data I end up with a different map.
Today I have another ride and this time the bike feels really good. Obviously the new map is a whole lot better than the previous. There is one problem though, I'm getting an occasional miss on the left cylinder. It's that rogue injector pulse again. Not as bad this time as it only occurs at certain combinations of throttle and RPM. Damn it's been difficult to get the software to handle this seemingly simple task. I've already had two goes at it. Oh well, I got all week to sort it, this time for sure. The lure of having the bike even better next weekend will provide more than enough motivation. BTW I covered over 60 km today without any other problem.
Some pictures taken with my new digital camera - My bike after todays ride, the Optimiser one the fuel tank, the ECU on where the back seat was and some exhaust pipe discolouration due, I think, to this rogue injector pulse.
16th June 2002
Took the bike up the Putty road today. I'm still getting a miss at low power settings but a lot better than last week. At higher speeds, cruising at 90kmh+ it's near perfect. Just as I was crossing the Colo river I had another failure. I lost power in one cylinder. The bike had been running well up until then and I was looking forward seeing how it went on the windy uphill road to Colo Heights. I was robbed I tell ya.
The problem was easily located. One of the output transistors had broken its leg. Either due to handling, or just the bike's vibrations and the weight of the heatsink, metal fatigue had taken its toll. I couldn't fix the problem so I reconnected the standard ECU and continued my ride. That's the purpose of a prototype, identify weaknesses of design. When I layout a board I'll have the transistors bolted down.
29th June 2002
I added some new menus to the Optimiser so that I can monitor where the pulses are being generated. This is so that I can debug the misses that are occuring. The result is that I have been able to reduce, but infortunately not eliminate, the miss.
The bike is now running fairly well, having taking me to Wisemans Ferry and back with no problems today. I would rate my ECU to be on par with the Webber Marrelli in terms of misses. Still have a bit of sorting with the map but generally the bike is performing well.
Getting a bit tired of software for the moment so I'm going to focus on laying out a PCB.
13th June 2002
Last weekend I had a ride up to Wollombi. It was a round trip of 250km with the bike running better than ever. The fuel light just started coming on, so it seems I'm getting similar economy to the Weber Marelli. The only change made since the last ride was a slight modification to the injector advance. Because of earlier glitches, I had moved the pulses away from the problem area. Now that the glitches are gone I moved the pulses back to where they should be. Seems to make a little improvement to the bike. The advance curve of the injectors the Weber Marelli uses seems strange. It's not a smooth advance with RPM like the spark advance. It instead moves quickly from one value to another from 2000 to 3000 rpm. I wonder if they are trying to avoid a problem spot with their software.
This last couple of weeks I've been laying out the PCB and putting together some schematics. Here is the layout that is nearly complete. The unit will fit in the same case that the Optimiser is using at roughly 3.5"x4.5"x1.5". I've settled on the Centronics 36 pin connector, same as what printers use, and it will fit on the 3.5" edge. Also here is the preliminary schematics. There are some errors in component labels but other than that it is fairly complete.
28th June 2002
Another round trip of 250km with the bike running well. Perhaps a little lethargic. It took 10.3 litres for 245 km or about 4.2l/100km. Looks like I was a bit on the lean side today. It would be interesting to see if I can keep the economy and improve the responsiveness with a software accelerator pump.
I've started to add barometric compensation to the software.
I think I've got cold starts just about sorted. Need to go a little richer for the cranking and a little leaner when its started.
I've received two circuit boards for the ECU. I have one populated but have not done any tested on it yet, so fingers crossed that there aren't too many errors in the layout. You can see what it looks like here and if you that way inclined here's the layout of the board.
3rd August 2002
A marathon 7 hour session re-doing the wiring harness on the bike to accomodate the new ECU. The harness looks a real mess at the moment. Some cable ties and tape should sort that out.
After finishing I connected up the Weber Marelli and fired the bike up. Starts ok so I warm it up for a minute and shut it down, disconnect the WM ECU and connect up my ECU. Instant start and its running well. Rev it a few times, seem to have the throttle connected ok.
I'm obviously on a roll so I think I'll retire for the day. Next week I'll tidy up the harness and start on the software again.
Find one error so far in the new ECU. Wasn't a layout problem, more the circuit I thought I had was wrong. Fortunately it only takes a small change to the way I orientate two components to fix the problem. No need to redo the PCB.
11th August 2002
The new hardware and the wiring harness have passed their first ride with flying colours with another 250km ride to Wollombi. On this trip I was accompanied by Hendrik Gout, who described the road as rough. The only mishap was when the sponge that was keeping the Optimiser off the fuel tank departed just before reaching Wollombi. I spent the last couple of km holding the unit off the tank. I should have stopped to pick it up because on the way home there was no sign of the sponge at all. What's the world coming to when someone makes off with your sponge.

I've added another menu to the Optimiser to allow me to dial in a barometric adjustment. This worked well as I richened the bike by about 5% and the bike felt a lot more responsive. The next step is to have the adjustment calculated in reponse to the air pressure and temperature. This should be straight forward, however I'm currently fighting the hardware. It doesn't seem to scan the analogs as expected. This week's task will be to sort out whats happening here. Then I can finish the software off.
31st August 2002
The software for atmospheric compensation is complete. The pressure sensors and temperature sensors are giving me the correct values as a ride up to Kurrajong heights showed the pressure drop from 1018 mBars going over the river at the base, to about 950 mBars at the peak. Now that I'm adjusting for atmospheric conditions I will need to do another dyno session soon to recalibarate my map.
The ECU is nearing the stage where I can offer it to others. I'm putting together a new site that will have furthe details and some information about how it works.
I've built a second ECU as a backup and as an aid to further development. I've also build a small circuit board that interfaces the ECU to a PC using the serial port.
22nd September 2002
Enhanced the software in the Optimiser so that it would automatically present the correct portion of the map. This is to make it easy to make adjustments to the ECU's timing. I got the bike on the dyno again yesterday. This time we were able to get the exhaust gas analyser to give correct readings. Colin, the dyno owner, was impressed as to how quickly I was able to set a point on the map. Colin would adjust the dyno to hold the engine speed and I would then hold the throttle open the correct amount, using the bar weight and my palm as a friction lock. I'd then going into the Optimiser's injector menu, turn the pot till I got the correct mixture, store the new value and move onto the next throttle setting. The first pass through 2000, 3000, 4000, 5000, 6000RPM, with about 6 throttle points per, took only half an hour including a cooling off period.
Had one exciting moment when at 5000RPM and winding on full throttle the bike suddenly lost power and backfired. I think I experienced this once on the road a few weeks ago when I gunned the bike in first gear. Turns out one of my map entries had dropped a zero at some stage and rather then giving me a 10ms injection, only gave me 1ms. I found this error while extrapolating the dyno data into map entries we didn't cover - 1500, 7000, 8000 RPM.
It was amazing the bike had been running as well as it was. There were some entries in the map which were very lean at 15-16:1 and some rich areas around 10. On the road the bike is now noticably smoother. There is still some hesitation to throttle and the bike struggles around 5000RPM. When it gets to 6000RPM it really takes off. There is still some work to be done on the spark timing as this was hard to judge on the dyno. I have some data provided by Carl Allison for spark advance that I will apply to my map and see how the bike goes.
3rd October 2002
Added rev limiter to software. Currently hardwired to 8200RPM. That was an easy two lines of code.
Put the Weber Marelli unit back on, to take the bike into work. I haven't had it in for over 3000km so I was interested to see how the bike performed. Surprisingly the WM performed very well that day, didn't even miss at all. The WM certainly wins in terms of instantaneous response to throttle and seems to have more power. This is to be expected at this stage, as all the tuning I have done has been purely under static conditions. I do believe my unit is smoother overall and does not suffer any missing at 3000-4000 rpm or anywhere else. Currently when snapping the throttle open, my unit gives a half second hesitation. All this will be addressed of course in time. Next stage of development will include a throttle pump simulation and will also automatically richen the mixture for acceleration.
I've bought a Bosch 0258 104 002 oxygen sensor that I will have fitted this next week. Initially it will be used to adjust the map, perhaps automatically with the Optimiser. Push a button and the Optimiser will adjust the timing to set the fuel/air ratio. Then I'll incorporate the sensor properly with the software. I'll have to brush up on my control and feedback systems theory. Maybe some fuzzy logic, the logic you use when you don't know what you're doing. I also should be able to ditch the current barometric software and sensors when using the oxygen sensor. This is because they are both there to achieve the same goal of correct combustion. It would be nice to keep both, unfortunately I can't fit both into the program space available.
8th October 2002
Installed the oxygen sensor, wired it into the wiring harness and modified my ECU to accept the new input. After a not so short ride up to Cessnock and down the Putty Rd, all indications are the sensor is working as expected. At the moment I just have a raw hex number displayed on the Optimiser. Turns out the mixture goes lean when opening the throttle past 5/8 full open. I think that explains the performance relative to the original ECU mentioned in the last entry. This may mean I don't have to do anything fancy to improve the throttle response.
12th October 2002
Here's a picture of the oxygen fitted on my bike and here's a picture of the Jaycar Exhaust meter attached to the Optimiser. I was going to mount it in a more permanent manner in the fairing somewhere but that was looking complicated with routing the wires under the tank so I went for the quick hack.
I've enhanced the Optimiser to automatically tune the mixture using feedback from the oxygen sensor. It uses a binary search type of algorithm, for instance if the mixture is really lean it will repeatedly add 10% to the mixture until it is rich, then it goes towards lean with 5% decrements then towards rich at 2.5% etc. It seems to work on the stand with the idle mixture. Tomorrow I take it for a run and try and fix those lean spots.
20th October 2002
The auto tuning software works as expected. However using in practise on the road still is not ideal. After about 30 km of freeway riding, using the rear brake to hold the rpm constant against the throttle, I found that I had no rear brake left. Fortunately it came good again after it had cooled down. I've got another idea I think may work better. It is relative easy to hold the throttle open, but hard to keep the rpm constant at the same time. So what I'll try is starting with a low rpm, open the throttle the required amount, and allow the bike to accelerate to red line and then repeat for other throttle settings. This way I can tune a whole row at a time. I'm still in the middle of writing the software to allow this.
I've finished laying out a new board for the ECU. I've added a few extra capacitors to filter the noise from firing the spark. I've also allowed for a Motorola MPX4100 air pressure sensor. This means the ECU can replace a 15M controller also.
3rd November 2002
The second version of the PCB has been populated and works a charm. There are no known errors in the board. The accelerator pump software is in and appears to be working. I no longer so the mixture go lean as I open the throttle quickly. It is more effective down low so there may be a bit more tweaking needed. I feel the time is right to announce the public availabilty of the ECU so I'm going to focus on the new web site for a while.

Current Focus
The new site (still under construction)