La salida del microcontrolador anula otra señal, protege uC cuando está apagado

Tengo una señal digital de otro lugar y un microcontrolador. El microcontrolador puede configurar sus pines de salida para que sean alto, bajo o alto-Z. Si el pin uC es alto o bajo, me gustaría que la salida coincida. Si el pin uC es alto-Z, me gustaría que la salida coincidiera con la otra señal, e idealmente el uC puede leerlo. Pero también me gustaría poder apagar el microcontrolador por completo y que no se dañe por una sobretensión en el pin. Expresado como una tabla:

| uC Power   uC out   Ext in | output |
+----------------------------+--------+
|    H         H       -     |   H    |
|    H         L       -     |   L    |
|    H       HighZ     H     |   H    |
|    H       HighZ     L     |   L    |
|    L         -       H     |   H    |
|    L         -       L     |   L    |
|    -       HighZ   HighZ   |   L    |
+----------------------------+--------+
  • La entrada externa podría provenir de algunas fuentes diferentes, muy probablemente lógica de +-12V o 0-5V. Me gustaría ser compatible con una gama tan amplia de equipos de prueba de banco y PLC, etc. como sea posible sin agregar demasiados componentes más.

  • La salida va a una entrada digital CMOS típica. Puedo agregar un disparador Schmitt.

  • El microcontrolador puede generar o absorber aproximadamente 10 mA en ese pin (limitado por el total a través del puerto). La clasificación de voltaje máximo absoluto es 0,3 V por debajo de GND o 0,3 V por encima de Vcc.

Aquí está mi solución hasta ahora:

esquemático

simular este circuito : esquema creado con CircuitLab

¿Funcionará esto? ¿Hay algo en lo que me haya olvidado pensar? ¿O una opción IC todo en uno más simple que no conocía?

Creo que, en teoría, el uC debe estar aislado del resto del circuito.

Respuestas (1)

Un par de puntos:

  1. ¿Qué evita que la salida sea negativa?

Si cuenta con el Zener para hacer eso, tendría cuidado. El Zener no se sujetará en la dirección "hacia adelante" (en este caso, tierra a negativo) hasta aproximadamente 0,7 V (lo que permitiría que la salida llegue a -0,7 V).

También me pregunto si el D2 TVS (que muestra con referencia a tierra) puede tomar un -12V continuo.

  1. Si la salida puede volverse negativa, el NMOSFET tiene un diodo parásito que se encenderá.

La mayoría de los NMOSFET discretos tienen un diodo de cuerpo parásito que apunta desde la fuente al drenaje (consulte la hoja de datos BSS138P, por ejemplo: https://assets.nexperia.com/documents/data-sheet/BSS138P.pdf ) Entonces, cuando obtiene un voltaje negativo en el drenaje, ese diodo se encenderá.

La solución a esto es poner dos NMOSFETS en serie espalda con espalda (es decir, conectados a los drenajes o conectados a las fuentes), lo que hace que los diodos apunten en direcciones opuestas.

Luego, si tiene un NMOSFET con un umbral de aproximadamente 1 V, el NMOSFET permanecerá apagado hasta aproximadamente -1 V (G = 0 V, S = -1 V, D = 0 V === G = 1 V S = 0 V D = 1 V) lo que le da al Zener suficiente margen para sujetar el voltaje negativo.

La salida solo pasaría de aproximadamente 0-4V (5V-Vth), pero eso es más que suficiente para activar las puertas CMOS.

Espero que esto ayude.