{"id":41,"date":"2014-12-25T20:29:27","date_gmt":"2014-12-25T20:29:27","guid":{"rendered":"http:\/\/techblog.auchmonoabspielbar.de\/?p=41"},"modified":"2014-12-27T14:24:40","modified_gmt":"2014-12-27T14:24:40","slug":"linearantrieb-mit-schrittmotor","status":"publish","type":"post","link":"http:\/\/techblog.auchmonoabspielbar.de\/?p=41","title":{"rendered":"Linearantrieb mit Schrittmotor"},"content":{"rendered":"<p>Im klassischen Schreinerbetrieb werden Verbindungen \u00fcber Eck oft als Fingerzinken ausgef\u00fchrt. Man kann sie m\u00fchsam von Hand s\u00e4gen, mit einer Schablone und einer Oberfr\u00e4se ausfr\u00e4sen oder aber auf auf der Kreiss\u00e4ge erzeugen. Im amerikanischen Umfeld werden daf\u00fcr gerne dado blades (Nuts\u00e4gebl\u00e4tter) verwendet. Das sind mehrere S\u00e4gebl\u00e4tter im Stapel, die in einem Durchlauf gleich einen ganzen Zentimeter Breite rauss\u00e4gen k\u00f6nnen.<\/p>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Dado_set\" target=\"_blank\">Dado Blade auf Wikipedia<\/a><\/p>\n<p>In Deutschland sind die dado blades meines Wissens nach nicht zul\u00e4ssig. Aber man kann es mit etwas mehr M\u00fche auch mit einem normalen Kreiss\u00e4geblatt hinbekommen. Es sind dann eben mehrere Durchl\u00e4ufe notwendig, die jeweils um die Breite des S\u00e4geblatts versetzt vorgenommen werden. Die Schwierigkeit liegt dabei in dem korrekten Versatz, denn die Fingerzinken m\u00fcssen relativ genau gearbeitet werden.<\/p>\n<p>Ich habe mir dabei gedacht, dass sich um den Versatz ein Microcontroller k\u00fcmmern kann. Man stellt die Breite der Zinken ein und der Controller verschiebt bei jedem Durchgang den Anschlag um den ben\u00f6tigten Betrag. Dieser Versatz ist nicht immer gleich. Bei meiner S\u00e4ge betr\u00e4gt die Breite des S\u00e4geblatts 3 Millimeter. Ein 8 Millimeter breiter Spalt wird also durch einen S\u00e4geschnitt erzeugt, gefolgt von zweimal einem Versatz von jeweils 2,5 Millimeter. Danach m\u00fcssen 8 Millimeter stehen bleiben, der n\u00e4chste Versatz betr\u00e4gt also 11 Millimeter. Der Anschlag muss also immer um die Betr\u00e4ge 2,5 &#8211; 2,5 &#8211; 11 &#8211; 2,5 &#8211; 2,5 &#8211; 11 &#8230; Millimeter verschoben werden.<\/p>\n<p>In der Bastelkiste habe ich einen alten Schrittmotor aus einem 5 1\/4 Zoll Floppy Disk Laufwerk gefunden. Er hat f\u00fcnf Anschl\u00fcsse, ein gemeinsamer Plus Pol und dann vier versetzte Spulen. Obwohl ich kein Datenblatt daf\u00fcr habe, konnte ich die Anschl\u00fcsse relativ schnell mit einem Ohmmeter ermitteln.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/ULN2003.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-42\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/ULN2003.jpg\" alt=\"ULN2003\" width=\"640\" height=\"427\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/ULN2003.jpg 640w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/ULN2003-300x200.jpg 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/ULN2003-624x416.jpg 624w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a>Der Anschluss an einen Microcontroller ist recht einfach. F\u00fcr solche F\u00e4lle hat man immer ein paar ULN 2003 rumfliegen. Das sind 8 Darlingtontransistoren mit Vorwiderst\u00e4nden in einem DIL Geh\u00e4use. Da der Schrittmotor aus einem Floppy Laufwerk stammt, gehe ich von einer Betriebsspannung von 12 Volt aus. Tests haben gezeigt, dass ab etwa 8 Volt eine ausreichende Kraft zur Verf\u00fcgung steht und auch 16 Volt nach l\u00e4ngerer Arbeit nicht zu einem hei\u00dfen Motor f\u00fchrt.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Schrittmotor.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-43\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Schrittmotor.jpg\" alt=\"Schrittmotor\" width=\"800\" height=\"533\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Schrittmotor.jpg 800w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Schrittmotor-300x200.jpg 300w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Schrittmotor-624x416.jpg 624w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Der Microcontroller wird \u00fcber die USB Leitung mit Spannung versorgt, kann aber auch eine externe Spannungsquelle haben. Der Schrittmotor bezieht seine Versorgung aus einem Labornetzteil (\u00fcber die gr\u00fcn\/ wei\u00dfe Leitung). Man sieht, dass die komplette Schaltung im Prinzip nur aus einem IC besteht.<\/p>\n<p>Nachdem ich einen laufenden Motor hatte, habe ich zuerst die Schrittzahl f\u00fcr eine volle Umdrehung ermittelt. Das muss nicht \u00fcberm\u00e4\u00dfig genau sein, da Schrittmotoren typischerweise eine Schrittzahl von 24, 200 oder 400 besitzen. Ich habe noch keinen Motor gesehen, der 197 Schritte pro Umdrehung im Datenblatt angegeben hat. Ein kleiner Test mit einer Markierung auf der Achse zeigt, dass ich ein Modell mit 200 Schritten habe.<\/p>\n<p>Als n\u00e4chstes musste ich die Geschwindigkeit des Motors ermitteln. Ein Schrittmotor dreht sich exakt so schnell, wie es \u00fcber die Schrittfolge vorgegeben ist &#8211; zumindest im Normalbetrieb. Wenn man den Motor mechanisch zu stark belastet, verliert er Schritte, d.h. er dreht sich nicht weiter. Wenn man eine langsame Schrittfolge w\u00e4hlt, wird der Vorschub sehr langsam. Die verwendete M6 Gewindestange hat eine Steigung von einem Millimeter pro Umdrehung. Wenn ich 10 cm vorr\u00fccken will, sind also 100 Umdrehungen notwendig. Zur Ermittlung der maximalen Schrittrate habe ich die Geschwindigkeit beginnend von 50 Schritten pro Sekunde nach und nach auf 1000 Schritte pro Sekunde erh\u00f6ht. Wenn die maximale Geschwindigkeit erreicht ist, kann der Motor einen Schritt nicht mehr vollst\u00e4ndig ausf\u00fchren bevor der n\u00e4chste Schritt kommt. Das f\u00fchrt dazu, dass der Motor mit einem heftigen Brummen stehen bleibt. Von der Maximalgeschwindigkeit habe ich dann noch mal eine ordentliche Portion abgeschnitten. Als Sicherheitsmarge, denn bei dieser Geschwindigkeit ist die Kraft gerade noch ausreichend, um die Gewindestange zu drehen. Aktuell verwende ich maximal 500 Schritte pro Sekunde. Das ergibt 2,5 Umdrehungen pro Sekunde und somit einen Vorschub von nur 2,5 Millimeter pro Sekunde. Da ich jeweils nur kurze Strecken zur\u00fccklegen muss, ist das f\u00fcr den Einsatzzweck akzeptabel.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Vars.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-44 alignleft\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Vars.png\" alt=\"Vars\" width=\"337\" height=\"50\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Vars.png 337w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Vars-300x45.png 300w\" sizes=\"auto, (max-width: 337px) 100vw, 337px\" \/><\/a>Da die Port-Pins des Microcontrollers nicht in einer Reihe liegen, habe ich sie so verdrahtet, wie es am einfachsten ist. Um zur Schrittgenerierung eine 1 durchzuschieben habe ich ein Array der L\u00e4nge 4 angelegt, welches dann das jeweilige Port Bit enth\u00e4lt. Es m\u00fcssen also im Kreis alle vier Werte vorw\u00e4rts oder r\u00fcckw\u00e4rts ausgegeben werden.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Steps.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-45 alignleft\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Steps.png\" alt=\"Steps\" width=\"586\" height=\"75\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Steps.png 586w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Steps-300x38.png 300w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/a><\/p>\n<p>Wenn man bei einem Schrittmotor im Ruhezustand direkt auf volle Geschwindigkeit geht, f\u00fchrt das zu Schrittverlusten, da der Motor nicht so schnell reagieren kann. Im schlimmsten Fall l\u00e4uft er gar nicht an. Deshalb wird die Geschwindigkeit langsam hochgefahren. Der Abstand vom ersten zum zweiten Schritt betr\u00e4gt 13 Millisekunden. Er wird bei jedem Schritt um eine Millisekunde verk\u00fcrzt, bis zur maximalen Geschwindigkeit mit einem Abstand von 2 Millisekunden. Beim Abbremsen passiert das gleiche umgekehrt, die Abst\u00e4nde werden \u00fcber 10 Stufen langsam verl\u00e4ngert. Wenn weniger als 20 Schritte ausgef\u00fchrt werden sollen, besteht die Sequenz nur aus einer Teilrampe zum Beschleunigen und Abbremsen.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Move.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-46\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Move.png\" alt=\"Move\" width=\"583\" height=\"544\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Move.png 583w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Move-300x280.png 300w\" sizes=\"auto, (max-width: 583px) 100vw, 583px\" \/><\/a><\/p>\n<p>Die Funktion f\u00fcr den schrittweiten Vorschub wartet auf das n\u00e4chste Kommando. Wenn es zum n\u00e4chsten Anschlag weitergehen soll, holt sie sich die n\u00e4chste Schrittzahl aus dem Feld stepValues \u00fcber den hochgez\u00e4hlten Index globalStep und f\u00fchrt diese Anzahl von Schritten aus. Die Anzahl wird auch in einem Summenspeicher gemerkt, damit der Linearvorschub \u00fcber ein zweites Kommando wieder zum Startpunkt zur\u00fcckfahren kann.<br \/>\n<a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StepGrid.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-47 alignnone\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StepGrid.png\" alt=\"StepGrid\" width=\"454\" height=\"411\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StepGrid.png 454w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/StepGrid-300x272.png 300w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/a><\/p>\n<p>Eine weitere Funktion dient zur Einstellung des Nullpunkts. In diesem Fall f\u00e4hrt der Schrittmotor in eine Richtung, bis diese \u00fcber einen Tastendruck gewechselt wird.<\/p>\n<p>Erstaunlicherweise gibt es in meiner Bastelkiste einen auff\u00e4lligen Mangel an Drucktastern. Also musste ich das &#8222;User Interface&#8220; auf ein Minimum begrenzen. Auf der Microcontroller Platine gibt es einen User Button &#8211; das war alles, was mir zur Verf\u00fcgung stand.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/CheckButton.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-51\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/CheckButton.png\" alt=\"CheckButton\" width=\"288\" height=\"183\" \/><\/a>Der Zustand des User Buttons wird alle 10 Millisekunden gepr\u00fcft. Zur Entprellung wird ein kurzer Tastendruck gewertet, wenn der Zustand mindestens 50 Millisekunden auf 1 stand.<\/p>\n<p>Wenn er eine Sekunde lang gedr\u00fcckt wurde, dann wird das als langer Tastendruck gewertet.<\/p>\n<p>Wenn beim Start des Programms der User Button gedr\u00fcckt ist, geht das Programm in den Null-Einstellungsmodus. In diesem Fall l\u00e4uft der Schrittmotor in eine Richtung bis der User Button gedr\u00fcckt wird. Dann wird die Drehrichtung umgeschaltet.<\/p>\n<p>Ist er beim Start nicht gedr\u00fcckt, geht das Programm in den normalen Vorschubmodus. Bei jedem kurzen Button Klick wandert der Vorschub bis zum n\u00e4chsten Stopp weiter. Bei einem langen Button Klick geht es zur Startposition zur\u00fcck.<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.youtube.com\/embed\/0hy_vAi0Ong\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p><strong>Was w\u00fcrde ich jetzt anders machen?<\/strong><\/p>\n<p>Da es sich nur um ein Bastelprojekt handelt, habe ich f\u00fcr den Linearvorschub keine Trapezgewindespindel gekauft sondern einfach eine Gewindestange aus dem Bestand verwendet. Diese hat leider einen deutlichen Schlag, was zu st\u00f6renden Bewegungen seitlich und nach oben und unten f\u00fchrt. F\u00fcr den geplanten Einsatzzweck ist das zwar egal, es sieht aber einfach nicht gut aus. Zudem k\u00f6nnte man die Trapezgewindespindel mit einer h\u00f6heren Steigung kaufen und somit einen schnelleren Vorschub erreichen. Die aktuelle Positionierungsgenauigkeit, von rechnerisch 5 Mikrometer, kann ich ohnehin nicht ausnutzen.<\/p>\n<p><strong>Nachtrag vom 27.12.<\/strong><\/p>\n<p>Ein kurzer Test zeigt: Prinzipiell funktioniert das System &#8211; aber leider nicht mit der Pr\u00e4zision, die ich erhofft hatte. Es ist schwierig, die zu s\u00e4genden Teile exakt Senkrecht am Anschlag zu halten. Schon ein kleiner Winkelfehler f\u00fchrt zu unterschiedlich breiten Zinken.<\/p>\n<p><a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Testschnitt.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-54\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Testschnitt.jpg\" alt=\"Testschnitt\" width=\"640\" height=\"688\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Testschnitt.jpg 640w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Testschnitt-279x300.jpg 279w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Testschnitt-624x671.jpg 624w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a> <a href=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Verleimter-Test.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-55\" src=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Verleimter-Test.jpg\" alt=\"Verleimter Test\" width=\"640\" height=\"692\" srcset=\"http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Verleimter-Test.jpg 640w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Verleimter-Test-277x300.jpg 277w, http:\/\/techblog.auchmonoabspielbar.de\/wp-content\/uploads\/2014\/12\/Verleimter-Test-624x675.jpg 624w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im klassischen Schreinerbetrieb werden Verbindungen \u00fcber Eck oft als Fingerzinken ausgef\u00fchrt. Man kann sie m\u00fchsam von Hand s\u00e4gen, mit einer Schablone und einer Oberfr\u00e4se ausfr\u00e4sen oder aber auf auf der Kreiss\u00e4ge erzeugen. Im amerikanischen Umfeld werden daf\u00fcr gerne dado blades (Nuts\u00e4gebl\u00e4tter) verwendet. Das sind mehrere S\u00e4gebl\u00e4tter im Stapel, die in einem Durchlauf gleich einen ganzen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-embedded"],"_links":{"self":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41"}],"version-history":[{"count":6,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions"}],"predecessor-version":[{"id":56,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=\/wp\/v2\/posts\/41\/revisions\/56"}],"wp:attachment":[{"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/techblog.auchmonoabspielbar.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}