Tachometer on engine pickup sensor

Hello,

I am trying to build a arduino tachometer (0rpm-6000rpm = 0Hz-200Hz) for a two stroke engine using the pickup sensors as input. I want to use the arduino interrupt to measure the time between two rising after cleaning the signal to a square wave.

Here is attached the signal I get from the pickup sensor.

I’ve already tried using a schmitt trigger with and RC filter and diode and it works but only around the max speed at 6000rpm. At low speed, the voltage peak from the sensor is too low and the schmitt hysteresis doesn’t see it so I get 0rpm.

Maybe could i measure the negative peaks instead ?

What would be the best way to filter it correctly and get a nice square signal ?

Thanks in advance for your inputs.

I guess the pictured signal is at 6krpm. Please show the signal you get at 1krpm.

Here is at around 1000rpm. The positive voltage drops only to 3V, and the signal is quite “clean” but not every pickup coil are "clean"like that.
So maybe the best way would be to isolate the negative peaks and transform them into a square wave ?

If you lower the trigger voltage to about 2.5V you probably get an acceptable output signal. You still can filter out some spikes in software by using the fact that an engine isn't able change speed abruptly.