lauantai 24. maaliskuuta 2012

Innovate LC-1 fix and analysis

I am writing this blog because I see many have this same problem with their LC-1 going nuts and not doing what it's supposed to do... I read Innovate Motorsports forum and there were many of users asking how to fix this device and what causes the problem. As the manufacturer is not providing us any of this information how to fix this problem I think users sosiety can help each other to put these devices back in business! Any information you might have which helps to solve the problem and make this device more redundant is more than welcome. So please be free to comment :)




About two years ago I bought this quite affordable wideband lambda sensor and it was very good tool when tuning my VE charts in just installed Megasquirt in my car. However just after the one year warranty period it all get wrong. My car started to stall in highway and I had to remove the lambda correction in Megasquirt, because the LC-1 was silent and gave no AFR-information anymore. I didn't really need a wideband sensor in that time because my tuning was good enough to use with narrowband lamda, so I took it off from the exhaust. I checked from google and Innovates forum was full of this kind of problems... so this clearly is an error in desing!

After gathering information one can understand the main problem of LC-1. The software dies because of data corruption and more likely this is from voltage changes in car electrical system. From the information i got from forum it might be under voltage from starting the car or overvoltage spikes from the charger. So first attempt was to try if I can access it with my laptop using the normal serial line connection with LM Programmer-software, but this didn't work at that time. I remember I had tested the connection when I had used the LC-1 for a few months, but was not able to access... at that time I just tought the problem was in my PC, but maybe this was not the case even that time. :/

OK enough of stories, the time has gone maybe a year or so and I took this device on my desk a few days ago. So lets see how to open it! :)




1. TAKING APART

In the picture above I have already taken it a bit apart, with a knife. Use only sharp knives like utility knives, don't use any wobbling knives which one can find from kitchens... remember, the sharper - the better, dull knives are more dangerous! Just for your own safety =)

This device is quite easy to tear down, it has a plastic cover under the molded rubber cover.

  1. Start from the end which has the cables coming to LC-1. Make a cut towards the lambda connectors end in the middle of the side of LC-1. You can use force and don't have to be afraid of destroying the internal parts. They have a hard plastic case in protection.
  2. Make the same kind of cut to the other side
  3. Use your knife to cut the edges of the rubber in the LAMBDA CONNECTOR side, leave the cable side untouched. You don't have to take the whole rubber off, just to get it opened enough. It will be easier to put back after the fix.
  4. Fold the rubber to cable side end and use something to tie the sides together so they are not in your way - I used a cable tie
  5. Use your knive to cut the tapes which holds the plastic cover together
  6. CAREFULLY use a chisel screwdriver to peel the plastic cover open, DON'T push the screwdriver too deep, the PCB is right after the cover!
  7. Now you should have access to PCB's both sides







Now, take a look at the PCB. I marked some of the main parts in the picture so one can understand easier which part is which.


LARGE PICTURE

So from the left there is first the serial line tranceiver (MAX 202) which you are using when connecting to LC-1 vith PC and serial cable. The processors usually need this kind of adapter circuit to communicate in RS-232 mode, because processors dont have the needed + - 10VDC lines used in RS-232 and they use 5VDC TTL lines. This chip also protects the processor and acts as a buffer.

Next in line is the DAC (probably AD5302) which generates the analog 0...5VDC signal to LC-1's outputs. Processor drives this circuit from processor pins 12 (MOSI) and 11 (SCK) and gives DAC the lambda information in digital mode. DAC then transforms this digital data to analog signal which has output range of 0 to 5VDC. This signal is then taken to car's ECU, DB1 AFR-meter or what ever device one uses to read air to fuel ratio. If you have problems with your analog output this might be the device you are looking for to get them fixed.

Then there is the processor, ATmega64 8-bit microcontroller which controls everything that happens in the PCB. This device has two different memories onboard; FLASH and EEPROM. The flash-memory includes the software of LC-1. I think this software doesn't change when you calibrate the LC-1 or change the presests of the output lines. Flash memory size in this chip is 64Kb and the LC-1 software only uses the first 32Kb of it. EEPROM is smaller memory and processor can save its setups to this memory. The size is 2Kb and you can see the name you give to LC-1 in this memory. So I believe all calibration parameters and output setups are also saved to this memory.

At the right side of the board you will see two operation amplifiers (LMV324M, TLV2464A). These operation amplifiers are used to gather the information from the lambda sensor and amplify it. My guess is that one is for air to fuel mixture input and second is for sensor temperature input. This signal is then driven from operation amplifiers outputs to processors analog inputs which have build-in analog to digital converters (ADC).

***********************************************************************************

2. FLASHING

Serial Downloading

"Both the Flash and EEPROM memory arrays can be programmed using the serial SPI bus while
RESET is pulled to GND. The serial interface consists of pins SCK, MOSI (input) and MISO (output).
After RESET is set low, the Programming Enable instruction needs to be executed first
before program/erase operations can be executed. NOTE, in Table 127 on page 306, the pin
mapping for SPI programming is listed. Not all parts use the SPI pins dedicated for the internal
SPI interface. Note that throughout the description about Serial downloading, MOSI and MISO
are used to describe the serial data in and serial data out, respectively. For ATmega64, these
pins are mapped to PDI and PDO.


Even though the SPI Programming interface re-uses the SPI I/O module, there is one important
difference: The MOSI/MISO pins that are mapped to PB2 and PB3 in the SPI I/O module are not
used in the Programming interface.
Instead, PE0 and PE1 are used for data in SPI Programming
mode as shown in Table 127. (Atmel ATmega64.pdf pg. 305, 306)

So, what to understand from the text above is that the ATmega64 doesn't use the same pins for SPI programming than other Atmel ARV-family microcontrollers. This was the only problem I had to solve and since I have before flashed other AVR-controllers, I of course tried to flash from MISO and MOSI pins and soldered wires straight to them. But in this case one does not simply walk... err flash from these pins! So the pins which routes to already designed but not installed connector are right. And as I feel stupid now for figuring that all out and even questioning that matter I don't talk more of it.

The easiest way to flash the LC-1, is to solder a simple connector to the holes on the PCB. One can find right connectors nearly everywhere, these are used in PC equipment, like motherboards etc. Just desolder a 6 pin array and solder it in the place. I cut the pins a little bit and engraved the plastic cover so I can still get the package closed.

Now that you have the connector in place, you need a programming cable. And for this cable you can use variety of cables, nowadays since Arduino has kicked in most of the people use USB-programming adapters, but I don't have one and I made a LPT-adapter. The LPT is becoming legacy so this might not interest you anymore, but here is the pinout I used for flashing via printer port.


TO BE CONTINUED! ;)