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.
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.
Ich würde dies in zwei separaten Teilen debuggen, beginnend mit dem Folgenden ...
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)
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
, 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.
Phil g
Huismann
PIC16F84A