Selbstbau 3D-Drucker Teil 11- Firmware und Hostsoftware

Firmware aufspielen
Die Reprap-3D-Drucker benutzen einen Arduino Mega 2560 (Stand 2014) und Ramps 1.4. Diese Hardware ist offen, dass heißt die Schaltpläne und Platinenlayout stehen jedermann kostenfrei zur Verfügung. 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önnen die Motortreiber z.B. bei defekt nicht ausgetauscht werden.

Typischerweise läuft darauf eine Firmware wie z.B. Marlin oder Repetier. Repetier bietet auf der Internetseite ein Onlinetool zum erstellen der Firmwarekonfiguration an, welches die Sache stark erleichert.
Zum Eingeben der korrekten Werte in das config-tool kann ich den Rechner von Josef Prusa wärmstens empfehlen. Dort etwas herunterscrollen und man findet die Javascript-Rechner für die Schrittmotor-Steps u.s.w. Korrekturen können natürlich auch noch später vorgenommen werden.
Es gibt noch andere, ich habe mich jedoch ohne größere Umschweife für Repetier als Firmware entschieden, da ich für diesen Drucker Repetier-Host auf dem Computer verwenden möchte.

Die Arduino-IDE 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 öffnen.
Den 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 „upload“ ausführen. Dabei wird die Firmware kompiliert und aufgespielt. Das wars schon erstmal.

Hostsoftware konfigurieren
In Repetier muss neben der virtuellen Usb-seriell-schnittstelle auch die Art und Maße des Druckers und Hotend eingegeben werden.
Das ist nicht weiter schwer und weitgehend selbsterklärend. Hier erstmal grob die Maße vom Druckbett u.s.w. eingeben.
Dann mit dem Arduino verbinden und rechts die Registerkarte für Manuelle Kontrolle auswählen.
Die manuelle Steuerung hilft sehr beim Funktionstest zur Inbetriebnahme. (Die Elektronik sollte in der zwischenzeit komplett zusammengesteckt und verkabelt sein)

Richtungen und Endschalter.
Hier 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ä??

Naja, das wirds eben anders gemacht. Wenn man aber keine Ahnung hat wie es gewünscht 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.

Also deshalb hier einmal im Bild:
Von durch auf das Portal gesehen, ist der Urpsrung des Koordninatensystems hinten links.
Koordinatenursprung

Nochmal für Leute mit Brille: 🙂
Koordinatenursprung

Um in Repetier-Host den maximalen Fahrweg einzustellen, muss man also das Druckbett ganz nach hinten schieben, ein Maßband, 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.
Ein paar Millimeter kann man zur Sicherheit noch abziehen, damit es nicht immer gegen das mechanische Ende poltert.

Jetzt wo klar ist, wo NULL ist, ergibt sich auch, ob die installierten Endschalter den Minimum-Wert oder den Maximum-Wert einer Achse representieren.

In meinem Aufbau ist z.B, die X-Achse gegenüber dem Prusa-Entwurf verdreht montiert, weil das günstiger war mit den mechanischen Platzverhältnissen den X-Motor vor dem Aufbau zu haben, statt zwischen den Z-Achsen und dem Portal. Wenn aber der Motor mit seiner Kabelzuführung auf der rechten Seite ist, ists auch irgendwie doof links noch einen weiteren zusätzlichen Drahtverhau anzufangen wegen dem Endschalter.
Deshalb ist bei mir der X-Endschalter ein Maximum-Endschalter, die anderen beiden Minimum-Endschalter am Nullpunkt.

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ür die spätere Bohrfunktion aber den Nullpunkt ohnehin manuell einstellen möchte, kann der Nullpunkt zum Bett einstellen ruhig fest sein.

Stellt man fest, das die Endschalter entgegen der eingegebenen Konfiguration in der Firmware doch woanders liegen, lässt 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örigen Pull-Up Widerstände der Arduino/Atmega Portpins muss zusätzlich in der Firmware noch die Richtung eingegeben werden, die beim „Homing“ gefahren werden muss, um zum Endschalter zu fahren. Das Umkonfigurieren der Endschalter allein reicht nicht.
Software-Endstops für die gegenüberliegende Seite die nicht durch einen Endschalter gesichert ist, ist ebenfalls zu empfehlen. (Muss dann auch geändert werden, wenn man einmal dabei ist daran herumzufummeln)

Noch ein weiterer Hinweis: Änderungen von Parametern in der Firmware, die zusätzlich im EEProm ableget sind, werden auf dem Drucker nicht automatisch wirksam. Entweder muss man das EEprom löschen (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 ändern. Da Betrifft hauptsächlich die maximalen Fahrwege, die Extruder- und Achsen „Steps per Millimeter“ und die Regelung der Heizfunktionen.

Einstellen des PID-Reglers für den Druckkopf:
Es gibt eine Autotune-Funktion in der Firmware, die die Werte für P, I und D ermitteln soll.
Leider hat sich dabei in meinem Fall (mit 24V 40W Heizelement an 30V) trotz mehrfachen Ausführen der Funktion und Eintragen der ausgegeben Werte (aus dem Log) keine gute Heizungsregelung eingestellt.
Ich habe dann in „Trial & Error“ händisch ein wenig daran herumgespielt während der Drucker etwas druckte, und bin erstmal bei niedrigen Werten hängen geblieben: P:2, I:2, D:2,5
Die Schwankungen sind etwa genauso klein wie die Meßfehler im kalten Zustand.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.