2

I'm trying to make a sort of Keyless Go style system for my 1996 Mazda Miata using an Arduino and RFID shield as a DIY project for fun. I want to make the Arduino crank the starter until the engine starts, like a human would. However, I need some way for it to know the engine has started. Ideally, I would like some wire which produces a signal only when the engine is running. Is there such a wire? If not, do I need to read the tach signal? Could I check the voltage coming out of the alternator, or would that have voltage when cranking too? Help is greatly appreciated.

Edit: This leads to my second question. What kind of signal does the 1996 Miata's tach take? I understand that it's likely a square wave. What is the voltage? Does it vary the frequency or the duty cycle?

Endorphin
  • 21
  • 2

1 Answers1

1

I've considered using an Arduino for automotive stuff also.

The ECU and sensors all work on 5v, so that system will be easy to tap into. I would be looking at the cam / crank / distributor signal. Not sure what your vehicle uses. You can crank the engine in a way that it will not start (disconnect coil wire, remove fuse for the fuel pump, etc.) to determine the maximum RPM from the starter alone. Your 'started' threshold will be a bit above this. This may take some trial and error. I believe the sensor will send a pulse every revolution. You can measure or calculate the pulse width the determine you started threshold.

Be aware that tapping into a sensor could cause issues with the ECU's reading.

You will want to program in a 'timeout' in the event the vehicle does not start after a couple seconds. Have a pause so you need to wait a couple seconds before retrying.

Be sure the neutral safety switch or clutch safety switch is operating properly. Don't want a run-away car.

Might check battery voltage before / during / after to determine battery strength / life.

Don't start cranking if the pulse width shows the engine is running.

When programming, consider all of the ways this can go wrong. Any event that could happen that you would need to account for.

rpmerf
  • 8,458
  • 1
  • 22
  • 31