Samstag, 2. November 2013

Firmware und Slicer beim Rostock einstellen

Seit mehreren Tagen kämpfe ich mich durch die Einstellungen der Firmware und danach über Repetier-Host durch die Einstellungen.
Zunächst einmal zur Firmware:
Hier muss das verwendete Controllerboard angegeben werden. In meinem Fall war es das Sanguino. Alle geänderten Werte sind rot markiert:


// This determines the communication speed of the printer
#define BAUDRATE 250000
//#define BAUDRATE 115200

//// The following define selects which electronics board you have. Please choose the one that matches your setup
// 10 = Gen7 custom (Alfons3 Version) "https://github.com/Alfons3/Generation_7_Electronics"
// 11 = Gen7 v1.1, v1.2 = 11
// 12 = Gen7 v1.3
// 13 = Gen7 v1.4
// 3  = MEGA/RAMPS up to 1.2 = 3
// 33 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Bed)
// 34 = RAMPS 1.3 / 1.4 (Power outputs: Extruder0, Extruder1, Bed)
// 35 = RAMPS 1.3 / 1.4 (Power outputs: Extruder, Fan, Fan)
// 4  = Duemilanove w/ ATMega328P pin assignment
// 5  = Gen6
// 51 = Gen6 deluxe
// 6  = Sanguinololu < 1.2
// 62 = Sanguinololu 1.2 and above
// 63 = Melzi
// 64 = STB V1.1
// 65 = Azteeg X1
// 66 = Melzi with ATmega1284 (MaKr3d version)
// 7  = Ultimaker
// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
// 77 = 3Drag Controller
// 8  = Teensylu
// 80 = Rumba
// 81 = Printrboard (AT90USB1286)
// 82 = Brainwave (AT90USB646)
// 9  = Gen3+
// 70 = Megatronics
// 701= Megatronics v2.0
// 702= Minitronics v1.0
// 90 = Alpha OMCA board
// 91 = Final OMCA board
// 301 = Rambo
// 21 = Elefu Ra Board (v3)

#ifndef MOTHERBOARD
#define MOTHERBOARD 62
#endif

Einschalten sollte man auch unbedingt den Schreib/Lesezugriff auf das EEPROM. Hier werden wichtige Grundwerte gespeichert, die man später mit der Repetiersoftware auslesen und neu setzen kann. Aber Vorsicht! Wenn man später
neu flasht, werden diese Werte gemäß den Angaben aus der Arduino IDE neu gesetzt. Hat man also etwas im direkten Zugriff auf das EEPROM mit der Repetier-Host Software korrigiert, muss man es ebenfalls in seiner MARLIN Firmware ändern, da es sonst immer wieder zurück gesetzt wird.

// EEPROM
// the microcontroller can store settings in the EEPROM, e.g. max velocity...
// M500 - stores paramters in EEPROM
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
//define this to enable eeprom support
#define EEPROM_SETTINGS
//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
// please keep turned on if you can.
#define EEPROM_CHITCHAT


Weiterhin muss der Deltamodus eingeschaltet werden:

// Enable DELTA kinematics
#define DELTA

Um dies zu erzielen, müssen die vorangestellten // Zeichen entfernt werden. Sie sind Marker für Kommentare, die zwar im Skript stehen, aber nicht ausgeführt werden. Löscht man die beiden Schrägstriche, werden die Zeilen, denen sie vorangestellt sind  also aktiviert.

Weiterhin müssen Angaben zu den mechanischen Abmessungen gemacht werden. Dies tut man unter:

// Make delta curves from many straight lines (linear interpolation).
// This is a trade-off between visible corners (not enough segments)
// and processor overload (too many expensive sqrt calls).
#define DELTA_SEGMENTS_PER_SECOND 200

// Center-to-center distance of the holes in the diagonal push rods.
#define DELTA_DIAGONAL_ROD 285.0 // mm

// Horizontal offset from middle of printer to smooth rod center.
#define DELTA_SMOOTH_ROD_OFFSET 145.0 // mm

// Horizontal offset of the universal joints on the end effector.
#define DELTA_EFFECTOR_OFFSET 33.0 // mm

// Horizontal offset of the universal joints on the carriages.
#define DELTA_CARRIAGE_OFFSET 23.0 // mm

Die Werte hier gelten natürlich nur für meinen Drucker. Wer wissen will, wie man was ausmisst, kann über diese Zeichnung einen ganz guten Überblick gewinnen:


von: Link zur Abbildung

Allerdings handelt es sich bei der Abbildung um eine Variante mit Profilen und die Abmessungen sind etwas anders. Also selber nachmessen! Bei der Centerline bin ich mir nicht ganz sicher ob das stimmt, denn sie sitzt nicht in der Mitte bei dieser Abbildung.

Weiterhin sind die Einstellungen der Endschalter wichtig. Handelt es sich um Schalter die öffnen oder schließen?
In meinem Fall habe ich Mikroschalter verwendet, die bei Kontakt öffnen.

// coarse Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

   // fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined

#ifdef ENDSTOPPULLUPS
  #define ENDSTOPPULLUP_XMAX
  #define ENDSTOPPULLUP_YMAX
  #define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
  #define ENDSTOPPULLUP_ZMIN
#endif

// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
//#define DISABLE_MAX_ENDSTOPS
//#define DISABLE_MIN_ENDSTOPS

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

Weiterhin müssen die Achsrichtungen umgekehrt werden.
Beim Extruder kommt es darauf an, welchen man verwendet. Bei Direktantrieb ist es ebenfalls bei E= auf TRUE zu setzen. Hat der Extruder ein Getriebe, dann bleibt es bei FALSE.

