Before someone suggests a shaft-mounted Hall effect sensor and an LM2917 I should explain that on a diesel fire-fighting water pump there is neither alternator tach pulse nor access to the driveshaft, which goes directly from the engine into the pump.
Although I'm piloting this on my home water pump, there are other applications for this solution, not least of which is as a no-wire tach sensor for use in cabin-mount vehicle telemetry systems. I was trying to avoid making disparaging public comments about the apparent inability of my employer's installers to find a tach pulse behind the dash, but I think Peter Bennet's otherwise reasonable comment deserves an answer.
I'm interested in using a microphone or similar transducer that measures vibration in the 0 < f < 1kHz range.
As pointed out by Andy, RPM != Hz. The single cylinder diesel waterpump fires once for every two revolutions of the crank, so running at 3000RPM the frequency of detonation is only 25Hz. This point gave me considerable pause. However, engines do not produce a pure tone. Firstly, the entire engine block functions as a bell. If I remember my bell theory that should produce at least five tones of reasonable power (it starts off pretty loud!). Secondly, the exhaust baffle works by inducing a complicated series of reflections with deliberate refraction. The resultant wave has many times the frequency of the base harmonic. To get a reliable answer I'll have to use a spectrum analyser. Happily there's one at work and while I don't really know how to use it, I have colleagues who do. This should prove interesting.
My first experiment was a Jaycar kit that provides life-support for an LM2917. It worked well for detecting a frequency threshold, but what I want to do now is convert the dominant frequency to a voltage.
FFT is not a load I care to place on an embedded CPU that's already busy, but if there is a spectrum analyser on a chip, that would be superb so long as it isn't thirsty or ridiculously expensive.
Investigation of the aforementioned LM2917 reveals that it can be configured as a frequency to voltage converter, which is exactly what is required as the input for an ARM SoC.
Broadly speaking (if I've understood the docs correctly) it's a charge-pump arrangement inside the LM2917 with some op-amp cleverness to produce an output voltage linearly correlated with frequency.
Figure 33 of the app notes in the TI documentation for the LM 2917 is titled "Frequency to Voltage Converter with 2-pole Butterworth Filter to Reduce Ripple" which is pretty much exactly what I wanted. The output is linearly scaled from Gnd to Vcc with the range governed by the drain-to-ground resistance on pin 3, so now I guess the question has mutated into…
What's involved in using a microphone to supply f(in) of an LM2917?
A little digging reveals that an electret microphone is an assembly with a capacitor where the distance between the plates changes according to air pressure and the tiny change in C is converted to a signal by an embedded op-amp. You have to supply power, and the output voltage range is determined by the supply voltage.
The problem to which Andy alluded is that these frequencies are so low that signal integration won't work so well. My whole strategy really depends on being right about the harmonics. Stay tuned (sorry, couldn't resist it).
Best Answer
Do both ends of the crankshaft disappear into inaccessible things? Is there no way whatsoever to get to any rotating part - the pump impeller, injection pump, cam belt/chain/gear, starter gear...?
Writing off any sort of variable reluctance or hall sensor on any rotating part (which seems far fetched, but for the sake of argument...) there are also other potentially easier ways to sense RPM than microphone - although automotive knock sensors are tuned microphones and you could get lucky with one of those.
You could sense pulses from fuel injectors, exhaust manifold, injection pump. I'm assuming you have no alternator or rotating electrics at all, otherwise the ripple/AC from any of those is an easy win.
The LM2917 circuit is a very old one, and I don't really see why it's useful today - converting RPM to a voltage doesn't seem like a useful thing to do; If you are displaying it on a standard RPM gauge, then you want to be capturing the dominant/target frequency and filtering/conditioning it to suit the RPM gauge, which will expect pulses. If you are capturing the data with a microprocessor for transmission or logging etc. then the micro can count pulses just as happily as it can read an ADC, but the error will be much lower if you're just filtering the pulse train rather than doing a relatively vague f-to-v conversion.