Arduino I2C y múltiples dispositivos

1

He creado dos proyectos, uno con un TTC RTC y otro con el sensor BM180 para leer la presión barométrica y la temperatura. Ahora quiero combinar ambos.

Estoy intentando conectar tanto el sensor BM180 como un módulo de reloj TinyRTC. los pines I2C a mi Arduino Uno (r3) y como soy solo un principiante, tengo algunos problemas.

El BM180 funciona con 3.3V, pero el TinyRTC está en 5V. ¿Puedo simplemente conectar todos los SDA juntos y todos los SCL juntos?

    
pregunta Jure1873

2 respuestas

2

El DS1307 utilizado en el TinyRTC no está diseñado para funcionar a 3.3V. Entrará en modo de copia de seguridad, solo manteniendo el tiempo. Pero tiene un voltaje de entrada alto mínimo de 2V. Como I2C es un bus colector abierto, donde un dispositivo solo baja la línea, y luego la libera para que las resistencias de pull-up la eleven, esto puede hacerse simplemente asegurándose de que las pull-ups estén conectadas al voltaje correcto. Dado que el BM180 solo puede funcionar a 3.3 V, eso establece el voltaje i2c requerido.

Alimente el TinyRTC a 5V y el BM180 a 3.3V. Simplemente retire o corte las extensiones de i2c en el módulo TinyRTC. Si su BM180 es un módulo con pull-ups a 3.3V, entonces está listo. De lo contrario, use dos resistencias de pull-up (4.7k es el promedio) a una fuente de 3.3V. Entonces el resto depende de tu código.

    
respondido por el Passerby
1

Aquí hay un artículo interesante (documento técnico) para leer, que describe cómo hacerlo utilizando solo un MOSFET para cada línea I2C, y algunas resistencias. enlace a la nota de la aplicación an97055

Echa un vistazo al traductor de nivel lógico bidireccional de sparkfun, que es solo un tablero de ruptura para este enfoque en 4 I / O (solo necesitas dos) enlace al esquema

enlace al producto en sí

    
respondido por el KyranF

Lea otras preguntas en las etiquetas