Winkel mittels zweier um 120° versetzter Hall-Sensoren bestimmen

Gast #883246
Lesenswert?

Hallo,

ich stehe gerade etwas auf dem Schlauch: Ich soll den Winkel eines 
BLDC-Motors bestimmen und habe hierzu nur die drei um jeweils 120° 
verschobenen Signale der integrierten Hallsensoren zur Verfügung. Wie 
kann ich hieraus möglichst einfach den Drehwinkel bestimmen? Ein 
Mikrocontroller mit ADC-Eingängen steht hierfür zur Verfügung. Wären die 
Sensoren um 90° zueinander versetzt, kann ich einfach den 
arctan(Signal1/Signal2) nehmen, aber bei 120°?

Mark
Gast #883279
Lesenswert?

Vielen Dank für die qualifizierte Aussage, nur hilft mir das nicht 
weiter. Ich komme wirklich gerade nicht weiter, wenn ich die beiden 
Messwerte habe und den resultierenden Winkel zwischen 1 und 360° 
bestimmen will.
Gast #883314
Lesenswert?

Soweit ich weiß, sind die Sensoren analog, doch das zu erfassende Signal 
wird mittels Interruptflanke an einem mC Pin erfasst, so dass man 
tatsächlich nur eine 30° zur Verfügung hat. Am besten schaust Du doch 
einfach mal in eine Application Note (es gibt unzählige, jeder mC 
Hersteller hat mind. eine mit Hall-Sensoren!!!)
(Firma: Q3) #883315
Lesenswert?

Wenn es sich nicht um spezielle werksseitig kalibrierte 
Winkelgeber-Versionen handelt, wird es schwierig mit der Geanuigkeit. 
Ich denke, es wird ohne Look-Up-Table nicht oder nur mit erheblichem 
Aufwand klappen.

Ansonsten: 2 Hall-Sensoren --> 2 ADC-Kanäle ergeben die zwei Koordinaten 
in einer großen Matrix, aus der du dann den zugehörigen WInkel ausliest. 
In der Firmware könnte man gleich einen Teach-In-Lernmodus einbauen.

Frank
Gast #883318
Lesenswert?

Das Problem ist, dass sie alle die Hallsignale digital erfassen (analoge 
halt über Komparator) und dann den Motor in Block-Kommutierung 
bestromen. Wird mit einem Sinus bestromt, werden die Zwischenschritte 
über die Zeit interpoliert. Dafür ist jedoch eine konstante Drehzahl 
nötig, die ich nicht haben werde.
Gast #883352
Lesenswert?

Wenn der erste Sensor mit dem Messwert s1 am Winkel 0°, der zweite mit
dem Messwert s2 am Winkel 120° liegt und der Rotor 1 Polpaar hat, kann
der Winkel des Rotors folgendermaßen berechnet werden:
1
winkel = atan2(s1+2*s2, s1*sqrt(3));

Die Konstante sqrt(3) braucht natürlich nur einmal berechnet werden.
Hat der Rotor n Polpaare, muss der Winkel noch durch n dividiert und
die Anzahl der Perioden mitgezählt und berücksichtigt werden, um ein
eindeutiges Ergebnis zu erhalten.

Bei zwei um 120° versetzten Sensoren wird das Ergebnis stärker von
Messfehlern beeinflusst als bei 90°. Wenn du damit leben kannst, ist
alles ok, wenn nicht, müsste man alle drei Messwerte bei der Messung
berücksichtigen. Dann wird aber die Berechnung komplizierter.

Das Ergebnis ist natürlich nur so genau wie die Messungen. Wichtig
hierbei ist, dass die Sensoren tatsächlich ein sauberes Sinussignal
liefern und beide Signale die gleiche Amplitude haben.

Wenn dies nicht der Fall ist und du lieber mit Tabellen arbeiten
möchtest, wie es Frank vorgeschlagen hat, würde ich evtl. so vorgehen,
dass abhängig von der Winkelstellung des Rotors immer nur einer der
drei Sensoren ausgwertet wird, nämlich derjenige, dessen Signal in
einem Bereich von ±30° um einen der beiden Nullpunkte des Sinussignals
liegt. Da dort die Steigung des Signals am größten ist, ist die
Genauigkeit höher als für die jeweils anderen beiden Sensoren. Jeder
der drei Sensoren bekommt also eine eindimensionale Umsetzungstabelle
für diesen ±-30°-Bereich. Läuft der Rotor aus diesem Bereich hinaus,
wird auf den nächsten Sensor umgeschaltet.

Dieses Vorgehen erspart ein nebenbei speicherintensives zwei- oder gar
dreidimensionales Array zur Umsetzung der Werte.
Gast #883433
Lesenswert?

Hi Mark,

Du könntest deine drei 120° phasenverschobenen Signale (a, b, c) in ein 
orthogonales Ersatzsystem (alpha, beta) umrechnen und dann mittels atan2 
den Lagewinkel berechnen:

alpha = a
beta = 1/sqrt(3)(a + 2*b)
phi = atan2(beta,alpha)

Du benötigst also nur zwei AD-Signale da das dritte Signal redundant 
ist. (a+b+c=0)

Hierzu kannst Du auch mal unter dem Stichwort Clarke Transformation 
googlen.

Gruß,
Ralf
Gast #883439
Lesenswert?

viel zu kompliziert


die antwort wahr schon da der Korrektur wert ist zum arctan = tan(30°)
Dieser wird vor der berechnung von arctan aufadiert bzw abgezogen (Stich 
wort Offsetverschiebung).
Und schön ist.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren