Mi circuito de solenoide operado por MOSFET destruye mis entradas de Arduino

Hice una serie de PCB para alimentar algunas válvulas de solenoide que usan una fuente de alimentación externa. Los cambio con MOSFET BS170 usando un Arduino como señal de puerta. Lo basé en una solución de Jason S.

Esta es una ilustración de cómo se ve mi circuito:Circuito de válvula operado por MOSFET

Al probar los PCB, noté que la mayoría de ellos funcionan bien, pero algunos no. No hay problema, probablemente una cosa de soldadura.

¡Sin embargo, esos defectuosos lograron destruir dos pines digitales de Arduino! En uno, obtengo un voltaje constante de 5 V, y el otro emite 0,2 V cuando le envío una señal ALTA y 0,5 V cuando le envío una señal BAJA. cosas extrañas

Así que supongo que los circuitos defectuosos de alguna manera causaron que (algunos de) los 16 V fluyeran a través del Arduino, destruyéndolos.

¿Cómo protejo el Arduino en este escenario de una corriente demasiado alta?

Sé sobre los diodos zener , pero no tengo idea de cómo colocarlos para proteger las entradas.

Información técnica:

¿Qué software usaste para crear ese dibujo? ¡Se ve muy bien!
Fritzing. Gratis y muy útil para este tipo de cosas, también para diseño de pcb :)
El diodo zener de fuente de puerta de, digamos, 12 V (> Vgate_drive) es una muy buena idea en todos los circuitos con carga inductiva. Monte zener cerca de MOSFET. Ánodo a fuente y cátodo a puerta, por lo que Zener no suele conducir. || Los MOSFET mucho, mucho mejores a 26c/10 Digikey son, por ejemplo, IRLML6346 SOT23. O NDT3055 48c/10 TO251 con plomo, o RFD14N05 71c/10 TO220.
...When MOSFETs fail they often go short-circuit drain to gate...Citado de aquí .
La aplicación de 16 V puede matar sus puertos Arduino.
¿Estás realmente seguro de que el transistor está conectado correctamente? Por lo general, el cable central también está conectado a la pestaña de alimentación, que es el colector de transistores bipolares y el drenaje de FET. Muestras el cable central conectado al arduino. Vuelva a comprobar esto.
@OlinLathrop está usando un BS170 en un paquete TO-92 que parece estar bien en el diagrama, aparte del tipo de paquete.
@abdullahkahraman: su referencia decía "a menudo se quedan cortos desde draihn hasta la fecha", lo cual es cierto. Pero pueden hacer casi cualquier otra cosa en su lugar o también. Creo que ==k su punto es que puede ver el voltaje de drenaje aplicado a la puerta y debe estar preparado para esto, lo cual es un muy buen punto. He visto fallar muchos MOSFET de potencia :-). Común es DS duro corto con o sin puerta conectada al DS corto. A veces obtienes solo DG. Más raramente obtiene un circuito abierto en todas las terminales. Los Power Zeners (digamos 1 Watt+) tienden a fallar mucho, pero incluso eso no es confiable con algunos O/C.
@RussellMcMahon supercat mencionó algunos métodos de protección en una de sus respuestas . Además, la referencia que di menciona resistencias de compuerta subminiatura que fallan en circuito abierto, actuando como fusibles.

Respuestas (6)

El circuito está bien en teoría.
Se requiere mejorar en la práctica.

Agregar un diodo zener de fuente de puerta de, digamos, 12 V (> Vgate_drive) es una muy buena idea en todos los circuitos con carga inductiva. Esto evita que la compuerta sea impulsada destructivamente alta por el acoplamiento de "capacitancia de Miller" al drenaje durante variaciones inesperadas o extremas en el voltaje del drenaje.

Monte el zener cerca del MOSFET.
Conecte el ánodo a la fuente y el cátodo a la puerta para que el zener generalmente no conduzca.

La resistencia de accionamiento de compuerta de 10k (como se muestra) es grande y provocará un apagado y un encendido lentos y una mayor disipación de energía en el MOSFET. Esto probablemente no sea un problema aquí.

