Forum: Mikrocontroller und Digitale Elektronik BLDC regler - konzept so richtig?


von rotary (Gast)


Angehängte Dateien:

Lesenswert?

Hi!

Ich hab vor einiger zeit schonmal fragen bezgl eines BLDC reglers 
gestellt, und hilfreiche antworten bekommen. jetz ist es mal weider so 
weit - ich habe eine neu schaltung entworfen (bzw. teile davon kopiert 
:))
siehe anhang

die prinzipielle frage zur kommutierung:

der schaltungsteil mit spannungsteiler und rc filter - der hats ja in 
sich.
bitte sagt mir mal , ob mein ansatz hier der richtige ist:
zum starten des motors gibts mal zwangskommutierung - das funktioniert 
schon so einigermaßen. dann erfolgt das ständige messen der 
gegeninduktionsspannung an der nicht bestromten spule des motors.

dazu verglieche ich während des "high" pulses des pwm signals die 
spannungen von "MITTEL" und der nicht bestromten spule "NULLX" x = a,b,c
wenn sich jetz die polarität der spannung an der spule gegenüber MITTEL 
ändert, starte ich den kommutierungsvorgang (der perfekte zeitpunkt ist 
30° später, aber jetz mal egal)
ist das soweit richtig?
achja - der pullup - bzw. pulldown an MITTEL werden nur bei bedarf 
bestückt - ich hab in einem appnote gelesen, dass man das mittel auf die 
vcc referenzieren muss, wenn man in der high phase des pwm signals 
messen will.

Danke im Voraus!

von Gast (Gast)


Lesenswert?

zu BLMC-Regler findest du hier schon mal den Informativen einstieg.
-  http://home.versanet.de/~b-konze

inclusive software

von rotary (Gast)


Lesenswert?

danke für den tip - die seite kenn ich aber schon.
ich hoffe , den einstieg bereits hinter mir zu haben, wie gesagt es geht 
hauptsächlich um den bemf schaltungsteil, und dessen auswertung

von Guest (Gast)


Lesenswert?

Hast du das AVR444 Apnote schon gelesen? Dort steht eigentlich alles 
drin.
Und auf
http://mikrokopter.de/ucwiki/DownloadSeite
findest du einen BLDC Quellcode. Da kannst du eigentlich auch die 
Funktionsweise nachlesen.

hier noch ein paar Bildchen zur BEMF:
http://www.aerodesign.de/peter/2001/LRK350/Warum_dreht_er_so.html

Was du vorhast ist ja nicht neu, dazu findet man haufenweise 
Informationen. Falls du konkrete PRobleme hast so stell doch dazu 
fragen.

von Rotary (Gast)


Lesenswert?

Hallo nochmal - hier die "genaue" problembeschreibung:

im moment betreibe ich den motor nur mit zwangskommutierung - d.h. ich 
habe einfach fixe umschaltzeiten. Am oszi gemessen, sieht man aber eine 
spannugsdifferenz zwischen dem nicht aktiven ausgang (z.B.: NULL_B) und 
dem MITTEL. diese differenz ändert die polarität vor dem nächsten 
umschalten der pahsen. (das sollte richtig sein).
Nur kennt der analog komparator meines mega 8 diesen unterschied nicht, 
bzw irgendwas hab ich falsch gemacht - ich messe direkt am controller 
pin.
auch die fets werden extrem heiß - obwohl die einschaltzeit 20us nicht 
übersteigt - 50us sind sie aus.
ich bekomm zwar ohne last eine relativ hohe drehzahl, aber mit last ists 
gleich beim beschleunigen vorbei.

hier noch meine komparator settings:

ACSR = 0x00;
ADMUX = 0x01; (für ADC1 als neg. komp. pegel)
SFIOR = 0x08;

was könnte den die ursache für diesen defekt sein?
danke für eure hilfe!

von Marcel (Gast)


Lesenswert?

hi

hab ebend gesucht und den ausgang B nicht gefunden..... shematic checken 
oder ich meine augen ;)

gruß marcel

von Falk B. (falk)


Lesenswert?

@ Rotary (Gast)

>im moment betreibe ich den motor nur mit zwangskommutierung - d.h. ich
>habe einfach fixe umschaltzeiten.

Das geht glaub ich ziemlich schief. Du must schon die Hallsensoren oder 
die Gegeninduktionsspannung auswerten, um die Spulen im richtigen Moment 
umzuschalten.

MFG
Falk

von Rotary (Gast)


Lesenswert?

ja sry - der heist NULLB - alsu ohne "_" - wenn du den motoranschluss 
meinst, das is die mittlere brücke

von Rotary (Gast)


Lesenswert?

@falk - genau das ist mein problem - das auswerten der 
gegeninduktionsspannung  - hallsensoren hab ich keine.
die frage ist nur, wals im moment falsch läuft

von Falk B. (falk)


Lesenswert?

@  Rotary (Gast)

>gegeninduktionsspannung  - hallsensoren hab ich keine.
>die frage ist nur, wals im moment falsch läuft

U.a. die Verwendung der Bildformate.

>Dateianhang: regler.JPG (237,7 KB, 100 Downloads)

Ausserdem fehlt bei dir der zweite Anschluss für den Analogkomparator.

MFg
Falk

von Rotary (Gast)


Lesenswert?

jpg is doch in ordnung oder? - ich kann auch die eagle sch anhängen, 
aber das kann auch nicht jeder öffnen.
natürlich ist der 2. komparator eingang nicht angeschlossen - der 
negative eingang wird ja zwischen adc0,adc1 und adc2 gemuxt (das sollte 
hoffentlich richtig sein)

von Falk B. (falk)


Lesenswert?

@ Rotary (Gast)

>jpg is doch in ordnung oder? - ich kann auch die eagle sch anhängen,
>aber das kann auch nicht jeder öffnen.

LIES MAL DEN ARTIKEL VOLLSTÄNDIG!

>natürlich ist der 2. komparator eingang nicht angeschlossen - der
>negative eingang wird ja zwischen adc0,adc1 und adc2 gemuxt (das sollte
>hoffentlich richtig sein)

