Circuito de medición de vibraciones piezoeléctricas de Arduino

Estoy buscando un circuito de medición muy simple para medir vibraciones con un elemento piezoeléctrico y un dispositivo arduino. Quiero leer valores positivos y negativos.

Tengo este sensor: http://www.seeedstudio.com/wiki/Grove_-_Piezo_Vibration_Sensor

Sé que este módulo sensor solo me da salida digital. Pero quiero medir las amplitudes de vibración y la frecuencia. Así que usaría solo el elemento piezoeléctrico.

Encontré muchos ejemplos, desde muy simples hasta muy precisos. Pero la mayoría de ellos cortan los valores negativos. Por ejemplo, http://www.learningaboutelectronics.com/Articles/Piezo-knock-sensor-circuit.php

Y en el ejemplo anterior, no hay protección para el arduino. También encontré afirmaciones de que el arduino no necesita protección para leer un sensor piezoeléctrico en el pin analógico, debido a la baja corriente. Y los pines analógicos están protegidos contra voltajes más altos.

Solo quiero un circuito simple para leer valores negativos y positivos de ese elemento piezoeléctrico. Mi dispositivo arduino usa un voltaje de entrada de 3.3V. El sensor piezoeléctrico puede tener en extremo hasta 70-90V.

¿Cuál es la configuración mínima para montar un circuito de medida de este tipo? No necesito la máxima precisión. Debería ser lo más fácil posible. Es solo para fines de prueba. Creo que tengo que usar un divisor de voltaje con dos resistencias altas iguales para establecer una compensación de CC para medir los valores negativos. Pero, ¿qué más necesito para un ejemplo de trabajo mínimo?

Medir la parte negativa de la señal aumentará la complejidad de los circuitos. ¿Por qué crees que hay información útil en la parte negativa de la señal que no está también en la parte positiva? Parece que planea muestrear la señal utilizando el convertidor analógico a digital (ADC) de Arduino. ¿Qué frecuencia espera que sea la señal? AFAIK, un sensor piezoeléctrico puede producir una señal que es demasiado rápida para un ADC de Arduino, por lo que las muestras pueden ser alias y, por lo tanto, demasiado inexactas para decirle mucho. Una razón por la que los sensores piezoeléctricos se pueden muestrear digitalmente es que es posible muestrear mucho más rápido.
@gbulmer Simplemente quiero ver las vibraciones de una máquina como una lavadora o un motor. ¿Cómo muestrearías la salida digital? Pero entonces necesito saber la amplitud por adelantado para configurar la sensibilidad con el pontenciómetro, ¿verdad? Si la sensibilidad es demasiado alta y la vibración es demasiado fuerte, obtendría todo el tiempo un 1 binario como valor de medición. Y si la sensibilidad es demasiado baja y la vibración es demasiado débil, no reconocería la vibración, ¿verdad?
"Pero entonces necesito saber la amplitud por adelantado para configurar la sensibilidad con el pontenciómetro, ¿verdad?" No, la señal cruza cero en cada ciclo. Entonces, la información de frecuencia todavía está disponible en un flujo digital. Se pierde amplitud. "Si la sensibilidad es demasiado alta y la vibración es demasiado fuerte, obtendría todo el tiempo un 1 binario como valor de medición". No, suposición incorrecta; Los cruces por cero dan frecuencia a una señal digital. "Y si la sensibilidad es demasiado baja y la vibración es demasiado débil, no reconocería la vibración, ¿verdad?". Sí. Sin embargo, con un sensor pizeo, eso es poco probable.
@gbulmer Ah, está bien, claro. ¡Muchas gracias! El sensor está conectado a un dispositivo arduino. El dispositivo envía los datos medidos a una raspberry pi con Windows iot ejecutándose en ella. ¿Ejecutarías la FFT (para obtener la frecuencia) directamente en el arduino o en el raspberry pi? ¿Hay algún problema cuando estoy transfiriendo los datos primero al Pi?
Sería mejor hacer una segunda pregunta para eso y mantener esta pregunta enfocada en su alcance actual. En esa nueva pregunta, explique para qué pretende utilizar las medidas. He visto código publicado para hacer una FFT a un par de KHz en un Arduino, pero nunca he intentado usarlo. En general, es mucho más fácil hacer que un sistema funcione usando demasiada potencia de la computadora y luego optimizarlo, que hacer que un sistema funcione usando apenas la potencia de la computadora. Así que usaría el R-Pi para que funcione.

Respuestas (1)

El uso de casi cualquier artículo publicado en Internet sobre la detección digital de un sensor piezoeléctrico proporcionará la frecuencia de la vibración. Esto tiene la gran ventaja de que un pin digital puede detectarse unas 1000 veces más rápido que el ADC.

Un problema con el uso del ADC para muestrear la señal real es que el ADC de Arduino es tan lento que las muestras pueden sufrir aliasing (la señal se muestrea por debajo de los criterios de Nyquist-Shannon ) y brinda información muy poco confiable.

El voltaje de la señal del sensor piezoeléctrico oscilará alrededor de cero. Eso será detectado por una muestra digital, recuperando la frecuencia.

Proteja los pines de la MCU usando una resistencia y un diodo, conectando la señal al pin a través de la resistencia al pin de la MCU y a tierra a través del diodo. Probablemente usaría un diodo Schottky para evitar que la señal vaya muy por debajo del suelo.

Además, proteja la entrada de los voltajes potencialmente muy altos con un diodo zener (3,3 V para una MCU de 3,3 V, 5 V/5,1 V para una MCU de 5 V) también conectado a tierra, de modo que la señal no pueda elevarse por encima del pin Arduino. rango de operación.

Si bien puede estar bien confiar en los diodos de protección ESD, confiar en el diodo ESD para la protección va más allá de las especificaciones del dispositivo. Además, conozco a un tipo que dañó varios pines de arduino usando un sensor piezoeléctrico. No vale la pena ahorrar unos centavos.

esquemático

simular este circuito : esquema creado con CircuitLab

Si realmente desea muestrear la amplitud, coloque también un filtro de paso bajo. Probablemente me quedaría con la entrada digital (en ese circuito) para la frecuencia, y usaría un segundo pin ADC para tratar de medir la amplitud.

No está claro exactamente qué motores desea medir. Para algo como una lavadora, digamos a 1200 rpm de giro, eso es 20 Hz. Por lo tanto, un filtro de paso bajo a más de 100 Hz y un muestreo a más de 1 KHz deberían ser suficientes. Eso debería estar dentro de las capacidades del Arduino.