Meine MOSFET-betriebene Magnetschaltung zerstört meine Arduino-Eingänge

Ich habe eine Reihe von Leiterplatten hergestellt, um einige Magnetventile mit Strom zu versorgen, die eine externe Stromversorgung verwenden. Ich schalte sie mit BS170- MOSFETs mit einem Arduino als Gate-Signal. Ich habe eine Lösung von Jason S zugrunde gelegt .

Dies ist eine Illustration, wie meine Schaltung aussieht:MOSFET-betriebene Ventilschaltung

Beim Testen der PCBs bemerkte ich, dass die meisten von ihnen gut funktionieren, aber einige von ihnen nicht. Kein Problem, wahrscheinlich eine Lötsache.

Diese fehlerhaften haben es jedoch geschafft, zwei digitale Arduino-Pins zu zerstören! An einem bekomme ich eine konstante Spannung von 5 V, und der andere gibt 0,2 V aus, wenn ich ein HIGH-Signal an ihn sende, und 0,5 V, wenn ich ein LOW-Signal sende. Seltsames Zeug.

Ich denke also, dass die fehlerhaften Schaltkreise irgendwie dazu geführt haben, dass (einige) der 16 V durch den Arduino flossen und sie zerstörten.

Wie schütze ich den Arduino in diesem Szenario vor zu hohem Strom?

Ich kenne mich mit Zenerdioden aus, aber ich habe keine Ahnung, wie ich sie platzieren soll, um die Eingänge zu schützen.

Technische Information:

Mit welcher Software hast du diese Zeichnung erstellt? Es sieht wirklich gut aus!
Fritzing. Kostenlos und sehr praktisch für solche Sachen, auch für das PCB-Design :)
Eine Gate-Source-Zenerdiode von beispielsweise 12 V (> Vgate_drive) ist in der Tat in allen Schaltkreisen mit induktiver Last eine sehr gute Idee. Montieren Sie den Zener in der Nähe des MOSFET. Anode zu Source und Kathode zu Gate, sodass Zener normalerweise nicht leitet. || Weit weit weit bessere MOSFETs bei 26c/10 Digikey sind zB IRLML6346 SOT23. Oder NDT3055 48c/10 TO251 bedrahtet oder RFD14N05 71c/10 TO220.
...When MOSFETs fail they often go short-circuit drain to gate...Ab hier zitiert .
Das Anlegen von 16 V kann Ihre Arduino-Ports töten.
Sind Sie wirklich sicher, dass der Transistor richtig angeschlossen ist? Normalerweise ist die Mittelleitung auch mit dem Leistungsanschluss verbunden, der der Kollektor von Bipolartransistoren und der Drain von FETs ist. Sie zeigen die mit dem Arduino verbundene Mittelleitung. Überprüfen Sie dies noch einmal.
@OlinLathrop er verwendet einen BS170 in einem TO-92-Paket, das im Diagramm abgesehen vom Pakettyp in Ordnung zu sein scheint.
@abdullahkahraman - Ihre Referenz sagte "oft zu kurz von draihn bis heute" - was wahr ist. Aber sie können stattdessen oder zusätzlich so ziemlich alles andere tun. Ich glaube, sein Punkt ist, dass Sie die an das Gate angelegte Drain-Spannung sehen können und darauf vorbereitet sein müssen - was ein sehr guter Punkt ist. Ich habe viele, viele, viele Leistungs-MOSFETs versagen sehen :-). Üblich ist ein harter DS-Kurzschluss mit oder ohne Gate, das mit dem DS-Kurzschluss verbunden ist. Manchmal bekommt man nur DG. Seltener kommt es zu Unterbrechungen an allen Klemmen. Leistungs-Zener (z. B. 1 Watt +) neigen dazu, kurzzeitig auszufallen, aber selbst das ist bei einigen O / C nicht zuverlässig.
@RussellMcMahon Supercat erwähnte in einer seiner Antworten einige Schutzmethoden . Auch die Referenz, die ich gegeben habe, erwähnt Subminiatur-Gate-Widerstände, die im Leerlauf ausfallen und als Sicherungen fungieren.

Antworten (6)

Die Schaltung ist theoretisch in Ordnung.
Verbesserungsbedarf in der Praxis.

Das Hinzufügen einer Gate-Source-Zenerdiode von beispielsweise 12 V (> Vgate_drive) ist in der Tat in allen Schaltkreisen mit induktiver Last eine sehr gute Idee. Dies verhindert, dass das Gate durch die Kopplung der "Miller-Kapazität" mit dem Drain während unerwarteter oder extremer Schwankungen der Drain-Spannung destruktiv hoch getrieben wird.

Montieren Sie den Zener in der Nähe des MOSFET.
Verbinden Sie die Anode mit der Source und die Kathode mit dem Gate, so dass der Zener normalerweise nicht leitet.

Der 10k-Gate-Treiberwiderstand (wie gezeigt) ist groß und verursacht ein langsames Aus- und Einschalten und mehr Verlustleistung im MOSFET. Das ist hier wohl kein Problem.

