Processing output signal of Variable Reluctance speed sensor

Hi guys,

Read some topics about variable reluctance / inductive / magnectic pickup sensors on this forum, but didn't find any clear solution.

I have a magnectic pickup sensor (see datasheet attachement) and would like to read the rotational speed (in rpm) of a engine with my Arduino Uno. The engine is attached with a 60 tooth trigger wheel.

At this moment I don't exactly know what's the output voltage of the sensor when it is running maximum speed (about +/- 6000 rpm). But it should be around 10V according to the datasheet.

My question is how the electrical circuit looks like for creating a 0 - 5V output signal which is proportional to the pulses of the trigger wheel.

I think I have to use a diode / resistor to reduce the 10V output to maximum 5V and beside this a component which could translate the analog sinusoidal output to a digital 0 - 5V signal. I read about the op amp comperator, but don't know exactly what it is doing.

Hope anyone could help me. Thanks in advance!

Sensor_XENSOR.pdf (89.9 KB)

Google MAX9924. It is a VR conditioning chip that will do just what you need. It is used in many aftermarket ECU's for the VR input.

detown:
Google MAX9924. It is a VR conditioning chip that will do just what you need. It is used in many aftermarket ECU's for the VR input.

Thanks for your reponse. Yesterday evening I indeed read something about it at Wikipedia.

Would be nice if that integrated circuit is enough for me.

ted:

Could you maybe give me some explanation of this electric circuit?

The zenerdiode is to prevent that the input voltage of the Arduino would be to high?
And wherefore is the 12 Volt?

Hi,

I have used the following circuit to read the RPM of a VR crankshaft sensor of a motorcycle engine.

A slight error in the circuit, it says "From ECM". This is actually from the crankshaft VR sensor.

The capacitor removes the DC component, if any.
The first diode is a fast switching diode, 1N4148, this removes any negative voltages.
The second diode is a 5.1V zener diode, BZX85C5V1. This makes sure that the voltage does not go above 5.1V.
Then the schitt trigger cleans up the signal to a nice square wave that can be read by an Arduino interrupt.

The wheel on my crankshaft has 12 teeth, but it does spin at up to 16,000 rpm. This means a 3.2 kHz signal at full speed.

Your engine at 6,000 rpm and 60 teeth will be producing at signal at 6 kHz. I'm not sure if this is possible for the Uno but I would imagine it is.

rpm circuit 2.PNG

That is your 10V
the drawing is randomly chosen

rickerman:
Hi,

I have used the following circuit to read the RPM of a VR crankshaft sensor of a motorcycle engine.

A slight error in the circuit, it says "From ECM". This is actually from the crankshaft VR sensor.

The capacitor removes the DC component, if any.
The first diode is a fast switching diode, 1N4148, this removes any negative voltages.
The second diode is a 5.1V zener diode, BZX85C5V1. This makes sure that the voltage does not go above 5.1V.
Then the schitt trigger cleans up the signal to a nice square wave that can be read by an Arduino interrupt.

The wheel on my crankshaft has 12 teeth, but it does spin at up to 16,000 rpm. This means a 3.2 kHz signal at full speed.

Your engine at 6,000 rpm and 60 teeth will be producing at signal at 6 kHz. I'm not sure if this is possible for the Uno but I would imagine it is.

Dear Rickerman,

Thanks for your clear description!

Understand everything and tested the circuit with the program you sent me. 6kHz input from the VR with 10V amplitude. I only notice some negative voltages of 500 mV. Does this in reality also happen?

I don't actually have a scope, so I'm unable to confirm if the small negative voltages still exist. I am using a schmitt trigger to condition the signal further though, so that could remove the negative completely.

It is working fine for me.

Here is a short video showing my project in action: Neopixel RPM Gear Indicator Sidecar - YouTube

It is reading the RPM using that circuit and displaying it on an LED strip.

rickerman:
I don't actually have a scope, so I'm unable to confirm if the small negative voltages still exist. I am using a schmitt trigger to condition the signal further though, so that could remove the negative completely.

It is working fine for me.

Here is a short video showing my project in action: https://www.youtube.com/watch?v=mq24VVuxbAs

It is reading the RPM using that circuit and displaying it on an LED strip.

Thanks for your response, nice work!

I will deepen myself a little bit more in the datasheet of the MAX9924 because then I have all integrated in one chip. If the datasheet is not clear enough for me I will use your method.

Thanks! I will keep you updated.

You might also look at a LM1815. It is not as hard to implement as the MAX9924.
If you have any problems understanding the MAX9924, go to Megasquirt Support Forum (MSEXTRA) - Index page and search for MAX9924 or LM1825. There are a lot of threads dealing with these chips.

detown:
You might also look at a LM1815. It is not as hard to implement as the MAX9924.
If you have any problems understanding the MAX9924, go to Megasquirt Support Forum (MSEXTRA) - Index page and search for MAX9924 or LM1825. There are a lot of threads dealing with these chips.

Thanks for your response!

Will give that a try