OK.

von Rotary (Gast)


Lesenswert?

ok es ist kein png - was solls? man kann alles lesen und das sollte 
reichen denk ich oder? (korrigiere mich falls ich falsch liege)

von Matthias L. (Gast)


Angehängte Dateien:

Lesenswert?

>(korrigiere mich falls ich falsch liege)

Es geht um den Dateiinhalt (nur Striche, also hohe Kontraste)
 und die Dateigröße.

Strichgrafiken speichert man mit verlustlosen Verfahren ab. zB png. 
Dadurch wird dieselbe Datei einiges kleiner und es gibt keine 
Kompressionsartefakte.

Ich habe dazzu mal das GND-Symbol vergrößert. Vergleiche das mal mit der 
original-eagle Darstellung.

http://de.wikipedia.org/wiki/Gibbssches_Ph%C3%A4nomen

von Rotary (Gast)


Lesenswert?

ok danke für den tip! - aber nun wieder zurück zum eigtl problem: dem 
BLDC regler :)

von ArminD (Gast)


Lesenswert?

Hallo,

Deine Endstufentransistoren werden heiss weil Dein Motor durch die
Zwangskommutierung mit einem furchtbaren Wirkungsgrad läuft. Diese
Art der Kommutierung soll natürlich nur kurzzeitig für den Anlauf
verwendet werden, dann aus dem Vergleich der Spannung am nichtbestromten
Motorpin zum Sternpunkt (oder virtuellen Sternpunkt wie bei Dir) der
nächste Zeitpunkt bestimmt werden. Zu diesem werden dann 30° elektrisch 
hinzugefügt, das ist der nächste Kommutierungszeitpunkt. Läuft der Motor 
ohne diese 30° Phsendifferenz, dann ist der Wirkungsgrad auch schlecht 
und  der Motor zieht einen hohen Strom und die Treiber werden heiß.
Ich verstehe Deine Komparatormimik nicht ganz, vergleichst Du ständig
alle drei Motorleitungen mit Deinem virtuellen Sternpunkt oder tust Du
dies abwechselnd je nach gerade aktiver Ansteuerungsphase der 
Zwangskommutierung ?
Betreibst Du die Ansteuerung mit einer überlagerten PWM, Deine 
angegebenen
Zeiten suggerieren dies.
Wenn es Dir zunächst um das Verständnis geht würde ich im ersten Schritt
auf die PWM verzichten, die Motorspannung soweit als möglich reduzieren
und externe Komparatoren setzen um zu sehen was sich überhaupt für 
"Sensorsignale" ergeben.
Den Pullup gegen VDD verstehe ich überhaupt nicht, es müssen doch die
Motorleitungen gegen den virtuellen Sternpunkt verglichen werden 
(jeweils
natürlich entsprechend heruntergeteilt.

Gruss,
Armin

von Stumpf (Gast)


Lesenswert?

Nein, ohne PWM wird Dir das Ding um die Ohren fliegen!

Ich habe das ganze erstmals mit einem ausgebauten HD Motor in betrieb 
genommen. Der ist schön hochohmig und lässt nicht gleich die Fet's 
abrauchen.

Als erstes habe ich auch den Motor fest laufen lassen und mir den 
Komperator per Software über einen Pin nach ausgen geführt. Damit ich 
mit dem Osszi den Spannungsverlauf zum Komperator ansehen konnte.

Dann habe ich sollange mit der Spannung gespielt bis der NULL Durchgang 
genau in der Mitte lag.

Somit konnte ich mich dann an das Problem heran "tasten".

Gruß
Stumpf

von Falk B. (falk)


Lesenswert?

@ Matthias Lipinsky (lippy)

>Es geht um den Dateiinhalt (nur Striche, also hohe Kontraste)
> und die Dateigröße.

>Strichgrafiken speichert man mit verlustlosen Verfahren ab. zB png.
>Dadurch wird dieselbe Datei einiges kleiner und es gibt keine
>Kompressionsartefakte.

Ich frage mich ERNSTHAFT, wieso man dass noch dreimal erklären muss, 
wenn es (eigentlich) IDIOTENSICHER im Artikel steht. Ach ja, GEneration 
AHDS-Syndrom :-(

MfG
Falk

von Matthias L. (Gast)


Lesenswert?

Tja, vielleicht ist es zuviel text gewesen...

von rotary (Gast)


Lesenswert?

danke mal für eure hilfe @falk: wenn du dich gerne über dinge aufregst, 
fang doch mal in der politik an, vieleicht veränderst du ja was damit - 
aber ich will hier keine lehrveranstaltung zu computergrafiken starten.
@stumpf und armin: ich werde heute noch bilder der ansteuersignale 
hochladen - und ja, ich überlagere ein pwm (sonst würden die fets 
wirklich abrauchen :) ). Den Komparatoroutput des controllers lege ich 
auf einen pin (kurz nach jeder high-phase des pwm signals) allerdings 
stimmt das nicht im geringsten mit den am oszi gemessenen spannugnen 
überein.
den pullup vom MITTEL auf vdd habe ich entfernt (ebenso den pulldown).
Ich werde einige messungen machen, und dann die bilder hochladen.

Danke nochmal für eure Hilfe

von Falk B. (falk)


Lesenswert?

@ rotary (Gast)

>danke mal für eure hilfe @falk: wenn du dich gerne über dinge aufregst,

Tu ich eher nicht.

>fang doch mal in der politik an, vieleicht veränderst du ja was damit -
>aber ich will hier keine lehrveranstaltung zu computergrafiken starten.

Nun ja, Ignoranz und Lernresistenz sind Menschenrechte . .  .

MFG
Falk

von Rotary (Gast)


Lesenswert?

Fotos kommen leider erst morgen. Aber: ich habs nun (endlich) geschaft, 
mit hilfe des internen analog komparators, ein (relativ) vernünftiges 
kommutierungssignal zu rekonstruieren. ich habe mich jetzt gefragt, wann 
ich denn wirklich auf die nächste phase umschalten muss - das soltle ja 
eigtl 30° nach der pegeländerung am komparator passieren oder? das sind 
ja 8% von 360° - also müsste ch eigtl zu diesem zeitpunkt 8% meiner 
gesamten periodendauer addieren oder? also (T*0,08) warten, bevor ich 
kommutiere.
wäre das so richtig?

von rotary (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang mal ein bild der aktuellen signale meines reglers. das im bild 
unterste (1) ist das mit dem internen komparator ermittelte 
kommutierugnssignal. Der Regler läuft aber noch mit zwangskommutierung, 
da das Umschalten der phasen mit hilfe des komparatorsignals noch nicht 
funktioniert. Eine Freage zu den 30° verzögerung: müsste es ohne die 
auch (prinzipiell) funktionieren, oder ist das unmöglich?

von Simon K. (simon) Benutzerseite


Lesenswert?

Sieht mir irgendwie danach aus als würden deine Filter nicht hinhauen 
(Die Tiefpässe an den NULLA-NULLC Netzen). Ansonsten kann man aber nicht 
wirklich viel erkennen auf dem Bild.

Ja, der Motor läuft, wie gesagt, auch ohne 30° Phasenverzögerung, aber 
wesentlich schlechter.

von rotary (Gast)


Lesenswert?

naja - ich hab die kondensatoren jetz rausgeschmissen, da ich sonst in 
der low-phase des pwm signals keine vernünftigen spannugnen zum 
auswerten hatte. Wo sollte eigtl. die Grenzfrequenz der Filter liegen? - 
bei den 100nF is das ja weit unter der frequenz meines pwms (ca 20kHz)

von Simon K. (simon) Benutzerseite


Lesenswert?

rotary wrote:
> naja - ich hab die kondensatoren jetz rausgeschmissen, da ich sonst in
> der low-phase des pwm signals keine vernünftigen spannugnen zum
> auswerten hatte.

"Keine vernünftigen Spannungen"? Die Kondensatoren haben schon einen 
Sinn, sonst wären sie dort nicht.

von rotary (Gast)


Lesenswert?

so jetz läufts mal einigermaßen - soll bedeuten: die kommutierung 
erfolgt jetzt so wie es sein soll (bis auf die 30° verzögerung - die 
gibts im moment noch nicht).
Der Motor läuft auch brav wie er soll, allerdings - hier gibts ein 
problem - läuft er immer gleich mit maximaler drehzahl. Meine Frage ist 
nun, wie kann ich die Drehzahl wirklich regeln? also wenn ich den motor 
jetzt blockiere, dreht er sich sofort wieder hoch (das geht recht 
schnell).

Und noch eine Frage zu den 30° - ich muss ja nach dem ich eine änderung 
der polarität am komparator festgestellt habe eine gewisse zeit (also 
die 30°) warten, bevor ich auf die nächste phase umschalte. Auf welche 
Zeit bezoehen sich diese 30° nun? auf die gesamtzeit einer umdrehung, 
oder auf die ein-zeit der jeweiligen phase?

Danke für eure Hilfe!

von Falk B. (falk)


Lesenswert?

@  rotary (Gast)

>problem - läuft er immer gleich mit maximaler drehzahl. Meine Frage ist
>nun, wie kann ich die Drehzahl wirklich regeln?

Die aktive Phase wird nicht konstant sondern mit PWM bestromt. Und 
zur DrehzahlREGLUNG brauchst du auch eine DrehzahlMESSUNG.

MFG
Falk

von rotary (Gast)


Lesenswert?

Ja, mit PWM stromung hab ich schon -  das funktioniert uach so ganz gut.
Zur drehzahlmessung: die kann ich ja mit hilfe der zeitabstände zwischen 
den polarisationsänderungen messen.
Aber wie kann ich die drehzahl nun festlegen?

von Falk B. (falk)


Lesenswert?

@ rotary (Gast)

>Aber wie kann ich die drehzahl nun festlegen?

Na über die PWM! Kleines Tastverhältnis -> kleine Spannung am Motor -> 
kleine Drehzahl.

MFg
Falk

von Peter Diener (Gast)


Lesenswert?

Hallo,

normalerweise (also so mach ich es bei meiner Brushlessansteuerung) 
brauchst du eine Strommessung jeder einzelnen Phase. Nachdem du den 
Motor im Trapezbetrieb fährst, weil du keinen Drehgeber drauf hast, 
bestromst du immer nur zwei Phasen, also ist der Phasenstrom identisch 
mit dem Aufnahmestrom des Umrichters dividiert durch die Pulsweite.

So, wenn du nun den Motorstrom kennst (wie auch immer du ihn gemessen 
hast - ob in den Motorphasen oder den Aufnahmestrom), kannst du einen 
Stromregler programmieren. Der Motorstrom soll direkt proportional sein 
zum gewünschten Motordrehmoment. Der Reglerausgang sei eine Zahl von 0 
bis 1, die auf deine jetzt verwendete Pulsweite multipliziert wird und 
damit die Motorstrangspannung verstellt.
Das gewünschte Drehmoment ist also Eingangsgröße des Stromreglers. 
Kommutiert wird nach der Trapezmethode, so wie du es schon hast.

Dem Stromregler schaltest du jetzt einen Drehzahlregler vor, der die 
Solldrehzahl als Eingang hat und den Istwert aus der 
Kommutierungsfrequenz ermittelt.

Als Stromregler habe ich einen PI-Regler, Drehzahlregler ist ein 
P-Regler.

Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk 
Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder 
vergriffen, wird aber bald neu aufgelegt.


Viele Grüße,

Peter

von rotary (Gast)


Lesenswert?

Danke für eure Hilfe!

@ falk: ich hab das mit dem pwm schon versucht, allerdings ist das 
drehmoment bei niedriger spannung dann auch sehr niedrig.

@Peter: das mit der strommessung werde ich ausprobieren - nach dieser 
theorie, sollte dann wohl die zugeführte leistung so lange erhöht 
(angepasst) werden, bis der motor die gewünschte drehzahl erreicht hat 
oder?

von Falk B. (falk)


Lesenswert?

@rotary (Gast)

>@ falk: ich hab das mit dem pwm schon versucht, allerdings ist das
>drehmoment bei niedriger spannung dann auch sehr niedrig.

Dann ist was faul. So ein Motor hat bei Drehzahl 0 sein grösstes 
Drehmoment.
Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM 
an den Enable-Eingängen? Das wäre nämlich falsch ;-)

MFg
Falk

von Simon K. (simon) Benutzerseite


Lesenswert?

Falk Brunner wrote:
> @rotary (Gast)
>
>>@ falk: ich hab das mit dem pwm schon versucht, allerdings ist das
>>drehmoment bei niedriger spannung dann auch sehr niedrig.
>
> Dann ist was faul. So ein Motor hat bei Drehzahl 0 sein grösstes
> Drehmoment.
Aber nur, wenn er bestromt wird.

> Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM
> an den Enable-Eingängen? Das wäre nämlich falsch ;-)
Was für Enable-Eingänge denn nun? Und was genau wäre daran falsch?

