Rewriting Code for zx12r ninja 16 bit denso
Posted: Sun Mar 04, 2012 5:40 pm
Hello Board:
I have a 2002 zx12r ecu. Its a denso 16 bit. It has been reflashed before. Does anybody know how to re write some of the code in the software so I can hook up an oxygen sensor to it. Some of the hardware is already there. It just needs some of the code re written. Below is the email of what Im trying to do.
Thanks,
Brian
California
email: crowell.brian809@gmail.com
emails: On Sat, Feb 18, 2012 at 8:23 AM, Marlin Bially <mbially@olympus.net> wrote:
You could 'sweep' the cylinders and throttle using a saw tooth wave between 0 and 5V.
http://en.wikipedia.org/wiki/Sawtooth_wave
The idea is that the 02 changes relatively slowly over time. The saw tooth would rapidly select cylinders 1 2 3 4 1 2 3 4 12 3 4 etc. The end result is that the same 02 value will end up in all four cylinders eventually. The only issue is what frequency to set the sawtooth at. It needs to be slow enough that the ECU COV scan will hit it at least 4 times per wave but fast enough to make sure all cylinders get any 02 update in a timely fashion
I still say the most effective way to do this is to re write the software inside the ECU.
Right now there is a memory location for each cylinder at each throttle setting in which to save the trim (cov1) value. Lets call them
Hi1, Hi2, Hi3, Hi4, Med1, Med2, Med3, Med4, Lo1, Lo2, Lo3, Lo4.
There are two major functions one that sets the Trim values by reading the COV voltages and one that applies the trim to the fuel setting.
A simplified version of the software is...
To set trims:
IF (Cov3 = Hi)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi2 = COV1
IF (COV2 = Cyl3) THEN Hi3 = COV1
IF (COV2 = Cyl4) THEN Hi4 = COV1
}
IF (Cov3 = Med)
{
IF (COV2 = Cyl1) THEN Med1 = COV1
IF (COV2 = Cyl2) THEN Med2 = COV1
IF (COV2 = Cyl3) THEN Med3 = COV1
IF (COV2 = Cyl4) THEN Med4 = COV1
}
IF (Cov3 = Low)
{
IF (COV2 = Cyl1) THEN Lo1 = COV1
IF (COV2 = Cyl2) THEN Lo2 = COV1
IF (COV2 = Cyl3) THEN Lo3 = COV1
IF (COV2 = Cyl4) THEN Lo4 = COV1
}
To apply trims
IF(Throttle = Hi)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi4
}
IF(Throttle = Med)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Med1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Med2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Med3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Med4
}
IF(Throttle = Lo)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Lo1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Lo2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Lo3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Lo4
}
What if we rewrote the software to use a single memory location for all settings of COV2 and 3? then their settings become irrelevant
IF (Cov3 = Hi)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
IF (Cov3 = Med)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
IF (Cov3 = Lo)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
To apply trims
IF(Throttle = Hi)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}
IF(Throttle = Med)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}
IF(Throttle = Low)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}
I have a 2002 zx12r ecu. Its a denso 16 bit. It has been reflashed before. Does anybody know how to re write some of the code in the software so I can hook up an oxygen sensor to it. Some of the hardware is already there. It just needs some of the code re written. Below is the email of what Im trying to do.
Thanks,
Brian
California
email: crowell.brian809@gmail.com
emails: On Sat, Feb 18, 2012 at 8:23 AM, Marlin Bially <mbially@olympus.net> wrote:
You could 'sweep' the cylinders and throttle using a saw tooth wave between 0 and 5V.
http://en.wikipedia.org/wiki/Sawtooth_wave
The idea is that the 02 changes relatively slowly over time. The saw tooth would rapidly select cylinders 1 2 3 4 1 2 3 4 12 3 4 etc. The end result is that the same 02 value will end up in all four cylinders eventually. The only issue is what frequency to set the sawtooth at. It needs to be slow enough that the ECU COV scan will hit it at least 4 times per wave but fast enough to make sure all cylinders get any 02 update in a timely fashion
I still say the most effective way to do this is to re write the software inside the ECU.
Right now there is a memory location for each cylinder at each throttle setting in which to save the trim (cov1) value. Lets call them
Hi1, Hi2, Hi3, Hi4, Med1, Med2, Med3, Med4, Lo1, Lo2, Lo3, Lo4.
There are two major functions one that sets the Trim values by reading the COV voltages and one that applies the trim to the fuel setting.
A simplified version of the software is...
To set trims:
IF (Cov3 = Hi)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi2 = COV1
IF (COV2 = Cyl3) THEN Hi3 = COV1
IF (COV2 = Cyl4) THEN Hi4 = COV1
}
IF (Cov3 = Med)
{
IF (COV2 = Cyl1) THEN Med1 = COV1
IF (COV2 = Cyl2) THEN Med2 = COV1
IF (COV2 = Cyl3) THEN Med3 = COV1
IF (COV2 = Cyl4) THEN Med4 = COV1
}
IF (Cov3 = Low)
{
IF (COV2 = Cyl1) THEN Lo1 = COV1
IF (COV2 = Cyl2) THEN Lo2 = COV1
IF (COV2 = Cyl3) THEN Lo3 = COV1
IF (COV2 = Cyl4) THEN Lo4 = COV1
}
To apply trims
IF(Throttle = Hi)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi4
}
IF(Throttle = Med)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Med1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Med2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Med3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Med4
}
IF(Throttle = Lo)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Lo1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Lo2
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Lo3
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Lo4
}
What if we rewrote the software to use a single memory location for all settings of COV2 and 3? then their settings become irrelevant
IF (Cov3 = Hi)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
IF (Cov3 = Med)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
IF (Cov3 = Lo)
{
IF (COV2 = Cyl1) THEN Hi1 = COV1
IF (COV2 = Cyl2) THEN Hi1 = COV1
IF (COV2 = Cyl3) THEN Hi1 = COV1
IF (COV2 = Cyl4) THEN Hi1 = COV1
}
To apply trims
IF(Throttle = Hi)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}
IF(Throttle = Med)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}
IF(Throttle = Low)
{
IF(Cylinder = 1) THEN Fuel1 = Fuel1 * Hi1
IF(Cylinder = 2) THEN Fuel2 = Fuel2 * Hi1
IF(Cylinder = 3) THEN Fuel3 = Fuel3 * Hi1
IF(Cylinder = 4) THEN Fuel4 = Fuel4 * Hi1
}