- Fri Jul 10, 2020 12:58 am
#44170
Hi all,
I introduced myself in the General Forum. I have an Alfa Romeo 156 JTS 2004 model year 2.0L.
[0] Introduction
I was told that Speeduino doesn't do direct injection - the post has had 200 views. Therefore: let me be the first to do this. I have ordered parts and will make it work. I am starting with a 0.4.3c board. I will document my work here and any suggestions will be very welcome. This is my first try at a custom ECU.
I have been reading about Speeduino for weeks now and figuring out where exactly it would need work. The good news is I don't think there are any major reasons why it can't. I'm going to number what I say so it's easier to keep track of things as I expect this thread to get very long and to maybe end with a guide for anyone who wants to run gasoline direct injection (GDI) engines with Speeduino. But I might do smaller questions throughout the forum. Feel free to contribute, tell me where I'm wrong or give ideas.
[1] Car features:
[a] Speeduino supports high-Z injectors natively and low-Z with resistors added. Luckily my car uses high-Z injectors at 16 ohms - so no resistors needed.
(b) My COP ignition is compatible as far as I can tell. I smashed a spare one to pieces to see what looks like the igniter.
[c] My tank fuel pump has an internal mechanical diaphragm regulator at 4.5 bar - so I only have to power it. It primes on KOEOff.
[d] My mechanical high pressure pump is regulated by PID in the stock ECU to maintain 50 bar via a PWM solenoid valve on the fuel rail. I need to figure out how to control this. I have logged voltages and opening position and pressure with the stock ECU to help. It is returnless so I probably do need PWM on the electrical pump.
[e] Provided I can regulate the fuel pressure, I think everything else is a bonus.
[3] Things I want to do:
[a] Figure out my fuel pressure regulator method (PWM) - I think I can just use the boost control since the car is NA. If I boost it later, I would need to replicate that circuit on another I/O channel.
{b) I can use my stock ECU for the fly by wire throttle because it works KOEOff
[c] I can run with a MAP or Alpha-n only. I might look into running a MAF but I know that is controversial.
[d] I will use one of my NB02 at first. I will later go custom on a wideband controller.
[e] I have a VR CKP which I aim to condition using an optoisolator and op-amp/other-basic-IC with two resistors to set duty cycle. I need to know the duty cycle that Speeduino expects and how the VR conditioner triggers/ends a pulse - by integration or just level crossing?
[f] I will use the stock missing tooth wheel (at flywheel) for the CKP and adjust the code if needed to accept this.
[g] Make sure I still get warning lights on my dash and to use the stock dashboard Tach and Speedo. I will add a display for TunerStudio.
[h] I will add logging for all my O2 sensors so I can see if there is a problem, I haven't figured out if the AFR can be changed per cylinder or pair of cylinders. The stock ECU does this per pair, and a lot of other interesting compensations for misfires/blocked fuel/etc.
Extract information from my stock ECU maps and apply them in TunerStudio to get close to stock before I do real tuning.
[4] Things I'm not sure about
[a] What are the failure modes?
(b) If the TPS fails, is there some kind of fallback? Does it default to running off O2 sensors?
[c] A lot of failure-mode and fallback thoughts.
[d] Is there anything like error codes you get with OBD or we just look at raw data?
[e] What is the point of using Teensy? I like the hardware itself, but the Mega seems to have enough resources to do the job well. You need a separate tablet/laptop for TunerStudio anyway.
[f] Can this be run as a piggy-back? I suspect diodes on any shared wires would be needed.
[g] How many and which of the Arduino Mega pins are unused by Speeduino and free to be used for other tasks? Is this advisable or has every clock cycle been squeezed/optimised to the max already?
[h] Based on that, I wonder if I should just add a second Arduino Mega for any extra functions I need - if it can't be incorporated into the first.
Thanks for reading this far and wish me luck!
I introduced myself in the General Forum. I have an Alfa Romeo 156 JTS 2004 model year 2.0L.
[0] Introduction
I was told that Speeduino doesn't do direct injection - the post has had 200 views. Therefore: let me be the first to do this. I have ordered parts and will make it work. I am starting with a 0.4.3c board. I will document my work here and any suggestions will be very welcome. This is my first try at a custom ECU.
I have been reading about Speeduino for weeks now and figuring out where exactly it would need work. The good news is I don't think there are any major reasons why it can't. I'm going to number what I say so it's easier to keep track of things as I expect this thread to get very long and to maybe end with a guide for anyone who wants to run gasoline direct injection (GDI) engines with Speeduino. But I might do smaller questions throughout the forum. Feel free to contribute, tell me where I'm wrong or give ideas.
[1] Car features:
- 4 cylinder
fully sequential fuel and spark
COP ignition with igniters
2 cats
4 lambda sensors across two banks/cats: 1 wideband before each cat and 1 NBO2 after each to monitor cat performance
drive by wire throttle
5 bar fuel pump and 50-120 bar high pressure mechanical pump driven by exhaust cam
dual speed radiator fan
ABS/Traction Control/Brake Force Distribution/Vehicle Dynamic Control all controlled by a separate ABS ECU
Cruise Control/Immobiliser/Alarm controlled by stock ECU - I don't really need these functions.
Usual sensors and switches: CKP/CPS/CLT/IAT/TPS/Knock/VSS/MAF/Steering angle/several temperature sensors/spark event/etc etc
Engine has been rebuilt recently
[a] Speeduino supports high-Z injectors natively and low-Z with resistors added. Luckily my car uses high-Z injectors at 16 ohms - so no resistors needed.
(b) My COP ignition is compatible as far as I can tell. I smashed a spare one to pieces to see what looks like the igniter.
[c] My tank fuel pump has an internal mechanical diaphragm regulator at 4.5 bar - so I only have to power it. It primes on KOEOff.
[d] My mechanical high pressure pump is regulated by PID in the stock ECU to maintain 50 bar via a PWM solenoid valve on the fuel rail. I need to figure out how to control this. I have logged voltages and opening position and pressure with the stock ECU to help. It is returnless so I probably do need PWM on the electrical pump.
[e] Provided I can regulate the fuel pressure, I think everything else is a bonus.
[3] Things I want to do:
[a] Figure out my fuel pressure regulator method (PWM) - I think I can just use the boost control since the car is NA. If I boost it later, I would need to replicate that circuit on another I/O channel.
{b) I can use my stock ECU for the fly by wire throttle because it works KOEOff
[c] I can run with a MAP or Alpha-n only. I might look into running a MAF but I know that is controversial.
[d] I will use one of my NB02 at first. I will later go custom on a wideband controller.
[e] I have a VR CKP which I aim to condition using an optoisolator and op-amp/other-basic-IC with two resistors to set duty cycle. I need to know the duty cycle that Speeduino expects and how the VR conditioner triggers/ends a pulse - by integration or just level crossing?
[f] I will use the stock missing tooth wheel (at flywheel) for the CKP and adjust the code if needed to accept this.
[g] Make sure I still get warning lights on my dash and to use the stock dashboard Tach and Speedo. I will add a display for TunerStudio.
[h] I will add logging for all my O2 sensors so I can see if there is a problem, I haven't figured out if the AFR can be changed per cylinder or pair of cylinders. The stock ECU does this per pair, and a lot of other interesting compensations for misfires/blocked fuel/etc.
Extract information from my stock ECU maps and apply them in TunerStudio to get close to stock before I do real tuning.
[4] Things I'm not sure about
[a] What are the failure modes?
(b) If the TPS fails, is there some kind of fallback? Does it default to running off O2 sensors?
[c] A lot of failure-mode and fallback thoughts.
[d] Is there anything like error codes you get with OBD or we just look at raw data?
[e] What is the point of using Teensy? I like the hardware itself, but the Mega seems to have enough resources to do the job well. You need a separate tablet/laptop for TunerStudio anyway.
[f] Can this be run as a piggy-back? I suspect diodes on any shared wires would be needed.
[g] How many and which of the Arduino Mega pins are unused by Speeduino and free to be used for other tasks? Is this advisable or has every clock cycle been squeezed/optimised to the max already?
[h] Based on that, I wonder if I should just add a second Arduino Mega for any extra functions I need - if it can't be incorporated into the first.
Thanks for reading this far and wish me luck!
Last edited by DeeeeC on Sat Jul 11, 2020 12:56 pm, edited 1 time in total.