Mon circuit de solénoïde commandé par MOSFET détruit mes entrées Arduino

14

J'ai fait une série de PCB pour alimenter certaines électrovannes qui utilisent une alimentation externe. Je les commute avec des MOSFET BS170 utilisant un Arduino comme signal de porte. Je l'a basé une solution par Jason S .

Voici une illustration de ce à quoi ressemble mon circuit: Circuit de valve actionné par MOSFET

En testant les PCB, j'ai remarqué que la plupart d'entre eux fonctionnent bien, mais certains ne le font pas. Pas de problème, probablement une chose à souder.

Cependant, ces défectueux ont réussi à détruire deux broches numériques Arduino! Sur l'un, j'obtiens une tension constante de 5 V, et l'autre produit 0,2 V lorsque j'envoie un signal HIGH et 0,5 V lorsque j'envoie un signal LOW. Des trucs étranges.

Donc je suppose que les circuits défectueux ont en quelque sorte causé (une partie) du 16 V à traverser l'Arduino, les détruisant.

Comment protéger l'Arduino dans ce scénario contre un courant trop élevé?

Je connais les diodes zener , mais je ne sais pas comment les placer pour protéger les entrées.

Informations techniques:

Dyte
la source
Quel logiciel avez-vous utilisé pour créer ce dessin? Ça a l'air vraiment bien!
mjh2007
3
Fritzing. Gratuit et très pratique pour ce genre de choses, également pour la conception de
circuits imprimés
La diode zener grille-source de 12V par exemple (> Vgate_drive) est en effet une très bonne idée dans tous les circuits à charge inductive. Mont Zener près du MOSFET. Anode à la source et cathode à la grille pour que le zener ne soit généralement pas conducteur. || Les MOSFET bien plus performants à 26c / 10 Digikey sont par exemple IRLML6346 SOT23. Ou NDT3055 48c / 10 TO251 plombé, ou RFD14N05 71c / 10 TO220.
Russell McMahon
...When MOSFETs fail they often go short-circuit drain to gate...Cité d' ici .
abdullah kahraman
L'application de 16V peut tuer vos ports Arduino.
abdullah kahraman

Réponses:

7

Le circuit est très bien en théorie.
Une amélioration de la pratique est nécessaire.

L'ajout d'une diode Zener grille-source, disons 12V (> Vgate_drive) est une très bonne idée en effet dans tous les circuits à charge inductive. Cela empêche la grille d'être entraînée de façon destructrice par un couplage de "capacité Miller" au drain lors de variations inattendues ou extrêmes de la tension de drain.

Montez le zener près du MOSFET.
Connectez l'anode à la source et la cathode à la porte de sorte que le zener ne conduise généralement pas.

La résistance de commande de grille 10k (comme illustré) est grande et provoquera une mise hors et sous tension lente et une dissipation de puissance accrue dans le MOSFET. Ce n'est probablement pas un problème ici.

Le MOSFET choisi est très marginal dans cette application.
Les MOSFET bien plus performants disponibles en stock chez Digikey incluent:

Pour 26c / 10 Digikey IRLML6346 SOT23 pkg, 30V, 3.4A, 0.06 Ohm, Vgsth = 1.1V = seuil de seuil Tension ..

NDT3055 48c / 10 TO251 au plomb 60V, 12A, 0,1 Ohm, Vgsth = 2V

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


AJOUTÉE

MOSFETS APPROPRIÉS POUR L'ENTRAÎNEMENT DE PORTAIL 3V:

Le système vient de jeter ma réponse plus longue :-(. Donc - le MOSFET DOIT avoir une Vth (tension de seuil) de pas plus de 2V pour fonctionner correctement avec les contrôleurs d'alimentation 3V3.
Aucun des FETS suggérés ne répond à cette exigence.
Ils peuvent fonctionner de façon présente la charge mais sont underdriven et trop lossy et la solution ne va pas bien à des charges plus importantes.
Il semble que IRF FETS dans la fourchette de taille concerné qui ont Vth (de Vgsth) <= 2 volts avoir ALL 4 chiffres des codes numériques à partir de 7 sauf IRF3708 .

Les FET OK incluent IRFxxxx où xxxx = 3708 6607 7201 6321 7326 7342 7353 7403 7406 7416 7455 7463 7468 7470

Il y en aura d'autres mais tous ceux suggérés semblent avoir Vth = 4V ou 5V et sont marginaux ou pire dans cette application.

Vgsth ou Vth doit être d'au moins un Volt de moins et idéalement de plusieurs Volts de moins que la tension de commande de grille réelle.

Russell McMahon
la source
Ouais, je vais pour le moyen sûr et j'utiliserai un autre mosfet. Cela et la diode Zener devraient probablement faire l'affaire. Dans le magasin d'électronique près de chez moi, ils n'ont pas les mosfets que vous avez proposés, mais ils en ont: IRF520, IRF530, IRL530, IRF540, IIRF730, IRF740, IRF830, IRF840, IRF9140, IRF9530, IRF9540, IRF9610, IRFBC620, IRFDD110, IRFD9120, IRFP50, IRFP054, IRFP140, IRFP150, IRFP450, IRFP520, IRFP9140, IRFZ44, IRFZ46. Je suppose que je pourrais opter pour un IRF520 par exemple? le courant de drain continu est de 6,5 à 9,2 A. Min Vgs est 2V et max est 4V, est-ce que ça va pour l'arduino?
Dyte
L'IRF520 est parfait pour un Arduino à conduire. Min Vgs et "max Vgs" ne sont pas tout à fait ce que vous pensez, c'est la tension "seuil", où le MOSFET commence à conduire. Le nombre maximal de Vgs est considérablement plus élevé (au-dessus des 5 V, l'Arduino produira). Dépassez cette valeur plus élevée (20 V?) Et vous casserez le FET.
Bryan Boettcher
Il fonctionne en utilisant le MOSFET IRF520 et une diode zener 5.1 V, et continuera probablement à fonctionner cette fois :) Merci beaucoup de votre aide. Toutes les réponses m'ont aidé, mais vous avez élaboré sur les diodes Zener et les types spécifiques de mosfets, donc j'accepte la vôtre comme réponse.
Dyte
@Russell McMahon: La tension de mes sorties Arduino est (un peu moins que) 5V, pas 3V3. Cela ne change-t-il pas la situation?
Dyte
10

Votre valve est évaluée à 500mA à 12V. Si vous fournissez 16 V, il consommera un peu plus de 500 mA. En supposant qu'il s'agit d'une résistance, il consommera 667 mA.

Le courant maximum absolu pour le MOSFET que vous avez utilisé est de 500 mA en continu. Tout ce qui dépasse les valeurs maximales absolues peut détruire l'appareil. C'est probablement pourquoi vous rencontrez des problèmes de fiabilité.

Il n'y a pas de mode de défaillance garanti pour les MOSFET, donc je ne suis pas surpris qu'il échoue de manière à endommager les sorties Arduino.

Comme Jason l'a mentionné dans la réponse liée, BS170 est un mauvais choix de MOSFET. Vous en avez besoin d'un meilleur. Choisissez-en un dans un boîtier TO-220 évalué à plusieurs ampères. Vous devez également vous assurer que le Vgs est évalué pour un variateur de niveau logique 5V.

Quelle diode utilisez-vous?

markrages
la source
Salut Mark, La diode que j'utilise est une 1N4001: fairchildsemi.com/ds/BS/BS170.pdf
Dyte
5

Votre valve est évaluée à ~ 500 mA. Un BS170 est également évalué à 500 mA, mais c'est le chiffre de vente. J'utiliserais ici un FET (beaucoup) plus élevé, 500mA via un TO92 me rend nerveux. Et vous avez une résistance de grille de 1k, ce qui est une bonne idée dans la plupart des cas, mais cela pourrait entraîner un mauvais FET à commuter trop lentement pour survivre au 0,5A.

Quelle diode utilisez-vous? Il doit être évalué pour le 0,5A, donc un 1n4148 ne fera pas l'affaire. Je ne suis pas sûr, mais il pourrait en fait obtenir plus de 0,5 car la partie mobile de la valeur pourrait provoquer un pic encore plus important qu'une bobine simple.

Dans votre image, vous avez la valeur du courant de retour passant par la connexion de terre Arduino. Je ferais ça à une étoile: connectez la terre arduino directement à l'alimentation. Ou bien mieux: utilisez un optocouple pour isoler le circuit à courant élevé de l'Arduino (et utilisez deux alimentations distinctes).

Wouter van Ooijen
la source
La diode que j'utilise est une 1N4001. diodes.com/datasheets/ds28002.pdf Je n'ai pas pensé à un coupleur opto. C'est un bon scénario pour enquêter :)
Dyte
5

Vous devriez avoir une résistance grille-source sur votre MOSFET afin que la grille ne puisse pas flotter si la sortie Arduino est à haute impédance. Étant donné que l'alimentation du solénoïde et celle de l'Arduino sont séparées, ce scénario pourrait se produire (à moins que vous ne garantissiez par la conception que l'Arduino est toujours allumé en premier.)

Le MOSFET est-il réellement si loin du solénoïde? Si c'est le cas, il devrait être rapproché beaucoup plus. Déplacez-le de manière à ce que le drain se branche directement sur la bande de protoboard où le fil rouge va au solénoïde et à la diode. Ensuite, établissez une courte connexion source à la bande GND. Il est préférable d'avoir une boucle de signal de grille plus longue (à faible puissance) par rapport à une longue boucle qui transporte de l'énergie. Vous pouvez également rapprocher l'Arduino du solénoïde, en gardant toutes ces boucles courtes.

Adam Lawrence
la source
Par résistance grille-source, voulez-vous dire une résistance entre la grille et la source du mosfet? Désolé si c'est une question stupide :). Quelle valeur proposez-vous? Concernant les distances, non, tous les composants sont proches les uns des autres, j'ai ce circuit soudé sur un PCB auto gravé. Seuls les fils de l'arduino sont plus longs. Je dois dire cependant que je ne savais pas que cela faisait une différence. Je pensais que la différence de temps que le courant parcourait quelques cm plus loin était négligeable.
Dyte
@Dyte Oui, une résistance entre la grille et la source.
Adam Lawrence
@Dyte, j'imagine qu'une résistance grille-source 10k conviendrait parfaitement. Le but est juste de s'assurer que la porte du MOSFET ne flotte pas. Vous voulez quelque chose d'assez bas qui puisse "gagner" contre les éléments du circuit parasite, mais assez haut pour que la sortie Arduino puisse "gagner" quand elle a besoin d'activer le MOSFET.
ajs410
3

Le circuit tel qu'illustré semble bien, à condition que la seule connexion à la terre entre la carte Arduino et la borne négative de l'alimentation +16 soit le fil bleu court. D'un autre côté, il est possible que des shorts accidentels provoquent de mauvaises choses. Il est difficile de deviner exactement ce qui aurait pu se produire sans voir comment les panneaux problématiques ont été présentés.

Si vous poussez les spécifications de votre MOSFET, il pourrait facilement échouer de manière à envoyer +16 hors de la porte, mais si les résistances sont comme illustré, je m'attendrais à ce que l'Arduino soit assez bien protégé.

supercat
la source
1

Tout d'abord, vous avez besoin de diodes de commutation ultrarapides et non de ces diodes 2n4001-4 bon marché, lorsque vous utilisez des moteurs ou des bobines. Plus la commutation est rapide, plus le BEMF est créé. Utilisez également une diode de commutation 914 vers la porte mosfet de l'arduino, et une résistance de tirage / descente de 10k de la porte à la terre.

Tommey Reed
la source