IRLIZ 44N Abgeraucht?? Wie könnte das passieren?

Hallo liebe Foren-Kollegen!

Ich habe leider ein kleines Problem:

Während eines Tests ist mir ein IRLIZ 44N (ausgelegt auf 55V, 30A, RDS-on bei 0,022Ohm, Logic Level-Mosfet) beim Betreiben eines 12v-LED Streifens einfach so abgeraucht/geplatzt.

Meine Schaltung war wie in der angehängten Graphik.

Ich spekuliere derzeit über Fehler in der Schaltung (eine Art Freilaufdiode ist im Mosfet ja bereits integriert?) oder darüber ob ich beim Löten vll. aus versehen eine Lötbrücke eingebaut habe.

Allerdings bin ich mir nicht sicher ob ein nachmessen sinnvoll ist, solange ich die Bauteile alle drauf habe?

Die Widerstände zwischen Arduino und dem Mosfet sind als Schutz für den Arduino gedacht und auf 220 Ohm derzeit dimensioniert. Könnte das zu viel sein und der Mosfet dadurch zu langsam auf vollen Durchgang schalten? Soll bzw. darf ich diesen Widerstand komplett weglassen (da Logic-Level-Mosfet?)

Der andere Widerstand dient lediglich als Pulldown und ist auf 10k dimensioniert.

Vielen Dank für eure Hilfe!

Lg Thomas

ist nur einer abgeraucht, oder alle drei?
Was dient als Spannungsquelle?

Ich kann die Zeichnung aktuell nicht öffnen, daher kann ich nur raten. Liegt am Tablet. ;)

Mosfet falsch eingesetzt und die Schutzdiode ist durchgebrannt. Das ist übrigens keine Freilaufdiode.

Hm, das Einzige was mir als Fehlerursache einfällt, wäre ein Kurzschluss des LED-Streifens ohne Sicherung und mit einem starken Netzteil. Oder meterlange Gatezuleitungen oder halt Überspannung durch ein Gewitter. Ansonsten, wie zuverlässig ist die Herkunft der Bauelemente? Direkt aus China kann man sich durchaus auch gefälschte Bauelemente einhandeln. Da wird dann aus irgendeinem älterem billigen Teil, wie aus einem FET mit 10A Maximalstrom und Ugs 12V dann auf wundersame Weise ein Logiclevel FET. Ansonsten sind die Dinger eigentlich sehr robust. Ich habe z.B. mit einem IRFP064N etwas experimentiert, der im TO-247 kommt und 110A Strom aushält. Mit dem habe ich über eine 25A Sicherung abgesichert eine Dieselglühkerze an einer Autobattierie geschaltet. Ich habe verschiedene Fehlerszenarien bewußt ausgetestet: Kurzschluss der Glühkerze, das die Sicherung abrauchte. Die Sicherung schützte den FET und nicht wie Murphy prophezeit, der Transistor die Sicherung :grin: Auch Verpolung habe ich getestet. Die Glühkerze wurde dann invers über die Substratdiode des Transistors betrieben. Dabei wurde er zwar handwarm, aber auch das hat er weggesteckt. Um ein Gehäuse platzen zu lassen, gehört schon ein wenig Leistung dazu.

Die Body-Diode ist FETs ist rein parasitär und hat nicht die gleichen Eigenschaften wie eine normale Diode.

Freilaufdioden braucht man aber nur bei induktiven Lasten.

Naja, die Mosfets hatte ich teilweise von Reichelt und teilweise von Conrad.

die LED-Streifen hab ich von nem 12V Gleichstrom-Netzteil befeuert und der LED-Streifen funktioniert auch ohne Probleme soweit.

von 3 getesteten Mosfets die auf meine Platine gelötet waren haben sich 2 verabschiedet. (beide nebeneinander).

Könnte es sein das der Widerstand zwischen Arduino und Mosfet zu hoch ist? Kann ich diesen auch ganz weglassen ohne das dem Arduino was passiert? (Hohe Schaltfrequenzen sind nicht zu erwarten, max. 10 od. 15 Schaltungen pro 0,25 Sek => max 60 Hz).

Und das alles lediglich mit High und Low-Schaltungen des Arduino ohne direkter Verwendung von der analogWrite-Funktion.

Lg Thomas

