PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welcher Motor für Linearantrieb (Kameraslider)?



BlueGene
30.09.2012, 21:28
Hallo,

ich habe einen Kameraslider aus item-Profilen, Zahnriemen und einem Getriebe-DC-Motor gebaut. Gesteuert wird alles über einen Arduino Uno.

Die Hauptfunktion der Kameraschiene ist die Shot-Move-Shot-Funktion, d.h. der Schlitten, auf dem die Kamera sitzt, wird um ein ganz kleines Stückchen bewegt, bleibt stehen, Kamera löst aus, Schlitten bewegt sich wieder usw.

Die Schiene ist ca. 140 cm lang.

So, nun zum Problem:
Der DC-Getriebemotor, den ich momentan verwende, hat blöderweise 2 Eigenschaften, die unerwünscht sind:
- Links-/Rechtslauf sind nicht synchron, warum auch immer. D.h. der Schlitten braucht in die eine Richtung etwas weniger Zeit, als wenn er in die andere Richtung fährt.
- Wenn die Schiene schräg steht, wird durch das Gewicht der Kamera wird der Schlitten nach unten gedrückt. Geschwindigkeiten von Ab- und Aufwärtsfahrt unterscheiden sich deutlich.

Da ich mir aber nicht jedes Mal Gedanken machen will, in welche Richtung oder in welchem Winkel der Schlitten fährt und ich dementsprechend die PWM-Leistung bzw. die Motorfahrzeit anpassen muss, suche ich nun nach einem Motor, der die o.g. Eigenschaften nicht hat.

Dabei hatte ich schon 3 verschiedene Lösungsansätze:
- Schrittmotor: Exaktere Positionierung möglich, großer Nachteil: Fällt das System aus, fällt auch meine schwere Kamera, sofern die Schiene schräg steht. Außerdem nehme ich mal an, dass der Stromverbrauch deutlich höher sein wird, da der Motor ständig versorgt wird und das Kameragewicht halten muss. Die Schiene nutze ich aber ausschließlich Outdoor und will den Stromverbrauch so gering wie möglich halten.

- Getriebemotor EMG30 mit eingebautem Drehgeber: die Drehzahl von 216 UMin ist deutlich zu hoch, meiner hat momentan ca. 12 UMin. Außerdem weiß ich nicht, wie genau ich den ansteuern kann. Kann ich mit dem Arduino den Motor einfach impulsweise (360 pro Umdrehung) fahren lassen, oder verfälscht sich der Wert?

- Messung per BCD-Code oder ähnlichem System. Also auf der Schiene eine Skalierung anbringen, die von einem Sensor ausgelesen wird und den Schlitten immer bis zum nächsten Strich fahren lassen. Jedoch habe ich mich damit noch nie vorher beschäftigt und weiß nicht, wie man sowas kostengünstig realisieren kann.

ranke
03.10.2012, 10:15
großer Nachteil: Fällt das System aus, fällt auch meine schwere Kamera, sofern die Schiene schräg steht.

Das ist natürlich ein Ausschlußkriterium aber keines das man unbedingt dem Schrittmotor zuschreiben müsste sondern eher dem Fehlen eines Übersetzungsgetriebes (mit entsprechender Reibung an der schnellen Seite). Wenn man also den Schrittmotor mit Getriebe ausrüstet dann wäre das schon eine denkbare Alternative.
Vom bisher gesagten habe ich aber den Eindruck, dass der bisher verbaute Motor mechanisch in das System passt. Störend ist die nicht konstante Drehzahl, die von Drehrichtung und Last abhängt. Die bisher offenbar praktizierte Zeitsteuerung sollte also durch eine Regelung abgelöst werden, die die Wegstrecke (oder Drehwinkel am Motor oder im Getriebe oder am Abtrieb) als Regelgröße hat.
Könnte man z.B. so eine Schlitzscheibe (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=71&products_id=245)am Abtrieb befestigen und mit zwei Gabellichtschranken auswerten?

BlueGene
03.10.2012, 10:29
Die Messung der Wegstrecke erscheint mir auch am sinnvollsten.

Vorhin habe ich festgestellt, dass die Drehzahl natürlich auch von der Akkuladung (Versorgungsspannung) verändert wird. Das habe ich vorher nicht bedacht bzw. bin nicht davon ausgegangen, dass doch so viel Ladung verbraucht wird.

Wieso brauche ich zwei Gabellichtschranken, reicht da eine nicht aus? Diese z.B.:
http://www.conrad.de/ce/de/product/185377/

Gibt´s irgendwo einen Beispielcode für Arduino wie man mit mit so einem System den Motor steuern kann?

