Mosfet-Treiber - High-Side-Ausgangsproblem

Ich habe versucht, einen 3-Phasen-Wechselrichter herzustellen, um einen BLDC-Motor anzutreiben.

Mosfets: IRF3205

Treiber: IR2101

Versorgungsspannung für FETs und Treiber: 12V

BLDC: https://media.digikey.com/pdf/Data%20Sheets/Seeed%20Technology/108990010_Web.pdf

Ich habe einen einfachen Code für Arduino Uno geschrieben. Ich ändere die Zündfolge der MOSFETs manuell, basierend auf der angegebenen Zahl.Geben Sie hier die Bildbeschreibung ein

Arduino liest die Spannung vom Potantiometer und erzeugt einen Frequenzbereich zwischen 15 Hz und 60 Hz in Bezug auf die Umdrehung. Einschaltdauer ist 1/3.

Der Code:

 int AA1=7;
 int AA2=6;
 int BB1=5;
 int BB2=4;
 int CC1=3;
 int CC2=2;
 int IN=A0;


 void setup() {

  pinMode(AA1,OUTPUT);
  pinMode(AA2,OUTPUT);
  pinMode(BB1,OUTPUT);
  pinMode(BB2,OUTPUT);
  pinMode(CC1,OUTPUT);
  pinMode(CC2,OUTPUT);

}

 void loop() {

 int t =analogRead(IN); //From the potentiometer
 Delay=map(t,0,1024,10000,3000); //we obtain the delay speed using the 
potentiometer


  digitalWrite(AA1,LOW);
  digitalWrite(AA2,LOW);
  digitalWrite(BB1,LOW);
  digitalWrite(CC2,LOW);
  digitalWrite(BB2,HIGH);
  digitalWrite(CC1,HIGH);
  delayMicroseconds(Delay);

  digitalWrite(AA2,LOW);
  digitalWrite(BB1,LOW);
  digitalWrite(CC1,LOW);
  digitalWrite(CC2,LOW);
  digitalWrite(AA1,HIGH);
  digitalWrite(BB2,HIGH);
  delayMicroseconds(Delay);

  digitalWrite(AA2,LOW);
  digitalWrite(BB1,LOW);
  digitalWrite(BB2,LOW);
  digitalWrite(CC1,LOW);
  digitalWrite(CC2,HIGH);
  digitalWrite(AA1,HIGH);
  delayMicroseconds(Delay);

  digitalWrite(AA1,LOW);
  digitalWrite(AA2,LOW);
  digitalWrite(BB2,LOW);
  digitalWrite(CC1,LOW);
  digitalWrite(BB1,HIGH);
  digitalWrite(CC2,HIGH);
  delayMicroseconds(Delay);

  digitalWrite(AA1,LOW);
  digitalWrite(BB2,LOW);
  digitalWrite(CC1,LOW);
  digitalWrite(CC2,LOW);
  digitalWrite(AA2,HIGH);
  digitalWrite(BB1,HIGH);
  delayMicroseconds(Delay);


  digitalWrite(AA1,LOW);
  digitalWrite(BB1,LOW);
  digitalWrite(BB2,LOW);
  digitalWrite(CC2,LOW);
  digitalWrite(CC1,HIGH);
  digitalWrite(AA2,HIGH);
  delayMicroseconds(Delay);

}

Das Problem ist, dass auf der High-Seite kein PWM-Signal ausgegeben wird, während die Low-Seite einen PWM-Ausgang hat. Der Motor dreht sich also nicht, er vibriert nur, geht aber nicht einmal einen Schritt.

Ich habe den Wert für den Bootstrap-Kondensator berechnet und festgestellt, dass er etwa 200-300 nF beträgt. Ich denke, das Problem hat mit Bootstrapping zu tun, und ich habe bisher verschiedene Kondensatorwerte ausprobiert: 220 nF, 4,7 uF (einschließlich Elektrolyt), 10 uF (einschließlich Elektrolyt), 2,2 uF (einschließlich Elektrolyt). Allerdings hat keiner von ihnen nicht funktioniert.