Die Widerstände im Gate sind ok so, weglassen würde ich diese (Angstwiderstände) nicht. Die schützen ein wenig den Arduino, falls der Mosfet durchschlägt.

Kannst du denn sicher sein, das die Mosfets richtig angeschlossen sind und die 12 Volt nicht falsch gepolt waren?

Ja, hab ich mit dem Messgerät vorher geprüft und es war alles richtig gepolt. Die idee mit der Freilaufdiode wäre eher noch die, dass vll. die Kondensatoren im LED-Streifen (bin mir jetzt nicht sicher ob dort welche mit verbaut sind oder nur Widerstände).

Edit:

Hab irgendwie den verdacht das der Vorwiderstand vorm Mosfet vll. am komplett durchschalten gehindert hat und dieser deswegen zu viel Strom gefressen hat?

Sowas ähnliches hab ich schonmal zu genau diesem Mosfet wo gelesen...

Lg Thomas

MrNiceGuy:
Ja, hab ich mit dem Messgerät vorher geprüft und es war alles richtig gepolt. Die idee mit der Freilaufdiode wäre eher noch die, dass vll. die Kondensatoren im LED-Streifen (bin mir jetzt nicht sicher ob dort welche mit verbaut sind oder nur Widerstände).

Wenn Kondensatoren vorhanden sind, sind diese recht klein.
Eine Freilaufdiode ist nicht notwendig da keine Induktivität vorhanden ist.

Ich möchte mit dieser Schaltung später stärkere Lasten (bis 10A) Schalten können. Diese könnten auch Induktive Lasten werden. Welche Diode würde sich hierfür als Freilaufdiode eignen? (aber das ist nicht unbedingt mein Basisproblem hier :wink: ).

Lg Thomas

Die Freilaufdiode muß für den selben Strom, wie durch den Verbraucher fließt, ausgelegt sein. Willst du 10A schalten, dann sollte die Diode ebenfalls eine 10A Diode sein. Die Sperrspannung der Diode muß größer als die Betriebsspannung sein. Wegen der angepeilten 10A bietet sich eine Shottkydiode an. Deren gegenüber normalen Dioden geringere Sperrspannung (ab 20-30V) sollte in diesem Fall nicht das Problem sein.
Ich würde die Gatewiderstände nicht ganz weglassen, solange nicht klar ist, woran der FET gestorben ist. ansonsten reißt ein Ableben des FET dir den µC ebenfalls mit ins Jenseits.
Da MOSFETs leistungslos schalten, ist die Größe des Vorwiderstandes weitestgehend egal, da statisch kein Strom fließt. Nur bei Pegeländerung muß die Gatekapazität umgeladen werden. Bei schneller PWM im KHz Bereich und Lastströmen im 2 stelligen Amperebereich wird dieses Problem dann erst “interessant” :wink:

Das mit der Gatekapazität ist mir bekannt. Allerdings weiß ich nicht wie ich die Umladezeit berechnen kann?

Bez. Shottkydiode: Kannst du mir da ein konkretes Modell nennen? Ich kenn mich bei Dioden überhaupt nicht aus. Steuerspannung wird max. 15V sein (KFZ-Bereich).

Lg Thomas

Hab den Tread gefunden bei dem jemand mit einem Gate-Widerstand von 120 Ohm schon Probleme mim IRLIZ 44n hatte gefunden: http://forum.arduino.cc/index.php?topic=52342.0;nowap (12. Posting)

Also wenn dem wirklich so ist das der IRLIZ 44n so empfindlich damit ist, dann wird der 220 Ohm widerstand den IRLIZ sich nicht schnell aufladen lassen und ist vll. deswegen abgeraucht?

Lg Thomas

Du rätst…
Schau dir die Kurvenform, und die Ströme, auf einem Oszi an.

Tipp:
Manchmal ist die Realität so extrem anders, als man sich das vorher gedacht hat, dass man quasi zum Umdenken gezwungen wird.

Klarer:
Miss nach, was passiert, dann, und auch nur dann, hast du Fakten!

Ich weiß, Gefühlsentscheidungen haben auch ihren Sinn.
Aber die Trefferquote ist abhängig davon, in wie weit Gefühl und Realität übereinstimmen.
Und da kann es erstaunliche Diskrepanzen geben.