von Peter Diener (Gast)


Lesenswert?

Hallo,

>das mit der strommessung werde ich ausprobieren - nach dieser
>theorie, sollte dann wohl die zugeführte leistung so lange erhöht
>(angepasst) werden, bis der motor die gewünschte drehzahl erreicht hat
>oder?

Das ist richtig. Der Umrichter hat selbst ja einen relativ hohen 
Wirkungsgrad, also wird fast die gesamte elektrisch zugeführte Energie 
in Rotationsenergie umgesetzt. Damit lässt sich das Drehmoment steuern 
und auch regeln.

Die eher akademische Variante wäre auch ohne Strommessung möglich, dazu 
braucht man aber ein mathematisches Modell des Motors, um die Ströme 
vorherzusagen. Es gibt aber wohl Regler am Markt, die das so machen.

Das Problem daran ist, dass die Motoren einen sehr kleinen 
Innenwiderstand haben. Die induzierte Spannung hängt linear von der 
Drehzahl ab. Ist die im Mittel über PWM eingestellte Spannung an der 
jeweiligen Phase größer als die induzierte Spannung, so integriert der 
Strom immer weiter auf. Das passiert so lange, bis der Motor mit dem 
zusätzlich entstehenden Drehmoment eine Drehzahl erreicht hat, die eine 
Induktionsspannung nahe der duch PWM angelegten Spannung induziert. Gibt 
man zu aggressiv Gas, fließt beliebig viel Strom, wenn man ihn nicht mit 
einem Regler begrenzt. Hier setzt dann das mathematische Modell um ohne 
Messung einen Schätzwert des Stroms zu erhalten, den man dann begrenzen 
kann.

