I want to make a digital tachometer for my motorcycle. After some research, for most modern bike, we can read the pulse signal from pickup coil instead of ignition coil.
From my understanding, the pickup coil will send (12v?) signal to CDI unit, then send signal to plug coil to fire at correct timing.
I found this (See image: Instrustable.jpg) on Instructables. As you can see he connect the wire from ignition coil > R1 > R2 and feed arduino nano.
So my question is..... Can I follow his method? Use resistors to pull down the voltage from 12v to 5v to feed arduino nano to read the pulse signal? is it safe?
Since the pickup coil will send AC signal to CDI, so it will be 12VAC right? Will it affect the pulse signal if i use resistor / lm7805 to pull down the voltage?
From physics we know that a magnet (in the flywheel) moving past a coil will induce a current spike with one polarity and then a similar spike with the opposite polarity. The voltage is dependent upon the load, in this case, that presented by the CDI box and whatever your circuit does with it. There's no particular reason that it would be 12 V since it's independent of the bike's bus voltage.
This makes it difficult to give a general answer to the question on basic principles unless there is some standard practice in the industry as to what a CDI pulse looks like. If it were me, I'd look at the pulse with an oscilloscope and go from there, but this presupposes one has an oscilloscope. If there is a forum for your particular bike then perhaps someone there could give better guidance.
The ignition coil should have switch to ground on the primary side which would seem to be the more straightforward way to go about sensing RPM. Something like +12 V : 1k resistor : optoisolator LED diode : switched side of ignition coil in parallel with a flyback diode should do it.
As the magnet approaches the pickup coil, it generates a voltage, then as it recedes, the voltage inverts. The faster the magnet moves, the higher the voltage.
You really need to scope the output of the pickup coil to determine the parameters.
I would consider using a Zener diode and a current limiting resistor to produce a safe voltage for he Arduino, and possibly use the Analog Input instead of a GPIO.
smiles79:
I think you just explained exactly what I'm trying to do in a similar project. I have a few questions, sorry if they're overly simple
Is the +12V just coming from the battery or something, to pull the pin high when then coil is not grounded?
The +12 would be from the battery. Strictly from a circuit that is switched on when the engine is running, so as not to drain the battery when the vehicle is parked.
What are optoisolator and flyback diodes?
An optoisolator is an LED and a phototransistor in a single package. The idea is that the LED and phototransistor are not electrically connected so that voltage spikes, transients, and other such garbage on the automotive electrics side is not directly connected to the Arduino. Transients are generally present on automotive circuits and largely originate from the ignition coil.
A flyback diode is a diode that is normally reversed biased. It is used to protect other circuitry (the optoisolator LED in this instance) from a momentary reverse voltage spikes.
Would you mind drawing me a simple schematic? I would really appreciate it!