ich bin neu hier und habe noch nichts passendes gefunden.
Daher stelle ich eine Frage und hoffe, ihr könnt etwas Licht in mein Dunkel bringen.
Ich habe einen Kamera Slider, einen Schrittmotor und einen Encoder.
Nun möchte ich eine Position manuell anfahren, diese Position speichern, eine zweite Position als Endpunkt anfahren und ebenfalls abspeichern.
Dann soll die erste Position automatisch angefahren werden und von dort, mit Schrittvorgabe der Weg zu zweiten (Endposition) abgefahren werden.
Ist das so möglich?
Vielleicht gibt es irgendwo ein Tutorial oder eine ähnliche Lösung, an der ich mir Beispiele ansehen könnte, denn die Realisierung erschließt sich mir noch nicht so ganz.
Hast Du denn bereits den Encoder wie den Stepper programmieren können?
Du brauchst ja eine Möglichkeit, daß der Arduino den Stepper 'frei gibt' - sonst versucht Er mit aller Gewalt (und Ihm zur Verfügung stehendem Strom) den Stepper genau in dieser Position zu halten.
Sonst:
-Startpunkt einstellen (Kamera verdrehen - Stepper muß frei sein)
-Knopf drücken -> Encoder auslesen und Position als Start merken
-Endpunkt einstellen (...)
-Knopf drücken -> Encoder auslesen und Position als Stop merken
-Referenz-Knopf drücken -> Stepper verfährt zur Position Start, dabei wird der Encoder laufend ausgelesen und entsprechend gestoppt
-Run-Knopf drücken -> Stepper verfährt mit vorgegebener Geschwindigkeit (Wartezeit z. Steps) Richtung Stop, auch hier wird wieder der Encoder auslesesen ect.pp.
Eigentlich bräuchtest Du hier keinen Stepper, ein reiner DC-Motor wäre ausreichend (bräuchte aber wohl eine PID-Regelung für die Geschwindigkeit).
Die aktuelle Position würde ich immer vom Encoder holen und mich hier nicht auf Schrittezählen verlassen - wenn wir schon eine Absolut-Position haben, kann Diese auch genutzt werden.
Da es hier um einen Frästisch geht, soll die Geschwindigkeit schon recht genau gehalten werden.
Bei DC-Motoren sehe ich den Vorteil der einfachsten Ansteuerung (abgesehen von PID), eine mögliche Untersetzung, da ein schnell drehender Motor verwendet werden kann und dadurch eine Selbsthemmung - wobei man den Motor dann mechanisch auskuppeln müsste, um händisch den Tisch verfahren zu können.
Beim Stepper sehe ich den Vorteil, daß man hier Modelle mit viel Kraft bekommt und Diese stromlos leicht durchzudrehen sind, also ein händisches Verstellen nicht das Auskuppeln verlangen.
Auch kann man Stepper, da man ja jeden Schritt einzeln auslöst, recht genau bestimmen, wo Diese nun stehen (bzw. der Tisch). Hier wäre ein Stepper mit durchgehender Welle interessant, bin aber bisher auch nur bis zu der Überzeugung gekommen, daß ein automatischer Vorschub oder gar CNC an der Fräse 'nicht schlecht' wäre - eine händische Verstellung muß, meiner Meinung nach, aber erhalten bleiben. ... nicht Jeder will erst Knöpfchen drücken, bevor eine simple Nut gefräst ist ...
MfG
Edit
Habe hier zwei Threads durcheinander geworfen - sorry
Danke erstmal für deine Antwort.
Vielleicht sollte ich noch erwähnen, dass ich den Stepper zunächst als Antrieb nutzen möchte, um die Kamera in Position bringen möchte... mit einem Taster vor und zurück fahren. Dann Startposition eingeben, weiter fahren und Endposition eingeben.
Ist vielleicht komfortabler, als den Encoder abzuschalten.
Ups - habe hier zwei Threads zusammen geworfen.
Wenn Du Anfang und Ende eh mit dem Stepper anfährst, musst Du 'nur' die Schritte mithalten und beim Lauf zwischen den Steps lange genug warten.
Für die Warterei hat Rentner eine Kleinigkeit ins Forum gepackt: Warte-Funktion @ Rentner
Wenn ms zu lang sind, kannst Du diese Funktion auf micros() umstricken.
agmue:
Liefert der eine absolute oder relative Position? Welche Aufgabe soll er haben?
Mit Tasten an eine Position fahren, Position Nullen.
Mit Tasten an eine zweite Position fahren, Position merken.
Automatisch zur ersten Position fahren.
Automatisch zur zweiten Position fahren.
Mit der Bibliothek AccelStepper, die absolute und relative Bewegungen kennt, ist das ohne Encoder möglich.
Danke agmue.
Ja, eine relative Position, im Prinzip genau das was du in den Punkten angegeben hast.
In Punkt 4 soll er dann in Mikroschritten zur gemerkten Endposition fahren.
Ich schaue mir die AccelStepper Bibliothek mal an. Danke
Woher kommen die Mikroschritte?
Wenn das Einlernen in einer anderen Schrittweite statt findet, als die spätere Fahrt, wirst Du die Schrittanzahl entsprechend anpassen müssen - sollte aber auch klappen, wenn ich aber auch keinen Sinn darin sehe, eine der Fahrten anders zu gestallten.
postmaster-ino:
Wenn das Einlernen in einer anderen Schrittweite statt findet, als die spätere Fahrt, wirst Du die Schrittanzahl entsprechend anpassen müssen ...
Wenn dem so ist, ist das nur ein bisschen (Grundschul-) Rechnerei und ggf. (nicht-Grundschul) Geometrie. Ich wüsste spontan jedenfalls nicht, warum das irgendwie kompliziert sein sollte.
Ich wüsste aber nicht, wofür ich eine andere Auflösung in einer der Situationen brauche - soll hier aber nicht Gegenstand werden.
Da das Umsetzen der Werte auf eine andere Schrittauflösung durch Bitschieben erreichbar ist, sehe ich hier aber auch keine größeren Probleme, vll. einen fehlenden Sinn und/oder Notwendigkeit, aber keine größeren Probleme
Dann benötigst Du den Encoder nicht, außer Du mißtraust dem Schrittmotor und möchtest diesen überprüfen (Kamera zu schwer).
Butsch:
Ich schaue mir die AccelStepper Bibliothek mal an. Danke
Die Beschreibung (AccelStepper Class Reference) kann etwas abschrecken, weil viel möglich ist, aber mit den Beispielen solltest Du zurechtkommen. Auch wenn Du mit dem Zufall wenig im Sinn hast, sollte Random gut für die Bewegung von einem Punkt zum nächsten sein.
Da AccelStepper Beschleunigungsrampen fährt, nußt Du überlegen, ob diese Dich stören. Gegebenenfalls machst Du eine Bewegung Start - A - B - Ende, sozusagen mit "Anlauf".
Anregungen: Ein Referenzpunktsensor könnte interessant sein, wenn wenn Du innerhalb des Sliders reproduzierbare Bewegungen machen möchtest. Ein LC-Display (2004 mit I2C Adapter) könnte Dir Rückmeldungen geben. Plane einen Nothaltknopf ein.
So, jetzt danke ich zunächst erstmal allen, die sich Gedanken dazu gemacht haben, echt super von Euch.
@agmue
Du hast mir mit dem Link zu Accel Stepper sehr geholfen und habe da ein gutes Tutorial zu gefunden. Ohne den Tipp hätte ich wohl ewig gebraucht. Danke.
Dem Steppermotor traue ich schon und durch einen Spindelantrieb sollte auch das Gewicht keine zu große Rolle spielen. Nur dachte ich mir, es wird mit Rückmeldung genauer. Wird aber wohl zu viel Arbeit.
@poastmaster-ino
Ich will mal etwas Licht ins Dunkel bringen. Die erste Position und die Letzte brauche ich, um für die Makrofotografie einen Bereich zu definieren.
Mal angenommen der Bereich erstreckt sich auf 100 Steps, dann wollte ich, je nach bedarf, bis zu 100 Fotos in dem Bereich machen können. Bei jedem Step also ein Bild.. oder nur 10, also nach jedem 10. Step.
Ich weiß zwar noch nicht wie, aber dafür bastel ich gern und jeder Versuch bringt Erfahrung.
Butsch:
In Punkt 4 soll er dann in Mikroschritten zur gemerkten Endposition fahren.
In vollen Schritten die Positionen anfahren und merken, in Mikroschritten dann automatisch fahren?
Dazu mußt Du den Schrittmotortreiber von Voll- auf Mikroschritt umschalten können. Kann Dein Treiber das und kann er es ohne Positionsverlust? Ich habe das noch nie probiert. Ist er entsprechend mit dem Arduino verbunden?
DRV8825 hat die Pins M0 bis M2 anschlußfähig, leistungsfähigere Schrittmotortreiber haben ein Mäuseklavier (Setting SW5 bis SW7), da hat der Arduino keinen Zugriff.
agmue:
In vollen Schritten die Positionen anfahren und merken, in Mikroschritten dann automatisch fahren?
Dazu mußt Du den Schrittmotortreiber von Voll- auf Mikroschritt umschalten können. Kann Dein Treiber das und kann er es ohne Positionsverlust? Ich habe das noch nie probiert. Ist er entsprechend mit dem Arduino verbunden?
DRV8825 hat die Pins M0 bis M2 anschlußfähig, leistungsfähigere Schrittmotortreiber haben ein Mäuseklavier (Setting SW5 bis SW7), da hat der Arduino keinen Zugriff.
Ich muss nicht in vollen Schritten die Position anfahren, mir reichen da Mikroschritte.
Natürlich hatte ich auch zuerst daran gedacht, aber das Problem mit der Umschaltung von Voll auf Mikroschritte ist im Moment zu aufwändig, obwohl ich auch da nach eine Lösung suche.
Ich war gestern etwas kurz angebunden und natürlich stelle ich hier den Link rein, was ich dazu gefunden habe, vielleicht hilft es dem ein oder anderen....
Mikroschritt besagt ja nicht, daß man damit nur langsam fahren kann - man muß halt nur schneller die Schritte schicken.
Auch wirst Du, mindestens beim Umschalten von Mikroschritt auf Vollschritt, die Position verlieren - sofern Du nicht eh auf einem vollem Schritt stehst.
Wenn's nur darum geht, daß die Kamera 'von da guckt' - wohl kein Problem.
Wenn Du damit aber Löcher in Nano-Röhrchen bohren willst, schon :o