Der gewählte MOSFET ist in dieser Anwendung sehr marginal.
Zu den weitaus weitaus besseren MOSFETs, die ab Lager bei Digikey erhältlich sind, gehören:

Für 26c/10 Digikey IRLML6346 SOT23 pkg, 30 V, 3,4 A, 0,06 Ohm, Vgsth = 1,1 V = Gate-Schwellenspannung.

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

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


HINZUGEFÜGT

GEEIGNETE MOSFETS FÜR 3V GATE DRIVE:

Das System hat gerade meine längere Antwort verworfen :-(. Also - MOSFET MUSS Vth (Schwellenspannung) von nicht mehr als 2 V haben, um mit 3V3-Versorgungsreglern ordnungsgemäß zu funktionieren.
Keiner der vorgeschlagenen FETS erfüllt diese Anforderung.
Sie können nach einiger Zeit funktionieren auf der aktuelle Last, sind aber untersteuert und übermäßig verlustbehaftet, und die Lösung erstreckt sich nicht gut auf größere
Lasten.Es scheint, dass IRF-FETs im betroffenen Größenbereich, die Vth (von Vgsth) <= 2 Volt haben, ALLE 4-stellige numerische Codes haben, die mit 7 beginnen, außer IRF3708 .

OK-FETs umfassen IRFxxxx, wobei xxxx = 3708 6607 7201 6321 7326 7342 7353 7403 7406 7416 7455 7463 7468 7470

Es wird andere geben, aber alle vorgeschlagenen scheinen Vth = 4 V oder 5 V zu haben und sind in dieser Anwendung marginal oder schlechter.

Vgsth oder Vth muss mindestens ein Volt weniger und idealerweise mehrere Volt weniger als die tatsächliche Gate-Ansteuerspannung sein.

Ja, ich gehe auf Nummer sicher und verwende einen anderen Mosfet. Das und die Zenerdiode sollten wahrscheinlich den Zweck erfüllen. In dem Elektronikgeschäft in der Nähe meines Wohnortes haben sie nicht die von Ihnen vorgeschlagenen Mosfets, aber sie haben: IRF520, IRF530, IRL530, IRF540, IIRF730, IRF740, IRF830, IRF840, IRF9140, IRF9530, IRF9540, IRF9610, IRFBC620, IRFDD110, IRFD9120, IRFP50, IRFP054, IRFP140, IRFP150, IRFP450, IRFP520, IRFP9140, IRFZ44, IRFZ46. Ich nehme an, ich könnte mich zum Beispiel für einen IRF520 entscheiden? Der kontinuierliche Drainstrom beträgt 6,5 bis 9,2 A. Min. Vgs beträgt 2 V und max. 4 V. Ist das für das Arduino in Ordnung?
Der IRF520 ist gut für einen Arduino zu fahren. Min Vgs und "max Vgs" sind nicht ganz das, was Sie denken, das ist die "Schwellenspannung", bei der der MOSFET zu leiten beginnt. Die maximale Vgs ist wesentlich höher (über den 5 V, die der Arduino ausgibt). Überschreiten Sie diese höhere Nennleistung (20 V?) Und Sie werden den FET sprengen.
Es funktioniert mit dem IRF520-MOSFET und einer 5,1-V-Zenerdiode und wird dieses Mal wahrscheinlich weiterarbeiten :) Vielen Dank, dass Sie mir geholfen haben. Alle Antworten haben mir geholfen, aber Sie haben sich mit Zenerdioden und bestimmten Arten von Mosfets befasst, daher akzeptiere ich Ihre als Antwort.
@Russell McMahon: Die Spannung, die mein Arduino ausgibt, beträgt (etwas weniger als) 5 V, nicht 3 V3. Ändert das nicht die Situation?

Ihr Ventil hat eine Nennspannung von 500 mA bei 12 V. Wenn Sie 16 V liefern, zieht es etwas mehr als 500 mA. Unter der Annahme, dass es sich um einen Widerstand handelt, werden 667 mA gezogen.

Der absolute Maximalstrom für den von Ihnen verwendeten MOSFET beträgt 500 mA kontinuierlich. Alles, was über den absoluten Höchstwerten liegt, kann das Gerät zerstören. Dies ist wahrscheinlich der Grund, warum Sie Zuverlässigkeitsprobleme sehen.

Es gibt keinen garantierten Fehlermodus für MOSFETs, daher bin ich nicht überrascht, dass es so fehlschlagen würde, dass die Arduino-Ausgänge beschädigt werden.

Wie Jason in der verlinkten Antwort erwähnte, ist BS170 eine schlechte Wahl für MOSFET. Du brauchst einen besseren. Wählen Sie einen in einem TO-220-Gehäuse, das für mehrere Ampere ausgelegt ist. Sie müssen auch sicherstellen, dass die Vgs für einen 5-V-Logikpegelantrieb ausgelegt sind.

Welche Diode verwendest du?

