Hallo zusammen!
Vielen Dank für die vielen Anregungen!
Nur kurz zur Sinus-Cosinus-Disskusion!
Es ist mir bewusst, dass es nicht einen exakten Sinus gibt; der Fehler ist für medizinische Versuche allerdings vernachlässigbar, es geht mehr darum natürliche Belastungen zu simulieren die natürlich in der Natur auch keinem perfekten Sinus entsprechen. Allerdings wäre es mechanisch für meinen Versuchsaufbau nur sehr schwer umsetztbar mit einem Kolbenhub zu arbeiten.
@Ludwig: Ich verwende einen Linear-Schrittmotor von der Firma Zaber (NA23C60) mit einem Controller. Die stellen eine Labview-Library zur verfügung, allerdings sehr einfach gehalten. Es gibt ca. 30 Commands von denen nur etwa 5 zur Positionsveränderung sind: Move relative, Move absolute, Move at constant speed, Set speed, Set acceleration. Die Library macht eigenlich nichts anders als den Befehl in ein 6-byte Datenpacket zu wandeln und diesen an den Controller per Visa zu senden.
Ich verwende jetzt "Move at constant speed", wobei ich einen Sinus in 40/Frequenz = steps unterteile. Z.B. bei 1Hz -> 40 Steps, bei 0.5Hz -> 80steps, ect. Dann hab ich einen While-Loop in Labview und berechne abhängig von i (der Laufvariable) die aktuelle Geschwindigkeit und gebe sie per command "move at constant speed" an den Controller.
Das Problem: sobald die Commands nur einige Millisekunden verspätet an den Controller gesendet werden, verschiebt sich die absolute Position der Motorenwelle. Z.B. Windows startet eine Hintergrundaktion oder ich öffne ein Programm, der Computer ist kurzzeitig ausgelastet (wobei das Problem schon bei ca 30% Computerauslastung auftritt) und sendet den nächsten "move at const. speed"-Befehl z.B. 3ms zu spät; dann bin ich um "s=v*t" also: "aktuelle geschwindigkeit * 3ms" an einer falschen Position: was in relaität dann oft etwa 0.05mm sind, was bei einer Gesamtdehnung von 0.3mm einen ziemlich grossen Fehler ist.
Das man Bewegungsprofile übergeben kann, ist (soweit ich weiss) nicht möglich.
Was ich also bräuchte wäre eine völlig genaue Taktgebung von Labview unabhängig davon was Windows im Hintergrund bastelt. Ich habe das Metronom mal ausprobiert; ändert aber nichts. Mit timed-loop kenn ich mich nicht aus, aber werde mich heute mal einlesen.