STM32F4 BLDC mit Hall Sensoren

OP #3322993
hey,
ich arbeite gerade daran einen 1kW BLDC Motor zum drehen zu bekommen.
Dazu benutze ich: ein STM32F4Discovery, den Motor mit Hall-Sensoren, 
IRFP4310Z als FETs und IR2110 als FET-Treiber mit DCDC-Wandler für die 
High-Side-FETs.
Die Software basiert auf STM32 BLDC Control with HALL Sensor jedoch 
TIM3 für die Hall Sensoren.
Soweit sieht alles auch ganz gut auch, jedoch hänge ich an dem Phänomen, 
dass wenn ich im TIM1 beide Ausgänge (CCx und CCxN) deaktiviere, so 
werden beide Ausgänge auf high gesetzt was zu häftigen Kurzschlüssen 
führt.
1
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
2
TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);

Im reference manual ist es auf Seite 412 beschrieben:
deaktiviere ich einen Ausgang (CCxE = 0 und CCxNE = 1, oder CCxE = 1 und 
CCxNE = 0) so ist dieser auf inaktiv (bei mir Low) und der andere gibt 
PWM aus. Deaktiviere ich beide Ausgänge (CCxE = 0 und CCxNE = 0) so 
werden die Ausgänge vom Timer nicht mehr gesteuert und befinden sich 
beide im High Zustand -> peng.

Hat jemand einen Tipp für mich wie ich beide Ausgänge gleichzeitig auf 
Low setzen kann ohne ein komplettes remap der Pins duchzuführen?

Grüße
Angehängte Dateien:
OP
Bei mir werden die Ausgangstreiber direkt in Hardware mit dem Timer 
verbunden. Daher hab ich mit dem Ausgangsregister kein einfluss mehr auf 
die Ausgänge. Ich müsste also diese Verbindung löschen, den Ausgang von 
hand setzen und später wieder mit dem Timer verknüpfen.
OP
Michael .. schrieb:
> erster Satz auf Seite 413 auch beachtet?

Nein hab ich nicht beachtet. Guter Hinweis, aber:
1
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;      //=0
2
  TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;    //=0
3
  TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;   //=0
4
  TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset; //=0

wird auch nirgendwo geändert
OP
hier mal ein Bild der Ausgänge.
Kanal 1) Low-Side Phase U
Kanal 2) High-Side Phase U
...

Man sieht auch hier: wenn beide Ausgänge einer Phase eingeschaltet sind, 
müssten sie eigentlich aus sein. Sobald ein Ausgang aktiv ist 
funktioniert es wie es soll.
Angehängte Dateien:
Gast
Hoffentlich kann ich meie Gedanken verständlich formulieren ...

Gegeben: Pins (Timer-Ausgänge) vom µC = High-Z -> Fets = Kurzschluß

Frage: wenn die µC-Pins "floaten", was macht Dein Fet-Treiber daraus?
Möglicherweise muß Du durch (geeignete) PullUp/Down-Widerstände
dem Fet-Treiber Logic-Zustände "aufzwingen", da er "floaten"
mißversteht ...

Martin
OP
Vielen dank Martin!
ein wort hätte gereicht: floaten!
ich habe immer dran gedacht, dass der STM die Pins high setzt. Dabei 
haben die Pull-Up Widerstände des Logic analyzers (der für 10€ :)) den 
high pegel erzeugt.

Immer diese banalen dinge...

Grüße

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.