Forum: Mikrocontroller und Digitale Elektronik BLDC + Hall-Sensoren


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 SBwh (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

von SBwh (Gast)


Bewertung
0 lesenswert
nicht lesenswert
SBwh schrieb:
> Nun zu meiner Frage: Ist es möglich per Software die Position der
> Hallsensoren zu ermitteln?

Als Anmerkung: Die Software soll für beide Motoren gleiche Ergebnisse 
liefern.

von Lavrans S. (larsu1212123)


Bewertung
0 lesenswert
nicht lesenswert
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...

von SBwh (Gast)


Bewertung
0 lesenswert
nicht 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.

von Lavrans S. (larsu1212123)


Bewertung
0 lesenswert
nicht 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.

von Steffen (Gast)


Bewertung
0 lesenswert
nicht 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.

von Der Dreckige Dan (Gast)


Bewertung
0 lesenswert
nicht 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.ä.)?

von SBwh (Gast)


Bewertung
0 lesenswert
nicht 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.

von Steffen (Gast)


Bewertung
1 lesenswert
nicht 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.

von Stm M. (stmfresser)


Bewertung
0 lesenswert
nicht 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

von Klaus (Gast)


Bewertung
0 lesenswert
nicht 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

von SBwh (Gast)


Bewertung
0 lesenswert
nicht 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.

von Klaus (Gast)


Bewertung
0 lesenswert
nicht 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

von SBwh (Gast)


Bewertung
0 lesenswert
nicht 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

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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