An der High-Seite des Treibers liegt nur eine Gleichspannung nahe 10 VDC an. Wenn ich Kondensatoren wechsle, ändert sich die Welligkeit, aber ich kann keinen PWM-Ausgang sehen.

Was könnte das Problem verursachen? Danke.

Hier meine Schaltung:Geben Sie hier die Bildbeschreibung ein

Sie tun nichts, um eine PWM zu erzeugen. Ihr Code generiert die sechs Schritte, und jeder ist für die Dauer vollständig aktiviert. Da Sie keinen Hochlauf auf die Mindestdrehzahl haben, kann es sein, dass der Motor nicht mit dem Schalten der Brücke synchronisiert wird.
An der High-Side des Treibers liegt nur eine Gleichspannung an. Ist es 0Vdc oder 12Vdc oder etwas dazwischen? Bitte teilen Sie Werte, oder besser: Scope-Bilder.
@Huisman, es sind nicht 0 VDC, sondern fast 10 VDC.

Antworten (3)

Ich würde dies in zwei separaten Teilen debuggen, beginnend mit dem Folgenden ...

  1. Während Sie eine sechsstufige Kommutierung durchführen, sollten Sie überprüfen, ob Sie einen Kommutierungszustand auf Ihrem Arduino befehlen können und ob Sie die richtigen Ausgänge an den sechs PWM-Ausgängen sehen. Stellen Sie sicher, dass Sie typische sechsstufige Kommutierungsstrategien überprüfen ... bei denen Sie im Wesentlichen drei Zustände haben: PWM, EIN und AUS (hohe Impedanz)

  2. Treiben Sie einen einzelnen Pre-Treiber und Bootstrap mit einem Funktionsgenerator. Sehen Sie das gleiche Verhalten?

Verwenden Sie 10k-Gate-Pulldown-Widerstände für den Low-Side-MOSFET. Vielleicht schalten Ihre Low-Side-MOSFETs nicht richtig ab.

Ich denke, Sie haben möglicherweise die 1N4148-Dioden durch willkürliche Versuche mit Bootstraps-Kondensatoren beschädigt.
Der Strom durch die Bootstrap-Diode wird durch den ESR der Kappe und begrenzt R D S Ö N , also begrenzt nichts den Strom. Je nach Marke kann der 1N4148 einen Stoßstrom von 1 bis 2 A verarbeiten.
Beginnen Sie mit der Überprüfung dieser Dioden.

Als nächstes berechnen Sie besser, welchen Bootstrap-Kondensator Sie benötigen.
Siehe zum Beispiel: Kapitel 3 Auswahl der Bootstrap-Komponenten
Oder: Kapitel 3. Auswahl der Bootstrap-Komponenten
(ich denke, es sollte in der Größenordnung von 200 - 300 nF liegen, aber ich kenne die Schaltfrequenz nicht).
Fügen Sie einen Bootstrap-Widerstand hinzu, um die Bootstrap-Diode beim Start zu schützen.

Fügen Sie außerdem 10 nF so nah wie möglich an den Stromanschlüssen jedes IR2101 hinzu. Und ersetzen Sie C1, C3 und C5 durch etwa 1uF oder 2,2uF Keramikkondensatoren (etwa das 10-fache des Bootstrap-Kondensatorwerts). Sie sollten dem IR2101 am zweitnächsten sein.

PS. Ich habe den Code nicht überprüft. Da Sie behaupten, dass die niedrige Seite PWM ist, denke ich, dass die Bootstrap-Schaltung zuerst repariert werden sollte.

"Ich denke, es sollte in der Größenordnung von 200 - 300 nF liegen." Ja, ich hatte den Wert berechnet und er liegt zwischen 200nF-300nF. Ich habe die Dioden überprüft und sie funktionieren.
Wenn Sie den Wert kennen, warum teilen Sie ihn nicht? So bleibt es vage.