Go Down

Topic: 3 Schrittmotoren gleichzeitig ansteuern (Unterschiedliche Geschwindigkeiten) (Read 471 times) previous topic - next topic

BlueGene

Hallo,
ich plane grad eine Vorrichtung, mit der automatische Kamerafahrten möglich sind. Dazu habe ich eine Schiene(Translation) und einen Panoramakopf (Drehung horizontal und Schwenken nach oben/unten).

Zum einen soll es für Timelapse verwendet werden und zum anderen für normale Videos.

Definition Timelapse:
Kamera löst aus --> Wenn das Bild fertig ist, erfolgt die Bewegung mit der Vorrichtung --> Kurze Wartezeit um Schwingungen abzuschwächen --> Kamera löst aus --> ...

Bei normalen Videos ist es einfach eine kontinuierliche Bewegung.

Ich bin Arduino-Anfänger, daher noch nicht mit allen Funktionen bzw. 100% mit der Programmierung vertraut.

So nun zum meinem Problem, bei dem ich überhaupt nicht weiß, wie man es am einfachsten umsetzen kann. Hier mal mein Ansatz:
Ich möchte vor der Aufnahme die Start-, Zwischen- und Endposition festlegen. D.h. über die manuelle Ansteuerung an die entsprechende Position fahren. Im Anhang ist ein Bild zur Verdeutlichung.

Position 0: Alle Achsen sind ausgerichtet --> Zähler für Schritte der Motoren werden auf 0 gesetzt.
Position 1: Nun werden die Achsen per Joystick oder Tasten auf die Zwischenposition gefahren. Der Joystick/Tasten verstellen dabei die Zähler für die Schritte. Wenn die Position erreicht ist, werden die 3 Werte gespeichert.
Position 2: das gleiche wie bei Position 1

Der Arduino hat also nun die Werte, die in der Tabelle stehen. Mein größtes Problem ist nun, wie ich diese Werte so verarbeite, dass eine "schöne Kurve" entsteht, also entsprechend dem Diagramm. Gibt es da schon eine fertige Library oder wie löse ich das am einfachsten?

jurs


So nun zum meinem Problem, bei dem ich überhaupt nicht weiß, wie man es am einfachsten umsetzen kann. Hier mal mein Ansatz:
Ich möchte vor der Aufnahme die Start-, Zwischen- und Endposition festlegen. D.h. über die manuelle Ansteuerung an die entsprechende Position fahren. Im Anhang ist ein Bild zur Verdeutlichung.
...
Mein größtes Problem ist nun, wie ich diese Werte so verarbeite, dass eine "schöne Kurve" entsteht, also entsprechend dem Diagramm.


Die Frage ist: Was ist für Dich eine "schöne Kurve"?

Die einfachste Kurve, die man auf jeden Fall durch drei vorgegebene Punkte legen kann, wäre eine Parabel, also ein Polynom zweiten Grades.

Ist eine Parabel als Kurve durch die Punkte bereits schön genug?

Oder brauchst Du noch etwas schöneres?

Für Parabeln kann man die Formel y=f(x) ansetzen mit y= ax^2 + bx + c

Wenn man den Koordinatenursprung so legt, dass er bei x=0 und y=0 liegt, ist auf jeden Fall c=0, so dass sich die Formel vereinfacht zu:

y= ax^2 + bx

Das ist nichts anderes als am Ausgangspunkt alles auf null setzen.

Und wenn für je zwei Punkte  (Punk1 und Punkt2) die x- und y-Werte bekannt sind, lassen sich dadurch die Parameter a und b der Parabel berechnen. Hat man aber a und b erstmal, kann man nach der Formel y= ax^2 + bx für jedes x auch das dazugehörende y ausrechnen.

Das prinzipielle Vorgehen ist immer dasselbe, egal ob x nun eine Wegstrecke in eine bestimmte Richtung ist, oder eine Zeitachse auf der die Zeit läuft: Erst die Parabelparameter berechnen, danach kann man für jedes beliebige x den dazugehörenden y-Wert ausrechnen.

Edit/Nachtrag: Wobei "x" dann am besten eine Variable ist, die sich linear verhält und für alle drei Schwenkachsen/Bewegungen dieselbe ist: Am besten für x also die Laufzeit der Filmszene in Sekunden, oder noch besser vielleicht sogar die Bildzahl in der Szene. Also bei 25 Bildern/sec (oder was auch immer Deine Aufnahmegeschwindigkeit ist): Szenenstart bei x=0, nach einer Sekunde x=25, nach zwei Sekunden x=50, nach drei Sekunden x=75, etc..  Das hätte den Vorteil, dass Du für jedes einzelne Bild ganzzahlige Werte von x hättest, die einfach als Integer-Zahl vorab berechnet werden kann und mit den dazugehörenden Stepper-Werten der Motoren für Translation und Rotation weggespeichert werden können (z.B. vorab auf SD-Karte). Die Stepper-Werte der Schrittmotoren sind sowieso ganzzahlig.

Nach dem Teach-in per Joystick und der Berechnung hat man also eine Datei auf SD-Karte, fertig berechnet für jedes Bild. Am einfachsten ist es dann für Zeitraffer-Szenen zu steuern: Einfach immer je einen Datensatz von SD-Karte einlesen, die Schrittmotoren ihren jeweiligen Stepper-Wert anfahren lassen, auslösen, und das so oft wiederholen wie Bilder in der Szene enthalten sind.

Go Up