El MOSFET elegido es muy marginal en esta aplicación.
Los MOSFET mucho, mucho mejores disponibles en stock en Digikey incluyen:

Para paquete 26c/10 Digikey IRLML6346 SOT23, 30 V, 3,4 A, 0,06 ohmios, Vgsth = 1,1 V = voltaje de umbral de puerta.

NDT3055 48c/10 TO251 con plomo 60V, 12A, 0.1 Ohm, Vgsth = 2V

RFD14N05 71c/10 TO220 50 V, 14 A, 0,1 ohmios, 2 V Vgsth.


AGREGADO

MOSFETS ADECUADOS PARA UNIDAD DE PUERTA DE 3V:

El sistema acaba de desechar mi respuesta más larga :-(. Entonces, MOSFET DEBE tener Vth (voltaje de umbral) de no más de 2V para funcionar correctamente con controladores de suministro de 3V3.
Ninguno de los FETS sugeridos cumple con este requisito.
Pueden funcionar de alguna manera en el carga actual, pero tienen poca potencia y demasiada pérdida y la solución no se extiende bien a cargas más
grandes.Parece que los FETS IRF en el rango de tamaño en cuestión que tienen Vth (de Vgsth) <= 2 voltios TODOS tienen códigos numéricos de 4 dígitos que comienzan con 7 excepto IRF3708 .

Los FET OK incluyen IRFxxxx donde xxxx = 3708 6607 7201 6321 7326 7342 7353 7403 7406 7416 7455 7463 7468 7470

Habrá otros pero todos los sugeridos parecen tener Vth = 4V o 5V y son marginales o peores en esta aplicación.

Vgsth o Vth debe ser al menos un voltio menos e, idealmente, varios voltios menos que el voltaje real de la compuerta.

Sí, voy por el camino seguro y usaré otro mosfet. Eso y el diodo zener probablemente deberían hacer el truco. En la tienda de electronica cerca de donde vivo no tienen los mosfets que propusiste, pero si tienen: IRF520, IRF530, IRL530, IRF540, IIRF730, IRF740, IRF830, IRF840, IRF9140, IRF9530, IRF9540, IRF9610, IRFBC620, IRFDD110, IRFD9120, IRFP50, IRFP054, IRFP140, IRFP150, IRFP450, IRFP520, IRFP9140, IRFZ44, IRFZ46. Supongo que podría optar por un IRF520, por ejemplo. la corriente de drenaje continua es de 6,5 a 9,2 A. Min Vgs es 2V y max es 4V, ¿está bien para el arduino?
El IRF520 está bien para que lo conduzca un Arduino. Min Vgs y "max Vgs" no son exactamente lo que piensas, ese es el voltaje de "umbral", donde el MOSFET comienza a conducir. El Vgs máximo es sustancialmente más alto (por encima de los 5v que emitirá el Arduino). Supere esa clasificación más alta (¿20 V?) Y romperá el FET.
Funciona con el MOSFET IRF520 y un diodo zener de 5,1 V, y probablemente seguirá funcionando esta vez :) Muchas gracias por ayudarme. Todas las respuestas me ayudaron, pero elaboraste sobre diodos zener y tipos específicos de mosfets, por lo que acepto la tuya como respuesta.
@Russell McMahon: El voltaje que emite mi arduino es (un poco menos de) 5V, no 3V3. ¿No cambia eso la situación?

Su válvula tiene una capacidad nominal de 500 mA a 12 V. Si suministra 16 V, consumirá algo más de 500 mA. Asumiendo que es una resistencia, consumirá 667mA.

La corriente máxima absoluta para el MOSFET que utilizó es de 500 mA continuos. Cualquier cosa por encima de las clasificaciones máximas absolutas puede destruir el dispositivo. Esta es probablemente la razón por la que está viendo problemas de confiabilidad.

No hay un modo de falla garantizado para los MOSFET, por lo que no me sorprende que falle de tal manera que dañe las salidas de Arduino.

Como Jason mencionó en la respuesta vinculada, BS170 es una mala elección de MOSFET. Necesitas uno mejor. Elija uno en un estuche TO-220 que tenga varios amperios. También debe asegurarse de que el Vgs esté clasificado para una unidad de nivel lógico de 5V.