dussel07
03.10.2012, 10:36
Zwei brauchst Du, damit erkannt wird ob sich der Motor rechts oder links dreht.
Am einfachsten könnte man zum Testen mal ein Drehkoder/Drehimpulsgeber an der Motorachse befestigen (muß nicht unbedingt direkt die Achse sein - kann ja auch per Zahnrad angedockt werden, was die Auflösung etwas flexibler gestaltet).
Diese Drehimpulsgeber verhalten sich ähnlich wie die beiden Gabellichtschranken und die Schlitzscheibe.
Mit zB. Bascom ist die Auswertung eines Drehimpulsgebers / Encoders recht simpel -
Siehe zB. HIER (http://www.rn-wissen.de/index.php/Drehencoder)

Noch ein Einfall:
Da gebräuchliche Drehcoder vieleicht nicht so unbedingt geeignet sind könnte man auch einen alten Schrittmotor aus einem Drucker entsprechend auswerten!
Hatte HIER (http://daselektronikerforum.de/viewtopic.php?f=27&t=5709&p=49607&hilit=encoder&sid=31dae61c0d62030e910305ee15b11bab#p49607) mal einiges zum Thema Schrittmotor als Drehgeber zusammengetragen

BlueGene
03.10.2012, 10:49
Die Links- oder Rechtsdrehung wird über eine Taste gesteuert, eine Erkennung ist also überflüssig.

dussel07
03.10.2012, 11:02
Dann braucht es tatsächlich nur eine Gabellichtschranke /Reflexkoppler /Schrittmotor (als Impulsgeber) /Hallsensor und ein einfaches Zählprogramm.
Wird dann sicher nicht tausendprozentig aber für Deine ZWecke sollte es völlig ausreichen.

ranke
03.10.2012, 11:04
Zwei Lichtschranken braucht man, weil man nicht nur die Drehzahl sondern auch die Drehrichtung feststellen will. Sonst ist eine Stellungsregelung kaum sinnvoll möglich. Der Regler weiss ja bei einem Impus von der Lichtschranke nicht unbedingt in welcher Richtung sich der Kameraschlitten vom Sollwert wegbewegt - er weiss nur wie er den Motor gerade bestromt, der Rückschluss auf die Bewegungsrichtung muss aber nicht in allen Fällen eindeutig sein.
Mit zwei Lichtschranken die so angeordnet sind, dass eine schaltet, während die andere gerade ein konstantes Signal hat, kann man die Drehrichtung eindeutig feststellen (Suchbegriff: Quadratursignal).
Die von dir verlinkte Lichtschranke besteht schon aus 2 versetzt angeordneten Empfängern und einem Sender, also genau das, was man für den Zweck eigentlich braucht. Leider muss - je nach Linienbreite der Encoderscheibe - ein bestimmter Abstand der beiden Lichtschranken eingehalten werden, eben so, dass sie nicht zufällig gleichzeitig schalten. Die von Dir verlinkte Lichtschranke ist für 150 Linien pro inch ausgelegt, die Encoderscheibe von robotikhardware hat ungefähr 40 lpi. Als Bastler eines Einzelstücks kann man sich den Luxus erlauben zwei einzelne Lichtschranken zu nehmen, gegeneinander im Abstand zu justieren und anschließend die gefundene Stellung zu fixieren.
Beispielcode für Ardunio kann ich leider nicht geben. Das Prinzip ist, einen (vom Zeitprogramm vorgegebenen) Sollwert mit dem über das quadratursignal festgestellten Istwert zu vergleichen (mathematisch: Man bildet die Differenz) und daraus gehend den Motor zu bestromen. Es gibt ein paar Tücken im einfachen System, z.B. kann bei zu "scharfer" Auslegung des Reglers das Ganze anfangen um den Sollwert zu schwingen. Ob so etwas auftritt hängt aber auch stark von der ganzen Mechanik ab (Getriebeübersetzungen, Schwungmassen etc.) und kann im Allgemeinen durch eine Anpassung der Regelparameter eleminiert werden.

BlueGene
03.10.2012, 11:06
Die Gabellichtschranke erscheint mir am sinnvollsten, da der Bauraum doch recht begrenzt ist: 23356

Wie dick ist die o.g. Scheibe? Die Gabellichtschranke hat einen Spalt von 1.7mm

dussel07
03.10.2012, 11:08
Um die Positioniergenauigkeit zu verbessern würde ich einfach mit Rampen arbeiten -

ranke
03.10.2012, 17:28
Wenn die Positioniergeschwindigkeit nicht zu dynamisch ist kann man wahrscheinlich mit einer Lichtschranke auskommen. Man lässt den Motor in die betreffende Richtung laufen bis die voreingestellte Anzahl von Impulsen von der Lichtschranke kam und schaltet den Antrieb dann aus bis zum nächsten Laufbefehl. Das läst sich vermutlich recht einfach programmieren und vermeidet einige Probleme einer vollständigen Stellungsregelung.
Als Nachteil müsste man verkraften, dass vielleicht mal ein Impuls mehr überlaufen wird (weil der Schlitten bergab nicht schnell genug zum Stillstand kam) und dass eine ungewollte Verschiebung von außen eventuell nicht richtig erkannt wird.
Um Motor und Batterie zu schonen sollte man erkennen wenn der Schlitten gegen einen Endanschlag gefahren wurde (entweder Endschalter oder eine automatische Abschaltung, wenn beim Verfahren die Impulse für eine bestimmte Zeit ausbleiben).