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
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.
Hallo Rolf, danke für die Mühe deiner Antwort. Leider hilft sie nicht weiter. Kann jemand etwas substanzielles zu obiger Frage beitragen?
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.
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)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.