Usando un interruptor SP3T para conectar 2 GPIO y el pin GND de una MCU

Traté de buscar una respuesta durante varios días, pero no tuve ningún éxito, así que pensé en preguntar aquí. Pido disculpas de antemano si esto ya fue respondido y no pude encontrarlo en este intercambio de pila.

Estoy tratando de usar un interruptor SP3T para conectar GND a 2 GPIO de una MCU, desde el cual intentaré preparar LOW (la MCU configuraría el pin en modo de lectura, con una resistencia pullup), para determinar en qué " modo" en el que se encuentra el dispositivo / en el que se iniciaría (Normal o Configuración).

También quiero aprovechar esta selección de posición en el interruptor para conectar la MCU a GND para completar el circuito y alimentar la MCU (ya conectada a Vcc).

Para resumir :

  • 1 posición conectada a GPIO y GND en la MCU (modo normal - MCU encendida)
  • 1 posición conectada a nada (Sin modo - MCU apagado)
  • 1 posición conectada a otro GPIO y GND en la MCU (modo de configuración - MCU encendida)

Si conecto cables sin ningún otro componente, ambos GPIO terminan conectados a GND, lo que hace que la MCU piense que está en ambos modos (lo cual es incorrecto y no deseado):

ingrese la descripción de la imagen aquí

Entonces, esta versión no funciona, traté de pensar en algo más basado en transistor, y luego MOSFET de canal P (solo porque el proyecto será alimentado por una batería, y quería evitar pérdidas de energía innecesarias con la resistencia encendida la base del transistor, que se evita con MOSFET si leí correctamente) con el siguiente diseño:

ingrese la descripción de la imagen aquí

ahora que los cables están conectados al GPIO que conduce la puerta de su MOSFET correspondiente, debería permitir que el pin de tierra de la MCU se conecte a GND, completando el circuito.

¿Este diseño es correcto o estoy cometiendo un error en alguna parte? ¿Quizás hay otra manera? una forma mas sencilla? Estoy un poco fuera de mi alcance aquí, por lo que agradecería cualquier recomendación o consejo.

La primera imagen no funciona, tienes razón. Debería haber puesto resistencias pull-up, no pull-down. ¿Ha intentado simular su circuito? El segundo tampoco funcionará. Para aclarar en la primera imagen, no debe tener el cable de tierra directo
Esto sería mucho más fácil con un interruptor de doble polo. ¿Supongo que es un interruptor de encendido y apagado? Pero las preocupaciones sobre otras partes que también conectan a tierra el mcu siguen siendo válidas.
Normal or Configurationsolo requiere un interruptor SPST conectado a un pin de datos... un puente móvil también funcionaría
Quiero que el interruptor maneje el estado de energía del dispositivo Y su modo. Un simple interruptor SPST solo manejaría el modo.
¿Necesita que la MCU se apague realmente, o simplemente mantenerla en el reinicio sería suficiente? No estoy seguro de cuál es el consumo de energía cuando se mantiene en reinicio.

Respuestas (4)

La única forma de hacerlo usando un interruptor de un solo polo que rompa la tierra de la MCU es tener algún tipo de conmutación electrónica como la que estaba tratando de hacer con los MOSFET o usar diodos y su caída de voltaje asociada en la ruta de tierra.

¿Sería posible activar uno de los modos de suspensión en lugar de romper el suelo de MCU?

Otra alternativa es un interruptor de doble polo. Sin embargo, no necesitaría que fuera triple, ya que solo está tratando de detectar 2 estados, por lo que solo debería necesitar un pin de E / S para eso. Un interruptor DPDT de apagado central donde un polo pone a tierra la MCU en ambas posiciones y el otro polo pone a tierra uno de los pines GPIO en una sola posición debería hacerlo.

Actualización: estoy mirando una hoja de datos para el ESP-12F y parece que hay dos modos de arranque, descargar y ejecutar. La diferencia entre ellos es que el modo de descarga GPIO0 se mantiene bajo. No estoy seguro de si eso es lo que quiere decir con el modo de configuración, si es así, debería usar ese pin en lugar de GPIO4 y 5.

Gracias por tu comentario. Estaba tratando de evitar el diodo para evitar la disipación de energía inútil (el proyecto funciona con una batería). Además, con mi idea inicial de haber usado diodos (y no intentar conectar GND, sino +3.3v), los diodos habrían estado entre 3.3v y el pin Vcc, lo que daría como resultado una caída de voltaje en el diodo que habría hecho que el voltaje demasiado bajo para lo que estaba tratando de hacer.
Cuando hablo de modo, hablo de modo personalizado, para la lógica interna del programa MCU. Acerca de usar doble polo en lugar de triple, no puedo hacer eso, el objetivo es apagar el dispositivo en una posición y encenderlo en la otra (y arrancar/ejecutar en modo diferente)
@Haerezis Creo que podemos estar usando una terminología diferente para el tipo de interruptor. Originalmente, propuso un SP3T que tiene una conexión común (el poste) que se conecta a una de las 3 conexiones (los tiros). Como no necesita ninguna conexión en la posición de apagado, puede usar un interruptor de "apagado central" de doble tiro, tiene tres posiciones, pero solo dos de ellas hacen una conexión, estas serían más baratas y fáciles de obtener que un triple tiro. Al hacerlo también de doble polo, tiene dos interruptores separados para trabajar en un solo paquete.
@GodJihyo gracias a Dios por tu comentario. Entonces parece que solo soy un gran tonto, y estaba tratando de hacer mi propia vida más difícil sin una buena razón. Realmente nunca entiendo la convención de nomenclatura de los interruptores, pero su comentario me hizo dar un paso atrás y echar otro vistazo. Parece que un DPDT con un descentrado funcionaría a la perfección. Así que solo usaré eso. Todavía tengo curiosidad si un diseño como este imgur.com/a/ypvttPS funcionaría (parece funcionar en papel cuando lo miro, pero no soy un experto). GRACIAS por hacerme abrir los ojos...

