Hallo zusammen, ich arbeite gerade an einem Projekt mit BLDC Motoren, die 3 Hall Sensoren als Lage bzw. Geschwindigkeitssensor benutzen. Ich kenne mich mit feldorientierter Regelung sehr gut aus und versuche gerade auch hier eine feldorientierte Regelung aufzusetzen. Deshalb versuche ich einen einigermaßen präzisen Winkel der Hallsensoren zu bekommen. Ich lese gerade die Sensoren ein und mache auch einen Offset Abgleich für jeden Hallsektor bzw. Hallzustand. Ich drehe also zum Beispiel im open-loop mit d-Spannungsvorgabe und gleiche dann den erkannten Hallwinkel daran an. Das mache ich jetzt zum Beispiel bei 30Hz elektrischer Drehfrequenz. Mir ist jetzt aufgefallen, dass sich bei 100Hz mein Offset leicht verschiebt (ca.10%). Wenn ich mir eine Hallzustände anschaue, sehe ich auch, dass diese sich mit Drehzahl mehr oder weniger ein bisschen mitbewegen. Ich habe leider keine Erfahrung mit BLDC Motoren, die mit Hall-Sensoren funktionieren und wollte mal fragen, ob jemand weiß, ob dieses Verhalten "normal" ist und ich den physikalischen Effekt nicht verstehe, oder ob ich etwas an der Software falsch mache. Ich lese die Sensoren mit 20kHz aus und drehe sehr langsam (30Hz bzw 100Hz elektrischer Frequenz) deshalb denke ich, dass der Drift durch das auslesen nicht so groß ist. VG
xone92 schrieb: > Ich lese die Sensoren mit 20kHz aus und drehe sehr langsam (30Hz bzw > 100Hz elektrischer Frequenz) deshalb denke ich, dass der Drift durch das > auslesen nicht so groß ist. Ich gehe mal davon aus, dass von den Hallsensoren die Rotormagnete direkt erfasst werden (kein Sensormagnet am Wellenende und die von dir genannten Dreh-Frequenzen sind alle elektrisch). 1. Versatz durch PWM-Schattenregister Üblicherweise werden die im aktuellen PWM-Zyklus errechneten Steuersignale erst in der darauffolgenden PWM-Periode tatsächlich gestellt. Allein dadurch hast du einen zeitlichen Versatz der gerade eingelesenen Hallsignale zum gestellten PWM-Pattern von einer PWM-Periode. Der daraus resultierende Winkelfehler beträgt bei deinem 20kHz PWM-Task bei 30Hz schon 0,54° und bei 100Hz 1,80°. xone92 schrieb: > Ich drehe also zum Beispiel im open-loop mit d-Spannungsvorgabe 2. Versatz durch nacheilenden Rotor Für das Drehmoment, das sich ausbilden muss, um den Rotor mitzuziehen, muss sich aus Rotorsicht ein q-Strom ergeben. Der kommt dadurch zustande, dass der durch Reibung, Cogging... gebremste Rotor in deiner Betriebsart dem d-Feld im Winkel ein wenig nacheilt. Wenn man annimmt, dass die Reibung usw. proportional zur Drehzahl ist, erhälst du zusätzlich ein von der Drehzahl abhängigen negativen Fehlwinkel. Im Normalbetrieb, wo man Drehmoment mit q macht, muss ggf. nur der Effekt 1 kompensiert werden. mfg mf
:
Bearbeitet durch User
PS, und nicht wenig davon... Es empfiehlt sich, die Hallsensor-Flanken über Timerhardware einzulesen und damit einen Observer zu füttern, der dir einen zu Beginn der PWM-Periode passenden "genauen" Winkel liefert. Ansonsten kann von Flanke bis Einlesen eine Latenz von bis zu einer PWM-Periode bestehen, der dir einen Effekt wie obig 1, aber nicht deterministisch proportional zur Drehzahl beschert. Völlig außen vor gelassen habe ich statische oder schlimmer Feldstärke-Abhängige Latenzzeit eines Hallsensors von Feldänderung-bis-Flanke. Uuund es kann u.U. 50% meiner Ergüsse nichtig sein, wenn du lineare Hallsensorik hast. Da würde ich die 3 Signale (minus VCC/2) per Clarke-inverse in ab-Signale wandeln und einen Observer drauf laufen lassen, wie er z.B. in https://www.nxp.com/docs/en/application-note/AN3943.pdf (das Ding mit Kreuzprodukt sind/cos, nach der Resolver-Demodulation) beschrieben ist. Oder halt ein simpler atan2, aber der ist allergisch auf punktuelle Störungen und gibt da ggf. gleich absurde Fehlwinkel aus. mfg nf
:
Bearbeitet durch User
Hallo Achim, vielen dank für deine Antwort! Ich habe mal Bilder mit dem Oszi aufgenommen, vielleicht kannst du dann noch mehr damit anfangen https://imgur.com/a/S9ZYfGI In Grün ist da open-loop Vorgabesignal, in Gelb der Interpolierte Hallwinkel, bzw der Hallwinkel zum zugehörigen Hallsektor. Wie würdest du denn (ohne observer) den Hallwinkel bestimmen, bzw. den Offset? Ich habe einen Hardwaretimer zu flankenerkennung, um mir die Geschwindigkeit und auch die Zeit in einem Hallsektor sehr genau bestimmen zu können, werfe aber keinen Interrupt, sondern lasse meinen Controltask mit 20kHz laufen und ledes dort den entsprechenden Zustand an den GPIOs aus und dann aus die Register der Hardwaretimer, um den Winkel zu interpolieren. VG
xone92 schrieb: > ledes dort den entsprechenden Zustand an den GPIOs aus und dann aus die > Register der Hardwaretimer, um den Winkel zu interpolieren. Dann ist das schon das richtige. "Hochauflösendes" Winkelsignal brauchst du nur bei Sinuskommutierung. Da bin ich aber von ausgegangen, weil du was von d-Spannung geschrieben hast. Aus dem Zeitpunkt der letzten Hallflanke und der Geschwindigkeit kannst du dir den Winkel errechnen, der zum (gemittelten) Zeitpunkt der letzten Strommessung vorgelegen haben muss. Ach ja, haste ja, "interpolierter Hallwinkel". Den resultierenden Spannungsvektor musst du dann halt in die Zukunft weiter drehen, damit er zum richtigen Zeitpunkt gestellt wird. xone92 schrieb: > Ich habe mal Bilder mit dem Oszi aufgenommen, vielleicht kannst du dann > noch mehr damit anfangen https://imgur.com/a/S9ZYfGI > In Grün ist da open-loop Vorgabesignal, in Gelb der Interpolierte > Hallwinkel, bzw der Hallwinkel zum zugehörigen Hallsektor. Die Bilder musst du (leider) selber interpretieren. Woher weiß ich, ob ich hier nicht indirekt die Konkurrenz meines derzeitigen Arbeitgebers unterstütze? ;) Mit meinem obigen Geschreibsel solltest du schon in der Lage sein, zu bewerten was da passiert. Vielleicht hilft es, ein Fehlwinkel vs. Geschwindigkeit in einem Diagramm aufzutragen. An der Kurve siehst du dann ob du einen statischen und einen linear von der Geschwindigkeit abhängigen Offset hast. mfg mf
Hallo Achim, danke nochmal für die Antwort. Ganz genau, ich würde gerne Sinuskommutierung machen. Auf einen observer wollte ich erstmal verzichten, dass kann ich dann immer noch später mal machen. Ich wollte erstmal verstehen, wie man es prinzipiell macht bei Hallsensoren. Wenn ich eine q-Spannungsvorgabe mache, sehe ich dass mein abgeglichener Winkel ca. 90° versetzt ist, das bestätigt mir eigentlich eher dass ich alles richtig mache. Keine Sorge, es ist nur ein Hobbyprojekt für mein e-Kettcar für meinen Sohn. Hab vor langer Zeit mal E-technik studiert, bin aber nur noch informatiker jetzt ;) VG
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.