{"id":884,"date":"2014-12-28T23:45:54","date_gmt":"2014-12-28T21:45:54","guid":{"rendered":"http:\/\/blog.gafu.de\/?p=884"},"modified":"2015-01-05T21:45:33","modified_gmt":"2015-01-05T19:45:33","slug":"selbstbau-3d-drucker-teil-11-firmware-und-hostsoftware","status":"publish","type":"post","link":"http:\/\/blog.gafu.de\/?p=884","title":{"rendered":"Selbstbau 3D-Drucker Teil 11- Firmware und Hostsoftware"},"content":{"rendered":"<p><strong>Firmware aufspielen<\/strong><br \/>\nDie Reprap-3D-Drucker benutzen einen Arduino Mega 2560 (Stand 2014) und Ramps 1.4. Diese Hardware ist offen, dass hei\u00dft die Schaltpl\u00e4ne und Platinenlayout stehen jedermann kostenfrei zur Verf\u00fcgung. Es gibt auch Elektroniken, auf denen der Mikrocontroller, die Motortreiber und was man sonst noch so braucht, zusammen auf einer einzigen Platine sind, das bringt aber nicht unbedingt Vorteile beim Nachbau, so k\u00f6nnen die Motortreiber z.B. bei defekt nicht ausgetauscht werden.<\/p>\n<p>Typischerweise l\u00e4uft darauf eine Firmware wie z.B. <a href=\"http:\/\/reprap.org\/wiki\/Marlin\" title=\"Marlin Firmware\">Marlin<\/a> oder <a href=\"http:\/\/www.repetier.com\/firmware\/\" title=\"Repetier Firmware\">Repetier<\/a>. Repetier bietet auf der Internetseite ein Onlinetool zum erstellen der Firmwarekonfiguration an, welches die Sache stark erleichert.<br \/>\nZum Eingeben der korrekten Werte in das config-tool kann ich den <a href=\"http:\/\/prusaprinters.org\/calculator\/\" title=\"3d Drucker Rechner\">Rechner von Josef Prusa<\/a> w\u00e4rmstens empfehlen. Dort etwas herunterscrollen und man findet die Javascript-Rechner f\u00fcr die Schrittmotor-Steps u.s.w. Korrekturen k\u00f6nnen nat\u00fcrlich auch noch sp\u00e4ter vorgenommen werden.<br \/>\nEs gibt noch andere, ich habe mich jedoch ohne gr\u00f6\u00dfere Umschweife f\u00fcr Repetier als Firmware entschieden, da ich f\u00fcr diesen Drucker Repetier-Host auf dem Computer verwenden m\u00f6chte.<\/p>\n<p>Die <a href=\"http:\/\/arduino.cc\" title=\"Arduino IDE\">Arduino-IDE<\/a> muss zum installieren der Firmware auf dem Computer installiert werden, danach Repetier in einen Ordner entpacken und die Config da hineinkopieren, dann repetier.ino mit der Arduino-IDE \u00f6ffnen.<br \/>\nDen Arduino Mega anstecken per USB (ggf. USB-Seriell Treiber noch installieren, die sind sowohl bei Arduino als auch bei Repetier-Host mit dabei) und in der Arduino-IDE &#8222;upload&#8220; ausf\u00fchren. Dabei wird die Firmware kompiliert und aufgespielt. Das wars schon erstmal. <\/p>\n<p><strong>Hostsoftware konfigurieren<\/strong><br \/>\nIn Repetier muss neben der virtuellen Usb-seriell-schnittstelle auch die Art und Ma\u00dfe des Druckers und Hotend eingegeben werden.<br \/>\nDas ist nicht weiter schwer und weitgehend selbsterkl\u00e4rend. Hier erstmal grob die Ma\u00dfe vom Druckbett u.s.w. eingeben.<br \/>\nDann mit dem Arduino verbinden und rechts die Registerkarte f\u00fcr Manuelle Kontrolle ausw\u00e4hlen.<br \/>\nDie manuelle Steuerung hilft sehr beim Funktionstest zur Inbetriebnahme. (Die Elektronik sollte in der zwischenzeit komplett zusammengesteckt und verkabelt sein)<\/p>\n<p><strong>Richtungen und Endschalter.<\/strong><br \/>\nHier hatte ich gewisse Probleme, da nirgendwo so richtig klar wurde, wo denn im Koordinatensystem des Druckers nun der Nullpunkt sein sollte. Bei meinem CTC mit Sailfish-Firmware ist der Nullpunkt in der Mitte des Druckbettes. In Repetier-Host soll jedoch die Koordinate der vorderen linken Ecke des Druckbetts mit positiven Werten eingegeben werden. H\u00e4??<\/p>\n<p>Naja, das wirds eben anders gemacht. Wenn man aber keine Ahnung hat wie es gew\u00fcnscht ist, tut man sich schwer festzulegen welcher Endschalter den Maximum- und welcher den Minimum-Wert einer Achse abbildet und wie herum nun die Motoren richtig drehen. Die Drehrichtung kann durch umdrehen der 4poligen Pfostenstecker auf der RAMPS-Platine leicht umgekehrt werden.<\/p>\n<p>Also deshalb hier einmal im Bild:<br \/>\nVon durch auf das Portal gesehen, ist der Urpsrung des Koordninatensystems <strong>hinten links<\/strong>.<br \/>\n<a href=\"\/wp-content\/2015\/01\/i3-koordinatenursprung.jpg\" title=\"Koordinatenursprung\"><img decoding=\"async\" src=\"\/wp-content\/2015\/01\/i3-koordinatenursprung-600.jpg\" alt=\"Koordinatenursprung\" \/><\/a><\/p>\n<p>Nochmal f\u00fcr Leute mit Brille: \ud83d\ude42<br \/>\n<a href=\"\/wp-content\/2015\/01\/i3-koordinatenursprung-zoom.jpg\" title=\"Koordinatenursprung\"><img decoding=\"async\" src=\"\/wp-content\/2015\/01\/i3-koordinatenursprung-zoom-600.jpg\" alt=\"Koordinatenursprung\" \/><\/a><\/p>\n<p>Um in Repetier-Host den maximalen Fahrweg einzustellen, muss man also das Druckbett ganz nach hinten schieben, ein Ma\u00dfband, Meterstab, oder was man eben zum Abmessen so zur Hand hat bereithalten, sich den Nullpunkt irgendwie markieren, und dann das Bett ganz zum anderen Ende schieben und den Fahrweg messen. In Millimeter.<br \/>\nEin paar Millimeter kann man zur Sicherheit noch abziehen, damit es nicht immer gegen das mechanische Ende poltert.<\/p>\n<p>Jetzt wo klar ist, wo NULL ist, ergibt sich auch, ob die installierten Endschalter den Minimum-Wert oder den Maximum-Wert einer Achse representieren.<\/p>\n<p>In meinem Aufbau ist z.B, die X-Achse gegen\u00fcber dem Prusa-Entwurf verdreht montiert, weil das g\u00fcnstiger war mit den mechanischen Platzverh\u00e4ltnissen den X-Motor vor dem Aufbau zu haben, statt zwischen den Z-Achsen und dem Portal. Wenn aber der Motor mit seiner Kabelzuf\u00fchrung auf der rechten Seite ist, ists auch irgendwie doof links noch einen weiteren zus\u00e4tzlichen Drahtverhau anzufangen wegen dem Endschalter.<br \/>\nDeshalb ist bei mir der X-Endschalter ein Maximum-Endschalter, die anderen beiden Minimum-Endschalter am Nullpunkt.<\/p>\n<p>Bei der Z-Achse ist ein Maximum-Endschalter auch nicht sooo schlecht, kann man doch ohne mechanische Einstellarbeiten leicht durch parametrieren der Software und\/oder Firmware den Z-Nullpunkt verschieben. Da ich f\u00fcr die sp\u00e4tere Bohrfunktion aber den Nullpunkt ohnehin manuell einstellen m\u00f6chte, kann der Nullpunkt zum Bett einstellen ruhig fest sein.<\/p>\n<p>Stellt man fest, das die Endschalter entgegen der eingegebenen Konfiguration in der Firmware doch woanders liegen, l\u00e4sst sich das in der config.h einstellen und die Firmware neu in den Arduino einspielen. Wichtig: Neben dem vorhandensein der Endschalter per True\/False Flag und dem Aktivieren\/Deaktivieren der dazugeh\u00f6rigen Pull-Up Widerst\u00e4nde der Arduino\/Atmega Portpins muss zus\u00e4tzlich in der Firmware noch die Richtung eingegeben werden, die beim &#8222;Homing&#8220; gefahren werden muss, um zum Endschalter zu fahren. Das Umkonfigurieren der Endschalter allein reicht nicht.<br \/>\nSoftware-Endstops f\u00fcr die gegen\u00fcberliegende Seite die nicht durch einen Endschalter gesichert ist, ist ebenfalls zu empfehlen. (Muss dann auch ge\u00e4ndert werden, wenn man einmal dabei ist daran herumzufummeln)<\/p>\n<p>Noch ein weiterer Hinweis: \u00c4nderungen von Parametern in der Firmware, die zus\u00e4tzlich im EEProm ableget sind, werden auf dem Drucker nicht automatisch wirksam. Entweder muss man das EEprom l\u00f6schen (da gibts einen Gcode Befehl), die Firmware ohne und dann nochmal neu mit EEProm-funktion hochladen und starten oder besser gleich mit Repetier die entsprechenden Werte im EEProm \u00e4ndern. Da Betrifft haupts\u00e4chlich die maximalen Fahrwege, die Extruder- und Achsen &#8222;Steps per Millimeter&#8220; und die Regelung der Heizfunktionen.<\/p>\n<p><strong>Einstellen des PID-Reglers f\u00fcr den Druckkopf:<\/strong><br \/>\nEs gibt eine Autotune-Funktion in der Firmware, die die Werte f\u00fcr P, I und D ermitteln soll.<br \/>\nLeider hat sich dabei in meinem Fall (mit 24V 40W Heizelement an 30V) trotz mehrfachen Ausf\u00fchren der Funktion und Eintragen der ausgegeben Werte (aus dem Log) keine gute Heizungsregelung eingestellt.<br \/>\nIch habe dann in &#8222;Trial &#038; Error&#8220; h\u00e4ndisch ein wenig daran herumgespielt w\u00e4hrend der Drucker etwas druckte, und bin erstmal bei niedrigen Werten h\u00e4ngen geblieben: P:2, I:2, D:2,5<br \/>\nDie Schwankungen sind etwa genauso klein wie die Me\u00dffehler im kalten Zustand.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Firmware aufspielen Die Reprap-3D-Drucker benutzen einen Arduino Mega 2560 (Stand 2014) und Ramps 1.4. Diese Hardware ist offen, dass hei\u00dft die Schaltpl\u00e4ne und Platinenlayout stehen jedermann kostenfrei zur Verf\u00fcgung. Es gibt auch Elektroniken, auf denen der Mikrocontroller, die Motortreiber und was man sonst noch so braucht, zusammen auf einer einzigen Platine sind, das bringt aber [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[409],"tags":[420,476,491,492,477],"class_list":["post-884","post","type-post","status-publish","format-standard","hentry","category-3d-druck","tag-3d-drucker","tag-prusa-i3","tag-repetier","tag-repetier-host","tag-reprap"],"_links":{"self":[{"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/posts\/884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=884"}],"version-history":[{"count":3,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/posts\/884\/revisions"}],"predecessor-version":[{"id":913,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=\/wp\/v2\/posts\/884\/revisions\/913"}],"wp:attachment":[{"href":"http:\/\/blog.gafu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=884"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.gafu.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}