Hallo,
willkommen zur Fortsetzung der Ansteuerung eines Schrittmotors mithilfe eines Arduino. In Teil 1 wurde gezeigt wie man eine Schrittmotor dazu bringt, sich mit immerhin 26500 ansteuerbaren Schritten/Umdrehung zu drehen. Nett, aber für eine sinnvolle Anwendung zum Stacken ein bisschen zu wenig. Deshalb soll es nun darum gehen wie ihr eine kleine Software von mir zum laufen bringt, welche den Rest erledigt. Da Stackshot bereits von einen kommerziellen Anbieter als Name einer solchen Anwendung belegt ist, war ich einfach so kreativ und habe meine Stappelschuss getauft. Als Draufgabe kommt am Ende des Beitrags noch eine kleine Schaltungserweiterung hinzu, welche die Anbindung einer Fernauslösung für eine Kamera erlaubt und die Steuerung von dieser per Stappelschuss ermöglicht. Wer jedoch keine Lust mehr auf "Hardware" hat, der kann natürlich auf diese Draufgabe verzichten und die Kamera von Hand auslösen.
Um mein Programm zum laufen zu bringen braucht ihr:
Processing 2.2.1. Bitte genau diese Version downloaden und verwenden!
https://processing.org/download/
und falls nicht schon vorhanden Java
https://java.com/de/download/
Die Stappelschuss.zip Datei aus dem Anhang von diesem Beitrag. Darin befindet sich ein kleines Programm für den Arduino und, ebenfalls als Quellcode, die Steuerungssoftware.
Für die optionale Fernauslösung:
Einen 470 Ohm Widerstand und einen Optokopler ILD74 DIP8
https://www.conrad.at/de/metallschic…-st-418218.html
https://www.conrad.at/de/optokoppler…-dc-153533.html
Der notwendige Rest sollte eigentlich noch von Teil 1 übrig sein.
Nach dem Entpacken des Anhangs habt ihr einen Ordner mit 2 weiteren darin. Einmal den Ordner Stappelschuss_Arduino und einen Ordner Stapelschuss_Processing. Anfangen werden wir mit der Arduino Software, also diesen Ordner öffnen und die sich darin befindliche Datei doppelklicken. Vorher sollte llerdings der Arduino an den PC angeschlossen sein, damit er auch gleich von der Arduino IDE erkannt wird. Nun sollte sich die Arduino IDE öffnen und ihr ein solches Fenster am Desktop haben.
Dieses gehört nun auf den Arduino hochgeladen, dies geht wie aus Teil 1 schon bekannt, durch betätigen des -> Pfeils in der Software.
Weiter geht es nun mit Processing. Diese starten wir nun und nach dem dies geschehen ist, öffnen wir darin die Datei Stapelschuss_Processing aus dem gleichnamigen Ordner. Dies geschieht über File--> Open..., wie bei vielen anderen Programmen auch.
Danach öffnet sich hoffentlich ein weiteres Fenster mit dem gesamten Inhalt des Quellcodes meiner Software, das alte und leere Fenster könnt ihr getrost schließen.
Bei dem letzten Bild ist ein Reiter von mir markiert welcher nicht Beschriftet ist, da das Fenster zu klein. Dieser beinhaltet die im Programm verwendeten Variablen. Einige sind für euch sicher interessant, da sie das Anpassen für eure Wünsche ermöglichen. Eine jedoch ist ausschlaggebend damit die Verbindung zum Arduino funktioniert. Es ist die Variable Com, welche in der Zeile int Com = 2; ihren Wert bekommt. Diese muss angepasst werden an eure Gegebenheiten, es kann allerdings auch sein, dass es bei euch gleich funktioniert. Einfach mal den Run Knopf in Processing anklicken, alles weitere kommt danach.
Wie ihr seht öffnet sich nun die eigentliche Stackinganwendung. Wenn ihr darin die Buttons für die Achsensteuerung anklickt und der Motor Strom hat, kann er sich schon drehen. Falls nicht ist wahrscheinlich die falsche Com-Verbindung ausgewählt. Im Bild habe ich unten 2 Verbindungen eingezeichnet die bei mir Angezeigt werden. Dies sind alle zur Verfügung stehende und bei mir hängt der Arduino an Com3, also der 2ten. Deshalb ist in meinem Programm die Variable Com mit 2 Belegt. Ist es bei euch eine andere Verbindung, müsst ihr einfach diese Variable anpassen, denn Stop Button in Processing betätigen und die Anwendung noch einmal mit Run starten. Danach sollte es klappen und mit File-->Save kann diese Änderung gespeichert werden.
Variablen die ihr bedenkenlos Anpassen könnt:
float Ein_Schritt = 1; Einstweilen wird 1 Schritt als 1 Schritt im Programm angezeigt. Sollte bei eurer Anwendung ein Schritt dann 0.5µm sein, so könnt ihr die Zeile einfach auf float Ein_Schritt = 0.5; ändern.
String Einheit = " µm"; Die da stehenden µm werden sicher die häufigste Maßeinheit sein. Habt ihr jedoch einen besonders großen Makroschlitten können die µm auch in Lichtjahre geändert werden.
int Warte_v = 3000; und int Warte_n = 3000; Diese sind die 1/1000 Sekunden, welche vor bzw. nach der Kameraauslösung gewartet und als Standard beim Start der Anwendung angezeigt werden.
int Warte_max = 30000; Ist einfach der Maximalwert, welcher die beiden obigen begrenzt. Sollten max. 30 Sekunden nicht ausreichen (Langzeitbelichtungen) , einfach erhöhen.
Natürlich alle Farben. Die Variablen mit einen r am Schluss bestimmen den Rotanteil, die mit g am Schluss den Grünanteil und die mit b am Schluss den Blauanteil. Die Werte dürfen von 0-255 Betragen, wobei 0 dunkel und 255 hell ist.
In einem gewissen Rahmen auch die Schriftgröße, welche durch int Textgr = 14; gesteuert wird. Nur nicht zu hoch, ansonsten kommt es zu Überlappungen.
Ein weitere Möglichkeit wäre sich durch die Reiter zu arbeiten und alle Textzeilen auf die eigenen Vorstellungen zu ändern. Beispielsweise so.
So, ich glaube das war es. Zum Programm ist eigentlich nicht viel zu erklären und ist selbsterklärend, außer vielleicht, dass beim verstellen der Position die rechte und linke Maustaste unterschiedliche Geschwindigkeiten auslösen. Außerdem, wie es Divisionen so an sich haben, bleibt beim dem Aufteilen der Strecke oft ein Restweg über. Dieser kommt am Ende des Stackvorgangs dazugerechnet, aber dies sollte dann sowieso eher den Hintergrund betreffen und kaum von Bedeutung sein.
Morgen kommt die versprochene Fernauslösungsanbindung und wünsche euch einstweilen einen schönen Abend und viel Spaß mit dem Programm,
Johannes
Nachtrag: Hier noch ein Video vom Motor wenn ihr über eine Strecke von 2560 Schritten 10, also alle 256 ein Foto machen würdet. Anfangen tut es damit zum Startpunkt zurückzukehren.
Leider ging beim Dektop abfilmen die Framerate ein wenig in den Keller und es sieht ein wenig ruckelig aus.