I’ve been writing some software for a Wifi based CAN data logger for the ESP8266 in the Arduino platform, and have been getting a bit of a strange error. It appeared to be related to using the std::string functions in my code – and although I have used this in other sketches without issue, I suddenly received the following error as soon as I simply declared a std::string variable:
c:/users/scott/appdata/local/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9-2/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/bin/ld.exe: C:\Users\Scott\AppData\Local\Temp\build525647f6f8500d071cfab5cccf314276.tmp/ESPCANLogger.ino.elf section `.text' will not fit in region `iram1_0_seg'
I have one of the original versions of these units, but ave struggled to get anything sensible out of it, and so was looking on Ebay for some more items and came across this breakout/development board. For £9.99 I thought I’d give it a go, and ordered it a couple of weeks ago. Will give more details when it arrives. More details and pics after the break
I was sent a link to this website by the author, who appears to have created an Arduino ECU for spark control. Although the details are a little sparse, It appears that he has developed a lot of the required hardware himself. It looks like the main controller is an Arduino Nano and utilises Manifold Absolute Pressure (MAP) and a knock sensor to determine the ignition timing on a Peugeot 205 Tu9 45Ch. It would appear that the ECU has been developed over a number of revisions and has been in operation for over a year.
I have been busy over the last few weeks with various things, but have now completed most of the practical work on my project and am now at the stage of writing up the report/dissertation. I have successfully managed to achieve closed loop ignition timing control by using the Stellaris Launchpad development board to directly interface with the optical encoder on the engine and the pressure sensor charge amplifier (this replaces the AVL IndiSet 620 in my system).
ECU in black on left, angle of peak pressure and optical encoder interface on right. Connected together via serial
I have now managed to run the engine with electronic fuel injection (EFI) and electronic ignition, both controlled from my ECU. I’ve also managed to run in closed loop lambda control to maintain the correct air to fuel ratio.
Success! I have started and run the engine on my own electronic ignition. The problem was in the end quite simple, it turns out that the missing tooth wheel on the crank was aligned differently to what I expected. I thought that the missing tooth occurred 240 degrees after TDC, but in fact it appears to be aligned almost exactly at TDC. This meant that my spark was happening around Bottom Dead Centre, which is no use at all!