Mi circuito de solenoide operado por MOSFET destruye mis entradas Arduino


14

Hice una serie de PCB para alimentar algunas válvulas solenoides que usan una fuente de alimentación externa. Los cambio con MOSFET BS170 usando un Arduino como señal de puerta. Me basé una solución por 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 Arduino! En uno, obtengo un voltaje constante de 5 V, y el otro genera 0.2 V cuando le envío una señal ALTA, y 0.5 V cuando 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 fluyan a través del Arduino, destruyéndolos.

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

Sé acerca de 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!
mjh2007

3
Fritzing. Gratis y muy útil para este tipo de cosas, también para diseño de pcb :)
Dyte

El diodo zener de fuente de puerta de, digamos, 12V (> Vgate_drive) es una muy buena idea en todos los circuitos con carga inductiva. Monte zener cerca del MOSFET. Anódico a la fuente y Cátodo a la puerta, por lo que Zener no suele conducir. || MOSFETs mucho, mucho mejores en 26c / 10 Digikey son, por ejemplo, IRLML6346 SOT23. O NDT3055 48c / 10 TO251 con plomo, o RFD14N05 71c / 10 TO220.
Russell McMahon

...When MOSFETs fail they often go short-circuit drain to gate...Citado desde aquí .
abdullah kahraman

Aplicar 16V puede matar sus puertos Arduino.
abdullah kahraman

Respuestas:


7

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

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

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

La resistencia de accionamiento de la puerta de 10k (como se muestra) es grande y provocará un apagado y 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 disponibles mucho mejores de fábrica en Digikey incluyen:

Para 26c / 10 Digikey IRLML6346 SOT23 paquete, 30V, 3.4A, 0.06 Ohm, Vgsth = 1.1V = voltaje de umbral de puerta.

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

RFD14N05 71c / 10 TO220 50V, 14A, 0.1 Ohm, 2V Vgsth.


ADICIONAL

MOSFETS ADECUADOS PARA UNIDAD DE PUERTA DE 3V:

Sistema acaba destrozado mi respuesta ya :-( Por lo tanto -. MOSFET DEBE tener V (tensión de umbral) de no más de 2V para trabajar correctamente con los controladores de 3V3 de suministro.
Ninguno de los FET sugeridas cumple con este requisito.
Ellos pueden trabajar en cierto modo en el carga actual, pero están sobrecargados y con demasiada pérdida, y la solución no se extiende bien a cargas más grandes
Parece que IRF FETS en el rango de tamaño en cuestión tiene Vth (de Vgsth) <= 2 voltios TODOS tienen códigos numéricos de 4 dígitos que comienzan con 7 excepto IRF3708 .

OK FET 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 Volt menos e idealmente varios voltios menos que el voltaje de accionamiento de puerta real.


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 electrónica cerca de donde vivo no tienen los mosfets que propusiste, pero sí 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 elegir un IRF520, por ejemplo. la corriente continua de drenaje es de 6.5 a 9.2 A. Vgs mín. es 2V y máx. es 4V, ¿está bien eso para el arduino?
Dyte

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 mayor (por encima de los 5v, el Arduino emitirá). Supere esa calificación más alta (20V?) Y romperá el FET.
Bryan Boettcher

Funciona usando el IRF520 MOSFET y un diodo zener de 5.1 V, y probablemente seguirá funcionando esta vez :) Muchas gracias por ayudarme. Todas las respuestas me ayudaron, pero usted elaboró ​​sobre diodos zener y tipos específicos de mosfets, así que acepto las suyas como respuesta.
Dyte

@Russell McMahon: El voltaje que produce mi arduino es (un poco menor que) 5V, no 3V3. ¿No cambia eso la situación?
Dyte

10

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

La corriente máxima absoluta para el MOSFET que usó 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 modo de falla garantizado para MOSFET, por lo que no me sorprende que pueda fallar 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 una caja TO-220 que tenga una clasificación de 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
Dyte

5

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

¿Qué diodo estás 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 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 Arduino. Diría eso a una estrella: conecta el suelo arduino directamente a la fuente de alimentación. O mucho mejor: use un optoacoplador 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 :)
Dyte

5

Debe tener una resistencia de fuente de compuerta en su MOSFET para que la compuerta 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 Arduino están separadas, este escenario podría ocurrir (a menos que garantice por diseño que el Arduino siempre está encendido primero)

¿El MOSFET está realmente tan lejos del solenoide? Si es así, debe moverse mucho más cerca. Muévalo de modo 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 puerta más largo (a baja potencia) frente a 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, ¿quiere decir una resistencia entre la puerta y la fuente del mosfet? Lo siento si esta es una pregunta tonta :). ¿Qué valor sugieres? Acerca de las distancias, no, todos los componentes están cerca uno del otro, tengo este circuito 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 de que la corriente viaja unos pocos centímetros más era insignificante.
Dyte

@Dyte Sí, una resistencia entre la puerta y la fuente.
Adam Lawrence

@Dyte, 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 Arduino pueda "ganar" cuando necesite encender el MOSFET.
ajs410

3

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 +16 sea el cable azul corto. Por otro lado, es posible que los cortos accidentales puedan causar cosas malas. Es difícil adivinar exactamente lo que podría haber sucedido sin ver cómo se presentaron los tableros problemáticos reales.

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


1

En primer lugar, necesita diodos de conmutación ultrarrápidos, no estos diodos 2n4001-4 baratos, cuando utiliza motores o bobinas. Cuanto más rápido sea el cambio, mayor BEMF se crea. 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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.