#define INVERT_X_DIR true   // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR true    // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false


Weiter:

Die nächste Einstellung beschreibt, ob beim Erreichen des Endschalters die maximale oder minimale Bauhöhe des Rostock/Deltadrucker erreicht wurde. Sofern man die Endschalter also oben am Drucker plaziert hat, ist dies der maximale Punkt. Die Z-Koordinate 0 entspricht also dem Druckbett, während alle Werte größer 0 über dem Druckbett schweben. Die Bauhöhe des Rostock kann sich ja jeder selbst bestimmen bzw. messen. Hier an dieser Stelle muss der vorgegebene Wert von -1 auf 1 geändert werden. (Wenn man die Endschalter OBEN am Gerät plaziert hat!)

// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR 1
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1

Nach dem Anfahren der Endschalter muss der maximale Weg definiert werden, der ab diesem Punkt zurück gelegt werden kann. Dieser hängt natürlich von der Bauhöhe bzw. dem Bauraum ab, den man gebaut hat. Der Wert von 390 bzw 395 ist also entsprechend abzuändern. Es ist der Abstand der Düse zum Druckbett. Am besten man tastet sich hier heran. Nach dem Laden der Firmware startet man hierzu Repetier Host und versucht einen Probedruck. Dabei achtet man auf die korrekte Höhe über dem Druckbett und reguliert evtl. nach.

Die Angaben hier unterhalb, dienen dazu die Größe des Druckbetts zu bestimmen (90 mm - -90 mm =180 mm = Durchmesser des Kreises der bedruckbar ist)

#define min_software_endstops true // If true, axis won't move to coordinates less than HOME_POS.
#define max_software_endstops true  // If true, axis won't move to coordinates greater than the defined lengths below.
// Travel limits after homing
#define X_MAX_POS 90
#define X_MIN_POS -90
#define Y_MAX_POS 90
#define Y_MIN_POS -90
#define Z_MAX_POS 90
#define Z_MIN_POS -90

Geschwindigkeit der Achsen beim "Homing":
Hier ist es wichtig, die dritte (Z-) Achse auf die selben Geschwindigkeit einzustellen, wie die beiden anderen. Sonst zieht der Delta die "Z" Achse nach.

//// MOVEMENT SETTINGS
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
#define HOMING_FEEDRATE {50*60, 50*60, 50*60, 0}  // set the homing speeds (mm/min)

Wenn man die Firmware hochgeladen hat, kann man damit beginnen mit der Repetier-Host Software die Einstellungen zu überprüfen.
Wichtige Kommandos:
G28 -> Fährt ganz nach oben gegen die Endschalter
M119-> Gibt unten in der Statuszeile die Zustand der Endschalter aus. So kann man auch rausfinden was X,Y und Z Achse in dem System ist.
ECHO muss dafür in der Repetiersoftware aktiviert sein.

Wichtig ist es auch, dass alle drei Achsen die selbe Verfahrgeschwindigkeit haben.
Dazu müssen alle drei Achsen die selben Werte für maximale Geschwindigkeit, Beschleunigung und Schritte pro Umdrehung aufweisen.
Wie viele Schritte der Schrittmotor für eine Umdrehung benötigt (#define DEFAULT_AXIS_STEPS_PER_UNIT), richtet sich nach den verwendeten Bauteilen (Pulley/Riemenscheibe), die Riementeilung und die Anzahl der Zähne, sowie welches Microstepping eingestellt ist. Ein praktische Rechenhilfe findet sich hier: http://calculator.josefprusa.cz/#MotorStuffSPMB.
Das Microstepping ist bei meinem Sanguino Board so geschaltet so dass ich 1/16 Schritte dort verwende. Die Einstellung erfolgt mithilfe dreier Jumper, die jeweils unter jedem einzelnen Pololu Schrittmotortreiber sitzen.

Hier ein Beispiel der Jumpersettings aus dem Wiki:

Somit führt dies zu:

#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 80, 172.222}  // default steps per unit for Rostock
#define DEFAULT_MAX_FEEDRATE          {200, 200, 200, 25}    // (mm/sec)
#define DEFAULT_MAX_ACCELERATION      {2000,2000,2000,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.

Sonst kommt es zu einem Fehler bei dem eine Achse schneller verfährt als die anderen und daher der Delta scheinbar in eine bevorzugte Richtung läuft.

Slic3r


Ändern sollte man natürlich auch die Konfiguration des Slic3r in Repetier Host. Dieses schneidet wie der Name bereits sagt, die CAD Daten in handliche Scheiben, die dann gedruckt werden können. Wichtigste Änderung ist die Mitteilung, dass das Zentrum beim Rostock bei 0,0 liegt. Weiterhin der Durchmesser des Filaments und der der Düse.

Unter dem Reiter "printersettings" habe ich bed size auf x= 100 und y=100 gesetzt. Vorher wollte der Drucker immer alles in eine Ecke drucken statt in der Mitte.


Wie man rechts sehen kann habe ich die Konfiguration als "Rostock-2" abgespeichert. So kann man schnell verschiedene Setups erzeugen und damit ausprobieren, wie alles klappt.

Keine Kommentare:

Kommentar posten

Vielen Dank für deinen Beitrag auf meinem 3D Drucker Blog.
Ich kümmere mich um die Freischaltung. Bitte habe Verständnis, wenn es mal ein wenig dauert, da ich dies in meiner Freizeit mache!

Marcel