Schritt für Schritt zum Schrittmotor, die Stackingsoftware und eine optionale Fernauslöseranbindung

  • 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. :D


    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.

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Leider ging beim Dektop abfilmen die Framerate ein wenig in den Keller und es sieht ein wenig ruckelig aus.

  • Hallo,

    nun geht es weiter mit der Möglichkeit der Anbindung eines Fernauslöser, damit eurer Stackingmaschine nicht nur ein Halbautomatische bleibt, sonder Vollautomatisch arbeiten kann. Ausgelöst soll die Kamera nicht direkt von dem Arduino, sondern geschützt durch einen Optokoppler. Geschützt deshalb, weil Kamera und Arduino durch den Optokoppler galvanisch voneinander getrennt sind, es gibt also keine gemeinsamen Stromkreise. Funktionieren tut es folgendermaßen. Der Arduino schaltet eine LED ein, eine Phototransistor reagiert auf dieses Licht und schaltet dann den Verschluss der Kamera. Genauso einfach wie das Prinzip, ist auch die Anwendung.

    Ein Bild der Schaltung:

    Um die LED des Optokopplers einzuschalten müssen folgende Verbindungen vom Arduino zum Breadboert gelegt werden.
    Arduino Digital 8 -->j24
    Arduino Gnd -->j28
    Damit die verbaute LED keinen Schaden nimmt benötigt es noch einen Vorwiderstand mit 470 Ohm. Dieser kommt auf dem Breadbort auf die Positionen
    g24 und g27.
    Nun der Optokoppler selbst, dieser besitzt eine kleine Kerbe (Pfeil im Bild) am Gehäuse und die muss, wie auf dem Bild, an dem Rand des Breadbords zeigen wenn er aufgesteckt wird.
    f27-f30
    e27-e30
    Gleich wisst ihr auch, warum in der Bestellliste von Teil.1 4 Stück Schraubklemmblöcke angegeben sind, wir brauchen den Überzähligen nun.
    a26 und a28
    Damit a26 auch eine Verbindung zum Optokoppler hat fehlt jetzt nur noch eine kleine Drahtbrücke.
    d28-d27

    Fertig !! Einfach nicht wahr?

    Da die Lösungen der Kamerahersteller recht unterschiedlich sind, gehe ich hier nur als Beispiel auf die EOS-Reihe von Canon ein. Diese haben zur Fernauslösung einen 2,5mm Klinkenstecker vorgesehen. Dieser wäre dann wie auf den Bild an unsere kleine Schaltung anzuschließen.

    Der mittleren Autofokus-Kontakt ist für Stacking eher Sinnfrei, deshalb auch nicht belegt.

    Wie und ob überhaupt die Fernauslösung anderer Kameras erfolgen kann, dass fragt bitte konkret bei mir nach, ich mach mich dann schlau darüber und sag es euch dann.

    Alternativ kann auch die linke Maustaste einer 2ten USB Maus damit geschaltet werden, also alte Mäuse nicht entsorgen. ;) So kann damit auch jede Remotesoftware gesteuert werden, also auch die von allen Okularkameras. Und ja, bevor es zu Diskussionen deswegen kommt, es gehen mehrere Mäuse an einen PC, auch Tastaturen, sofern USB-Anschlüsse frei sind natürlich .

    Viele Grüße und viel Spaß wünscht euch,
    Johannes

    Biologisches Mikroskop: Zeiss Standard 16
    Stereomikroskop: Lomo MBS 10
    Kameras: EOS 1100D, EOS 1000D, EOS 1000Da
    Ihr aber seht und sagt: Warum? Aber ich träume und sage: Warum nicht? George Bernard Shaw

    2 Mal editiert, zuletzt von Johannes Kropiunig (6. Januar 2017 um 11:01)

  • Hallo Johannes,

    wow, das wird ja immer besser, fast perfekt, würde ich sagen!

    Heute habe ich das Programm in den Arduino geladen, das ging eigentlich problemlos.
    Nur zu Beginn hatte ich Probleme mit dem Erkennen des Arduino, das war aber nur eine Sache der Einstellung. Die Software und Prozessing 2.2.1 funktionierte im "Trockentest" ohne erkennbare Fehler.

    Jetzt wollte ich antworten und nach dem Fernbedienungs-Pin fragen, und schon hast du das eingebaut! Einfach super!

    Morgen werde ich das Programm in Zusammenarbeit mit einem kleinen 1,4 Ampere Stepper probieren.
    Den RAPS128 Stepper-Treiber habe ich noch nicht. Ich werde zum Testen erst mal einen A4988 Treiber verwenden. Die Pinbelegung ist ja fast identsch mit dem RAPS128, lediglich die Reihenfolge der Stepperspulen ist anders. Die Anpassung ist aber kein Problem.
    Auch die Einstellungen für die Microsteps passen, die jetzige 3 x High Einstellung im Programm erzeugt bei dem A4988 allerdings einen 1/16 Schritt, mehr geht bei dem nicht. Aber zum Testen muß der A4988 erst mal genügen. Rein rechnerisch müßten die mit 1/16 Schritt erreichbaren 3200 Schritte/Umdrehung für meine Zwecke mehr als genug sein!

    Jedenfalls freue ich mich schon darauf, praxisnahe Tests machen zu können.
    Nochmals allerbesten Dank für deine Arbeit und Mühe, die sehr gute Dokumentation und Anleitung!

    Viele Grüße,
    Andy

    Gruß, Andy

  • Hallo Andy,

    da ich selbst nicht so der geübte Programmierer bin und es deswegen wirklich einiges an Aufwand bedeutet hatte, freue ich mich umso mehr darüber, dass es nicht um sonst war. Daher bedanke ich mich bei dir für die positive Rückmeldung und wünsche dir viel Erfolg bei deinen Basteleien.

    Viele Grüße,
    Johannes

    Biologisches Mikroskop: Zeiss Standard 16
    Stereomikroskop: Lomo MBS 10
    Kameras: EOS 1100D, EOS 1000D, EOS 1000Da
    Ihr aber seht und sagt: Warum? Aber ich träume und sage: Warum nicht? George Bernard Shaw

  • Hallo Andy,

    ich muss mich bei dir entschuldigen, mir ist ein kleiner Fehler unterlaufen. :( Bei "Warte n. Bewegung" und "Warte v. Bewegung" geriet mir der Code ein wenig durcheinander. Dieser Bockmist ist nun korrigiert und eine aktuellere Version im Beitrag oben eingefügt.

    Ferner ist im Sketch für den Arduino nun eine weitere Variable eingefügt, um die Schrittweite beim drücken der -- und ++ Buttons leichter beeinflussbarer zu machen. 250 Schritte könnte für manch eine Anwendungen zu viel sein, besonders bei nur 1/16 Microsteps.

    Und es wird vermutlich einen experimentellen Videostackmodus geben, leichte Ansätze dafür sind bereits im Processing-Code zu finden. Im 1/128 Microstepmodus laufen die Steppermotoren schon sehr ruhig und diese Funktion könnte durchaus eine sinnvolle Erweiterung werden.

    Viele Grüße,
    Johannes

    Biologisches Mikroskop: Zeiss Standard 16
    Stereomikroskop: Lomo MBS 10
    Kameras: EOS 1100D, EOS 1000D, EOS 1000Da
    Ihr aber seht und sagt: Warum? Aber ich träume und sage: Warum nicht? George Bernard Shaw

  • Hallo Johann,

    falls du auf meine Rückmeldung wartest, ich bin noch nicht weiter gekommen.
    Irgend etwas hat mich umgehauen. Mir ist übel, habe keine Kraft, dafür Fieber und Kopfschmerzen.
    Wenn es mir wieder besser geht, werde ich weiter testen und berichten.

    Gruß, Andy

    • Offizieller Beitrag

    Hallo Andy

    Gute Besserung. Grippe geht nun mal um.

    fg
    Franz

    --------------------------------------------------------------------------------------------------
    Die Welt wäre so schön wenn Frauen so einfach gestrickt wie die Maxwellschen Gleichungen wären --
    Mann könnte dann Störfelder berechnen und Wellen, Phasen und Ströme ....
    und die Harmonischen ganz leicht checken..

    http://interphako.at

  • Hallo Andy,

    wünsche dir auch eine schneller Besserung.

    Viele Grüße,
    Johannes

    Biologisches Mikroskop: Zeiss Standard 16
    Stereomikroskop: Lomo MBS 10
    Kameras: EOS 1100D, EOS 1000D, EOS 1000Da
    Ihr aber seht und sagt: Warum? Aber ich träume und sage: Warum nicht? George Bernard Shaw

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!