[SOLUCIONADO] Pérdida de tensión al conectar a un GPIO

Hola gente les comento,
estoy realizando un proyecto de un medidor de coberturas. Estoy haciendo uso de una ESP32 y un Shield de Arduino (marca Dragino) con un módulo LPWA del fabricante Quectel (enlace producto a continuación ):

Uno de los problemas que me encontré es el hecho de que la tensión de los pines del ESP32 son 3.3V y la de los pines del Shield para Arduino son de 5V. Así que la solución fue utilizar un conversor lógico bidireccional 3.3V a 5V como el del link de a continuación:

Tras muchas pruebas, hace poco empezó a fallar la comunicación HardwareSerial entre la ESP32 y el Shield que controla el módulo. Descubrí que se debía a que una de las salidas del shifter de tensión no ya realizaba la transformación de 3.3V a 5V correctamente como sí lo hacía antes, es por ello que decidí cambiar a otro de los que se encontraba al lado (como se puede ver, en un mismo dispositivo hay 4 MOSFET distintos), pero seguía sin funcionar correctamente. Decidí reemplazar el dispositivo por otro y nada, mismo problema. Me extrañaba muchísimo porque siempre uso 2 de los MOSFET en el dispositivo alimentando los pines TX y RX del Shield, y el de TX siempre funcionaba pero el de RX no, siempre 3.3V y no 5V. Al final descubrí que si la salida del shifter HV no estaba conectada, el MOSFET era capaz de sacar los 5V, pero al conectarlo al pin RX del Shield, este bajaba a 3.3V. Solo me ocurre en este y no entiendo por qué. No tengo el mismo nivel de electrónica como de desarrollo del firmware, así que no he conseguido entender el por qué ocurre esto. Muestro unas fotos del montaje en PCB por si les puede ayudar a entender mejor mi problema (mis habilidades con el soldador no son muy buenas :wink: )



¡Muchas gracias por la ayuda!

PD: una cuestión que se me ha olvidado comentar, los pines de comunicación del Shield son RX-P10 y TX-P11, y no los puedo cambiar, los otros no sirven que ya lo he probado muchas veces.

Para confirmar, HV a 5V, LV a 3.3V, GND... bueno, GND, Tx y Rx del a H.. y H.., Tx y Rx del ESP a L.. y L.., verdad?

Correcto, lo has entendido bien

Sinceramente no me imagino el por qué del comportamiento extraño.
Lo que sí, ten en cuenta que puedes connectar el Tx del ESP directamente al Rx del shield sin problemas (no así en el caso contrario).

Saludos

He estado realizando algunas pruebas y, cargando otra vez un firmware más simple que utilizaba cuando como microcontrolador usaba un Arduino UNO me he dado cuenta que el P11 del Shield sí que obtiene los 5V necesarios para la correcta comunicación, pero la tensión en el P10 ha caído a los 3.3V cuando antes no era así. Alguna posible causa del por qué sucede esto ??

Estas pruebas las he hecho con el Arduino UNO y no con el ESP32, por eso me extraña mucho más

Finalmente he encontrado el problema, lo voy a postear por si alguna vez a alguien le es de ayuda o, por mera curiosidad. Resulta que en el Shield, que es el nexo entre el microcontrolador que se tenga y el módulo de Quectel, los pines 10 y 11 son los destinados a la comunicación Serial con el módulo (ningún otro lo está). Entre los pines de TX y RX tanto del Shield como del módulo hay una serie de pequeños circuitos compuestos de una serie de elementos pasivos, MOSFETs y BJTs cuyo objetivo es proteger el módulo de posibles problemas eléctricos. Bueno pues uno de esos pequeños circuitos se ha roto y el pin 10 no es capaz de obtener los 5V lógicos de tensión necesarios y por ello no hay comunicación entre microcontrolador y módulo.
Solución: comprar otro Shield.

PD: a continuación os dejo el esquemático del Shield para que veáis de qué estoy hablando. Gracias.

IoT Shield.v1.2.zip (426,3 KB)

También podrias haber reparado la placa, reemplazando el elemento activo correspondiente. Suele ser un mosfet o TBJ.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.