BLDC + Hall-Sensoren

Gast #5167760
Lesenswert?
• ▲
▼
Guten Abend zusammen,

ich habe hier zwei BLDC Motoren welche jeweils mit 3 Hall-Sensoren 
ausgestattet sind. Problematik ist nur, dass die Abstände der 
Hall-Sensoren zueinander sich bei beiden Motoren unterscheiden. Anbei 
habe ich zwei Bilder die die zwei unterschiedlichen Positionen zeigen.

Nun zu meiner Frage: Ist es möglich per Software die Position der 
Hallsensoren zu ermitteln?


Danke
Angehängte Dateien:
Gast
Lesenswert?
• ▲
▼
Lavrans S. schrieb:
> Guten Abend,
> das wird meineserachtens schwer. Warum muss die Position der
> Hall-Sensoren denn bekannt sein? Die sollen doch eigentlich nur einen
> erfolgreichen "Step"(ist mir klar, dass das keine Schrittmotoren sind)
> auswerten und dadurch die Kommutierung auslösen...

Danke für die Antwort. Dann ist meine Frage, werden die erzeugten Werte 
der beiden Motoren identisch sein?

Mein Ziel ist es, anhand der Flankenwechsel der Hall-Sensoren auch 
Geschwindigkeit und Lage des Motors zu erfassen.
Lesenswert?
• ▲
▼
Die Werte sollten für die selbe Geschwindigkeit identisch sein, solange 
die Motoren die gleiche Anzahl an Permanentmagneten (den gleichen 
Rotordurchmesser) haben.
Zur Messung der drehgeschwindigkeit muss als Konstante bekannt sein, wie 
weit sich der Motor bei einer Auslösung der Sensoren dreht. Dan kann 
über den Abstand der Auslösungen die Geschwindigkeit berechnet werden.
Was die Lage der Motoren angeht, muss die gleiche Konstante wie eben 
bekannt sein. Jedoch muss jetzt zusätzlich auch eine Ausgangsposition 
vorgegeben sein, denn über die Flankenwechsel kann ja nur bestimmt 
werden wie weit sich der Motor gedreht hat, nicht wie bei einem Servo, 
wo er sich genau befindet.
Gast
Lesenswert?
• ▲
▼
Die Hall-Sensoren dienen der Kommutierung. Daher ist die Position der 
Hall-Sensoren durch die Geometrie und den Aufbau des Motors fest 
vorgegeben. Und zwar so, dass alle 60° (elektrisch) eine Hall-Flanke 
kommt.

Um auf die Geschwindigkeit des Rotors zu schließen, braucht man dann nur 
noch die Polpaarzahl des Motors wissen.

Beispiel:
Du misst 6 Hall-Flanken pro Sekunde und der Motor hat eine Polpaarzahl 
von 3.
Dann dreht sich der Motor elektrisch mit 360°/s und mechanisch mit 360/3 
°/s = 120°/s.
Gast
Lesenswert?
• ▲
▼
Na das sind mal merkwürdige Motoren. Dort sitzen die Sensoren nicht 
zwischen den Spulen, sondern direkt darin. Beim rechten Modell sogar 
teils, teils.

Vermute daher mal, die Motoren sind für geringe Leistungen gebaut worden 
(Festplatte, Floppy o.ä.)?
Gast
Lesenswert?
• ▲
▼
Lavrans S. schrieb:
> Die Werte sollten für die selbe Geschwindigkeit identisch sein, solange
> die Motoren die gleiche Anzahl an Permanentmagneten (den gleichen
> Rotordurchmesser) haben.

Beide Motoren haben eine Polpaarzahl von 9 mit 27 Permanentmagneten. Der 
Motor soll mittels PWM angesteuert werden. Im Endeffekt FOC

Steffen schrieb:
> Du misst 6 Hall-Flanken pro Sekunde und der Motor hat eine Polpaarzahl
> von 3.
> Dann dreht sich der Motor elektrisch mit 360°/s und mechanisch mit 360/3
> °/s = 120°/s.

Danke, dass kann ich auch gebrauchen :)

Anhand dieser Seite: http://embeddedlightning.com/bldc_motor/