Dadurch ist eine DrehzahlSTEUERUNG über das Pulsweitenverhältnis 
möglich. Das bei geringer Pulsweite nur wenig Drehmoment zur Verfügung 
steht, ist bei Kleinspannungsmotoren normal, denn bei der kleinen 
Spannung von wenigen 100 mV dominiert der Sapnnungsabfall am ohmschen 
Anteil des Wicklungswiderstands.
Deswegen muss man per Regler die Abweichung von der Solldrehzahl auf die 
eingestellte Pulsweite rückführen und damit bei zu kleiner Drehzahl 
beschleunigen.

Um zu verstehen, was dir in deiner Schaltung möglich ist, wäre es 
hilfreich, wenn du einen Schaltplan posten könntest.

Viele Grüße,

Peter

von Peter Diener (Gast)


Lesenswert?

Hallo nochmal, hab die Schaltung gefunden, wurde bei mir vorher nicht 
agezeigt.

Peter

von Peter Diener (Gast)


Lesenswert?

Hallo,

die drei parallelen 4,7 Ohm Widerstände als Shunt sind ja viel zu groß, 
wieviel Spannung soll denn da abfallen? An einem Shunt sollten normal 
nicht mehr als 50mV abfallen. Damit bricht dir ja die Spannung am 
Umrichter viel zu weit ein, wenn viel Strom fließt und es wird zu wenig 
Drehmoment aufgebaut. Ganz abgesehen von der Wärmeentwicklung.
Ich kann im Plan auch nicht erkennen, wo das Shuntsignal verstärkt wird. 
Nach Verstärkung gebe ich es in meiner Schaltung auf einen ADC zum 
Messen.

Außerdem macht es viel Ärger, wenn der Shunt direkt vor den Transistoren 
ist, schalte ihn besser vor die Elkos in die Versorgung.

Genau, Elkos, wo sind die eigentlich? Ich habe im meiner Schaltung 
mehrere 4700µF drin zur Stabilisierung des DC-Kreises.

Grüße,

Peter

von rotary (Gast)


Lesenswert?

hallo peter!

Zunächst mal danke für deine hilfe!
zu meiner Schaltung: die elkos 8es ist im mom nur 1er) befinden sich 
direkt an den eingangsbuchsen. die shunts sind nur aus einer anderen 
datei kopiert, und haben in summe 100mR (ist noch zu groß, hab aber im 
moment nichts anderes zur verfügung). die stromaufnahme berücksichtige 
ich im moment noch nicht - das ist in dieser hardware variante auch 
nicht möglich.

Ich werde jetz noch die drehzahlregelung testen, und dann evtl ein neues 
design in agriff nehmen.
Was würdest du würdet ihr) denn von einem High.side switch halten, der 
gleich einen ausgang zum strommessen hat?

von Peter Diener (Gast)


Lesenswert?

Hallo,

also ich habe einen solchen Treiber drin, IR2133S.
Mittlerweile gibt es aber bessere, die auch eine automatische 
Deadtime-Erzeugung haben, so dass nur noch drei Eingangssignale benötigt 
werden. So kann man keine Fehler machen, die einen Brückenkurzschluss 
verursachen.

Peter

von Peter Diener (Gast)


Lesenswert?

