Problema extraño con ADXL345, Buzzer y Arduino

He configurado un puerto serie a través de un módulo Bluetooth (HC05). Estoy usando una aplicación JavaFX que escribí para leer el puerto serie, trazar los valores de aceleración (a través de ADXL345) y volver a escribir en el puerto serie un bit de alarma (1 para ENCENDIDO y 0 para APAGADO) cada vez que alcanza una determinada función de accelX sobre un valor.

La parte extraña es que, cada vez que Arduino detecta un bit ON y enciende el zumbador, ¡mis valores de aceleración se vuelven bastante ruidosos! Revisé mis códigos tanto en el lado de Arduino como en el de Java y no pude encontrar ningún problema.

Luego puse un LED en lugar de un zumbador y para mi sorpresa se encendió sin interferir con la aceleración. lecturas !!

Realmente no sé cuál es el problema con el zumbador. ¿Alguien puede ayudar?

Aquí está mi sospecha:
estoy usando una placa de ruptura para ADXL345. No estoy seguro de si puede tolerar 5 voltios. Conecté los 3.3 voltios de Uno a su Vcc y estoy usando I2C para las comunicaciones. (con dos resistencias pull-up de 4.7k conectadas entre sus pines SDA y SCL y los 3.3v de Uno).
¿Podría ser que el zumbador cuando se enciende de alguna manera consume tanta corriente que interfiere con esas resistencias de extracción?

Aquí está la foto de mi configuración (la línea roja inferior es 3.3v y la línea roja superior es 5 vols, ambas provenientes de Uno. Todos los terrenos están conectados entre sí):

la configuracion de mi circuitoY aquí están las lecturas de accels. en reposo:
Modo inactivo Java

Y obtengo estas lecturas de Serial Port:

Volcado de puerto serie

Pero cada vez que inclino la placa de prueba (el límite de alerta es de 20 grados), emite un pitido correctamente, pero debido a las aceleraciones ruidosas, el zumbador se inicia, se detiene y se inicia en un patrón aleatorio:

interferencia del zumbador en las lecturas del ADXL345

Supongo que hay algunos problemas causados ​​por el zumbador; ruido vibracional o electromagnético. El hecho de que un LED no provoque este problema respalda esta idea, ya que el LED es una situación de encendido/apagado estático, mientras que el zumbador hace ruido por movimiento físico, que es causado por un campo eléctrico cambiante. Como todo está en la misma placa de prueba, diría que conecte el zumbador a una placa diferente (o simplemente colóquelo en algunos cables voladores) y vea qué sucede después de aislar las vibraciones físicas.
@Puffafish ¡Sí! ¡Sostuve el zumbador en el aire pegándole un cable de señal y suena continuamente con poco (o ningún) efecto en las lecturas de aceleración! ¡Es muy extraño cómo una parte tan barata y humilde puede inducir interferencia electromagnética! ¿Es realmente mecánico o EM? Gracias
@Puffafish ¿Y cómo puedo suprimir sus efectos?
Traté de explicarlo en mi respuesta a continuación.

Respuestas (1)

Para ampliar de mi comentario:

Esto podría deberse fácilmente al propio zumbador: vibración física o ruido electromagnético. El hecho de reemplazar el zumbador con un LED respalda esto, ya que el LED no produce movimiento físico y consume una buena cantidad constante de corriente. Como el zumbador está en la misma placa de pruebas que el LED, es mecánicamente rígido al sensor, mientras que también está eléctricamente cerca, por lo que es difícil decir cuál de los ruidos físicos o EM es más probable (mi corazonada sería física). movimiento que es más fácil de causar y más fácil de curar).

Para confirmar que es el zumbador el que está causando el problema, recomendaría conectar el zumbador a través de algunos cables voladores. Esto aislará mecánicamente el zumbador del sensor. Cuando se repite la prueba, si el sensor no da la lectura "divertida" que está viendo ahora, la causa es el movimiento mecánico del zumbador. La cura para esto es entonces simple: aísle mecánicamente el zumbador del sensor (coloque uno u otro o ambos en cables voladores). Si eso no es algo que pueda hacer para su aplicación, puede amortiguar la señal del zumbador (usando soportes de goma) o puede cambiar su software para filtrar el ruido (que a menudo se hace usando sobremuestreo y tomando la media de la datos).

Ha respondido a mi comentario diciendo que los cables voladores solucionan el problema, por lo que ahora tiene varias opciones: Mecánico: aísle el zumbador del sensor de la forma que desee (cables voladores, montajes de goma) Software: muestree los datos y filtre valores que cambian rápidamente (promediar durante un período de tiempo determinado es lo más fácil) Hardware: use un sensor diferente que muestree a una velocidad más lenta (para que no pueda captar el movimiento del zumbador). Si está utilizando un sensor diferente con una salida analógica, puede filtrar la salida con un simple condensador.

Como esto parece ser principalmente un proyecto de software, optaría por un filtro de software básico. Las especificaciones del mismo dependerán de su aplicación; velocidad de respuesta al cambio, cambio rápido que desea, etc. Puede recorrer un largo camino con el filtrado, dependiendo de su aplicación, usando; promedio, tasa de cambio, coincidencia de frecuencia, antirrebote.