Hello, so i am doing this project where i need to start a lawn mower engine with hydrogen. I already have a hall effect sensor attached to the engine(one magnet at TDC and one magnet at BDC) where i will switch between the ignition and injection using the hall effect sensors. I have managed to code the arduino so that it will only read the odd numbers of magnet as the shaft rotates, i.e 1,3,5,7,9...etc. where 1 is going to be injection output, 3 ignition output, 7 injection output, 9 ignition output and so on..
The problem is, there's no way of telling that which magnet will go first. it could either be the magnet at BDC that will go first and ideally will going to start the injection process at BDC which isn't correct. One way i can think of is that i need to manually turn the shaft to its correct location and start the again as usual which is not very practical.
And also, the speed of the crank rotation when starting the engine is not going to be the same as after starting the engine right? So, there's problem with the injection and ignition timing too.
The first thought that occurs to me is that you need a 3rd magnet perhaps close to one of the first two so that the Arduino an identify the orientation of the crankshaft,
Whether, and to what extent the timing should change as the engine speed changes is not a programming problem.
putting another magnet would entirely messed up my code wouldn't it? Because what i did was i filtered out the odd numbers of magnet passes trough the sensors. By adding more magnets, the pulse count as the magnet passes through the sensors increased.
You are aware that petrol engines need adapting (hardening) to run on hydrogen as the forces are
larger (faster combustion)? I would be worried that a lawnmower engine is not up to the task and
at risk of damage.
The third magnet would let you see the odd-one-out which would be the gap. Often engines use many more poles on the crank sensor, like 100, and there's a gap at one point (which is not TDC because that's one you need.)
Then the Arduino would have to see at least one complete crank cycle to identify the position before enabling the spark. That's why normal engines don't start on the first or second cylinder but need to crank a little before the ECU can adequately find the position.
allanhurst:
It's like going to the bookies. Long term ..
1/ You can't win
2/ you can't even break even
3/ You aways lose.
Except that some people (very few) do make a comfortable living from gambling (and are usually banned by the bookies). Winning at gambling is not theoretically impossible.
Unlike perpetual motion.
Maybe the OP is trying to revive the EQHHP project.