Wenn ich mein design nochmal machen müsste, dann käme ein IR21362 rein, 
der hat eine Deadtimegeneration, Shoot-trough-prevention und die 
Eingänge Hin und Lin sind gegeneinander invertiert, man kann sie also 
einfach zusammenhängen und so eine ganze Brücke öhne zusätzliche 
Bauteile mit einem Prozessorpin ansteuern. Außerdem ist das IC auch für 
3,3V Ansteuerung geeignet, das ist für mich wichtig, weil ich die 
Ansteuerung mit einem MSP430 erledige. Der MSP430F247 hat nämlich 6 
PWM-Register auf einem einzelnen Timer. Damit kann ich zwei Motoren 
ansteuern.

Peter

von rotary (Gast)


Lesenswert?

Danke für die tips!
Ich hab jetzt einen "primitivregler" implementiert, der zwar 
funktioniert, aber auch schön überschwingt :). aber das ist erstmal 
nebensache.
Ich möchte die kommutierung noch verbessern - wie bereits erwähnt 
schalte ich sofort nacah auftreten des polaritätswechsels am komparator 
auf die näcste phase. dies sollte allerdings (laut meinen informationen) 
ca 20-30° später passieren. Die Frage ist nun, auf welche Zeit beziehe 
ich diese 20-30° ?

Danke!

von Matthias L. (Gast)


Lesenswert?

>Die Frage ist nun, auf welche Zeit beziehe ich diese 20-30° ?

Über die aktuelle Drehzahl (oder besser dessen Kehrwert) eine 
Verzugszeit errechnen.

von Falk B. (falk)


Lesenswert?

@ Matthias Lipinsky (lippy)

>Über die aktuelle Drehzahl (oder besser dessen Kehrwert) eine
>Verzugszeit errechnen.

Oder Einfach die Zeit zwischen den Polatitätswechseln messen und dann 
halbieren ;-)

MFG
Falk

von Simon K. (simon) Benutzerseite


Lesenswert?

Ersteres ist die akademische Variante, zweiteres die praktikable :D

von rotary (Gast)


Lesenswert?

@ falk: wenn ich die zeit zwischen den polaritätswechseln halbiere, und 
den kommutierungszeitpunkt um diese verschiebe, sind das aber etwas mehr 
als 25° (angenommen ich hab 3 kommutierungen pro umdrehung) oder?
Kann ich nicht die "ein" zeit einer phase als zeitbasis verwenden?

von rotary (Gast)


Lesenswert?

noch eine frage: der motor hat 3 phasen - aber ich brauche ja mehr als 3 
kommutierungen für 1e umdrehung - wie kann ich errechnen 8ermessen) 
wieviel kommutierungen ich für 1e umdrehung brauche?

von Simon K. (simon) Benutzerseite


Lesenswert?

Peter Diener wrote:
> Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk
> Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder
> vergriffen, wird aber bald neu aufgelegt.

Lässt sich auch online einsehen:
http://books.google.de/books?id=eeZOmq4uP2wC&dq=Regelung+elektrischer+Antriebe&printsec=frontcover&source=bl&ots=vMb0bIkDan&sig=wSM87bibd4CHhooS2BnBfDFZCNM&hl=de&sa=X&oi=book_result&resnum=5&ct=result#PPP1,M1

von Simon K. (simon) Benutzerseite


Lesenswert?

Simon K. wrote:
> Peter Diener wrote:
>> Wenn du nach Literatur suchst, empfehle ich das neue Buch von Dierk
>> Schröder: Regelung elektrischer Antriebe. Ist aber leider schon wieder
>> vergriffen, wird aber bald neu aufgelegt.
>
> Lässt sich auch online einsehen:
> 
http://books.google.de/books?id=eeZOmq4uP2wC&dq=Regelung+elektrischer+Antriebe&printsec=frontcover&source=bl&ots=vMb0bIkDan&sig=wSM87bibd4CHhooS2BnBfDFZCNM&hl=de&sa=X&oi=book_result&resnum=5&ct=result#PPP1,M1

Jedenfalls, wenn du das meinst. Ist von Leonhard.

von Falk B. (falk)


Lesenswert?

@ rotary (Gast)

>als 25° (angenommen ich hab 3 kommutierungen pro umdrehung) oder?

???
Also ich ha vor längerer Zeit mal mit sowas rumgespielt. So ein 3 
phasiger BLDC hat 6 Kommutierungen/Umdrehung, macht 60 Grad zwischen 
zwei Kommutierungen. Die Hälfte davon ist dann . . .

MFg
Falk

von Falk B. (falk)


Lesenswert?

@  Simon K. (simon) Benutzerseite

>> Schaltest du die Phasen aktiv an und aus (LOW/HIGH) oder liegt deine PWM
>> an den Enable-Eingängen? Das wäre nämlich falsch ;-)
>Was für Enable-Eingänge denn nun? Und was genau wäre daran falsch?

Die Enable Eingänge der drei Phasen. Ohhh, ich sehe gerade, die drei 
Leistungstreiber sind ja diskret aufgebaut. Ob da alles so läuft wie es 
soll?

MFG
Falk

von rotary (Gast)


Lesenswert?

@falk - die leistungstreiber funktionieren tadellos.
Ich habe eben einen fehler in meinem sourcecode entdeckt:
die pwm frequenz beträgt 10kHz. Die Abfrage des komparators erfolgt 
immer in der low-phase des pwm signals. bei (noch nicht allzu) hohen 
drehzahlen wird der kommutierungszeitpunkt nun extrem schlecht erwischt, 
wodurch der stromverbrauch wieder exorbitant hoch wird.
naja das wären dann (hoffentlich rechne ich richtig :)) 30° - nun geben 
diverse hersteller (z.B: Hacker) aber 22° an. hab damit gerade 
rumgespielt - am stromverbrauch (unter last) sehe ich hier allerdings 
keine änderung.
wie kann ich den idealen umschaltzeitpunkt für einen bestimmten motor 
rausfinden?

von Peter Diener (Gast)


Lesenswert?

Hallo,

es gibt keinen pauschal optimalen Umschaltpunkt.
Es ist ein Bereich, der sich recht gut nutzen lässt und ein Kompromiss 
aus entweder maximalem Wirkungsgrad oder maximaler Leistung.

