Protección contra cortocircuito para entrada digital

En mi pregunta aquí: Revisión de mi primer diseño de PCB para un robot de control de riego. se señaló que probablemente debería proteger la LEVEL_ALERTlínea.

Básicamente, tengo una señal de entrada externa digital (5 V) que comparte el conector con un cable de alta potencia de 12 V (hasta 5 A) y está cerca del agua. Por lo tanto, existe un riesgo real de que los 12 V hagan un cortocircuito con la señal de entrada. Me gustaría evitar el humo mágico ... El circuito exacto está en la pregunta vinculada anteriormente, pero reproduciré los bits relevantes aquí:

esquemático

simular este circuito : esquema creado con CircuitLab

Los valores de los componentes no son correctos. Acabo de agregar los componentes, los valores no deberían importar. Le he añadido el fusible, no estaba en el original.

Como puede ver en el cuadro grande en la parte superior que representa un conector que se ejecuta fuera de la placa. Y existe el riesgo de que los 12 V que salen del relé hagan un cortocircuito con el cable que va al LEVELpin del ATmega y se produzca humo mágico.

Si fuera solo una ESD o un transitorio menor, estoy seguro de que los diodos ESD en el pin GPIO podrían manejar eso. Pero esto puede ser un corto continuo a 12V que estoy seguro freiría el micro.

Estas son las opciones que he considerado:

  1. Sujete el diodo al riel de 5V. ¿Puede el regulador (LM7805CT) manejar que la salida sea fuertemente impulsada al mismo voltaje que su entrada? Incluso si puede, ¿el riel de 5V se elevará por encima del Vcc máximo del ATmega? Si el nivel del agua cae y el interruptor se activa mientras la salida está en cortocircuito, entonces el fusible debe fundirse y evitar que la bomba funcione en seco.
  2. Coloque un PMOS entre U2 y ATmega y agregue un divisor de voltaje a LEVELla línea donde el punto de división está vinculado a la puerta del PMOS para que cualquier valor superior a 5 V en NIVEL corte la alimentación del relé y rompa el cortocircuito. No estoy seguro de si esto será lo suficientemente rápido para evitar daños en el ATmega. También es al menos tres componentes más. La velocidad puede ser resuelta por el filtro RC en la línea LEVEL. Si el interruptor de nivel se activa debido a un nivel bajo mientras la salida está en cortocircuito, no será un problema ya que el relé apagará la bomba de todos modos.
  3. IC limitador de voltaje y corriente dedicado. Realmente me gustaría evitar agregar otro IC en este punto.
  4. Similar a 2, pero coloque el PMOS en paralelo a C1 y, en su lugar, sople el fusible.
  5. Use un divisor de voltaje para crear un potencial adecuado, cercano a 5V del riel de 12V que no está conectado al regulador y sujételo usando un diodo de LEVELtiene el mismo efecto que 1. pero creo que no corre el riesgo de explotar el regulador o elevar Vcc.

¿Podría indicar si alguno de estos métodos es adecuado para proteger los circuitos integrados? O si uno es mejor que el otro?

Respuestas (2)

El otro lado del SW1 está conectado a GND, lo que significa que LEVEL está abierto o conectado a GND. Cuando el NIVEL está abierto, esa parte del circuito es de alta impedancia. La resistencia pullup interna de 50k sigue siendo un valor alto. Sugiero agregar una resistencia de 4k7 o 10k de LEVEL a 5V.

Es una mala idea agregar diodos de sujeción a una entrada de un ATmega. Serán paralelos a los diodos ESD internos. La forma correcta de agregar diodos de sujeción es con una resistencia adicional entre los diodos de sujeción y la entrada del chip ATmega.

La forma más común de proteger una entrada es agregar una resistencia en serie entre la señal y la entrada. Por ejemplo 4k7 o 10k. Se permite empujar o extraer 1 mA en los diodos ESD internos de un pin. Eso significa que con 12V y una resistencia de 10k, la corriente en el pin del ATmega es (12-5.5)/10k = 0.6mA, está bien. Con 4k7 todavía está lo suficientemente cerca.

Hay muchas otras formas de resolver esto, pero mi solución es agregar una resistencia pullup de 4k7 o 10k de LEVEL a 5V y una resistencia de 4k7 o 10k de LEVEL al pin de entrada del ATmega.

¿Eso no baja el voltaje en el pin? ¿Como la resistencia en serie forma un divisor de voltaje con la resistencia pull-up?
El pullup no en el pin, sino en el lado del interruptor.
¿Podría explicar la razón para agregar la resistencia en serie entre un diodo de sujeción externo (¿zener?) Y el pin de entrada, por favor?
Con un diodo de sujeción, mento dos diodos de la línea de señal a 5V y GND. Ellos 'sujetan' la señal entre GND y 5V. Sin embargo, ya hay diodos ESD dentro del microcontrolador que hacen lo mismo. El diodo ESD interno podría comenzar a conducir antes que el diodo de sujeción externo y, por lo tanto, el diodo de sujeción externo no evita daños. Una resistencia entre los diodos de sujeción externos e internos evita eso. Un diodo zener tiene fugas y no se puede utilizar en una ruta de señal analógica. Para una entrada digital está bien. A veces veo un diodo zener de 5,1 V en un esquema, pero nunca uso un diodo zener.

Cuanto más pensaba en el problema, más me daba cuenta de que necesito poder distinguir entre tres estados en la LEVELlínea:

  1. Accionado
  2. en cortocircuito
  3. Abierto

Después de mucho rascarme la cabeza, se me ocurrió este esquema:

esquemático

simular este circuito : esquema creado con CircuitLab

Simulación: Aquí .

El valor en ADC3 será:

  • 5V si +12V corta a NIVEL.
  • 1,3 V si el interruptor está abierto.
  • 0,88 V si el interruptor está cerrado o NIVEL en cortocircuito a tierra.

ADC3 se sondeará continuamente siempre que el relé que proporciona los +12 V al depósito esté activado. Si el valor es menor/mayor que 1,3 V -/+ 0,2 V, el relé que proporciona +12 V se desactivará (o nunca se activará). Puedo escalar los valores de resistencia para cumplir con la impedancia de salida esperada en la línea ADC para un sondeo rápido.

También quiero que el sistema sea seguro para operar, por lo que debo considerar todos los escenarios breves posibles:

  • 12 V a GND o PGND: fluirá una corriente alta y disparará un fusible reiniciable y se caerá µC. La próxima vez que el µC entre en línea, el relé estará apagado y necesito encontrar alguna forma de detectar si se apagó debido a una interrupción breve o normal. Tal vez usaré un poco en EEPROM para activar/desactivar la bomba. y si la bomba estaba encendida cuando se reinició, es probable que haya un cortocircuito.
  • 12V a NIVEL: ADC3 irá a 5V y el riel de 5V está protegido por el diodo.
  • GND o PGND a LEVEL: Mismo efecto que si se accionara el interruptor. ADC3 pasará a 0,88 V y la bomba se apagará con el mensaje "Nivel de agua bajo".