Die Schaltgeschwindigkeit des FET zu begrenzen, ist sehr sinnvoll!
Es sorgt dafür, das der Nachbar noch Radio hören kann.
Auch Wlan usw. profitieren.

Die Schaltgeschwindigkeit des FET hoch zu halten, ist sehr sinnvoll!
Weniger Verlustleistung.
Kühlfläche kann eingespart werden.

Meine Glaskugel sagt:
Du hast den Pin nicht mit Pinmode auf OUTPUT geschaltet.
Darum schaltet digitalWrite() nur den Pullup ein.
Der Gatewiderstand ist damit weit über 5K groß.
Und wohl größer, als dein Pulldown.
Und dann, darf dein FET auch ausglühen!
Mit Fug und Recht.

Meine Glaskugel sagt: Du hast den Pin nicht mit Pinmode auf OUTPUT geschaltet. Darum schaltet digitalWrite() nur den Pullup ein. Der Gatewiderstand ist damit weit über 5K groß. Und dann, darf dein FET auch ausglühen!

Ok, das ist mir neu?

Wie muss das im Code aussehen wenn ich es nicht mit "digitalWrite(Pin, HIGH);" machen soll?

Das hatte ich noch nie wo gelesen?!?

Lg Thomas

Z.b. Im setup() damit

pinMode(ledPin, OUTPUT);

Gib uns mal ein Foto von Deiner Platine udn schreib und wieviel Strom die LED-Streifen verbrauchen.
Gib uns den sketch.

Grüße Uwe

MrNiceGuy: Wie muss das im Code aussehen wenn ich es nicht mit "digitalWrite(Pin, HIGH);" machen soll?

Doch doch digitalWrite() ist schon das Mittel der Wahl!

Nur muss man VORHER den Pin mit pinMode() zum OUTPUT machen.

Mein Code ist bislang folgender:

#include <LowPower.h> //   Schlaflib Neu
// -------------------------- Pinbelegungen  -------------------------- 
int gps = 12; //           Pin für GPS
int heat = 11; //          Pin für Geatgrips
int nlicht = 10; //        Pin für Nebelscheinwerfer rechts
int nlichtl = 9; //        Pin für Nebelscheinwerfer links
int szub = 8; //           Pin für Sonstiges Zubehör AN bei Zündung an
int bsteck = 7; //         Pin für Boardsteckdosen AN bei Zündung an
int tastbel = 6; //        Pin Testenbeleuchtung
int goeff = 5; //          Pin für Gepäcköffner AN bei zündung an + Nachlauf!
int rlicht = 13; //        Pin für Rücklicht (Input)
int hsensor = A0; //       Pin des Helligkeitssensors
int hsensormin = 700; //   Auschaltschwelle für die Nebenscheinwerfer (von 0 bis 1023)
int hsensormax = 400; //   Einschaltschwelle
int hsensoraus = 30; //    Wie oft muss der Helligkeitssensor ausschalten wollen bis die Nebelscheinwerfer ausschalten? (in Sekunden)
int debug = 1; //          Serial Ausgabe an (= 1) bzw. aus (= 0)



// -------------------------- Timereinstellungen -------------------------- 
unsigned long counter1 = 3; //       Sekunden bis zum 1. GPS signal
unsigned long GPSoff = 5;  //        21000 =5h 50 Min Umläufe während GPS off (Aus-Dauer in 1 sek)
unsigned long GPSon = 5;  //       600 = 10 Min Umläufe während GPS on (Ein-Dauer in Sekunden)
unsigned long NachlaufzeitTimer = 10; // Timer für Nachlaufzeit (in sek). für Gepäckfach und Tanköffner



// -------------------------- Variablen  -------------------------- 
int rlichtval = 0;
unsigned long time;
unsigned long Interval1 = GPSoff+GPSoff+GPSoff+GPSoff;
unsigned long Interval2 = GPSon+GPSon+GPSon+GPSon;
unsigned long Interval3 = Interval1 + Interval2;
unsigned long Nachlaufzeit = NachlaufzeitTimer+NachlaufzeitTimer+NachlaufzeitTimer+NachlaufzeitTimer;
unsigned long x = Nachlaufzeit+1;
unsigned long Nachlaufzeit2 = Nachlaufzeit+1;
unsigned long vNachlaufzeit; // Verbleibende Nachlaufzeit in Sekunden
int hsensorval = 0;
int hsensorstate;
int hsensorCounter = 0;
int hsensorvar = 0;
int hsensoroff = hsensoraus * 4;
int hsens;
unsigned long altmillis;
unsigned long deltatime;
int millisausgleich;
int milliscounter;
int gpsstate = 0;
unsigned long schlafcounter = Interval1-counter1-counter1-counter1-counter1; //(wird je 250ms um 1 erhöht); 
// Counter 1 = Zählstand bei Beginn, damit schneller der erste GPS-ON durchlauf ist
int deltaschlafcounter;
int schlafcounteralt;


