piezo signal conditioning circuit

Hi,

A piezo looks like a voltage source in series with a capacitor. For simulation purposes, I suggest you assume a value of around 1nF to 10nF, however this is just a guess because it depends on the piezo.

Here are some comments on your circuit:

  1. To use VE=gnd you need to use an op amp whose input common mode voltage includes ground. There are several op amps available that meet this requirement, e.g. LM324.

  2. Capacitor C1 is much bigger than the likely source capacitance of the piezo so it will cause severe attenuation of the signal. I suggest you remove C1 completely. Use a resistor (R4) of 10K or more between the piezo and the op amp input to limit the current flowing into the op amp when you accidentally drop a hammer on the piezo.

  3. You need a resistor (I'll call it R3) between the non-inverting input of the op amp and ground (or in parallel with the piezo), to supply the input bias current to the op amp and keep the non-inverting input near ground potential. The input bias current of the LM324 is -100nA max at 25C. So with R3=100K you get up to +10mv at the input, and with R3=1M you get up to 100mV at the input. To avoid this being multiplied by the gain of the op amp, choose R1 and R2 so that if you were to put them in parallel, the resulting resistance would be the same as R3, or as close as you can reasonable get. For example, R3=200K, R1=220K and R2=2.2M.

  4. D1 is not needed if you are using the LM324, because it is capable of accepting up to 50mA negative input current.

  5. Gain of a non-inverting amplifier is 1 + (R2/R1), so the gain in your example is 11 not 10.

  6. Limiting the output voltage with a zener diode is safe but not very kind to the op amp (or the battery, if the device is to be battery powered) because most op amps can supply quite a large output current. I suggest you connect a resistor between the output of the op amp and D2. Alternatively, just connect a 10K or greater resistor between the op amp output and the Arduino input pin and omit D2. The resistor will limit the current into the Arduino pin to less than 0.5mA, which its input protection diode can handle.