Forum: Mikrocontroller und Digitale Elektronik Sollposition exakt mit Brushless Getriebemotor anfahren


von Stephan R. (stero)


Lesenswert?

Hallo,

bei einem Drehteller möchte ich beliebige Winkelpositionen in einem 
Bereich von 180° exakt und zügig anfahren können.

Aus Platzgründen fällt ein kleiner Nano-Modellbauservo dafür leider aus. 
Stattdessen habe ich einen hochübersetzenden 
Mikro-Brushless-Getriebemotor (ca. 12mm Durchmesser und 8mm hoch) 
eingesetzt, der auch die erforderlichen 10000h Dauerbetrieb aushalten 
kann. Für die relative Positionsbestimmung dienen 3 Hallsensoren im 
Motor und ein zusätzlicher Endschalter für die absolute Position.

Über einen ATMEGA16M1 (spezieller Brushless-Controller) kann ich bereits 
den Motor PID-geregelt in der Geschwindigkeit einstellen. Kennt jemand 
eine C-Bibliothek oder eine Anleitung, wie man Sollpositionen anfahren 
kann?


Beste Grüße
Stephan

von Rolf Magnus (Gast)


Lesenswert?

Stephan R. schrieb:
> Hallo,
>
> bei einem Drehteller möchte ich beliebige Winkelpositionen in einem
> Bereich von 180° exakt und zügig anfahren können.
>
> Aus Platzgründen fällt ein kleiner Nano-Modellbauservo dafür leider aus.

Das bedeutet dann wohl, daß dieser Drehteller z.B. nicht dazu gedacht 
ist, daß ein Auto draufsteht?

> Stattdessen habe ich einen hochübersetzenden Mikro-Brushless-Getriebemotor
> (ca. 12mm Durchmesser und 8mm hoch) eingesetzt, der auch die erforderlichen
> 10000h Dauerbetrieb aushalten kann. Für die relative Positionsbestimmung
> dienen 3 Hallsensoren im Motor und ein zusätzlicher Endschalter für die absolute
> Position.
> Über einen ATMEGA16M1 (spezieller Brushless-Controller) kann ich bereits
> den Motor PID-geregelt in der Geschwindigkeit einstellen. Kennt jemand
> eine C-Bibliothek oder eine Anleitung, wie man Sollpositionen anfahren
> kann?

Wenn du keinen Winkelgeber hast, ist das doch im Prinzip wie bei einem 
Schrittmotor. Du hast einen bestimmten Winkel pro Schritt, und damit 
kennst du die Zahl an Schritten, die ausgeführt werden muß. Und damit 
kannst du dann eine Positionsregelung um deine Geschwindigkeitsregelung 
legen. Eine fertige C-Bibliothek kenne ich dafür nicht.

von Stephan R. (stero)


Lesenswert?

Hallo Rolf, danke für die Mühe deiner Antwort. Leider hilft sie nicht 
weiter. Kann jemand etwas substanzielles zu obiger Frage beitragen?

von UR Schmitt (Gast)


Lesenswert?

Stephan R. schrieb:
> Kann jemand etwas substanzielles zu obiger Frage beitragen?

Willst du Unterstützung oder eine fertige Lösung.
Die Antwort von Rolf war durchaus substanziell. Eine fertige Bibliothek 
die genau auf deinen Prozessor und deine Anwendung zugeschnitten ist 
wirst du schwerlich finden.
Also hilft nur selbst Hirnschmalz investieren. Wie Rolf schon gesagt hat 
bekommt du über die Sensoren Impulse pro Umdrehung. Über das 
Übersetzungsverhältnis hast du eine proportionale Zuordnung von Anzahl 
Impulse pro Winkel.
Du addierst oder subtrahierst also anhängig von der Drehrichtung und 
ausgehend von einer Referenzposition (Endschalter) die Impulse und hast 
über eine einfache Geradengleichung deine Position.
Diese Ist-Position nimmst du als Regelgröße für deine Regelung.

Deine Geschwindigkeitsregelung nützt dir übrigens relativ wenig, da 
deine Regelgröße die Position ist also das Integral (Oder diskret Summe) 
über die Geschwindigkeit. Dadurch ändert sich deine Regelstrecke 
natürlich, also muß dein Regler auch andere Parameter erhalten.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Du kannst um deinen Geschwindigkeitsregler natürlich  noch einen 
langsameren Positionsregler bauen.

Position bekommst du über deine Hallsensoren (zwar relativ aber mit 
endschalter kannst du eine Absolutposition draus machen)

von Patrick B. (p51d)


Lesenswert?

Mhm, da hast du dir aber nicht gerade etwas einfaches vorgenommen:
Ich habe etwa 3 Monate gebraucht, bis bei mir ein Positionsregler mit 
einem Poti als Referenz und einem normalen DC Motor einigermassen 
funktioniert hat. Das Problem hierbei war, die ständig ändernde 
Belastung des Motors und somit änderten sich auch sämtliche parameter.
Theoretisch funktioniert das wie ein Servo-Controller... (openservo 
hilft dir da eventuell bei den Funktionen weiter), praktisch wird das 
wohl nicht in 1-2h laufen.
Stichworte sind da Trajektion, PID, PIV, Kaskadenregelung...
Microchip hat da ganz gute application notes zu Motorregelungen, 
vielleicht findest du was.

Achja, zum Tema exakt: Du brauchst die Auflösung der Ist-Position 
mindestens 4 mahl grösser als die Position, die angefahren werden soll, 
ebenfalls muss die Position sehr stabil sein (ADC-> RC Filter -> 
Mittelwert-> Software-Tiefpassfilter)

Gruss
Patrick

von Stephan R. (stero)


Lesenswert?

Hallo Patrick,

> Mhm, da hast du dir aber nicht gerade etwas einfaches vorgenommen:
> Ich habe etwa 3 Monate gebraucht, bis bei mir ein Positionsregler mit
> einem Poti als Referenz und einem normalen DC Motor einigermassen
> funktioniert hat.Das Problem hierbei war, die ständig ändernde
> Belastung des Motors und somit änderten sich auch sämtliche parameter.
Die Problematik mit variabler Last hatte ich auch für die 
Drehzahlsteuerung. Trotz Application Note von Atmel und Bibliothek hat 
das einige Wochen benötigt.

> Theoretisch funktioniert das wie ein Servo-Controller... (openservo
> hilft dir da eventuell bei den Funktionen weiter), praktisch wird das
> wohl nicht in 1-2h laufen.
Openservo ist genau das Stichwort was ich gesucht habe. Die uC-Software 
wurde für den ATMEGA168 geschrieben und der Sourcecode ist über deren 
Homepage komplett einsehbar. Herzlichen Dank für diesen Tipp!

> Achja, zum Tema exakt: Du brauchst die Auflösung der Ist-Position
> mindestens 4 mahl grösser als die Position, die angefahren werden soll,
> ebenfalls muss die Position sehr stabil sein (ADC-> RC Filter ->
> Mittelwert-> Software-Tiefpassfilter)
Guter Hinweis. Das ist erfreulicherweise kein Problem. Ich habe ca. 4000 
Hallsensorimpulse pro 180°. Das gibt dann dividiert durch 4 immer noch 
eine Auflösung von 0,18°. Das sollte reichen. Den Filter kann ich mir 
hoffentlich sparen, weil der Motor mit dem Getriebe recht träge ist, was 
ich mal "Hardware-Tiefpass" nennen möchte.

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.