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
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.
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...
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.
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.
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.
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.ä.)?
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.
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.
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
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
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.
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
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