Forum: Mikrocontroller und Digitale Elektronik DC Controller um BLDC erweitern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Pepe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Ich habe einen fertig entwickelten Motion Controller für DC Motoren und 
möchte diesen in nächster Zeit um die Ansteuerung von bürstenlosen 
Motoren "erweitern".

Ich habe immer HallSensoren auf der Motorwelle und Quadraturencoder mit 
Indexsignal auf der Achse zur Verfügung. Messung des Stroms durch die 
Motorphasen ist vorhanden. Ich habe ausschließlich Positionieraufgaben, 
wobei sich die Motoren nur wenige Umdrehungen (oder teilweise Grad) 
bewegen.

Hab schon Diverses gelesen.

Irgendwie habe ich aber das Gefühl, dass 95% aller Infos sich mit 
"sensorlos", Geschwindigkeitsregelung oder maximal noch mit Hallsensoren 
beschäftigen.
Was Positionsregelung angeht bin ich noch nicht wirklich fündig 
geworden.

Ich suche jetzt irgendwelche Beispielcodes oder Application Notes für 
meinen Anwendungsfall.

Kann mir jemand weiter helfen? Links oder Beispielprojekte wären super.

Danke, Pepe.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Pepe schrieb:
> Was Positionsregelung angeht bin ich noch nicht wirklich fündig
> geworden.

Üblicherweise wird die Regelung mehrstufig aufgebaut: die innerste 
Schleife ist bei einem DC-Motor die Stromregelung. Der Sollwert für den 
Strom kommt von der Geschwindigkeitsregelung, diese bekommt ihren 
Sollwert von der Positionsregelung.

Der Istwert der Geschwindigkeit kann mit dem Encoder gemessen werden, 
ebenso die Position durch einen Zähler am Encoder. Die Art der 
Positionsregelung hängt davon ab, ob es sich um eine 
Punkt-zu-Punkt-Steuerung handelt, also nur zum Anfahren einer 
Ziel-Position, oder um eine Bahnsteuerung. Wobei natürlich auch die 
Punkt-Steuerung Rampen zum Beschleunigen und punktgenauen Bremsen 
errechnen muss.

Georg

von Pepe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Georg:
Vor dem Regler ist eine Bahnsteuerung mit entsprechenden Rampen 
integriert.
Diese gibt bisher eine Soll-Position aus und der nachfolgende PID Regler 
zieht die Achse auf die Zielposition. Mit DC Motoren funktioniert dies 
soweit.

Ich suche jetzt nach einer Lösung dieses 
Drehmomentsignal(=Strom-Sollwert) zu verwenden und damit einen BLDC 
anzusteuern. Bei mir ist der Groschen noch nicht gefallen wie ich die 
Kommutierung hinbekomme.

Einfach die Hallsensoren für die "120° Ausrichtung" und den 
Quadraturencoder für die Synchronisierung mit den Werten aus einer 
sinus-förmigen LookUpTable für die PWM Anpassung der Motor-Phasen 
erscheint mir irgendwie zu einfach, wenn ich mir den Auswand ansehe, der 
bei anderen Verfahren gemacht wird.

Vielleicht denke ich auch zu kompliziert?

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Pepe schrieb:
> den
> Quadraturencoder für die Synchronisierung mit den Werten aus einer
> sinus-förmigen LookUpTable für die PWM Anpassung der Motor-Phasen

Damit habe ich noch nicht gearbeitet, aber meine Meinung dazu: der 
Betrieb des BDLC-Motors muss ohne den Quadraturencoder funktionieren, 
schon deshalb weil der Encoder bzw. der Zähler garkeinen Bezug zum 
Drehwinkel hat, solange er nicht mit dem Index-Ausgang genullt wurde, 
also bis er u.U. eine ganze Umdrehung gemacht hat. Danach ginge das, 
aber dann hast du eine Art Henne-Ei-Problem, du willst den Motor 
aufgrund der Drehwinkel-Information drehen, weisst aber garnicht wo er 
steht.

Ich denke also, dein BDLC-Antrieb muss ohne den Encoder funktionieren 
(was ja auch alle BDLC-Antriebe tun), dieser kommt erst für die 
Positionsbestimmung ins Spiel, und du brauchst dafür ausserdem eine 
Initialisierung, z.B. dass der Motor langsam dreht bis zum Index-Impuls, 
dann kannst du dieser Position einen festen Wert zuordnen - vorher 
nicht.

Anders formuliert, für mich ist der BDLC-Motor samt Ansteuerung, aber 
ohne Encoder eine Blackbox, die sich verhält wie ein anderer DC-Motor 
auch.

Georg

von Pepe (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich hatte genau so etwas überlegt. Beim Homen der Achse fahre ich mit 
Blockkommutierung und wenig Drehmoment bis der Index kommt. Dann kenne 
ich den Unterschied des Winkels zwischen Hallsensoren und dem 
Quad.Encoder und kann dann umschalten auf die Sinuskommutierung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.