Considera esto: -

ingrese la descripción de la imagen aquí

Cuando tiene su interruptor en la posición media, puede detectar esto en el código y poner su MCU en modo de suspensión profunda. Eso es más preferible que intentar apagar la MCU a través de un pin de tierra porque cualquier otro pin IO conectado a tierra activará parcialmente su MCU.

Le insto a que piense en entrar en un modo de suspensión profunda porque, si tiene conexiones de E/S con otros chips en su circuito (que también pueden generar 0 voltios), entonces es probable que nunca logre lo que desea; la MCU podría permanecer alimentada a través de esas líneas IO conectadas a tierra. Y, también podría hacer cosas tontas.

Lo mismo se aplica si intenta desconectar la línea VCC: las líneas de E/S externas hacia/desde otros circuitos pueden tener estas líneas de E/S con voltaje Vcc y es probable que sigan causando que su MCU siga funcionando.

Eso no abre el camino para el mcu, por lo que aún se encenderá en el modo medio / apagado ...
Oh, entonces eso es a lo que se dirigía el OP con toda esa complicación @Passerby: está bien, lo reconsideraré.
Sí, lo siento, estaba un poco nervioso al escribir la publicación. Quiero la MCU apagada en la posición media y encendida en todas las demás, con la diferencia de que en el pin 1 quiero (por ejemplo) que el dispositivo arranque en modo normal y en el pin 4 arranque en modo de configuración.
@Haerezis eso no es problema. No hay necesidad de disculparse, pero, ¿ve el problema al que me refiero de cambiar cualquiera de los rieles de alimentación Y, no puede entrar en un modo de suspensión profunda que mantiene la corriente muy baja?
Ya estoy usando el modo de suspensión profunda en mi modo "normal". Quería que la posición de APAGADO fuera realmente un apagado eléctrico. He tenido otra idea con el comentario de otra persona, usar un solo mosfet levantado en la puerta y conectado a GND a través de la posición media del interruptor: imgur.com/a/ypvttPS , ¿qué piensas?

Ninguna imagen funcionará.

En la primera imagen, ya ha conectado a tierra ambos pines, por lo que el interruptor no puede hacer nada, ambos pines siempre tendrán una lectura baja.

La segunda imagen es aún más incorrecta. Ha pasado el pin de tierra de MCU a través de diodos de cuerpo FET, por lo que la MCU recibirá menos voltaje ya que no está conectado a tierra directamente.

Simplemente use la primera imagen, pero no tire a la fuerza de los GPIO a tierra. Tenga una resistencia pull-up en su lugar. O usa pull-up interno.

Sí, soy consciente de que la primera está mal, solo quería probar y demostrar cuál fue mi ingenua "primera" idea. Pensé que podría ayudar a la gente a entender lo que quería lograr. Supongo que me equivoqué:/ La idea era tener una posición en el interruptor donde la MCU estaría apagada, y en otras posiciones la MCU estaría ENCENDIDA, pero arrancaría en un "modo" diferente dependiendo de la posición del interruptor (leer en el gpios ). El principal problema con el primero es que habilitar un gpio también habilitaría el otro porque están conectados por GND, estaba tratando de no hacer eso.

ingrese la descripción de la imagen aquí

En su lugar, podría ser más fácil cambiar el suministro de 3.3V.

Cuando el interruptor está en la posición media, la resistencia de 1 M mantiene el MOSFET de canal P apagado sin ningún consumo de corriente.

Cuando el interruptor está en una de las otras posiciones, la puerta se conecta a tierra a través de uno de los diodos, encendiendo el FET.

Necesitará un MOSFET de canal P que pueda manejar el consumo actual de su módulo a ~ 2.5V Vgs.

Eso podría no funcionar. Cuando el interruptor está en la posición media, fluirá corriente a través de los diodos de protección MCU hacia la MCU, que intentará sujetar la corriente y mantener bajo el voltaje en el pin IO, lo que enciende el FET. Los pines de un chip sin energía nunca deben estar demasiado altos.
Me gusta tu idea, pero me hizo pensar en otra versión, déjame pensar cuáles son tus pensamientos. La idea es: esquemas . En las posiciones 4 y 1 del interruptor, la compuerta mosfet está conectada a una resistencia pull-up que activa el mosfet, por lo que la MCU está conectada a GND (y el dispositivo está ENCENDIDO). En la posición 2 del interruptor, GND está conectado a la puerta, lo que hace que el mosfet se cierre y, por lo tanto, desconecte GND para la MCU (por lo tanto, la MCU está APAGADA). Solo estoy tratando de evitar diodos y disipaciones innecesarias de energía de caída de voltaje directo. ¿Qué opinas?
Haerezis Eso podría funcionar. Sin embargo, debes invertir el MOSFET. Fuente a tierra, Drenaje al pin micro GND.