Protección contra cortocircuitos para entrada digital

3

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 línea LEVEL_ALERT .

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

simular este circuito : esquema creado usando CircuitLab

Los valores de los componentes no son correctos, solo agregué los componentes, los valores no deberían importar. 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 sale de la placa. Y existe el riesgo de que los 12 V que salen del relé no lleguen al cable que va al LEVEL pin en el ATmega y se produzca humo mágico.

Si fue solo un 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 cortocircuito continuo a 12V, lo cual estoy seguro de que podría freír el micro.

Estas son las opciones que he considerado:

  1. Sujete el diodo a la barra de 5V. ¿Puede el regulador (LM7805CT) manejar la salida siendo fuertemente impulsada al mismo voltaje que su entrada? Incluso si puede, ¿el riel de 5 V se elevará por encima del Vcc máximo del ATmega? Si el nivel del agua desciende de modo que el interruptor se active mientras la salida está en cortocircuito, entonces el fusible debe explotar para evitar que la bomba funcione en seco.
  2. Coloque un PMOS entre U2 y ATmega y agregue un divisor de voltaje a la línea LEVEL donde el punto de división está vinculado a la compuerta del PMOS para que cualquier cosa por encima de 5 V en el NIVEL corte la alimentación al relé y rompa el cortocircuito. No estoy seguro de si esto será lo suficientemente rápido para evitar daños a la ATmega. También es al menos tres componentes más. La velocidad se puede resolver con 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 corto, no será un problema ya que el relé apagará la bomba de todos modos.
  3. IC de limitación de voltaje y corriente dedicada. Realmente me gustaría evitar agregar otro IC en este punto.
  4. Similar a 2 pero coloca el PMOS paralelo a C1 y sopla el fusible en su lugar.
  5. Use un divisor de voltaje para crear un potencial adecuado, cercano a 5V desde el riel de 12V que no está conectado al regulador y sujete con un diodo de LEVEL que tenga el mismo efecto que 1. pero creo que no corre el riesgo de hacer explotar el regulador o elevar el Vcc.

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

    
pregunta Emily L.

2 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 interna de extracción de 50k sigue siendo un valor alto. Sugiero agregar una resistencia de 4k7 o 10k de NIVEL a 5V.

Es una mala idea agregar diodos de sujeción a una entrada de un ATmega. Serán paralelas a los diodos internos de ESD. 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 jalar 1mA en los diodos ESD internos de un pin. Eso significa que con 12V y una resistencia de 10k, la corriente en el pin de ATmega es (12-5.5) / 10k = 0.6mA, eso 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 de 4k7 o 10k desde LEVEL a 5V y una resistencia de 4k7 o 10k desde LEVEL al pin de entrada de la ATmega.

    
respondido por el Jot
0

Cuanto más pensaba en el problema, más me daba cuenta de que necesitaba poder distinguir tres estados en la línea LEVEL :

  1. Actuado
  2. Corto
  3. Abrir

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

simular este circuito : esquema creado usando CircuitLab

Simulación: Aquí .

El valor en ADC3 será:

  • 5V si + 12V cortocircuita a NIVEL.
  • 1.3V si el interruptor está abierto.
  • 0.88V si el interruptor está cerrado o el NIVEL está en cortocircuito a tierra.

ADC3 se sondeará continuamente siempre que se active el relé que proporciona los + 12V al depósito. Si el valor es menor / mayor que 1.3V - / + 0.2V, el relé que proporciona + 12V 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 posibles escenarios cortos:

  • 12V a GND o PGND: una corriente alta fluirá y disparará un fusible reajustable y µC se caerá. La próxima vez que el µC se conecte, el relé se apagará y necesito encontrar alguna forma de detectar si se apagó debido a una interrupción corta o normal. Tal vez usaré un poco en EEPROM para activar y desactivar la bomba. y si la bomba estaba encendida cuando se reinició, es probable que fuera un corto.
  • 12V a NIVEL: ADC3 irá a 5V y el riel de 5V está protegido por el diodo.
  • GND o PGND a NIVEL: el mismo efecto que si se accionara el interruptor. ADC3 irá a 0,88 V y la bomba se apagará con el mensaje "Nivel de agua bajo".
respondido por el Emily L.

Lea otras preguntas en las etiquetas