Aller au contenu

GO Print

Gcode démarrage/fin prusa slicer sidwinder X1


Messages recommandés

il y a 14 minutes, fabienlenna a dit :

j'ai une vingtaines de fichier .cfg  je ne sais pas pourquoi.

A chaque fois que tu fais un SAVE_CONFIG, le fichier printer.cfg est sauvegardé avant la réécriture du nouveau. Il est alors nommé: printer_«date».cfg. Tu peux le supprimer si le nouveau printer.cfg est fonctionnel. Avec Mainsail, tu peux aussi ne pas les afficher (les cacher donc).

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 9 minutes, fabienlenna a dit :

tu conseil quelle valeur pour le z hop ?

10mm est largement suffisant, surtout avec ton détecteur inductif. J'irai même mettre 5mm pour éviter de perdre du temps

il y a 15 minutes, fabienlenna a dit :

je dois faire autre chose pour l'auto leveling maintenant ?

je ne pense pas

il y a 28 minutes, fran6p a dit :
il y a 53 minutes, pommeverte a dit :

Pour les ajouts automatiques, perso, je les supprime en mettant à jour les valeurs dans les bonnes sections pour ne plus avoir de section SAVE_CONFIG

Drôle d'idée

j'aime bien quand tout est rangé à sa place 😅

Lien vers le commentaire
Partager sur d’autres sites

Tu aimes bien surtout te compliquer la vie. Avec la procédure «normale», inutile de réécrire les fichiers à chaque réglage (PID, Zoffset, Bed_mesh, Input shaper, …). Mais c'est toi qui voit, c'est ton matériel, par contre je ne trouve pas recommandé de préconiser ta méthode de travail. Exemple, si tu as un BLT et procède à un maillage du plateau, Tu le sauvegardes où ton maillage ? Maillage qu'il faudra d'ailleurs explicitement charger car le comportement de Klipper désormais est de ne plus charger celui-ci par défaut.

🙄

Modifié (le) par fran6p
Lien vers le commentaire
Partager sur d’autres sites

il y a 5 minutes, pommeverte a dit :

10mm est largement suffisant, surtout avec ton détecteur inductif. J'irai même mettre 5mm pour éviter de perdre du temps

je ne pense pas

j'aime bien quand tout est rangé à sa place 😅

le z hop est a 5mm maintenant , j'ai démarré une commande BED_MESH_CALIBRATE mais il ne prend pas tout le plateau, il est plus éloigné du bord a droite et en face. 

Lien vers le commentaire
Partager sur d’autres sites

Ta section [bed_mesh] correspond à un plateau de 250x250 (c'est la configuration de l'exemple de cette page). Lis la procédure jusqu'au bout et adapte en fonction des dimensions de ton plateau ( 310 x 310 déclaré) et des X et Y offsets déclarés dans ta section [probe] 😉

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, fran6p a dit :

Ta section [bed_mesh] correspond à un plateau de 250x250 (c'est la configuration de l'exemple de cette page). Lis la procédure jusqu'au bout et adapte en fonction des dimensions de ton plateau ( 310 x 310 déclaré) et des X et Y offsets déclarés dans ta section [probe] 😉

 

Voici ce que j'ai dans le printer.cfg: 

[safe_z_home]
home_xy_position: 119,150
speed: 100
z_hop: 05               
z_hop_speed: 20

[bed_mesh]        # palpage du plateau pour le nivellement
speed: 800
mesh_min: 30,30
mesh_max: 270,270
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0 
fade_end: 5.0

 il est a fond a gauche sur le plateau mais pas a droite, a fond au fond du plateau mais pas a l'avant

 j'ai d'autre chose a configurer ? Le test de la feuille de papier est plus nécessaire?

  Le gcode de début peut-être?  ou la section extrudeuse dans cura dans les paramètres ? 

A L'écran du sonic pad il doit pas y avoir un bouton a l'écran pour le leveling auto ? 

IMG_20230814_183237.jpg

IMG_20230814_183351.jpg

IMG_20230814_183355.jpg

Modifié (le) par fabienlenna
Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, fabienlenna a dit :

il est a fond a gauche sur le plateau mais pas a droite, a fond au fond du plateau mais pas a l'avant

c'est normal, tu ne tiens pas complètement compte du décalage du détecteur par rapport à la buse:

x_offset: 28.0
y_offset: -33.0

Pour ton décalage d'impression, est-ce vraiment important de ne pas avoir la surface d'impression centrée? Si tu veux le faire, il te faudra jouer avec les paramètres

position_max, position_min et position_endstop des sections [stepper_x] et [stepper_y]

Il y a 4 heures, fabienlenna a dit :

j'ai d'autre chose a configurer ? Le test de la feuille de papier est plus nécessaire?

normalement, tu l'as déjà fait puisque tu as déterminé le Z_offset, mais tu peux le refaire en utilisant la commande PROBE_CALIBRATE (voir la doc)

Il y a 4 heures, fabienlenna a dit :

Le gcode de début peut-être?  ou la section extrudeuse dans cura dans les paramètres ? 

