Forum: Mikrocontroller und Digitale Elektronik Rotorwinkelbestimmung mittels Hall Sensoren eines Brushless Motors


von Dominik E. (Gast)


Lesenswert?

Hallo,

Ich habe hier einen Brushless Motor mit integrierten Hall Sensoren. Die 
Sensoren liefern im wesentlichen einen 6 Schritt Code pro elektrischer 
Periode. Anhand der Signale moechte ich den Rotorwinkel bestimmen (mir 
reicht die geringe Aufloesing da ich danach noch ein Getriebe mit hoher 
Uebersetzung habe wodurch die Aufloesung auf der Abtriebsseite 
wesentlich hoeher ist).

Die Sensorsignale sehen wie folgt aus:

A:   0    0    1    1    1    0
B:   0    0    0    1    1    1
C:   1    0    0    0    1    1
     0    60  120  180  240  360

Die drei Signale koennte ich jetzt an einen Mikrocontroller anschliessen 
und damit einen Counter inkrementieren lassen und diesen Counter dann zu 
gewuenschten Zeitpunkten auslesen. Ich benoetige das ganze jedoch in 
vierfacher Ausfuehrung und moechte nicht 12 Pins auf dem yC belegen 
(Falls ich ueberhaupt einen geeigneten finden wuerde). Daher bin ich auf 
der suche nach einer Art "Decoder-IC". Solche IC's gibt es fuer 
Quadratur Encoder (z.B. 4 Kanal Quadratur Decoder mit serieller 
Schnittstelle).

Normalerweise werden die Hall Sensoren werden zur Kommutierung 
verwendet. Ich habe bisher nur Brushless Driver IC's gefunden die ein 
Tachosignal ausgeben jedoch noch keinen der auch das Positionssignal zur 
Verfuegung stellt. Ich brauche nur das Positionssignal. Es muss also 
kein Brushless Treiber IC sein. Kennt jemand einen geeigneten Baustein?

Danke im Vorraus

Dominik E.

von Stefan F. (sfrings)


Lesenswert?

Kannst Du nicht einfach die Spannungen der drei Leitungen A, B und C mit 
drei Widerständen zusammenführen und dann über einen ADC messen?


        1k
A o----[===]--------+
                    |
        2k2         |
B o----[===]--------+
                    |
        4k7         |
C o----[===]--------+-------o zum ADC


So müsstest Du für jede der 6 Phasen eine andere Spannung erhalten.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo,

Dominik E. schrieb:

> Die Sensorsignale sehen wie folgt aus:
>
> A:   0    0    1    1    1    0
> B:   0    0    0    1    1    1
> C:   1    0    0    0    1    1
>      0    60  120  180  240  360


Das verstehe ich jetzt nicht! Für mein Verständnis sollten die Signale 
bei 0° und 360° identisch sein. Oder hat bei Dir eine Umrdehung 420°?

Bei richtig eingestellten Hallsensoren sollte der Zustand 0/0/0 übrigens 
nicht auftreten.

Grüßle,
Volker.

von Karl H. (kbuchegg)


Lesenswert?

Volker Bosch schrieb:

> Das verstehe ich jetzt nicht! Für mein Verständnis sollten die Signale
> bei 0° und 360° identisch sein.

Tippfehler.
240 + 60 macht 300 und nicht 360

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Karl Heinz Buchegger schrieb:

> 240 + 60 macht 300 und nicht 360

OK, hätte mir eigentlich auch auffallen müssen.
Trotzdem irritieren mich die Zustände 0/0/0 und 1/1/1.

Bei der üblichen Kombination von drei Hallsensoren und einem Gebermagnet 
mit der selben Polpaarzahl wie der Rotor, können diese Kombinationen 
nicht auftreten. Ich würde prüfen, ob jedes Hallsignal wirklich 
symmetrisch ist (also Tastverhältnis 50%), wenn Du den Motor gleichmäßig 
antreibst, beispielsweise mit einem Akkuschrauber.

Grüßle,
Volker.

von Dominik E. (Gast)


Lesenswert?

Völlig richtig - mein Fehler.

so stimmts.

A:   1    1    1    0    0    0
B:   0    0    1    1    1    0
C:   1    0    0    0    1    1
     0    60  120  180  240  300


Stefan Frings schrieb:
>         1k
> A o----[===]--------+
>                     |
>         2k2         |
> B o----[===]--------+
>                     |
>         4k7         |
> C o----[===]--------+-------o zum ADC

Eigentlich eine gute Idee. Mal schaun ob sich in die Richtung was machen 
lässt.

Kennt vielleicht jemand noch eine bessere/schnellere/einfachere 
Möglichkeit? Ein Counter IC der das ganze in Hardware realisiert und das 
Signal über I2C, SPI, etc. zur Verfügung stellt wär mir sehr recht.

Danke nochmal

Dominik

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Warum machst Du nicht einfach eine Porterweiterung via SPI, z.B. mit 
einem 74HC165? Je nach Drehzahl des Motors musst du da allerdings 
entsprechend oft Abfragen, aber einige kHz sollten trotzdem reichen.

Mit freundlichen Grüßen
Thorsten Ostermann

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
Noch kein Account? Hier anmelden.