Detecting a tight range of frequencies


I have the idea of using the ATmega 328P to do a measuring detector for a very concrete frequencies.
For example: Measuring/detecting frequencies from 2Khz up to 2,5 Khz.

The circuit will be this:

Piezo detector -> Noise filtering -> Signal amplifier (gain regulated with a potentiometer) -> Low pass filter (frequency regulated with a potentiometer) -> High pass filter (frequency regulated with a potentiometer) -> Arduino

So the idea is to detect the frequency, filter the noise from capacitance, etc. Amplify and adequate the signal to be detected by the Arduino. Adjust manually with the pot. the band frequency to detect only the desired frequencies.

Then the program of the Arduino will measure the time of detection, so to throw out the false positives, and send and output to a PLC in case of a right detection.
From the software side is easy.
The piezo detector I think any one that works on the desired range will be ok.
Noise filtering: here I don't know what to do, is a normal RC, or RL filter? or there is any IC that could do the work? Or what you suggest?
Signal amplifier: Maybe a 74HC14? How do I regulate the gain with a pot?
Low and High pass filters, again no idea how to do it for the desired frequencies and also to be adjustable with a pot. Maybe there is also an IC that could make my life easier? (Electronics are not my strong point, sorry).

I will apreciate any help.

Signal amplifier: Maybe a 74HC14?

That is not an amplifier it is a logic level inverter.

Sounds simple but sadly it is not.

Low pass filter (frequency regulated with a potentiometer) -> High pass filter (frequency regulated with a potentiometer)

Is the real tricky bit. It can be done but it is not easy. The first thing you have to do is to decide what order of filter you want to implement. Filters do not pass everything up to a certain frequency and then stop there is a roll off and the speed of that roll off is dependent on the type of filter and it order.

This means a loud tone outside your band can give you just as much signal out as a quite signal inside it.

You might want to consider a switched mode capacitive filter you can get in a chip although I have never found them much good.
You could try sampling the signal and putting it through some maths called a Fast Fourier Transform or FFT, that splits the signal into frequency bands.
Or you could use a tone detector chip like the LM567.

Thanks for your reply. I found out this document explaining the old band filters:

However, does the LM567 solve all my problems? Is really that simple?

However, does the LM567 solve all my problems?

It is a tone decoder, it gives you a logic output for a tome in. Google for the data sheet.
However I don’t know if it is selective enough for your application because you haven’t said what it is.

Oh excuse me. I want to measure the vibration frequency of different metals under diferent operation: such as a motor, a car, etc.
And because it is relative to width and size, not only to material, I have to adjust the freq. to the desired application.

To give an example: Imagine that a motor bearing vibrates normally at 2,2 Khz and with certain dB. When the freq. goes up or the sound goes louder, something bad happens. I want to detect it without causing false positives.

I found this great calculator for the LM: LM567 Tone Decoder Calculator
But how do I adjust sensitivity/gain?

When the freq. goes up

So that would mean you need to be able to adjust the frequency while taking the measurements.
That suggests you would be better off with an FFT.

vibrates normally at 2,2 Khz and with certain dB

Looks fantastically high, what kind of motor could reach 2200 x 60 = 132 000 RPM ??? Jet-turbine, or what the hell right name for it ?

do you know how to definition 20kHz is trigger Audio frequency?

Things would be much easier if you can apply known frequencies to the device under test, and watch out for a maximum amplitude (resonance).