void setup() {

  pinMode(gps, OUTPUT);
  pinMode(heat, OUTPUT);
  pinMode(nlicht, OUTPUT);
  pinMode(nlichtl, OUTPUT);
  pinMode(szub, OUTPUT);
  pinMode(rlicht, INPUT);
  pinMode(bsteck, OUTPUT);
  pinMode(goeff, OUTPUT);
  pinMode(tastbel, OUTPUT);
  Serial.begin(4800);
}

void loop() {


  // ---------------------- Debugtext 1 Beginn ----------------------  
  if(debug == 1)
  { 
    Serial.println(" ");
    Serial.println(" ");
    Serial.println(" ");
    Serial.println(" ");
    rlichtval = digitalRead(rlicht);
    Serial.print("Ruecklicht-Status: ");
    Serial.println(rlichtval);
  }   

  time = millis();

  if(debug == 1)
  { 
    Serial.print("Millis: ");
    Serial.println(time, DEC);
  } 


  deltatime=millis()-altmillis;

  if (millis() < altmillis)
  { 
    altmillis = millis();
    deltatime=millis()-altmillis;
  } 

  if(debug == 1)
  { 
    Serial.print("Differenz in Millisekunden: ");
    Serial.println(deltatime);
  } 

  altmillis = time;

  millisausgleich =  millisausgleich + deltatime;

  if(debug == 1)
  { 
    Serial.print("Millisausgleich: ");
    Serial.println(millisausgleich);
  }

  // ---------------------- Debugtext 1 Ende ----------------------  



  // ---------------------- GPS AUS Abfrage Beginn ----------------------  
  if(debug == 1)
  {
    Serial.print("Schlafcounter: ");
    Serial.println(schlafcounter); 
    Serial.print("Interval 1: ");
    Serial.println(Interval1); 
    Serial.print("Interval 2: "); 
    Serial.println(Interval2); 
    Serial.print("Interval 1+2: ");  
    Serial.println(Interval3);     
  } 

  if (schlafcounter <= Interval1)
  {
    digitalWrite(gps, LOW);
    if(debug == 1)
    {
      Serial.println("GPS deaktiviert!");       
    } 
  }
  // ---------------------- GPS AUS Abfrage Ende ----------------------   



  // ---------------------- GPS EIN Abfrage Beginn ----------------------  
  if (schlafcounter >= Interval1)
  {  
    digitalWrite(gps, HIGH);  

    if (schlafcounter >= Interval1 + Interval2) 
    {


      schlafcounter = 0; 
      if(debug == 1)
      {
        Serial.println("GPS aktiviert!");
      }
    }
  }
 


}

Es ist bislang alles als In- bzw. Output deklariert. Also denke ich nicht das es am code liegen kann?

Das Bild habe ich gerade leider nicht in besserer Auflösung. Ich kann morgen abend vll. bessere machen. Aber offensichtliche Lötbrücken hab ich keine gefunden.

Da ich leider eine Begrenzung der Zeichen hatte, musste ich einen Teil meines Codes rauslöschen. Denke aber es sollte keine Rolle spielen. Output sollte ja richtig deklariert sein und pwm als solches kommt nicht zum Einsatz da ich eig. nur normal ein- und ausschalten will ohne hohe Frequenzen.

Lg Thomas

Hallo,

so wie die Platine aussieht, tippe ich auf eine Lötbrücke, die einen Kurzschluss verursacht. Vor Inbetriebnahme solltest du die Platine auf Lötbrücken durchmessen. Die Angst-Widerstände würde ich nicht weglassen, da sie den Arduino auch vor Zerstörung durch Platinenkurzschlüsse etwas schätzen.