Die Winkel beziehen sich auf die elektrische Seite, nicht die 
mechanische. 30° entsprechen 30/360 der Periodendauer von deinem 
Motorstromsignal.

@Simon K.: Nein, ich meine das von Dierk Schröder. Die sind aber 
bestimmt alle nicht schlecht, ich kenne das nicht genau, was du 
angegeben hast. Herrn Prof. Schöder habe ich in einer meiner Vorlesungen 
gehört.

Den idealen Umschaltpunkt für maximalen Wirkungsgrad zu finden ist nicht 
schwer. Montiere eine Luftschraube oder ähnliches (Vorsicht!) auf den 
Motor und fahre mit konstanter Drehzahl. Verstelle den Steuerwinkel so 
lange, bis sich der niedrigste Stromverbrauch am Akku/Netzteil ergibt.

Für maximale Leistung fährst du ohne Regelung Vollgas und stellst den 
Winkel so lange, bis die Drehzahl ein Maximum erreicht.

Gute Regler passen den Steuerwinkel während des Betriebs an die 
Lastsituation an, so dass man (beim Modellflugzeug) in Schwachlastzeiten 
wenig Strom braucht und im Hochlastbetrieb die notwendige Leistung 
kommt.

Die Polzahl kann man abzählen, wenn man den Motor von Hand durchdreht, 
einfach die Rucks zählen. Man muss aber zwischen Polzahl und Polpaarzahl 
unterscheiden. Außenläufer haben normal mehr Pole als Innenläufer. Je 
mehr Pole ein Motor hat, desto geringer ist seine Drehzahl und das 
Moment größer.

Es sind ja Synchronmotoren, also breechnet sich die mechanische Drehzahl 
aus der Frequenz des Phasenstroms geteilt durch die Polpaarzahl. 
Umrechnen von 1/s in 1/min nicht vergessen:)

Wenn dein Regler überschwingt, musst du die Regelparameter anders 
wählen. Such mal im Netz nach heuristischen Methoden zum Reglerabgleich 
oder nach Faustformelverfahren. Da werden dir die Einstellregeln nach 
Chien, Hrones und Reswick helfen können.

Viele Grüße,

Peter

von rotary (Gast)


Angehängte Dateien:

Lesenswert?

@Peter: Danke für die Infos. Ich habe im moment noch folgendes problem 
bezgl. der regelung: wenn ich aus dem stand auf max. drehzahl gehen 
will, kommt es zu einem überschwingen (obwohl die stellgröße bereits in 
den kleinstmöglichen schritten inkrementiert wird). Ich prüfe die 
Drehzahl (bzw. die Zeit, welche eine einzelne phase aktiv ist) nach 
jeder kommutierung. wäre es evtl besser, diese überprüfung nur nach 
jeder x.ten (also 2-10 ca) kommutierung vorzunehmen?
Das Zweite Problem ist nach wie vor der Umschaltzeitpunkt. ich habe bei 
einer fixen last und mittlerer drehzahl (ca 8000 rpm) mit verschiedenen 
werten experiementiert, aber der (vom stromverbrauch her) beste wert war 
immer der zeitpunkt des nulldurchgangs der komparatorspannung. mache ich 
etwas grundsätzlich falsch?
Im anhang noch ein bild des oszilloskops.
Die signale: 1 - nach jeder flanke ist die nächste phase aktiv
2 - komparatorsignal
3 - in der high phase ist der komparator gesperrt (zeit wird dynamisch 
angepasst)
 gelb: mittel
rest: komparatorspannungen

von rotary (Gast)


Lesenswert?

jemand eine idee dazu?

Bin für jede Hilfe dankbar!

von Peter Diener (Gast)


Lesenswert?

Hallo,

mit was belastest du den Motor bei den Tests?

Je öfter du die Drehzahl misst, desto besser ist das Ergebnis. Wenn du 
seltener misst, hast du eine immer größere Totzeit im System, was immer 
schwierig zu regeln ist.

Das Überschwingen hat nichts mit der Vorgabe von Sollwerten zu tun, es 
darf auch bei einem 0-100% Sollwertsprung nicht auftreten. Die Regler 
sind dazu geeignet zu parametrieren.

Der richtige Kommutierungszeitpunkt hängt stark vom verwendeten Motor ab 
und sollte vor allem mit großer Belastung ermittelt werden.

Bei zu geringer Last ist er sehr nahe am Umschaltpunkt der Komperatoren.

Es hört sich so an, als würdest du das Kommutieren gegenüber dem 
Umschaltpunkt der Komperatoren verzögern. Du musst es aber vorauseilen 
lassen um etwa 10-20° (Stromphasenwinkel). Dazu musst du vorausschauend 
abschätzen, wann der Komerator das nächste mal schaltet und dann 
verfrüht kommutieren, nicht erst nachdemder Komperator geschaltet hat.

Viele Grüße,

Peter

von rotary (Gast)


Lesenswert?

Danke für den Tip Peter!

