a reply to:
shaneslaughta
Why don't you use the 5v output from the pins of the Arduino to a 5v relay? That is what this little guy is for.
I did. I have that version but in 8channel. The problem is, when the board get's powered on for the first time, the relay go active and I can not
prevent this. This means when the ignition is turned on and the 12V to 5V DC-DC power supply is energized and powers up the arduino, the relay will be
energized and the ECU get's HIGHs on all inputs. I can choose between NO and NC of course but that does not help me, as it goes into that state.
So if the relay board is "alive" after the ECU initialized, what is the case, all 8 inputs connected to the relay board are set HIGH. I tried to
disable the relay programmatically by writing a 0 to all the pins when the Arduino boots. I also messed with Arduino internal pullup and pulldown
modes but the relay does that by itself.
I asked someone on discord because I saw that 8 channel relay and used the opportunity to ask. But my relay are not faulty, it does that by default. I
could solve it by having a manual switch in the car using an input on the ECU and set a variable so it ignores the inputs until the switch is flicked,
but kind of defeats the purpose and means a lot of extra work and would spaghetti the code inside the ECU, that I want to keep clean, because cycle
time.
Is this just a way to switch a function on the ecu via an intermediary device?
Kind of. It's more complicated. I communicate via CANBUS with the ECU to have a feedback loop to the arduino but it only works ECU to Arduino, not the
other way around. I can not handle the busmessages from the Arduino and I know out of experience when the ignition system is going full load @9k RPM
that the EM interference brings noise onto the CANBUS and gobble things up.
The arduino manages a few functions the ECU can not. For example I have a dry ice reservoir for the water intercooler. With the push of a button I can
inject dry ice pellets into it, gravity fed. Or that's the plan. It will drop the intake temperatures and allows me to inject more fuel into the
cylinders without getting too rich. At the same time, when that happens, I need the ECU to disable some safety features and change some fields in the
fuel map plus features. Because I also run overboost button on the steering wheel, I need to consider that state too.
Then when the ECU tells the arduino via CANBUS that the exhaust manifold is approaching a certain temperature that it does not inject the pellets
anymore. For that the ECU has to talk to the Arduino. But I can not craft messages on the Arduino that the ECU accepts.
A few other wild things happen that have to do with exhaust back pressure I utilize to get even more compression into the cylinders. So I have
different modes in the ECU and net to interlock it with the Arduino.
I added fuses to the circuit, that's a good idea. The ECU has a fuse already but if I use super fast fuses they should burn before the ECU fuse does.
It's a slow fuse inside the ECU.