Arduino Forum

Using Arduino => General Electronics => Topic started by: Brasshopper on Mar 27, 2017, 04:41 am

Title: Arduino with Piezo Sensor
Post by: Brasshopper on Mar 27, 2017, 04:41 am
I have had classes in electronics- but they were still teaching with tubes when I took the classes.

So I want to hook three-four piezo sensors to an arduino nano, most likely, and poll the sensors and use a software DSPish program to filter the input, passing low frequencies. I see attaching each to its own sensor pin.  I have it working for one sensor, and, for testing, I repeat the output on the analog input so that I can scope the input vs. output and see the delay.  So far, it seems to be acceptable.

Everything would be reduced to one output that would be a 5v yes or no.  When I see enough activity, (yet to be defined, but it night be as simple as any one filtered input exceeding a limit) I raise one output that is passed to another computer which is expecting it.  I keep the output on for 500 milliseconds and then turn it off.

The problem I see is that the piezo sensor seems to produce large transients.  The low pass filter keeps those out of the internals. I don't need or want the transients.  But they still hit the ADC converter.

So, is there an  easy way to just chop the transients before they blow the ACD?  Right now I am considering a 1Meg resistor in parallel with the sensor. and then 2 back to back 5.1 volt zeners, also parallel to the sensor.  I guess that the idea of the z is that they just dump any voltage higher than about, what, 5,5 volts or so? The forward voltage drop plus the voltage rating of the back zener seems to be the limit.                                                                       

I want to measure with this circuit occasionally, but I see leaving it on all the time, and there might be output from the sensors all the time, and the arduino might report that it has been triggered frequently.  But what it will report to won't be listening except at certain times.  The point is that the ADCs on the nano will be in use all the time so that they can report occasionally.

So, do I need to worry about the Arduino input, should I do all this?  Is the one meg resistor enough? I guess I  don't see how a resistor in parallel cuts the voltage, it shunts some current of course.  I don't really understamd.

With 4 inputs, I am thinking about 8 zeners and 4 resistors per circuit.   Am I going to blow the arduino if I don't do anything but hook the piezo to tharxuino on pin 0 (and 1 and 2 and 3).

Thanks for reading this far - if I missed the thread that discusses this, I looked, I'm sorry, I would appreciate a pointer. 
Title: Re: Arduino with Piezo Sensor
Post by: Wawa on Mar 27, 2017, 05:49 am
Arduino pins have internal pin protection diodes that clip positive spikes to the supply rail and negative spikes to ground.
No need to add anything, unless you are going to hit the piezo with a hammer.
A ~1Meg "bleed" resistor is needed to reference the pin to ground. You don't want a random signal from a floating pin.
That, with the piezo capacitance, is a high-pass filter. Use a higher value if you want to capture ultra low frequencies.
Title: Re: Arduino with Piezo Sensor
Post by: trevortjes on Mar 27, 2017, 11:05 am
I didn't know Arduino pins were protected at all. When I used piezos as sensors, I put two zeners back to back like this ( I used a 1 megaohm resistor for R1. It did the job.
Title: Re: Arduino with Piezo Sensor
Post by: Wawa on Mar 27, 2017, 10:23 pm
Pin limit is VCC+0.5volt and GND-0.5volt.
That circuit useless, because it does not clip the negative peak to <=0.5volt.

What if the Arduino is off. Then clipping should be +0.5volt and -0.5volt.
Zeners are generally useless for pin protection.

Two schottky diodes is a better solution.
One from pin to VCC (cathode to VCC), and one from pin to ground (cathode to pin).
As said, not needed for low energy piezos.