Ja, genau so hab ich es im moment gemacht - nach dem schalten der 
komparatoren eine zeitverzögerung eingebaut, und dann die kommutierung 
durchgeführt. d.h. ich muss ~30° BEVOR der komparator schaltet, auf die 
nächste phase schalten. Das werde ich gleich versuchen.
Den Motor belaste ich im Moment mit einem Propeller (der allerdings 
etwas zu gering dimensioniert ist). bei max. Drehzahl zeiht der Motor 
7.5A (bei der "fehlerhaften" kommutierung. max. Strom bei volllast 
sollten aber 15A sein.

von Peter Diener (Gast)


Lesenswert?

Hallo,

genau richtig, du musst vor der Komparatorflanke schalten.
Sei vorsichtig mit den Strömen, die 15A gelten als RMS über eine 
Wicklung des Motors. Das entspricht bei kleinen Pulsweiten überhaupt 
nicht dem Aufnahmestrom. Dieser ist kleiner.

Also immer den Motorstrom selbst messen (z.B. mit Stromzange) oder den 
Motorstrom mit dem Pulsweitenverhältnis multiplizieren, dann erhält man 
den Aufnahmestrom. Also Aufnahmestrom messen, durch Pulsweite teilen 
ergibt den Motorstrom. Das ist aber schwierig, weil sich die Pulsweite 
ständig ändert.

Grüße,

Peter

von rotary (Gast)


Lesenswert?

Hallo nochmal!

Im Anhang das "Dokument" , asu dem ich die Information zu den 30° 
verzögert schalten habe.
Mein größtes Problem ist zur Zeit allerdings das Starten des Motors. 
Nach einigen Tests mit und ohne Last hat sich keine der implementierten 
startroutinen als geeignet herausgestellt. Ohne Last laufen fast alle - 
mit Last treten folgende Fehler auf:
Der Motor läuft mit geringer Geschwindigkeit in die falsche Richtung 
(bei extrem hoher Stromaufnahme), oder der Motor startet überhaupt 
nicht.

Prinzipieller Ablauf des Startvorganges:

1. Rotor auf eine definierte Position führen (A+;B-;C-)
2. einige 100ms warten, bis der Rotor stabilisiert ist
3. Zwangskommutierung starten, bis der komparator 30 mal einen 
polaritätswechsel erkannt hat.
4. Umschalten auf automatische kommutierung

Dieser Ablauf stammt aus einem appnote von ST. (AN1276)

von Simon K. (simon) Benutzerseite


Lesenswert?

Dein Anhang muss wohl verloren gegangen sein ;)

von Peter Diener (Gast)


Lesenswert?

Hallo,

ich würde den Motor nicht auf eine Startposition stellen, die im Betrieb 
nicht als Kommutierungszustand genutzt wird.
(A+;B-;C-) wird im Betrieb nie geschaltet, besser wäre eine 
Startposition mit A+;B-;C kein Transistor an.

Bei der Zwangskommutierung kannst du unter Umständen ein echtes Drehfeld 
durch Modulation der Phasen erzeugen. Ich meine dabei alle drei Phasen 
wie in einem Drehstromsystem sinusförmig und stromgeregelt anzufahren.

Dabei würde ich auf den Nennstrom des Motors regeln, die Drehzahl = null 
einstellen und warten, bis der Motor ins Feld "einrastet". Dann eine 
Drehzahlrampe mit konstanter Beschleunigung berechnen und die drei 
Phasen entsprechend modulieren.

Ab einer bestimmten Drehzahl dann bei geeigneter Rotorstellung auf die 
freilaufende Kommutierung im Trapezbetrieb umstellen und den 
Drehzahlregler einschalten.

Ich habe bei meinen Umrichtern das Problem der Umschaltung gar nicht, 
denn ich fahre immer im dreiphasen Drehstrombetrieb mit 
Raumzeigermodulation. Die Phasen sind stromgeregelt und die 
Momentanforderung bestimmt den notwendigen Phasenstrom. Damit verhält 
sich der Motor wie eine Synchronmaschine am Netz, solange er nicht außer 
Tritt fällt. Dass das nicht passiert, wird die Momentanforderung 
begrenzt.

Peter

von BJ (Gast)


Lesenswert?

Moin!

Hat jemand ausprobiert einen BLDC Motor wie eine Synchronmaschine zu 
betreiben? Also sinusmodulierte Spannungen und Messung der Phasenströme?

Gruß
BJ

von Axel (Gast)


Lesenswert?

Ja

von olnol (Gast)


Lesenswert?

Kann mir jemand erklären warum der Strom in den einzelnen Phasen bei der 
SVPWM größer ist als der Aufnahmestrom der B6-Brücke. Ich habe hier was 
von Multiplikation/Division mit der Pulsbreite gelesen. Wie kommt das?

von Markus (Gast)


Lesenswert?

Hi,
ich kram das nochmal hervor weil ich eine Frage zum 
Kommutierungszeitpunkt habe.

Eine elektrische Umdrehung wird in 6 Kommutierungsblöcke zu je 60° 
unterteilt. In jedem Abschnitt sollte der BEMF Nulldurchgang im 
Idealfall bei 30° eintreten und messbar sein. D.h. ich stoppe die Zeit 
die seit Aktivierung des jeweiligen Kommutierungsblocks (=0°) bis zum 
BEMF Nulldurchgang (=30°) vergangen ist (=t_30). Nach einer Wartezeit 
von t_30 (=60°) wird kommutiert. Nun kann man den Kommutierungszeitpunkt 
variieren um mehr Leistung aus dem Motor zu holen.

Es gibt hier allerdings zwei widersprüchliche Aussagen wo der optimierte 
Kommutierungszeitpunkt liegen muss.

1.)
Beitrag "Re: BLDC regler - konzept so richtig?"

Der Kommutierungszeitpunkt liegt im Bereich: 30°<= t <= 60°
d.h. NACHDEM der BEMF Nulldurchgang erkannt wurde und BEVOR die 
Wartezeit t_30 abgelaufen ist.

2.)
Beitrag "Re: BLDC regler - konzept so richtig?"

Der Kommutierungszeitpunkt liegt im Bereich: 0°<= t <= 30°
d.h. BEVOR der BEMF Nulldurchgang erkannt wurde.

Fall 1.) kann ich nachvollziehen. Fall 2.) ist mir unklar. Wie soll 
jemals die Zeit t_30 bestimmt werden wenn immer VOR Erreichen des 
Zeitpunkts kommutiert wird ?!

Kann mich jemand erleuchten ?

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo Markus,

Markus schrieb:

> Eine elektrische Umdrehung wird in 6 Kommutierungsblöcke zu je 60°
> unterteilt. In jedem Abschnitt sollte der BEMF Nulldurchgang im
> Idealfall bei 30° eintreten und messbar sein. D.h. ich stoppe die Zeit
> die seit Aktivierung des jeweiligen Kommutierungsblocks (=0°) bis zum
> BEMF Nulldurchgang (=30°) vergangen ist (=t_30). Nach einer Wartezeit
> von t_30 (=60°) wird kommutiert.

Oder ganz einfach gesagt: Die Kommutierung sollte 30° nach dem 
Nulldurchgang der unbestromten Phase erfolgen.