¿Qué diodo estás usando?

Hola Mark, el diodo que uso es un 1N4001: fairchildsemi.com/ds/BS/BS170.pdf

Su válvula está clasificada para ~ 500 mA. Un BS170 también está clasificado para 500 mA, pero esa es la cifra de argumento de venta. Usaría un FET (mucho) más alto aquí, 500mA a través de un TO92 me pone nervioso. Y tiene una resistencia de compuerta de 1k, que es una buena idea en la mayoría de los casos, pero puede causar que el FET deficiente cambie demasiado lentamente para sobrevivir a los 0.5A.

Que diodo estas usando? Debe estar clasificado para 0.5A, por lo que un 1n4148 no funcionará. No estoy seguro, pero en realidad podría obtener más de 0.5 porque la parte móvil del valor podría causar un pico aún mayor que lo que haría una bobina simple.

En su imagen, tiene el valor de la corriente de retorno que fluye más allá de la conexión a tierra de Arduino. Cambiaría eso a una estrella: conecte la tierra de arduino directamente a la fuente de alimentación. O mucho mejor: use un optopar para aislar el circuito de alta corriente del Arduino (y use dos fuentes de alimentación separadas).

El diodo que uso es un 1N4001. diodes.com/datasheets/ds28002.pdf No pensé en un optoacoplador. Ese es un buen escenario para investigar :)

Debe tener una resistencia de fuente de puerta en su MOSFET para que la puerta no pueda flotar si la salida de Arduino es de alta impedancia. Dado que la fuente de alimentación del solenoide y la fuente de alimentación de Arduino están separadas, este escenario podría ocurrir (a menos que garantice por diseño que Arduino siempre está encendido primero).

¿El MOSFET está realmente tan lejos del solenoide? Si es así, debe moverse mucho más cerca. Muévelo para que el drenaje se conecte directamente a la tira de protoboard donde el cable rojo va al solenoide y al diodo. Luego haga una conexión de fuente corta a la tira GND. Es mejor tener un bucle de señal de compuerta más largo (a baja potencia) que un bucle largo que transporta energía. También podría mover el Arduino más cerca del solenoide, manteniendo todos esos bucles cortos.

Por una resistencia de fuente de puerta, ¿te refieres a una resistencia entre la puerta y la fuente del mosfet? Lo siento si esta es una pregunta tonta :). ¿Qué valor sugieres? Sobre las distancias, no, todos los componentes están cerca unos de otros, este circuito lo tengo soldado en una PCB autograbada. Solo los cables al arduino son más largos. Sin embargo, debo decir que no tenía idea de que esto hiciera alguna diferencia. Pensé que la diferencia en el tiempo que la corriente viaja unos centímetros más era insignificante.
@Dyte Sí, una resistencia entre la puerta y la fuente.
@Dyte, me imagino que una resistencia de fuente de puerta de 10k estaría bien. El objetivo es asegurarse de que la puerta del MOSFET no flote. Desea algo lo suficientemente bajo que pueda "ganar" contra los elementos del circuito parásito, pero lo suficientemente alto como para que la salida de Arduino pueda "ganar" cuando necesite encender el MOSFET.

El circuito, como se ilustra, se ve bien, siempre que la única conexión a tierra entre la placa Arduino y el terminal negativo del suministro de +16 sea el cable azul corto. Por otro lado, es posible que los cortocircuitos accidentales puedan causar que sucedan cosas malas. Es difícil adivinar exactamente lo que podría haber sucedido sin ver cómo se dispusieron los tableros problemáticos reales.

Si está presionando las especificaciones de su MOSFET, podría fallar fácilmente de tal manera que enviara +16 por la puerta, pero si las resistencias son como se ilustra, esperaría que Arduino esté bastante bien protegido.

En primer lugar, necesita diodos de conmutación ultrarrápidos, no estos diodos 2n4001-4 baratos, cuando usa motores o bobinas. Cuanto más rápido sea el cambio, mayor será el BEMF creado. También use un diodo de conmutación 914 a la puerta mosfet desde el arduino, y una resistencia pull/down de 10k desde la puerta a tierra.