El sensor de temperatura I2C y un escudo wifi Arduino no funcionan juntos

0

Estoy usando un escudo wifi de arduino y un TMP102 con un arduino uno rev2.

Con los tableros más antiguos que rev3, debe agregar un puente de 3.3V al pin IOREF para el escudo de wifi, vea aquí: enlace

Pero cuando hago eso, el sensor de temperatura solo lee -0.06 centígrados como si su dirección fuera diferente. (Está utilizando i2c, su ADD0 está conectado a tierra, como aquí: enlace )

Sin el puente, el sensor funciona bien, pero el wifi necesita el puente para iniciarse.

¿Qué debo hacer para que trabajen juntos?

    
pregunta daralthus

3 respuestas

2

Salta a TLDR a continuación para obtener una respuesta más corta:

La línea 3.3v de Arduino Uno Rev2 se alimenta desde el USB FT232R al regulador interno 3v3 del chip serie. El dibujo máximo en esto es inferior a 50 mA. Bastante patético en realidad, por lo que hubo un cambio a un regulador dedicado en la Rev3.

La placa Wifi no se conecta al pin 3v3. Normalmente, funciona con 5v, tiene su propio regulador 3v3 y utiliza un chip de traducción de nivel TXB0108 de TI. Toma dos voltajes arbitrarios (con un cierto rango) y permite que la traducción de nivel se comunique entre los dos. El chip principal en el tablero de Wifi es un dispositivo 3v3. También lo son las tarjetas SD.

Así que aquí está el problema. Notación descuidada, idiota e inconsistente de Arduino.

Arduino Rev3 no agrega el pin IORef que figura en el Esquema oficial. Como se señaló en línea, al agregar el IORef, dijeron que es para una futura expansión. Los tableros 5v, como los basados en Arduino UNO o AVR predeterminados, ioref está vinculado a 5v. Para el nuevo 32bit Due se ejecuta en 3.3v. Es que IORef está vinculado a 3.3v.

  

La revisión 3 de la placa tiene las siguientes características nuevas:   Pinout 1.0: se agregaron pines SDA y SCL que están cerca del pin AREF y otros dos pines colocados cerca del pin RESET, el IOREF que permite que los protectores se adapten al voltaje provisto desde la placa. En el futuro, los escudos serán compatibles tanto con la placa que usa el AVR, que funciona con 5V como con el Arduino Due que opera con 3.3V.

El esquema de la Junta Wifi muestra que el pin IORef va a la TXB0108 Pin 19, VccB (El lado que se comunica con el Arduino. VccA es para el chip wifi). También muestra ... que el puente está vinculado a 5v.

Ahora,¿porquélediríanquesalteiorefa3.3v,ouseelpuente,cuandoUNOrev2yrev1sondispositivosde5vIO?¿Ocuandoelpuenteempataiorefa5v,ysabenqueesocausaráproblemas?Irfig.Realmentenodeberíahaberunarazón.Sesuponequetodoloqueseencuentraenesaplacadeberecibiralimentaciónycomunicarseexternamentea5v,porlotanto,amenosquetengaunaplacamodificadade3.3voVencimientooalgoasí,nodeberíahacerlo.UntableroREV2coniorefatadoa3.3valimentarálamitaddelTXB0108yunatapa,juntoconsuTMP102ysusresistenciasdeextracción

Perotodavíahayunproblema.ElArduino,elTXB0108yelTMP102,inclusoenelconsumodecorrientecompleto,aúndebenestaramenosde50mAdelFTD232R.ElTXB0108yelTMP102tienenmenosde1mAyestáncompletamenteactivos.Algoestácausandoquelalínea3v3bajealabaja.PodríaserqueelesquemadelostablerosdeWifitampocoseacorrecto,eliorefpodríaestarvinculadoaotracosatambién.Talvezunamalatabla.Otienesuncortoqueestácausandoquesecaiga.Talvezelcondensadorenlaplacarev2,cercadelencabezadodealimentacióndondeestaríaioref,estécortocircuitadocontraelpiniorefdelasplacaswifi.Yaquetiene3.3vconectadoaél,esposiblequetengauncortocircuitoounalíneade3.3v.

TLDR; Primero, verifique la línea 3v3 cuando se puentea. No debe ser inferior a 3.3v mientras todo está encendido. Asegúrate de que no tengas pantalones cortos y nada más (excepto la placa wifi y la placa tmp102) conectados. (Cualquier otra cosa requeriría un analizador lógico u osciloscopio, para ver si hay daños en las líneas de datos i2c). También, asegúrese de que el pin ioref no esté clasificándose en el condensador que se encuentra debajo.

Luego, debido a la información anterior, si (y en este punto es un gran IF, no confío en la documentación de Arduino) el ioref está en la pizarra según el esquema, simplemente conéctese a 5v, ya sea a través del puente en la parte inferior, o usando un cable desde el 5v hasta la cabecera ioref. Dado el chip de traducción de nivel, así es como debe funcionar, y debería funcionar.

    
respondido por el Passerby
1

Es posible que el escudo de WiFi esté extrayendo demasiada energía del regulador de 3.3V. Una vez que salta el pin IOREF, el escudo WiFi se enciende, el voltaje en el riel de 3.3V cae y el sensor de temperatura entra en un estado de reducción de voltaje o apagado. Intente medir el voltaje en el riel de 3.3V con el pin IOREF saltado. Si es un camino por debajo de 3.3V, este podría ser tu problema. Otra posibilidad es alimentar el sensor de temperatura con una fuente de alimentación separada y ver si eso lo soluciona

    
respondido por el seanwatson
0

Tuve el mismo problema con el escudo de wifi y un sensor UV ML8511 (lecturas inconsistentes) y noté que donde se suponía que estaba 3.3VI obtenía 4.85V después del cableado IoRef al pin de 3.3V. p>

Después de leer este post, me di cuenta de que la solución era saltar el cable 5V con el IoREF y no el 3.3V.

Lo hice y ahora el sistema funciona bien, las lecturas que recibo son de acuerdo con lo que otros dispositivos miden y resuelven los problemas.

Así que supongo que la documentación de Arduino estaba equivocada cuando se decía que pasaba el cable 3.3 a IoREF.

    
respondido por el Jorge Fantin

Lea otras preguntas en las etiquetas