Mittlerweile ist es der 5. Teil dieser Reihe. Bis der Drucker unter Klipper läuft ist noch ein weiter Weg. Im Konfigurationsfile sind die Einstellungen für die Stepper erledigt. Jetzt geht es um das Druckbett.
Nachtrag vom 24.03.2023: Die hier dargestellten Überlegungen zur Firmware sind prinzipiell richtig, – bedürfen aber teilweise einer Anpassung. Das vollständige printer.cfg und Erklärungen dazu gibt es in Teil 9- Inbetriebnahme.
Das Druckbett soll beheizt werden, deshalb müssen die Parameter und Anschlüsse dafür in das Konfigurationsfile aufgenommen werden. Glücklicherweise gibt es ein Klipper-Beispielfile für den X5SA. Meine Einstellungen stammen von dort.
[heater_bed] heater_pin: PA1 # HEATED BED sensor_pin: PF3 # TB # komplette PID-Daten laut printer-tronxy-x5sa-pro-2020.cfg sensor_type: EPCOS 100K B57560G104F control: pid pid_Kp: 73.932 pid_Ki: 1.521 pid_Kd: 898.279 min_temp: 0 max_temp: 130
In dem großen bunten Übersichtsplan sind die Anschlüsse auf dem Board leicht wiederzufinden.
Sensortyp und Charakteristik sind wie schon gesagt aus dem Beispielfile übernommen. Die Maximaltemperatur sollte sinnvoll gewählt werden, aber wie alles im Konfigurationsfile kann man ja später auch diesen Wert einfach und schnell ändern, – der große Vorteil von Klipper.
Wo es Hitze gibt, da werden auch Lüfter gebraucht. Das Hotend muss gekühlt werden, damit das Filament nicht schon in der Zuführung teigig wird, sondern erst in der Druckspitze. Dieser Lüfter ist am X5SA-400 Pro mit FAN2 gekennzeichnet.
FAN1 hingegen ist der Lüfter, der das Bauteil direkt beim Druck kühlt. Wichtig beispielsweise bei Überhängen. Im Gegensatz zum Hotendkühler, der ständig laufen muss, läuft der Bauteilkühler nur gesteuert durch den GCODE. Hier ist theoretisch von 0% bis 100% alles denkbar. Tatsächlich läuft der Lüfter üblicherweise erst ab etwa 30% an. Das muss man testen. Das Octopus Pro Board bietet diverse steuerbare Lüfteranschlüsse, aber auch nicht steuerbare, sprich dauerhaft laufende. Das kann man sich frei aussuchen. Die Definition in der Konfig ist recht kurz:
# Lüfter # FAN1 Bauteillüfter # FAN2 Hotendkühler [fan] # Print cooling fan - Bauteillüfter FAN1 pin: PE5 # FAN1 Platinenanschluss [heater_fan Hotendkühler] # FAN2 Hotendkühler pin: PD12 # FAN2 Platinenanschluss
Klipper erlaubt offensichtlich sehr feine Steuerungen bezüglich des Druckbetts. Zum Einen werden die Informationen der BL-Touch genutzt, indem ein bestimmtes Testmuster abgefahren wird. Zum anderen wird durch die Angabe der Spindelpositionen sehr genau die zugrundeliegende Kinematik des ganzen Druckeraufbaus berücksichtigt. Zuletzt ist es sogar möglich eine Unterstützung beim Einjustieren der Stellschrauben unter dem Druckbett zu bekommen. All dies wird über Parameter in der Konfiguration beschrieben.
[safe_z_home] home_xy_position: 200, 200 # Change coordinates to the center of your print bed speed: 50 z_hop: 10 # Move up 10mm z_hop_speed: 5
Um überhaupt die Z-Achse sauber einzustellen, muss der Druckkopf mit dem BL-Touch an eine geeignete Stelle, sinnvollerweise in der Mitte des Druckbetts, positioniert werden. Bei der obigen Angabe ist noch nicht berücksichtigt, dass der Sensor nicht an der Düsenposition sitzt. Damit stimmt die Mitte noch nicht ganz. Später !
speed setzt die Geschwindigkeit mit der der Druckkopf an diese Stelle gebracht wird. Die 50 mm/s sind default.
z_hop stellt den Abstand bei der Bewegung ein. Die Angabe in mm lässt die Düse den gewählten Z-Abstand beim Homing einnehmen.
z_hop_speed kann man sich jetzt schon fast denken. Die Geschwindigkeit mit der der oben genannte Abstand eingenommen wird.
[bed_mesh] speed: 50 # The speed (in mm/s) of non-probing moves during the calibration. # The default is 50. probe_count: 3, 3 # For rectangular beds, this is a comma separate pair of integer # values X, Y defining the number of points to probe along each # axis. A single value is also valid, in which case that value will # be applied to both axes. Default is 3, 3. horizontal_move_z: 5 # The height (in mm) that the head should be commanded to move to # just prior to starting a probe operation. The default is 5. algorithm: lagrange # The interpolation algorithm to use. May be either "lagrange" or # "bicubic". This option will not affect 3x3 grids, which are forced # to use lagrange sampling. Default is lagrange. mesh_min : 3,6 # Defines the minimum X, Y coordinate of the mesh for rectangular # beds. This coordinate is relative to the probe's location. This # will be the first point probed, nearest to the origin. This # parameter must be provided for rectangular beds. mesh_max : 350,350 # Schätzwerte # Defines the maximum X, Y coordinate of the mesh for rectangular # beds. Adheres to the same principle as mesh_min, however this will # be the furthest point probed from the bed's origin. This parameter # must be provided for rectangular beds. mesh_pps: 2,2 # A comma separated pair of integers X, Y defining the number of # points per segment to interpolate in the mesh along each axis. A # "segment" can be defined as the space between each probed point. # The user may enter a single value which will be applied to both # axes. Default is 2, 2. bicubic_tension: 0.2 # When using the bicubic algorithm the tension parameter above may # be applied to change the amount of slope interpolated. Larger # numbers will increase the amount of slope, which results in more # curvature in the mesh. Default is .2.
Hier habe ich mal so ziemlich alle Kommentarzeilen erhalten. Zusammen mit den bisherigen Angaben dürfte das Meiste klar sein. Prinzipiell geht es darum ein Netz mit Anfangs- und Endpunkt festzulegen mit dem der BL-Touch die Bettebenheit prüfen kann. Zudem sind natürlich wieder Minimalabstände und Geschwindigkeiten angegeben. Da der Drucker in dieser Konfiguration noch nicht aktiv war, sind einige Werte geschätzt, – hoffentlich mit ausreichender Sicherheit.
[z_tilt] z_positions: 424,200 # Schätzwerte -86,200 # A list of X,Y coordinates (one per line; subsequent lines # indented) describing the location of each bed "pivot point". The # "pivot point" is the point where the bed attaches to the given Z # stepper. It is described using nozzle coordinates (the XY position # of the nozzle if it could move directly above the point). The # first entry corresponds to stepper_z, the second to stepper_z1, # the third to stepper_z2, etc. This parameter must be provided. points: 350,200 # Schätzwerte 45,200 # A list of X,Y coordinates (one per line; subsequent lines # indented) that should be probed during a Z_TILT_ADJUST command. # Specify coordinates of the nozzle and be sure the probe is above # the bed at the given nozzle coordinates. This parameter must be # provided. speed: 50 # The speed (in mm/s) of non-probing moves during the calibration. # The default is 50. horizontal_move_z: 5 # The height (in mm) that the head should be commanded to move to # just prior to starting a probe operation. The default is 5. retries: 5 # Number of times to retry if the probed points aren't within # tolerance. retry_tolerance: 0.01 # If retries are enabled then retry if largest and smallest probed # points differ more than retry_tolerance. Note the smallest unit of # change here would be a single step. However if you are probing # more points than steppers then you will likely have a fixed # minimum value for the range of probed points which you can learn # by observing command output.
Damit Klipper eine präzise Steuerung berechnen kann, muss bekannt sein, wo die beiden Aufhänge- und damit Drehpunkte der Z-Achse liegen. Das wird mit den obigen Paramtern erreicht. Die Werte sind wieder Schätzwerte, die noch verifiziert werden müssen.
[bed_screws] screw1: 25, 25 # The X, Y coordinate of the first bed leveling screw. This is a # position to command the nozzle to that is directly above the bed # screw (or as close as possible while still being above the bed). # This parameter must be provided. screw1_name: vorn-links # An arbitrary name for the given screw. This name is displayed when # the helper script runs. The default is to use a name based upon # the screw XY location. screw2: 200, 25 screw1_name: vorn-mitte screw3: 375, 25 screw1_name: vorn-rechts screw4: 25, 375 screw1_name: hinten-links screw5: 200, 375 screw1_name: hinten-mitte screw6: 375, 375 screw1_name: hinten-rechts speed: 50 # The speed (in mm/s) of non-probing moves during the calibration. # The default is 50. probe_speed: 5 # The speed (in mm/s) when moving from a horizontal_move_z position # to a probe_height position. The default is 5.
Klipper bietet, wie schon oben angedeutet, einen Assistenten zur Grundausrichtung des Druckbetts an. Dafür muss Klipper natürlich wissen, wieviele Einstelll-/Lagerpunkte es gibt und wo sie liegen. Theoretisch sind ja 3 Punkte am sinnvollsten, das hatte ich in einen älteren Beitrag schon ausgeführt. Aufgrund der Größe und des Gewichts kommen bei diesem Drucker aber gleich 6 Punkte ins Spiel. Die sind oben mit ihrer Lage eingetragen.
So weit, – so gut! Ich denke, dass ich eine Grundeinstellung erreicht habe. Übrigens, – ein Display konfiguriere ich nicht. Bei mir kommt später Klipper Screen zum Einsatz. Bis dahin reicht mir die Steuerung über OctoPrint aus. Leider hatte ich schon ein BTT TFT70 V3.0 gekauft, dass jetzt hier original verpackt herumliegt. Es ist zu Klipper nicht kompatibel, – zumindest nicht im Touch-Modus. Mag es jemand haben? Sinnvolle Angebote gern an mich.
Der nächste Beitrag wird sich um die Vorbereitung der Hardware drehen.
Eine richtig klasse Anleitung. Schade, dass ich sie nicht früher gefunden habe und mich alleine durch die meisten Themen kämpfen musste.
Schade auch, dass es hier nicht weiter geht. Vielleicht findest du ja noch die Zeit zum Vervollständigen, wäre toll.
Sorry, ich hab erst jetzt die anderen Teile gefunden.
Danke für die tolle Arbeit