I want to read analog inputs from piezo sensors like these on Raspberry using python, which ADC do you advise me with 8 or more channels and how to wire and program it to get digital values?

  • I have been playing with more than 10 ADCs this year, but never for piezo sensor. I read the follow article to know more: "The Ultimate Guide to Acoustic Guitar Pickups for Stage and Studio" ehomerecordingstudio.com/best-acoustic-guitar-pickups. I always thought that you connect the sensor output to the input of a power amp. In other words, no ADC is needed. But if you can show me a weblink for your requirement, I can try to recommend an ADC for you. I tend ot think that ADC speed is perhaps at most of the order 1k samples per second, so that is not HiFi indeed.
    – tlfong01
    Sep 23, 2019 at 0:44
  • You might like to read my answer to this question for more details: raspberrypi.stackexchange.com/questions/102009/…
    – tlfong01
    Sep 23, 2019 at 0:47
  • You might also find this Q&A helpful: raspberrypi.stackexchange.com/questions/98201/…
    – tlfong01
    Sep 23, 2019 at 0:48
  • 1
    isn't there a more scientific way to build the right circuit without frying anything? :)
    – Miky
    Sep 23, 2019 at 9:51
  • 1
    Shopping recommendations are off-topic here, but as your comment indicates you bought an MCP3008 (which is generally a reasonable choice), you could write a question about that if you show some work. Be advised, however, that, there are several questions about that here as well as tutorials online.
    – Brick
    Sep 23, 2019 at 16:01

1 Answer 1



/ to continue, ...


Update 2019sep26hkt1626

I googled and found other circuits using a 5V PSU and connects 1M and piezo in series across the PSU. I found without the Zener, the piezo output spikes +-30V. This concludes that piezo output can burst many times up to 30V beyond 5V power. If the same PSU is used to power Rpi, than there is a risk of frying the Rpi.

piezo test

Now I am using a 5V Zener diode to clamp the 30V+ piezo signal to under 5V. The very high spike gets clamped down, and the following smaller wavelets look OK.

So next step is to try to use MCP3008 to sample the signal. The wave packet is less than 500mS long, amplitude smaller than 5V. So MCP3008 should be able to handle it.

Note - I have first connected the Zener diode to the Piezo, and then the Zener diode to the MCP3008 ADC. In other words, MCP3008 is directly connected to Zener (at points X, Y of picture below), NOT to piezo (points A, B). This way, even if the Zener is disconnected by a careless newbie mistake, any high pulse generated from piezo will not travel to the MCP3008, frying it and its master Rpi.


I tested the piezo disk torn down from another piezo buzzer and found the finger tapping output signal of a different shape from the first one. Anyway, I think the output amplitude under 5V and period of about 500mS good for MCP3008 to do conversion.

piezo test 2

I once played with electromagnetic buzzer and used a little audio amplifier to amplifier the buzzer audio output. Now the piezo also outputs audio range signals, so I am thinking of doing the same thing.

buzzer amp

/ to continue, ...


(1) Piezo Pickup Transducer 27mm Contact Microphone Trigger - Discs Elements for Acoustic Instrument: Guitar, Drum, CBG etc. with Leads $6.99/12Pcs

Resonant frequency: 4.6 +/- 0.5 KHz

Resonant impedance (ohms): 300 max

Plate material: Brass

Great for: Acoustic Instrument Pickups, Stomp Boxes, Contact Mics, etc...

(2) MCP3008 SPI 8 Channel 10 Bit ADC Datasheet - MicroChip

/ to continue, ...


(A) Piezo with 1M, no Zener, One slight finger tap gives 30V peak

I was curious to know how high would be the piezo output voltage, without clamping it with a Zener diode. I surprisingly found it as high as 30V! This would fry both the MCP3008 and and it master Rpi!

piezo output

Conclusion: Zener diode is absolutely necessary!

(B) Piezo Buzzer Tearing Down

piezo buzzer

/ to continue, ...

(C) The Schematic

Now I am trying to use the RpiSO's built in CircuitLab schematic editor to draw my piezo toy. This editor is newbie friendly. I dragged and pasted the symbols, draw connecting wires, and finally saved and inserted. My masterpiece was automatically inserted here, with the HTML lines inserted along, no need to go outside to ask Imgur for help. Another good thing is that the RpiSO CircuitLab account tlfong01 is automatically created for me. So next time I came back and found my pictures ready for more "final" strokes! One thing not perfect though, is that I cannot "paint" the objects. I need to go outside and asked my PS for help.



simulate this circuit – Schematic created using CircuitLab

  • did you use the same piezo? I can't understand why I've seen many on Arduino not using the diode. So I'll need a 1M Ohm resistor and a 3.3V Zener diode for each piezo right?
    – Miky
    Sep 23, 2019 at 20:42
  • Well, (1) Arduino is stronger than his weak sister Rpi, (2) My little finger tapping might only cause a baby lightning, while a heavy blow generated lighting might strike something fatal., (3) 99 other reasons, ... :)
    – tlfong01
    Sep 24, 2019 at 1:36
  • Last evening I searched my junk box and found a piezo buzzer. I tore it down and found the piezo disk, also 27mm in diameter. But my piezo is higher class than yours : it has a center tap for oscillator feedback. I checked that the oscillator is working, / to continue, ...
    – tlfong01
    Sep 24, 2019 at 1:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.