A L'écran du sonic pad il doit pas y avoir un bouton a l'écran pour le leveling auto ?

je laisse la main à @fran6p puisque je n'ai ni le SonicPAd, ni expérimenté le nivellement (mon plateau est plan et réglé mécaniquement 😅)

Lien vers le commentaire
Partager sur d’autres sites

il y a 32 minutes, pommeverte a dit :

c'est normal, tu ne tiens pas complètement compte du décalage du détecteur par rapport à la buse:

x_offset: 28.0
y_offset: -33.0

Pour ton décalage d'impression, est-ce vraiment important de ne pas avoir la surface d'impression centrée? Si tu veux le faire, il te faudra jouer avec les paramètres

position_max, position_min et position_endstop des sections [stepper_x] et [stepper_y]

normalement, tu l'as déjà fait puisque tu as déterminé le Z_offset, mais tu peux le refaire en utilisant la commande PROBE_CALIBRATE (voir la doc)

je laisse la main à @fran6p puisque je n'ai ni le SonicPAd, ni expérimenté le nivellement (mon plateau est plan et réglé mécaniquement 😅)

ok très bien merci beaucoup, j'attend de voir pour les modifications dans cura via le gcode de début avec la prise en compte du bl touch.

J'ai mis le G29 après le G28 c'est bon ?

J'ai lancé un print test bed leveling rien ne sort de la buse j'ai du augmenter de manuellement le z de beaucoup pour enfin voir la 1ere couche.

J'arrête pour aujourd'hui je suis HS.

 

Bonne nuit et merci énormément  

Modifié (le) par fabienlenna
Lien vers le commentaire
Partager sur d’autres sites

Il y a 13 heures, fabienlenna a dit :

J'ai mis le G29 après le G28 c'est bon ?

Avec Klipper, à moins qu'il n'existe une macro «G29», c'est plutôt BED_MESH_CALIBRATE qu'il faut utiliser.

Si un maillage existe et a été sauvegardé (SAVE_CONFIG), tu peux alors remplacer le BED_MESH_CALIBRATE par un BED_MESH_PROFILE LOAD="default" (remplacer "default" par le nom donné si tu as enregistré le maillage sous un autre nom via BED_MESH_PROFILE SAVE="monimprimanteamoiquelleestbelleetimprimeviteparcequeKlipper" ).

Même si cela concerne mon Ender3 S1 avec Klipper et le SonicPad (voir ce dépôt pour quelques astuces, hacks), tu peux consulter mon dépôt Github pour mes fichiers de configurations (les macros par exemple, G29 et d'autres).

Juste une ou deux remarques par rapport à ton printer.cfg:

- une raison particulière de ne pas centrer le plateau dans [safe_z_home] home_xy_position: 119,150 ( normalement plutôt 155,155 non ?)

- ta vitesse de déplacement lors d'un maillage [bed_mesh]  speed: 800 est impossible car tu déclares une vitesse maximale de 200 dans [printer] max_velocity: 200

Pour en revenir à la surface atteignable par le capteur pour réaliser un maillage, avec ta sonde à droite et devant la buse ( x28, y-33 ), elle ne peut atteindre que x⩾28 et y⩽277 (x=[28,310], y=[0,277]) il est préférable de mettre une petite marge de sécurité quand on utilise une sonde de type Bltouch (pour éviter que le pointeau se retrouve hors plateau) ce qui n'est pas le cas avec ta sonde donc mesh_min pourrait être 28,0 et mesh_max de 310,277

🙂

Modifié (le) par fran6p
Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, fran6p a dit :

Avec Klipper, à moins qu'il n'existe une macro «G29», c'est plutôt BED_MESH_CALIBRATE qu'il faut utiliser.

Si un maillage existe et a été sauvegardé (SAVE_CONFIG), tu peux alors remplacer le BED_MESH_CALIBRATE par un BED_MESH_PROFILE LOAD="default" (remplacer "default" par le nom donné si tu as enregistré le maillage sous un autre nom via BED_MESH_PROFILE SAVE="monimprimanteamoiquelleestbelleetimprimeviteparcequeKlipper" ).

Même si cela concerne mon Ender3 S1 avec Klipper et le SonicPad (voir ce dépôt pour quelques astuces, hacks), tu peux consulter mon dépôt Github pour mes fichiers de configurations (les macros par exemple, G29 et d'autres).

Juste une ou deux remarques par rapport à ton printer.cfg:

- une raison particulière de ne pas centrer le plateau dans [safe_z_home] home_xy_position: 119,150 ( normalement plutôt 155,155 non ?)

- ta vitesse de déplacement lors d'un maillage [bed_mesh]  speed: 800 est impossible car tu déclares une vitesse maximale de 200 dans [printer] max_velocity: 200

Pour en revenir à la surface atteignable par le capteur pour réaliser un maillage, avec ta sonde à droite et devant la buse ( x28, y-33 ), elle ne peut atteindre que x⩾28 et y⩽277 (x=[28,310], y=[0,277]) il est préférable de mettre une petite marge de sécurité quand on utilise une sonde de type Bltouch (pour éviter que le pointeau se retrouve hors plateau) ce qui n'est pas le cas avec ta sonde donc mesh_min pourrait être 28,0 et mesh_max de 310,277

🙂

j'ai modifié les valeurs, j'ai demandé un bed mesh calibrate et voici ce que j'ai.

une idée de la cause car la traduction parle de la sonde la ointe du bl touch je suppose.

 

Capture d’écran 2023-08-15 150230.png

Lien vers le commentaire
Partager sur d’autres sites

Remets le contenu de la section [probe]

Une valeur (ou plusieurs) doit être incorrecte. N'ayant jamais utilisé de sonde inductive / capacitive (en fait si mais c'était avec ma «sasfépu» Dagoma Discovery 200 avec Marlin), je ne sais pas trop.

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 2 minutes, fran6p a dit :

Remets le contenu de la section [probe]

Une valeur (ou plusieurs) doit être incorrecte. N'ayant jamais utilisé de sonde inductive / capacitive (en fait si mais c'était avec ma «sasfépu» Dagoma Discovery 200 avec Marlin), je ne sais pas trop.