>                             Nun kann man den Kommutierungszeitpunkt
> variieren um mehr Leistung aus dem Motor zu holen.

Hier führt nur die frühzeitige Kommutierung zum Erfolg. Also z.B. 10° 
nach dem Nulldurchgang (anstatt der üblichen 30°).


> Der Kommutierungszeitpunkt liegt im Bereich: 30°<= t <= 60°
> d.h. NACHDEM der BEMF Nulldurchgang erkannt wurde und BEVOR die
> Wartezeit t_30 abgelaufen ist.

Ich vermute, dass sich t hier auf den letzten Kommutierungszeitpunkt 
bezieht. t = 30° wäre dann der Zeitpunkt des Nulldurchgangs der 
unbestromten Phase. Eine verspätete Kommutierung, also mehr als 30° nach 
dem Nulldurchgang der unbestromten Phase reduziert Dir den Wirkungsgrad 
der Maschine. Das Optimum liegt übrigens bei einer (kleinen) vorzeitigen 
Kommutierung, da Du damit, grob vereinfacht gesprochen, die Auswirkungen 
der Induktivität kompensierst (das Stichwort für die Fachliteratur wäre 
Ankerrückwirkung) und der optimale Winkel hängt vom aktuellen Motorstrom 
ab.

> Der Kommutierungszeitpunkt liegt im Bereich: 0°<= t <= 30°
> d.h. BEVOR der BEMF Nulldurchgang erkannt wurde.

Nein, hier bezieht sich t m.E. auf den Nulldurchgang der unbestromten 
Phase.

> Fall 1.) kann ich nachvollziehen. Fall 2.) ist mir unklar. Wie soll
> jemals die Zeit t_30 bestimmt werden wenn immer VOR Erreichen des
> Zeitpunkts kommutiert wird ?!

Das wird nicht funktionieren, da Du an der bestromten Phase keinen 
Nulldurchgang detektieren kannst.

Grüßle,
Volker.

von Markus (Gast)


Lesenswert?

@Volker
Danke das klärt meine Frage !

von Carsten M. (ccp1con)


Lesenswert?

Hallo,

ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des 
Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit 
berücksichtigen? Oder ist das vernachlässigbar klein?

Danke
Carsten

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo,

Carsten M. schrieb:
> ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des
> Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit
> berücksichtigen? Oder ist das vernachlässigbar klein?

Was willst Du hören? Außer Dir kennt leider niemand die Zeitkonstante 
Deines RC-Filters und die maximale Drehzahl Deines Motors. Wie soll Dir 
also jemand sagen, ob Du die Zeitkonstante kompensieren musst?

Da eine verzögerte Kommutierung stets ungünstig ist (große Stromspitzen 
beim Kommutierungsvorgang), würde ich die Verzögerung des RC-Glieds 
kompensieren sobald sie in die Größenordnung von 5° (el) kommt.

Grüßle,
Volker.

von Jonny O. (-geo-)


Lesenswert?

Carsten M. schrieb:
> ich habe gelesen, das der RC Filter eine zeitliche Verschiebung des
> Signals des Nulldurchganges bewirkt. Muss/sollte man diese Zeit
> berücksichtigen? Oder ist das vernachlässigbar klein?

Das ist schon richtig. Ich habe bei meinen Reglern in der Software kein 
Timing eingefügt und stattdessen an den RC Parametern herumgespielt, bis 
der Motor optimal lief. Es macht schon was aus, ob der Kondensator 100NF 
oder 200NF hat. Nimm einfach die Werte aus deinem Schaltplan, die habe 
ich auch genommen. Die haben gut funktioniert. In der Software habe ich 
keine Timingoption drinn.

Ich würde es einfach ausprobieren. Schlussendlich empfielt sich ein 
Effektivitätstest, den du dann mit anderen Werten vergleichen kannst. 
Ich habe zum Beispiel einen Motor und einen Propeller genommen, den die 
Leute von Mikrokopter benutzen und anschließend meine Schubkurve mit 
deren Kurve verglichen. Da meine ähnlich aussah, bin ich davon 
ausgegangen, dass die Schaltung okay ist.

Ideal wäre natürlich ein Messaufbau, der den Motor (Drehmoment und 
Drehzahl) genau vermisst. Sowas hatte ich damals aber nicht da.

von Carsten M. (ccp1con)


Lesenswert?

Danke Volker,

die Frage bezog sich auf rotarys RC-Filter (4,7k und 100nF).
Der online Kalkulator gibt eine Zeitkonstante von 0,47 ms an.

Verstehe, nun hängt es von der Drehzahl ab, ob die Zeit in den Bereich 
von 5° kommt.

Alles klar - Danke

von Carsten M. (ccp1con)


Lesenswert?

Hallo Jonny,

>Nimm einfach die Werte aus deinem Schaltplan, die habe
>ich auch genommen.

Du hast meine Werte genommen? - Glaube ich nicht, denn mein controller 
hat kein RC Glied! ;-)

Keine Verzögerung heißt dann du kommutierts sofort nach Nulldurchgang 
und überläßt dem Filter die Verzögerung?

von Jonny O. (-geo-)


Lesenswert?

> Du hast meine Werte genommen? - Glaube ich nicht, denn mein controller
> hat kein RC Glied! ;-)

Hoppla - ich meinte natürlich die Werte von Rotarys Schaltplan.

> Keine Verzögerung heißt dann du kommutierts sofort nach Nulldurchgang
> und überläßt dem Filter die Verzögerung?

Richtig.

von Carsten M. (ccp1con)


Lesenswert?

cool ... wenn man das weiter denkt, resultiert das in einer Art 
automatischem variablen pretiming.

Nur in die falsche Richtung!? Je schneller der Motor dreht, desto Größer 
wird der Anteil der RC-Filter Verzögerung. Wenn du normal bei 
Nulldurchgang kommutierts, was ja 30 Grad pritiming entspricht, kommst 
du dann immer weiter weg in Richtung 0 Grad pritiming!?

Oder übersehe ich da was?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.