Hallo Mark, die Diode, die ich verwende, ist eine 1N4001: fairchildsemi.com/ds/BS/BS170.pdf

Ihr Ventil ist für ~ 500 mA ausgelegt. Ein BS170 ist auch für 500 mA ausgelegt, aber das ist die Verkaufsargumentation. Ich würde hier einen (viel) höher bewerteten FET verwenden, 500 mA durch einen TO92 machen mich nervös. Und Sie haben einen 1k-Gate-Widerstand, was in den meisten Fällen eine gute Idee ist, aber es könnte dazu führen, dass der schlechte FET zu langsam schaltet, um die 0,5A zu überleben.

Welche Diode verwendest du? Es muss für 0,5 A ausgelegt sein, daher reicht ein 1n4148 nicht aus. Ich bin mir nicht sicher, aber es könnte tatsächlich mehr als 0,5 werden, weil der bewegliche Teil des Werts eine noch größere Spitze verursachen könnte als eine einfache Spule.

In Ihrem Bild fließt der Wertrückstrom an der Arduino-Masseverbindung vorbei. Ich würde das zu einem Stern machen: Schließen Sie die Arduino-Masse direkt an die Stromversorgung an. Oder viel besser: Verwenden Sie ein Optokoppler, um den Hochstromkreis vom Arduino zu isolieren (und verwenden Sie zwei separate Netzteile).

Die Diode, die ich verwende, ist eine 1N4001. diodes.com/datasheets/ds28002.pdf Ich habe nicht an einen Optokoppler gedacht. Das ist ein gutes Szenario, um es zu untersuchen :)

Sie sollten einen Gate-Source-Widerstand an Ihrem MOSFET haben, damit das Gate nicht aufschwimmen kann, wenn der Arduino-Ausgang hochohmig ist. Da die Solenoid-Stromversorgung und die Arduino-Stromversorgung getrennt sind, könnte dieses Szenario eintreten (es sei denn, Sie garantieren per Design, dass der Arduino immer zuerst eingeschaltet ist).

Ist der MOSFET tatsächlich so weit vom Solenoid entfernt? Wenn ja, sollte es viel näher gerückt werden. Bewegen Sie es so, dass der Abfluss direkt in den Protoboard-Streifen gesteckt wird, wo das rote Kabel zum Solenoid und zur Diode führt. Stellen Sie dann eine kurze Source-Verbindung zur GND-Leiste her. Es ist besser, eine längere Gate-Signalschleife (bei geringer Leistung) zu haben als eine lange Schleife, die Strom führt. Sie könnten den Arduino auch näher an das Solenoid heranbringen und all diese Schleifen kurz halten.

Meinen Sie mit einem Gate-Source-Widerstand einen Widerstand zwischen Gate und Source des Mosfets? Entschuldigung, wenn das eine dumme Frage ist :). Welchen Wert schlagen Sie vor? Über die Abstände, nein, alle Bauteile sind nah beieinander, ich habe diese Schaltung auf eine selbstgeätzte Platine gelötet. Nur die Drähte zum Arduino sind länger. Ich muss allerdings sagen, ich hatte keine Ahnung, dass dies einen Unterschied macht. Ich dachte, der Zeitunterschied, den der Strom ein paar cm weiter zurücklegt, sei vernachlässigbar.
@Dyte Ja, ein Widerstand zwischen Gate und Source.
@Dyte, ich stelle mir vor, ein 10k-Gate-Source-Widerstand wäre in Ordnung. Das Ziel ist nur sicherzustellen, dass das Gate des MOSFET nicht schwimmt. Sie wollen etwas, das niedrig genug ist, um gegen parasitäre Schaltungselemente "gewinnen" zu können, aber hoch genug, dass der Arduino-Ausgang "gewinnen" kann, wenn er den MOSFET einschalten muss.

Die abgebildete Schaltung sieht gut aus, vorausgesetzt, die einzige Masseverbindung zwischen der Arduino-Platine und dem Minuspol der +16-Versorgung ist das kurze blaue Kabel. Andererseits ist es möglich, dass versehentliche Kurzschlüsse zu schlimmen Ereignissen führen können. Es ist schwer zu erraten, was genau passiert sein könnte, ohne zu sehen, wie die eigentlichen problematischen Bretter ausgelegt waren.

Wenn Sie die Spezifikationen Ihres MOSFET vorantreiben, könnte dies leicht so ausfallen, dass +16 aus dem Gate gesendet werden, aber wenn die Widerstände wie abgebildet sind, würde ich erwarten, dass der Arduino ziemlich gut geschützt sein sollte.

Zunächst einmal benötigen Sie ultraschnelle Schaltdioden und nicht diese billigen 2n4001-4-Dioden, wenn Sie Motoren oder Spulen verwenden. Je schneller das Schalten, desto größer die BEMF. Verwenden Sie auch eine 914-Schaltdiode zum Mosfet-Gate vom Arduino und einen 10k-Pull / Down-Widerstand vom Gate zur Masse.