Wollte ich meine Regelung aufbauen. Da ich keinerlei Sinus-Source-Quelle 
zur Verfügung habe, war nun die Idee die Lage des Motors, anhand der 
Hall-Sensoren zu ermitteln und demnach die jeweiligen Phasen per PWM 
anzusteuern.
Wie Herr Lavrans beschrieben hat, sind dafür 6 Position vorhanden.
Gast
Lesenswert?
• ▲
▼
Ich weiß nicht wie hochwertig die Stromregelung sein soll, aber für eine 
richtige FOC reicht die Auflösung der Hall-Sensoren normalerweise nicht. 
Da kann man auch gleich einfach eine Blockkommutierung laufen lassen und 
spart sich die ganze Transformiererei.
Für eine richtige FOC müsste man z. B. noch einen Inkremental-Encoder 
ergänzen, der deutlich mehr Flanken pro Umdrehung liefert als 
Hall-Sensoren.
Lesenswert?
• ▲
▼
Steffen schrieb:
> Ich weiß nicht wie hochwertig die Stromregelung sein soll, aber für eine
> richtige FOC reicht die Auflösung der Hall-Sensoren normalerweise nicht.
> Da kann man auch gleich einfach eine Blockkommutierung laufen lassen und
> spart sich die ganze Transformiererei.
> Für eine richtige FOC müsste man z. B. noch einen Inkremental-Encoder
> ergänzen, der deutlich mehr Flanken pro Umdrehung liefert als
> Hall-Sensoren.
Es sei denn, dass er den Winkel mittels Kalman Filter schätzt anhand der 
Inkremementen
Gast
Lesenswert?
• ▲
▼
Steffen schrieb:
> Für eine richtige FOC müsste man z. B. noch einen Inkremental-Encoder
> ergänzen, der deutlich mehr Flanken pro Umdrehung liefert als
> Hall-Sensoren.

Das ist nicht unbedingt erforderlich. Anhand der Zeit, die der Motor für 
die letzte Umdrehung gebraucht hat, kann man aufgrund der mechanischen 
Trägheit die Position recht genau aus der aktuellen Zeit bestimmen. Das 
ist hier beschrieben (AVR447)

www.atmel.com/images/doc8010.pdf

Man muß auch nicht jedes Problem mit dem Kalman erschlagen.

MfG Klaus
Gast
Lesenswert?
• ▲
▼
Klaus schrieb:
> Das ist nicht unbedingt erforderlich. Anhand der Zeit, die der Motor für
> die letzte Umdrehung gebraucht hat, kann man aufgrund der mechanischen
> Trägheit die Position recht genau aus der aktuellen Zeit bestimmen. Das
> ist hier beschrieben (AVR447)
>
> www.atmel.com/images/doc8010.pdf
>
> Man muß auch nicht jedes Problem mit dem Kalman erschlagen.
>
> MfG Klaus

Geh ich davon richtig aus, dass ich bei einer 9 poligen Maschine 
beispielsweise jeden 9. Flankenwechsel als eine Umdrehung ansehen kann?

Ebenso habe ich anhand der 27 Permanentmagnete in dem Sinne doch keine 
Auflösung von 60° für Berechnung der Zeiger sondern "6,66°" oder bin ich 
total auf dem Holzweg.
Gast
Lesenswert?
• ▲
▼
SBwh schrieb:
> Ebenso habe ich anhand der 27 Permanentmagnete in dem Sinne doch keine
> Auflösung von 60° für Berechnung der Zeiger sondern "6,66°" oder bin ich
> total auf dem Holzweg.

Bei solchen Motoren wird zwischen einer "elektrischen" und einer 
"mechanischen" Umdrehung unterschieden. Am einfachsten kann man das 
erkennen, wenn man den Motor als Generator betreibt und sich die 
erzeugte Spannung auf dem Scope anzeigt. Eine vollständige 
Sinusschwingung ist eine "elektrische" Umdrehung. Auch an den 
Hallsensoren findet man das wieder. Aus elektrischer Sicht wiederholen 
sich alle Signale danach. Je nach Polzahl kommen eine oder mehrere 
elektrische Umdrehungen auf eine mechanische. Winkelangaben bei BLDC 
Motoren beziehen sich typischerweise auf elektrische Umdrehungen. Das 
macht sie unabhängig von der Polzahl des Motors.

MfG Klaus
Gast
Lesenswert?
• ▲
▼
Klaus schrieb:
> Bei solchen Motoren wird zwischen einer "elektrischen" und einer
> "mechanischen" Umdrehung unterschieden. Am einfachsten kann man das
> erkennen, wenn man den Motor als Generator betreibt und sich die
> erzeugte Spannung auf dem Scope anzeigt. Eine vollständige
> Sinusschwingung ist eine "elektrische" Umdrehung. Auch an den
> Hallsensoren findet man das wieder. Aus elektrischer Sicht wiederholen
> sich alle Signale danach. Je nach Polzahl kommen eine oder mehrere
> elektrische Umdrehungen auf eine mechanische. Winkelangaben bei BLDC
> Motoren beziehen sich typischerweise auf elektrische Umdrehungen. Das
> macht sie unabhängig von der Polzahl des Motors.
>
> MfG Klaus

Herzlichen Dank, dass ich grob gesagt 9 elektrische Umdrehungen für eine 
mechanische Umdrehung habe war mir bewusst. Dementsprechend fallende 
Flanken für den Hall-Sensor. Anhand der Detektion von x-Flanken kann ich 
eine mechanische Umdrehung detektieren.

Anhand der Detektion der fallenden Flanken der Hall-Sensoren wird meine 
FOC eingeleitet und mit Hilfe von PI nachgeregelt. Soweit der Plan.

Eine Beispiel FOC habe ich hier gefunden.
https://www.mikrocontroller.net/attachment/highlight/152219
Mit Hilfe Ihres Links bezüglich Atmel komm ich der Materie schon um 
einiges näher. Danke Ihnen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.