# FLSun QQ-S (2020, non-Pro) - carte MKS Robin Mini # # Valeurs derivees de l'EEPROM REELLE de la machine, relevee le 2026-09-04 # (firmware d'origine = Repetier, pas Marlin -> dump via M205). # Voir eeprom-repetier.txt. La ou upstream et l'EEPROM divergent, l'EEPROM # gagne : c'est la geometrie de CETTE machine. # Base : Klipper config/printer-flsun-qqs-2020.cfg, adaptée. # Destination sur le Pi : ~/printer_data/config/printer.cfg # # Il ne reste qu'UNE valeur a confirmer : nozzle_diameter (cf ligne ~117). # --- Hote : laptop, sans Mainsail --- # Sur MainsailOS on mettrait simplement [include mainsail.cfg] (fichier fourni # par l'image). Ici on declare a la main le strict necessaire. #[include mainsail.cfg] # Permet FORCE_MOVE : deplacer un stepper seul, sans homing prealable. # Sert a verifier le sens de rotation avant le premier G28 (un moteur inverse # enverrait le chariot vers le bas sur toute la course au lieu de le monter). [force_move] enable_force_move: True [virtual_sdcard] path: /home/sam/dev/perso/flsun/gcodes [pause_resume] [display_status] ##################################################################### # MCU ##################################################################### [mcu] # Releve sur la machine le 2026-09-04 (attention : "USB2.0-Serial", pas # "USB_Serial" comme dans la config Klipper upstream). serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0 restart_method: command ##################################################################### # Cinematique delta ##################################################################### [printer] kinematics: delta # Valeurs de depart = celles auxquelles la machine a REELLEMENT tourne # (EEPROM Repetier : feedrate 200, accel 1500). On remontera apres l'input # shaper, pas avant : inutile de partir plus vite qu'elle n'est jamais allee. max_velocity: 200 max_accel: 1500 max_z_velocity: 200 square_corner_velocity: 5 #delta_radius: 140.8 # EEPROM "Horizontal rod radius at 0,0" (upstream disait 130) print_radius: 130 # EEPROM "Max printable radius" minimum_z_position: -5 # marge pour la calibration manuelle : le plateau reel # peut etre sous le zero suppose (doc Klipper Delta_Calibrate) [stepper_a] step_pin: PE3 dir_pin: PE2 # si le homing part a l'envers : mettre !PE2 (idem b et c) enable_pin: !PE4 rotation_distance: 32 # EEPROM 100 steps/mm x 16 ustep -> 32.0, confirme endstop_pin: PA15 microsteps: 16 homing_speed: 30 # EEPROM "Homing feedrate" #position_endstop: 376.03 # EEPROM "Z max length" (upstream disait 370) #arm_length: 278.6 # EEPROM "Diagonal rod length" (upstream disait 280.0) # Les 3 tours sont mises a la meme hauteur volontairement. L'EEPROM porte des # offsets d'endstop (X 0, Y 7, Z 83 pas, soit 0 / 0.07 / 0.83 mm) mais la # convention de signe de Repetier n'est pas transposable telle quelle : c'est # DELTA_CALIBRATE qui les derivera proprement. [stepper_b] step_pin: PE0 dir_pin: PB9 enable_pin: !PE1 rotation_distance: 32 endstop_pin: PA12 microsteps: 16 [stepper_c] step_pin: PB5 dir_pin: PB4 enable_pin: !PB8 rotation_distance: 32 endstop_pin: PC4 microsteps: 16 ##################################################################### # Palpeur (module amovible a clipser sur l'effecteur) ##################################################################### # --- PALPEUR DESACTIVE (pas de module clipse disponible) --- # Tant que le palpeur n'est pas monte, cette section DOIT rester commentee : # sinon une commande de sondage automatique ferait descendre la buse en # attendant un declenchement qui ne viendrait jamais -> buse dans le verre. # # Avec [probe] absent, Klipper bascule automatiquement en sondage MANUEL # (probe.py : "if probe is None or method == 'manual'"), ce qui est de toute # facon la methode recommandee sur delta par la doc Klipper : un palpeur # deporte est fausse par la bascule de l'effecteur. # # Pour le reactiver un jour : decommenter, et remettre horizontal_move_z a 22. #[probe] #pin: !PA11 # le "!" est indispensable : logique inversee sur cette machine #x_offset: 0 #y_offset: 0 #z_offset: 16.2 # EEPROM "Z-probe height" (upstream disait 18). # # A affiner par PROBE_CALIBRATE. #samples: 3 #samples_result: average #sample_retract_dist: 5 #speed: 2 # EEPROM "Z-probe speed" #samples_tolerance: 0.02 #samples_tolerance_retries: 5 [delta_calibrate] radius: 120 # marge par rapport au print_radius de 130 horizontal_move_z: 2 # sondage manuel : la buse touche. 2 mm de garde, demande # de Sam (le zero est verifie a ~1 mm pres). [bed_mesh] speed: 60 horizontal_move_z: 2 # idem, sondage manuel mesh_radius: 120 # < print_radius mesh_origin: 0,0 round_probe_count: 7 # doit etre impair algorithm: bicubic # La compensation s'estompe entre 1 et 10 mm de hauteur : sans fade, une mesh # de 0.5 mm est appliquee sur toute la hauteur et deforme les pieces hautes. # (Ajoute sur disque le 2026-09-04 ; actif au prochain redemarrage.) fade_start: 1 fade_end: 10 ##################################################################### # COURANT MOTEUR — piloté par PWM sur cette carte (MKS Robin Mini) ##################################################################### # Sur la Robin Mini, le Vref des drivers n'est PAS un potentiometre : c'est # une sortie PWM du MCU filtree en tension (Marlin pins_MKS_ROBIN_MINI.h : # MOTOR_CURRENT_PWM_XY_PIN PA6, _Z_PIN PA7, _E_PIN PB0, RANGE 1500, # defaut 800 mA). Repetier fixait ces broches au demarrage ; sans ces # sections Klipper les laisse flotter -> Vref quasi nul -> couple minuscule, # decrochage des 25-30 mm/s. Trouve le 2026-09-04 apres deux homings rates. # # value = courant en mA sur une echelle de 1500 (scale). 800 = defaut Marlin, # ~1.28 V de Vref, ~0.9 A RMS sur TMC2208. Monter par pas de 50-100 si besoin, # ne pas depasser ~1000 sans radiateur/ventilation sur les drivers. [output_pin motor_current_ab] # drivers X et Y = tours A et B pin: PA6 pwm: True hardware_pwm: True cycle_time: 0.001 # 1 kHz, comme Marlin (PWM_FREQUENCY 1000) scale: 1500 value: 800 [output_pin motor_current_c] # driver Z = tour C pin: PA7 pwm: True hardware_pwm: True cycle_time: 0.001 scale: 1500 value: 800 [output_pin motor_current_e] # extrudeur pin: PB0 pwm: True hardware_pwm: True cycle_time: 0.001 scale: 1500 value: 800 ##################################################################### # Extrudeur — bowden Titan clone, hotend V6 clone a gaine PTFE ##################################################################### [extruder] step_pin: PD6 dir_pin: !PD3 enable_pin: !PB3 rotation_distance: 7.716 # MESURE 2026-09-04 (PETG 235, 1 mm/s) : 100 mm commandes # -> 88.5 mm reels avec 8.719 (EEPROM Repetier 367 pas/mm), # soit 11.5 % de sous-extrusion depuis toujours. # 8.719 x 88.5 / 100 = 7.716. A contre-verifier (20 mm restants). microsteps: 16 nozzle_diameter: 0.400 # <<< A CONFIRMER : le slicer dit 0.4, mais une buse # plus grosse aurait ete montee. Verifier le marquage. filament_diameter: 1.750 heater_pin: PC3 sensor_type: EPCOS 100K B57560G104F sensor_pin: PC1 #control: pid # Les PID de l'EEPROM Repetier (P24 / I0.88 / D80) ne sont PAS transposables : # echelles differentes. Valeurs upstream en attendant PID_CALIBRATE. #pid_Kp: 14.529 #pid_Ki: 0.557 #pid_Kd: 94.802 min_temp: 0 max_temp: 250 # abaisse de 260 -> 250 : garde-fou gaine PTFE. # Ne jamais viser plus de ~245 en consigne. # Plafond de debit du hotend : ~10-12 mm3/s en PLA. Klipper ne le change pas. max_extrude_only_distance: 150 # confort pour les purges / calibration E # Protection thermique de la buse : fenetre elargie. Ce hotend (V6 clone, # gaine PTFE) a une forte inertie thermistance/bloc : pendant le PID_CALIBRATE # la lecture a baisse 30 s d'affilee alors que la cartouche chauffait a fond, # et la protection par defaut (+2 C / 20 s) a coupe. Chauffe verifiee saine : # 27 -> 234 C en 95 s. On elargit, on ne desactive pas. [verify_heater extruder] check_gain_time: 60 hysteresis: 10 heating_gain: 1 [heater_bed] heater_pin: PA0 sensor_type: EPCOS 100K B57560G104F sensor_pin: PC0 #control: pid # Idem : EEPROM Repetier P196 / I33.02 / D290, non transposables. #pid_Kp: 325.10 #pid_Ki: 63.35 #pid_Kd: 417.10 min_temp: 0 max_temp: 150 [fan] pin: PB1 ##################################################################### # A ajouter APRES mesure — ne pas inventer les valeurs ##################################################################### # Renseigne par SET_PRESSURE_ADVANCE + tour de test. # En bowden, PA est eleve : compter 0.4 a 1.0. [extruder] pressure_advance: 0.38 # tour square_tower_pla 2026-09-05 : meilleurs coins a 19 mm x 0.020 (bowden, PLA 210) # Renseigne par la mesure de resonance (ringing tower ou ADXL345). #[input_shaper] #shaper_freq_x: 0 #shaper_freq_y: 0 #shaper_type: mzv ##################################################################### # Macros d'impression ##################################################################### # A coller dans le slicer : START_PRINT BED=60 HOTEND=210 et END_PRINT # Tout le reste du gcode de demarrage/fin se met ICI, pas dans le slicer : # ca evite de reslicer a chaque ajustement. [gcode_macro START_PRINT] gcode: {% set BED = params.BED|default(60)|float %} {% set HOTEND = params.HOTEND|default(210)|float %} M140 S{BED} M104 S{HOTEND} G28 M190 S{BED} M109 S{HOTEND} BED_MESH_PROFILE LOAD=default # sans ca, la mesh sauvee n'est jamais appliquee SET_GCODE_OFFSET Z=-0.15 # 1re couche, zero a chaud du 6/09 : -0.10 colle a peine, -0.20 colle avec lèvre de 0.3. Etait +0.07 sur le zero FROID du 4/09 ; le zero a chaud du 6/09 est ~0.4 plus haut -> cube n a pas colle a +0.07 G92 E0 # ligne de purge sur le bord avant du plateau rond G1 X-60 Y-110 Z0.3 F4000 G1 X60 Y-110 E8 F1200 G1 Z2 F1000 G92 E0 [gcode_macro END_PRINT] gcode: G91 G1 E-4 F2700 G1 Z10 F3000 G90 TURN_OFF_HEATERS M107 SET_GCODE_OFFSET Z=0 # base propre pour le prochain START_PRINT G28 M84 [idle_timeout] # 1 h : les passes de mesure (fix-mesh, calib) durent plus que les 10 min par defaut timeout: 3600 #*# <---------------------- SAVE_CONFIG ----------------------> #*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated. #*# #*# [printer] #*# delta_radius = 141.288016 #*# #*# [stepper_a] #*# angle = 210.926178 #*# arm_length = 278.600000 #*# position_endstop = 376.075148 #*# #*# [stepper_b] #*# angle = 330.333549 #*# arm_length = 278.600000 #*# position_endstop = 375.969773 #*# #*# [stepper_c] #*# angle = 90.000000 #*# arm_length = 278.600000 #*# position_endstop = 376.858719 #*# #*# [bed_mesh default] #*# version = 1 #*# points = #*# -0.599915, -0.599915, -0.599915, -0.599915, -0.599915, -0.599915, -0.599915 #*# -0.096447, -0.096447, -0.099369, -0.199279, -0.195395, -0.197328, -0.197328 #*# -0.099584, -0.099584, -0.100021, -0.096405, -0.095935, 0.099734, 0.099734 #*# -0.196456, 0.002350, 0.001925, -0.002127, 0.001182, 0.097749, -0.099764 #*# -0.202565, -0.202565, -0.000450, 0.100246, 0.100409, -0.202435, -0.202435 #*# -0.100142, -0.100142, 0.099605, 0.099353, -0.100649, -0.300399, -0.300399 #*# 0.099221, 0.099221, 0.099221, 0.099221, 0.099221, 0.099221, 0.099221 #*# x_count = 7 #*# y_count = 7 #*# mesh_x_pps = 2 #*# mesh_y_pps = 2 #*# algo = bicubic #*# tension = 0.2 #*# min_x = -120.0 #*# max_x = 120.0 #*# min_y = -120.0 #*# max_y = 120.0 #*# #*# [extruder] #*# control = pid #*# pid_kp = 15.897 #*# pid_ki = 0.627 #*# pid_kd = 100.750 #*# #*# [heater_bed] #*# control = pid #*# pid_kp = 68.704 #*# pid_ki = 1.579 #*# pid_kd = 747.156 #*# #*# [delta_calibrate] #*# height0 = 0.0 #*# height0_pos = 37585.000,37613.000,37680.000 #*# height1 = 0.0 #*# height1_pos = 44830.000,44647.000,33961.000 #*# height2 = 0.0 #*# height2_pos = 36966.000,49190.000,36966.000 #*# height3 = 0.0 #*# height3_pos = 34021.000,43552.000,43565.000 #*# height4 = 0.0 #*# height4_pos = 36552.000,36685.000,45313.000 #*# height5 = 0.0 #*# height5_pos = 42266.000,34215.000,42464.000 #*# height6 = 0.0 #*# height6_pos = 46996.000,36700.000,36804.000