🙂

[probe]
pin: ^!ar18
x_offset: 28.0
y_offset: -33.0
z_offset: 2.040
speed: 10.0
samples: 1
samples_result: average

le voici

Lien vers le commentaire
Partager sur d’autres sites

Dans la section [stepper_z], tu as défini une broche virtuelle ET commenté le «position_endstop» ? Voir la documentation pour vérifier.

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, fran6p a dit :

Dans la section [stepper_z], tu as défini une broche virtuelle ET commenté le «position_endstop» ?

normal, c'est écrit dans la doc:

Citation

Si vous utilisez "probe:z_virtual_endstop", ne définissez pas de position_endstop dans la configuration de la section stepper_z.

Je viens de faire un palpage de plateau avec un système similaire au tien, @fabienlenna sans avoir d'erreur (j'utilise un détecteur mécanique et non inductif).

Ce qui choque, c'est que tu as le message d'erreur après le G28, donc avant de faire un nivellement 🤔. Le message semble indiqué qu'il n'a pas détecté le plateau pendant la prise d'origine en Z. Je pense que tu pourrais essayer de passer le paramètre à position_min de la section [stepper_z] à -5mm, même si ça semble trop. Après ça, as-tu toujours le message d'erreur après le G28?

Modifié (le) par pommeverte
Lien vers le commentaire
Partager sur d’autres sites

il y a 2 minutes, pommeverte a dit :

normal, c'est écrit dans la doc:

Je viens de faire un palpage de plateau avec un système similaire au tien, @fabienlenna (j'utilise un détecteur mécanique et non inductif) sans avoir d'erreur.

Ce qui choque, c'est que tu as le message d'erreur après le G28, donc avant de faire un nivellement 🤔. Le message semble indiqué qu'il n'a pas détecté le plateau pendant la prise d'origine en Z. Je pense que tu pourrais essayer de passer le paramètre à position_min de la section [stepper_z] à -5mm, même si ça semble trop. Après ça, as-tu toujours le message d'erreur après le G28?

 Bonjour merci pour ton intervention 😊

 

Dans l'urgence je devais lancer une impression celle ci est en cours, j'ai réglé la première couche avec le bouton à l'écran du Sonic pad pour le moment ça imprime donc je vais essayer demain après midi après le travail. Merci encore pour vos messages d'aides sans quoi je serais encore plus bloqué.

 

IMG_20230815_154008.jpg

IMG_20230815_154637.jpg

Lien vers le commentaire
Partager sur d’autres sites

il y a 29 minutes, pommeverte a dit :

normal, c'est écrit dans la doc:

C'est exactement ce que j'avais dit en donnant le lien vers la documentation. Donc, quel intérêt de le repréciser ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, pommeverte a dit :

Donc ça veut dire que tu as fais une prise d'origine correcte, sans erreur 🤨... là, je suis un peu perdu 😅

Oui et non car j'ai du le faire manuellement car la première couche était invisible tellement la buse était proche du plateau...

Je comprends pas non plus  lol 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, fran6p a dit :

C'est exactement ce que j'avais dit en donnant le lien vers la documentation. Donc, quel intérêt de le repréciser ?

Désolé, j'ai mal interprété ton message 🥴. Comme ce point a été évoqué ici et appliqué , j'ai cru que tu avais pointé du doigt une erreur qu'il n'y avait pas.

Il y a 2 heures, fabienlenna a dit :

Je comprends pas non plus

C'est d'autant plus étrange que tu as déjà réussi à faire un nivellement:

Le 14/08/2023 at 16:43, fabienlenna a dit :

j'ai démarré une commande BED_MESH_CALIBRATE mais il ne prend pas tout le plateau, il est plus éloigné du bord a droite et en face. 

Tu as modifié quelque chose dans ton printer.cfg, depuis?

Pour le réglage du Z-offset, est-ce que tu as appliqué ceci:

Il y a 23 heures, pommeverte a dit :

tu peux le refaire en utilisant la commande PROBE_CALIBRATE (voir la doc)

Lien vers le commentaire
Partager sur d’autres sites

Il y a 8 heures, pommeverte a dit :

Désolé, j'ai mal interprété ton message 🥴. Comme ce point a été évoqué ici et appliqué , j'ai cru que tu avais pointé du doigt une erreur qu'il n'y avait pas.

C'est d'autant plus étrange que tu as déjà réussi à faire un nivellement:

Tu as modifié quelque chose dans ton printer.cfg, depuis?

Pour le réglage du Z-offset, est-ce que tu as appliqué ceci:

J'irai vérifier ça dans l'après-midi et refaire un bed mesh calibrate, en attendant j'ai dû démarrer une impression elle s'est bien passée (voir la photo ci-jointe) pour le moment mon souci principal c'est le z offset et ce qui tourne autour, je dois monter manuellement à 1.45 - 1.60 en moyenne au démarrage de la première couche sinon rien ne sort de la buse.

Ça ne viendrait pas de mon fichier printer.cfg comme c'est le bazar dedans ?

Le but de l'installation de ce " BL TOUCH maison " était d'avoir une première couche plus propre qu'avant on va dire que j'y suis sauf qu'il me manque la partie automatique c'est réglé il y a plus qu'à 😙

 

IMG_20230816_061318.jpg

IMG_20230816_061405_Bokeh.jpg

IMG_20230816_061510.jpg

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, pommeverte a dit :

Salut,

Ça dépend, il ressemble à quoi maintenant?

le voici: 

Citation

[mcu]
#make sure this reflects your serial port you found when flashing klipper
serial: /dev/serial/by-id/usb_serial_1

[stepper_x]
step_pin: ar54
dir_pin: ar55
enable_pin: !ar38
microsteps: 16
rotation_distance: 40
endstop_pin: ^!ar3
position_endstop: 0
position_max: 310
homing_speed: 40.0

[stepper_y]
step_pin: ar60
dir_pin: ar61
enable_pin: !ar56
microsteps: 16
rotation_distance: 40
endstop_pin: ^!ar14
position_endstop: 0
position_max: 310
homing_speed: 40
homing_positive_dir: false

[stepper_z]
step_pin: ar46
dir_pin: !ar48
enable_pin: !ar62
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop # ^!ar18
position_min: -3
position_max: 400
homing_speed: 30
second_homing_speed: 1

[stepper_z1]
step_pin: ar36
dir_pin: !ar34
enable_pin: !ar30
microsteps: 16
rotation_distance: 8

[probe]
pin: ^!ar18
x_offset: 28.0
y_offset: -33.0
z_offset: 2.040
speed: 10.0
samples: 1
samples_result: average

[safe_z_home]
home_xy_position: 155,155
speed: 100
z_hop: 05               
z_hop_speed: 20

[bed_mesh]        # palpage du plateau pour le nivellement
speed: 200
mesh_min: 28,0
mesh_max: 310,277
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0 
fade_end: 5.0

[extruder]
control = pid
pid_kp = 22.385
pid_ki = 1.658
pid_kd = 75.548
step_pin: ar26
dir_pin: ar28
enable_pin: !ar24
microsteps: 16
rotation_distance: 6.47
# formula : rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / <requested_extrude_distance>
# 120 - 18.6 = 101.4
# rotation_distance = 6.39 * 101.4 / 100
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: ar10
sensor_type: EPCOS 100K B57560G104F
sensor_pin: analog13
min_extrude_temp: 190
min_temp: 5
max_temp: 300
max_extrude_only_distance: 500
max_extrude_cross_section: 2.0
pressure_advance_smooth_time: 0.04
pressure_advance: 0

[heater_bed]
control = pid
heater_pin: ar8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: analog14
min_temp: 5
max_temp: 150
pid_kp = 40.258
pid_ki = 0.349
pid_kd = 1159.425


[fan]
pin: ar9
kick_start_time: 0.500

[heater_fan my_nozzle_fan]
pin:ar7
heater: extruder
heater_temp: 50.0
fan_speed: 1.0

[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 3000
max_z_velocity: 50
max_z_accel: 100
square_corner_velocity: 5 

[bed_screws]
screw1: 55,55
screw1_name: front left
screw2: 255,55
screw2_name: front right
screw3: 255,255
screw3_name: back right
screw4: 55,255
screw4_name: back left
speed: 100.0


[gcode_macro START_PRINT]
gcode :
    # Home l'imprimante
    G28
    BED_MESH_PROFILE LOAD = par défaut       
    # Utiliser les coordonnées absolues
    {% set BED_TEMP = params.BED_TEMP|default(50)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
    # Démarrer le chauffage du lit
    M140 S{BED_TEMP}
    # Utiliser les coordonnées absolues
    G90
    # Réinitialisez le décalage Z du code G (ajustez le décalage Z si nécessaire)
    SET_GCODE_OFFSET Z =0.0
    # Home l'imprimante
    G28
    # Déplacez la buse près du lit
    G1 Z5 F3000
    # Déplacez la buse très près du lit
    G1 Z0.15 F300
    # Attendez que le lit atteigne la température
    M190 S{BED_TEMP}
    # Réglez et attendez que la buse atteigne la température
    M109 S{EXTRUDER_TEMP}


[pause_resume]
recover_velocity: 50

[gcode_macro DÉCHARGER]
gcode :
    G91
    G1 E5.0 F1200
    G1 E-50.0 F2000
    G1 E-50.0 F5000
    G90

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  ##### set park positon for x and y #####
  # default is your max posion from your printer.cfg
  {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
  {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% if act_z < (max_z - 2.0) %}
      {% set z_safe = 2.0 %}
  {% else %}
      {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  PAUSE_BASE
  G91
  {% if printer.extruder.can_extrude|lower == 'true' %}
    G1 E-{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}
  {% if "xyz" in printer.toolhead.homed_axes %}
    G1 Z{z_safe} F900
    G90
    G1 X{x_park} Y{y_park} F6000
  {% else %}
    {action_respond_info("Printer not homed")}
  {% endif %}

[gcode_macro PURGER]
gcode :
    M117 PURGING..
    G91
    G1 E45.0 F250
    G90

[gcode_macro LOAD_FILAMENT]
gcode :
    M117  LOADING...
    G91
    G1 E25.0 F1000
    G1 E50.0 F2000
    G4 P900
    G1 E20.0 F250
    G90

[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  #### get VELOCITY parameter if specified ####
  {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
  {%else %}
    {% set get_params = "" %}
  {% endif %}
  ##### end of definitions #####
  {% if printer.extruder.can_extrude|lower == 'true' %}
    G91
    G1 E{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}  
  RESUME_BASE {get_params}


[gcode_macro END_PRINT]
gcode :
    # Éteignez le lit, l'extrudeuse et le ventilateur
    M140 S0
    M104 S0
    M106 S0
    # Éloignez la buse de l'impression tout en se rétractant
    G91
    G1 X-2 Y-2 E-3 F300
    # Relever la buse de 10 mm
    G1 Z10 F3000
    G90
    # Désactiver les steppers
    M84


[gcode_macro CANCEL_PRINT]
gcode :
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
variable_park: True
gcode :
  ## Move head and retract only if not already in the pause state and park set to true
  {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
    _TOOLHEAD_PARK_PAUSE_CANCEL
  {% endif %}
  TURN_OFF_HEATERS
  CANCEL_PRINT_BASE

[filament_switch_sensor my_sensor]
pause_on_runout: TRUE
switch_pin: ar2

[display_status]

[virtual_sdcard]
path: ~/gcode_files/

# Arduino aliases for atmega2560/1280 (Arduino mega) boards
[board_pins arduino-mega]
aliases:
    ar0=PE0, ar1=PE1, ar2=PE4, ar3=PE5, ar4=PG5,
    ar5=PE3, ar6=PH3, ar7=PH4, ar8=PH5, ar9=PH6,
    ar10=PB4, ar11=PB5, ar12=PB6, ar13=PB7, ar14=PJ1,
    ar15=PJ0, ar16=PH1, ar17=PH0, ar18=PD3, ar19=PD2,
    ar20=PD1, ar21=PD0, ar22=PA0, ar23=PA1, ar24=PA2,
    ar25=PA3, ar26=PA4, ar27=PA5, ar28=PA6, ar29=PA7,
    ar30=PC7, ar31=PC6, ar32=PC5, ar33=PC4, ar34=PC3,
    ar35=PC2, ar36=PC1, ar37=PC0, ar38=PD7, ar39=PG2,
    ar40=PG1, ar41=PG0, ar42=PL7, ar43=PL6, ar44=PL5,
    ar45=PL4, ar46=PL3, ar47=PL2, ar48=PL1, ar49=PL0,
    ar50=PB3, ar51=PB2, ar52=PB1, ar53=PB0, ar54=PF0,
    ar55=PF1, ar56=PF2, ar57=PF3, ar58=PF4, ar59=PF5,
    ar60=PF6, ar61=PF7, ar62=PK0, ar63=PK1, ar64=PK2,
    ar65=PK3, ar66=PK4, ar67=PK5, ar68=PK6, ar69=PK7,
    analog0=PF0, analog1=PF1, analog2=PF2, analog3=PF3, analog4=PF4,
    analog5=PF5, analog6=PF6, analog7=PF7, analog8=PK0, analog9=PK1,
    analog10=PK2, analog11=PK3, analog12=PK4, analog13=PK5, analog14=PK6,
    analog15=PK7,
    # Marlin adds these additional aliases
    ml70=PG4, ml71=PG3, ml72=PJ2, ml73=PJ3, ml74=PJ7,
    ml75=PJ4, ml76=PJ5, ml77=PJ6, ml78=PE2, ml79=PE6,
    ml80=PE7, ml81=PD4, ml82=PD5, ml83=PD6, ml84=PH2,
    ml85=PH7
    

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#

# [mcu rpi]
# serial: /tmp/klipper_host_mcu

# [adxl345]
# cs_pin: rpi:None
# spi_speed: 2000000
# spi_bus: spidev2.0

# [resonance_tester]
# accel_chip: adxl345
# accel_per_hz: 70
# probe_points:
#        150,150,10


#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = -0.030

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [input_shaper]
#*# shaper_type_x = 3hump_ei
#*# shaper_freq_x = 78.4
#*# shaper_type_y = 2hump_ei
#*# shaper_freq_y = 39.0

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 16.153
#*# pid_ki = 0.704
#*# pid_kd = 92.676

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = -0.200

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.120

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.870

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 40.258
#*# pid_ki = 0.349
#*# pid_kd = 1159.425

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.800

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.890

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.890

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [stepper_z]
#*# position_endstop = 0.690

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [input_shaper]
#*# shaper_type_x = 2hump_ei
#*# shaper_freq_x = 86.6
#*# shaper_type_y = zv
#*# shaper_freq_y = 37.8

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 37.148
#*# pid_ki = 0.219
#*# pid_kd = 1574.149

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 37.148
#*# pid_ki = 0.219
#*# pid_kd = 1574.149
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 19.879
#*# pid_ki = 0.967
#*# pid_kd = 102.129

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#       -0.425000, -0.267500, -0.127500, -0.030000, -0.012500
#*#       -0.327500, -0.175000, -0.020000, 0.080000, 0.055000
#*#       -0.320000, -0.170000, -0.017500, 0.092500, 0.087500
#*#       -0.382500, -0.215000, -0.027500, 0.080000, 0.132500
#*#       -0.315000, -0.187500, -0.052500, 0.030000, 0.060000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 30.0
#*# max_x = 270.0
#*# min_y = 30.0
#*# max_y = 270.0

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#       -0.092500, -0.082500, -0.072500, -0.112500, -0.222500
#*#       -0.022500, 0.007500, 0.040000, -0.007500, -0.205000
#*#       -0.047500, -0.005000, 0.047500, 0.022500, -0.102500
#*#       -0.095000, -0.017500, 0.075000, 0.060000, -0.012500
#*#       -0.027500, 0.022500, 0.067500, 0.032500, -0.055000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 30.0
#*# max_x = 270.0
#*# min_y = 30.0
#*# max_y = 270.0

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.490

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#       -0.610000, -0.430000, -0.470000, -0.395000, -0.572500
#*#       0.085000, 0.122500, 0.160000, 0.125000, -0.027500
#*#       0.070000, 0.110000, 0.170000, 0.155000, 0.027500
#*#       0.057500, 0.127500, 0.215000, 0.197500, 0.125000
#*#       0.077500, 0.125000, 0.180000, 0.160000, 0.065000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 30.0
#*# max_x = 270.0
#*# min_y = 30.0
#*# max_y = 270.0

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 2.040

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#       -0.092500, -0.092500, -0.080000, -0.165000, -0.247500
#*#       -0.045000, -0.055000, -0.025000, -0.100000, -0.222500
#*#       -0.077500, -0.102500, -0.035000, -0.097500, -0.225000
#*#       -0.132500, -0.110000, -0.022500, -0.065000, -0.145000
#*#       -0.067500, -0.112500, -0.060000, -0.117500, -0.195000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 30.0
#*# max_x = 270.0
#*# min_y = 30.0
#*# max_y = 270.0
 

 

PROBE_CALIBRATE 

BED_MESH_CALIBRATE 

 

j'ai le même message d'erreur  {"code":"key22", "msg":"No trigger on probe after full movement", "values": ["probe"]} après mon print j'ai fais un SAVE_CONFIG mais j'ai pas l'impression qu'il sauvegarde car en Z_OFFSET sur le printer.cfg j'ai 2.040.

Il y a 1 heure, fabienlenna a dit :

le voici: 

 

PROBE_CALIBRATE 

BED_MESH_CALIBRATE 

 

j'ai le même message d'erreur  {"code":"key22", "msg":"No trigger on probe after full movement", "values": ["probe"]} après mon print j'ai fais un SAVE_CONFIG mais j'ai pas l'impression qu'il sauvegarde car en Z_OFFSET sur le printer.cfg j'ai 2.040.

J'ai  fais un nouveau bed_screws_adjust pour mettre mon plateau au mieux puis j'ai fait un probe_calibrate puis un save_config.

A partir de la je me suis rendu compte que le save_config ne sauvegardé pas, j'ai donc noté la nouvelle valeur du z_offset en direct sur mon fichier .cfg.

Save and restart, lancer un print test de première couche et tout est ok. 

ENFIN 

Une dernière question pourquoi je ne vois pas le maillage de mon plateau?  cf photo 

 

Capture d’écran 2023-08-16 201214.png

Lien vers le commentaire
Partager sur d’autres sites

Avant que tu n'ajoutes la dernière partie de ton message, je t'aurais conseillé de:

  1. nettoyer ton fichier printer.cfg. printerV2.txtC'est ce que j'ai fait avec ce fichier où j'ai:
  • mis à jour les valeurs sauvegardées,
  • supprimé les multiples section SAVE_CONFIG et la matrice de correction.
  • Comme je n'ai pas compris cette remarque:
Le 14/08/2023 at 16:06, fran6p a dit :

Même si ton fichier printer.cfg utilise la section d'alias des broches format Arduino, il serait préférable (à terme) de ne plus utiliser que le nouveau format de nommage 🤔. De temps en temps Klipper passe certaines directives en mode «déprécié».

j'ai supprimé les alias et je les ai remplacé par les noms des entrées/sorties. Il faudra faire une vérification afin de s'assurer que je n'ai pas commis d'erreur 🥴.

Il faudra donc sauvegarder à nouveau un nivellement puisqu'il n'y en a plus dans le fichier.

    2. supprimer tous tes fichiers .cfg que tu auras sauvegarder sur ton ordinateur, avant, pour ne laisser qu'un printer.cfg. Comme ton fichier ne fait pas appel à d'autres .cfg, il ne devrait pas y avoir de soucis.

Au final, même si tout semble fonctionner désormais, je te conseillerais tout de même de le faire, afin de partir sur une base saine. Avec un peu de chance, le maillage apparaitra et les multiples SAVE_CONFIG ne réapparaitront pas... 😅

@fabienlenna

EDIT: modification du fichier puisqu'il y avait une erreur avec la commande BED_MESH_PROFILE LOAD 🥴

Modifié (le) par pommeverte
Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, pommeverte a dit :

Avant que tu n'ajoutes la dernière partie de ton message, je t'aurais conseillé de:

  1. nettoyer ton fichier printer.cfg. printerV2.txtC'est ce que j'ai fait avec ce fichier où j'ai:
  • mis à jour les valeurs sauvegardées,
  • supprimé les multiples section SAVE_CONFIG et la matrice de correction.
  • Comme je n'ai pas compris cette remarque:

j'ai supprimé les alias et je les ai remplacé par les noms des entrées/sorties. Il faudra faire une vérification afin de s'assurer que je n'ai pas commis d'erreur 🥴.

Il faudra donc sauvegarder à nouveau un nivellement puisqu'il n'y en a plus dans le fichier.

    2. supprimer tous tes fichiers .cfg que tu auras sauvegarder sur ton ordinateur, avant, pour ne laisser qu'un printer.cfg. Comme ton fichier ne fait pas appel à d'autres .cfg, il ne devrait pas y avoir de soucis.

Au final, même si tout semble fonctionner désormais, je te conseillerais tout de même de le faire, afin de partir sur une base saine. Avec un peu de chance, le maillage apparaitra et les multiples SAVE_CONFIG ne réapparaitront pas... 😅

@fabienlenna

EDIT: modification du fichier puisqu'il y avait une erreur avec la commande BED_MESH_PROFILE LOAD 🥴

C'est sympas,  merci.

J'ai:

supprimer les autres printer.cfg et les copies

mis a jour mon printer.cfg via celui que tu ma donné

un probe_calibrate 

save_config

par contre pour le bed_mesh_calibrate pas possible, j'ai ce message: 

{"code":"key22", "msg":"No trigger on probe after full movement", "values": ["probe"]}

merci encore bonne nuit a demain.

 

Citation

[mcu]
#make sure this reflects your serial port you found when flashing klipper
serial: /dev/serial/by-id/usb_serial_1

[stepper_x]
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PE5
position_endstop: 0
position_max: 310
homing_speed: 40.0

[stepper_y]
step_pin: PF6
dir_pin: PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PJ1
position_endstop: 0
position_max: 310
homing_speed: 40
homing_positive_dir: false

[stepper_z]
step_pin: PL3
dir_pin: !PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop # ^!PD3
position_min: -3
position_max: 400
homing_speed: 30
second_homing_speed: 1

[stepper_z1]
step_pin: PC1
dir_pin: !PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 8

[probe]
pin: ^!PD3
x_offset: 28.0
y_offset: -33.0
z_offset: 0.540
speed: 10.0
samples: 1
samples_result: average

[safe_z_home]
home_xy_position: 155,155
speed: 100
z_hop: 05               
z_hop_speed: 20

[bed_mesh]        # palpage du plateau pour le nivellement
speed: 200
mesh_min: 28,0
mesh_max: 310,277
probe_count: 5,5
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: 0.2
move_check_distance: 3.0
split_delta_z: .010
fade_start: 1.0 
fade_end: 5.0

[extruder]
control = pid
pid_kp = 19.879
pid_ki = 0.967
pid_kd = 102.129
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 6.47
# formula : rotation_distance = <previous_rotation_distance> * <actual_extrude_distance> / <requested_extrude_distance>
# 120 - 18.6 = 101.4
# rotation_distance = 6.39 * 101.4 / 100
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
min_extrude_temp: 190
min_temp: 5
max_temp: 300
max_extrude_only_distance: 500
max_extrude_cross_section: 2.0
pressure_advance_smooth_time: 0.04
pressure_advance: 0

[heater_bed]
control = pid
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
min_temp: 5
max_temp: 150
pid_kp = 37.148
pid_ki = 0.219
pid_kd = 1574.149

[fan]
pin: PH6
kick_start_time: 0.500

[heater_fan my_nozzle_fan]
pin:PH4
heater: extruder
heater_temp: 50.0
fan_speed: 1.0

[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 3000
max_z_velocity: 50
max_z_accel: 100
square_corner_velocity: 5 

[bed_screws]
screw1: 55,55
screw1_name: front left
screw2: 255,55
screw2_name: front right
screw3: 255,255
screw3_name: back right
screw4: 55,255
screw4_name: back left
speed: 100.0


[gcode_macro START_PRINT]
gcode :
    # Home l'imprimante
    G28
    BED_MESH_PROFILE LOAD=default
    # Utiliser les coordonnées absolues
    {% set BED_TEMP = params.BED_TEMP|default(50)|float %}
    {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190)|float %}
    # Démarrer le chauffage du lit
    M140 S{BED_TEMP}
    # Utiliser les coordonnées absolues
    G90
    # Réinitialisez le décalage Z du code G (ajustez le décalage Z si nécessaire)
    SET_GCODE_OFFSET Z =0.0
    # Home l'imprimante
    G28
    # Déplacez la buse près du lit
    G1 Z5 F3000
    # Déplacez la buse très près du lit
    G1 Z0.15 F300
    # Attendez que le lit atteigne la température
    M190 S{BED_TEMP}
    # Réglez et attendez que la buse atteigne la température
    M109 S{EXTRUDER_TEMP}


[pause_resume]
recover_velocity: 50

[gcode_macro DÉCHARGER]
gcode :
    G91
    G1 E5.0 F1200
    G1 E-50.0 F2000
    G1 E-50.0 F5000
    G90

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
# change this if you need more or less extrusion
variable_extrude: 1.0
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  ##### set park positon for x and y #####
  # default is your max posion from your printer.cfg
  {% set x_park = printer.toolhead.axis_maximum.x|float - 5.0 %}
  {% set y_park = printer.toolhead.axis_maximum.y|float - 5.0 %}
  ##### calculate save lift position #####
  {% set max_z = printer.toolhead.axis_maximum.z|float %}
  {% set act_z = printer.toolhead.position.z|float %}
  {% if act_z < (max_z - 2.0) %}
      {% set z_safe = 2.0 %}
  {% else %}
      {% set z_safe = max_z - act_z %}
  {% endif %}
  ##### end of definitions #####
  PAUSE_BASE
  G91
  {% if printer.extruder.can_extrude|lower == 'true' %}
    G1 E-{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}
  {% if "xyz" in printer.toolhead.homed_axes %}
    G1 Z{z_safe} F900
    G90
    G1 X{x_park} Y{y_park} F6000
  {% else %}
    {action_respond_info("Printer not homed")}
  {% endif %}

[gcode_macro PURGER]
gcode :
    M117 PURGING..
    G91
    G1 E45.0 F250
    G90

[gcode_macro LOAD_FILAMENT]
gcode :
    M117  LOADING...
    G91
    G1 E25.0 F1000
    G1 E50.0 F2000
    G4 P900
    G1 E20.0 F250
    G90

[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
gcode:
  ##### read E from pause macro #####
  {% set E = printer["gcode_macro PAUSE"].extrude|float %}
  #### get VELOCITY parameter if specified ####
  {% if 'VELOCITY' in params|upper %}
    {% set get_params = ('VELOCITY=' + params.VELOCITY)  %}
  {%else %}
    {% set get_params = "" %}
  {% endif %}
  ##### end of definitions #####
  {% if printer.extruder.can_extrude|lower == 'true' %}
    G91
    G1 E{E} F2100
  {% else %}
    {action_respond_info("Extruder not hot enough")}
  {% endif %}  
  RESUME_BASE {get_params}


[gcode_macro END_PRINT]
gcode :
    # Éteignez le lit, l'extrudeuse et le ventilateur
    M140 S0
    M104 S0
    M106 S0
    # Éloignez la buse de l'impression tout en se rétractant
    G91
    G1 X-2 Y-2 E-3 F300
    # Relever la buse de 10 mm
    G1 Z10 F3000
    G90
    # Désactiver les steppers
    M84


[gcode_macro CANCEL_PRINT]
gcode :
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
variable_park: True
gcode :
  ## Move head and retract only if not already in the pause state and park set to true
  {% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
    _TOOLHEAD_PARK_PAUSE_CANCEL
  {% endif %}
  TURN_OFF_HEATERS
  CANCEL_PRINT_BASE

[filament_switch_sensor my_sensor]
pause_on_runout: TRUE
switch_pin: PE4

[display_status]

[virtual_sdcard]
path: ~/gcode_files/

# [mcu rpi]
# serial: /tmp/klipper_host_mcu

# [adxl345]
# cs_pin: rpi:None
# spi_speed: 2000000
# spi_bus: spidev2.0

# [resonance_tester]
# accel_chip: adxl345
# accel_per_hz: 70
# probe_points:
#        150,150,10

[input_shaper]
shaper_type_x = 2hump_ei
shaper_freq_x = 86.6
shaper_type_y = zv
shaper_freq_y = 37.8

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [probe]
#*# z_offset = 0.540
 

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...