Hacer que el acelerómetro ADXL345 funcione sobre SPI con Arduino Uno

2

Estoy usando este chip ADXL barato con Arduino Uno. Cuando leo el sensor con I2C - funciona bien. Sin embargo, también tengo algunos servomotores que generan mucho ruido y cuando enciendo los motores, las lecturas del sensor se vuelven bastante inútiles.

Leí que SPI es mucho más inmune al ruido, así que decidí ir por este camino. Sin embargo, simplemente no puedo hacerlo funcionar con SPI. Estoy utilizando este código, que parece funcionar para otras personas: enlace

Revisé tres veces los cableados, me parecen bien, lo probé con y sin cambio de nivel, intenté conectar varias resistencias de pull-up ... y aún así solo obtengo ceros. Sin embargo, I2C funciona bien (sin ningún tipo de pull-ups).

Me pregunto, ya que el código Sparkfun utiliza un panel de arranque diferente para el chip ADXL. ¿Podría ser que el mío necesite algunos pull-ups específicos, que no se mencionan en ese tutorial? ¿Cómo puedo saber qué flexiones deben colocarse?

¡Y cualquier otra sugerencia será muy apreciada!

    
pregunta Lacho Tomov

3 respuestas

3

Debería leer la hoja de datos para que la parte verifique dos veces sus conexiones. No debe tener ningún pullup para la comunicación SPI.

Con respecto a no poder comunicarse a través de I2C cuando los motores están encendidos, ¿cuánto tiempo tienen los cables I2C? Tratar de disminuir la resistencia de los pullups de I2C podría ayudar.

En general, puede intentar remediar esta situación agregando tapas más grandes cerca de la fuente de alimentación del microcontrolador / acelerómetro o incluso agregando una pequeña resistencia de la serie (~ 10 ohmios o menos) y una tapa en Vcc que va a la parte sensible al ruido.

Lea sobre las técnicas de puesta a tierra y encendido de la estrella, es posible que pueda resolver su problema simplemente volviendo a conectar los cables de forma "estrella".

    
respondido por el miceuz
0

ACTUALIZACIÓN: finalmente resultó que el "ruido" en las lecturas se debía a las vibraciones mecánicas que causan los motores. No es debido a i2c o spi u otros cableados.

Los acelerómetros se vuelven completamente locos cuando se los somete a vibraciones mecánicas y esto parece ser cómo funcionan todos. Por eso es necesario combinar el acelerómetro con un giroscopio: el giroscopio no se ensucia debido a las vibraciones, sin embargo, acumula un error con el tiempo. Por lo tanto, ambos dispositivos tienen un problema y al combinarlos, cada dispositivo soluciona el problema del otro dispositivo y obtiene una lectura precisa :)

    
respondido por el Lacho Tomov
0

Tenga en cuenta que hay dos tipos diferentes de ADXL345 (como se describe en enlace ) ... uno de sparkfun y el otro que obtienes de ebay (etc.) Ambos se ven más o menos iguales pero solo el de sparkfun funciona con i2c y spi ... ese de ebay solo funciona con i2c

    
respondido por el Charles1

Lea otras preguntas en las etiquetas