Aller au contenu

GO Print

Changer de firmware (de Marlin à Klipper)


Messages recommandés

Oui je ne parle pas des variables de fran6p, mais bien du nom donné à la sauvegarde. Bon si ça marche avec cr10v2 chez lui et que Klipper est à jour chez chacun, tu peux oublier mon histoire de nom de variable sauvegarde.

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Ok merci pour vos réponses a tous les 2 😁

 

Edit: loin de moi l'idée d'être chiant mais, il n'y aurais pas moyen de faire afficher dans le terminal quand il recupere le bed mesh ?   😁

 

Bonsoir.

 

Fran6p, j'ai testé le capteur filament ainsi que  ce qui se passe quand il détecte qu'il n'y en a plus.

Donc en enlevant le filament, la tête se met en park, puis une demande de Switch avec un timer 20s. après 20s lextrudeur tire le filament puis l'impression reprends.

Par contre si on a pas changé le filament, après les 20s le cycle reste le même et il reprends l'impression avec ou sans filament.

 

Ma question est la suivante,

Serait il possible, une fois la détection activée, que la commande Switch ne se déclenche pas tant que le capteur n'est pas détecté comme ayant du filament?

 

Par exemple, moi j'imprime beaucoup de nuit et si il manque du fil au milieu de la nuit je risque pas de me réveiller, l'impression va donc reprendre toute la nuit sans filament.

L'idéal serait donc que la tête se mette en park, le bed reste chaud, et la commande Switch ne d'active que si l'on insere du filament dans le capteur.

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

  • 2 weeks later...

Bonsoir,

Apres pas mal de jours de recherches et de tests infructueux, je reviens vers vous.

 

J'essai de modifier le comportement du capteur filament avec la commande M600 du fichier cfg de Fran6p.

Qu'on se comprenne bien, tel qu'il est il fonctionne tres bien, mais il declenche des timers.

Le 1er a 25s le suivant a 10s et ensuite le print reprend, que le fil soit rechargé ou pas.

La seule solution qui me semble possible serait d'ajouter une commande d'attente, soit de detecter qu'un fil a ete remis dans le capteur, soit qu'une commande soit entrée dans le terminal ou via le menu.

J'ai tenté un M0 mais il est interdit dans klipper car il attends un clic materiel pour continuer.

Du coup je pensais qu'il serait possible de creer une macro qui mette en pause en attente d'une commande gcode, puis de modifier l'action resume printing du menu pour y entrer ce gcode.

Malheureusement entre l'idée et la conception, c'ets tout un monde...

Si quelqu'un a une idée, merci d'avance 🙂

 

# filament change
[gcode_macro M600]
gcode:
    M117 Filament Change
    M118 Filament Change
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    LOW_TEMP_CHECK
    G91 # relative
    G1 E-1 F300 # retract 1
    M125 # park
    M702 # unload

    M0 Click to continue  <--- voila le genre de commande qu'il aurait fallu ajouter

    M117 New filament
    M118 New filament
    COUNTDOWN TIME=25 MSG="Switch"
    M701
    COUNTDOWN TIME=10 MSG="Clean"
    RESUME
    M117 Resuming
    M118 Resuming
    RESTORE_GCODE_STATE NAME=filament_change
    M117 Printing..
    M118 Printing..

Lien vers le commentaire
Partager sur d’autres sites

Ça doit être faisable en créant un menu avec 3 options. Chacune constituée d'un tronçon du code de @fran6p et coupé au endroits ou l'intervention est requise.

Pour chaque menu il y a un paramètre "enable" qui permet de gérer quand l'option est visible. Chacun des 3 tronçon doit mettre à jour une variable qui débloque l'affichage de l'option suivante.

Je ne sais plus trop si le rafraichissement de l'affichage est automatique, mais s'il se fait bien entre chaque tronçon, ça revient à faire ce que tu souhaites.

Si le M600 est déclenché dans le code il faudra quand même aller dans le bon menu pour accéder aux options suivantes.

 

Une autre façon de faire, avec un bouton physique supplémentaire cette fois-ci:

  1. créer une section gcode_button user_input, en paramétrant le pin mais sans gcode.
  2. dans la macro M600, mettre une boucle aux endroits ou on veut attendre. Mettre un DWELL court à l'intérieur et une condition de sortie sur QUERY_BUTTON button=user_input.

Il faut s'assurer aussi qu'on ait le temps de relâcher le bouton avant d'arriver dans la prochaine bouche. Pour le M701 ce n'est pas un soucis, c'est assez long, mais le RESUME est quasi instantané et si le bouton est censé stopper une action après, il faudra temporiser un peu entre les deux (DWELL).

Modifié (le) par Tircown
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai reussi a faire ce que je voulais à quelques petits détails prêts.

J'ai donc decoupé le menu M600 de Fran6p en 2, supprimé l'option COOLDOWN qui imposait un timer aux actions.

J'en suis donc aujourd'hui à 2 macros :

La première va enregistrer l'emplacement, mettre la tête en park, désactiver le stepper extruder et éteindre la hotend.

(cela me permet de unload/reload le fil manuellement)

### FILAMENT CHANGE
[gcode_macro M600]
gcode:
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    # Relative position
    G91
    # Retract 1mm
    G1 E-1 F300
    # Park the nozzle
    M125
    # Disable Stepper extrudeur for purge manually    
    SET_STEPPER_ENABLE STEPPER=extruder ENABLE=0
    # Disable temperature nozzle
    M104 S0

 

Le 2eme va redonner l'emplacement a la tête d'impression et celle ci va s'y rendre et reprendre le print.

### FILAMENT RESUME
[gcode_macro FILAMENT_RESUME]
gcode:
    RESUME
    RESTORE_GCODE_STATE NAME=filament_change

 

Ensuite j'ajoute sur mon ecran un bouton Filament resume qui lancera la macro

( il ne faut pas oublier de remettre la hotend en chauffe avant de lancer la reprise)

 

Maintenant, j'ai trouvé comment modifier le fichier original menu.cfg (je sais qu'il sera reinitialisé en cas de Maj)

Je souhaite pouvoir relancer un print apres un filament runout, sans avoir a allumer l'ordinateur pour me rendre sur octoprint.

Je modifie donc le menu en ajoutant un menu 'Fil. Runout' contenant :

###   + Fil. Runout
#               + Heating hotend
#               + Unload filament
#               + Load filament
#               + Resume print
#               + Cancel print

 

J'ajoute donc au menu.cfg:

 

### menu filament runout ###
[menu __main __filrunout]
type: list
enable: {printer.idle_timeout.state == "Printing"}  permet au menu de ne s'afficher que si l'imprimante est en cours de print
name: Fil. Runout

[menu __main __filrunout __hotend0_target]
type: input
enable: {('extruder' in printer) and printer.idle_timeout.state == "Printing"}
name: {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)}
input: {printer.extruder.target}
input_min: 0
input_max: {printer.configfile.config.extruder.max_temp}
input_step: 1
gcode: M104 T0 S{'%.0f' % menu.input}

[menu __main __filrunout __unloads]
type: command
name: Unload Filament
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E-120 F480
    RESTORE_GCODE_STATE NAME=__filament__load
    
[menu __main __filrunout __loads]
type: command
name: Load Filament
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E120 F480
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filrunout __resumeprint]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Resume printing
gcode:
    FILAMENT_RESUME

 

Le menu n'est pas encore fini, mais je coince sur une option que je trouve interessante, on peut faire apparaitre le menu sous certaines conditions.

L'ideal serait de faire apparaitre celui-ci, uniquement si le capteur filament indique un runout.

De plus une fois le menu apparu, il serait judicieux que les options , load unload , resume, cancel, n'apparaissent que lorsque la hotend sera chauffée.

Malheureusement je ne trouve aucune indication sur la maniere de faire.

Si quelqu'un a une idée 😛

 

Merci de m'avoir lu (une fois de plus)

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

Le 16/11/2020 at 01:15, Stef67 a dit :

C'est deja un stade un peut trop avancé pour moi je pense

Et 2 jours après tu paramètres exactement ce dont le parle 😛

2-3 remarques. C'est une mauvaise idée d'avoir touché au fichier menu.cfg. Comme tu le pointes du doigts il sera écrasé à chaque mise à jour. En revanche c'est tout à fait possible et conseillé de mettre ton code dans le fichier printer.cfg ou mieux, dans un fichier que tu "includes" dedans. Tout cela est dans la doc mais si tu coinces je peux t'aider.

Si ton objectif n'est d'accéder à ces fonctionnalités qu'en cas de run out et bien le mieux à faire est de paramétrer la section [filament_switch_sensor my_sensor]. Tu y mets la valeur TRUE au paramètre pause_on_runout et c'est à peu près tout. Pour l'enable de ton menu tu utilises printer.pause_resume.is_paused et il ne sera visible que lorsque l'imprimante sera mise en pause, ce que fait le filament_switch_sensor justement.

Modifié (le) par Tircown
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

merci pour ta reponse, effectivement le mieux serait de faire un menu.cfg en include mais depuis klipper 0.9.0 le menu a changé et ne fonctionne plus.

C'est pour cela que je modifie comme ca. (du moins quand j'active le menu de fran6p il ne fonctionne pas.)

 

pour le parametre True dans la section pause_on_runout c'est deja fait.

printer.pause_resume.is_paused voila exactement ce que je recherchais !!! 🙂 Merci bcp

 

Je vais essayer de faire un menu cfg propre en include pour verifier si il marche ou pas.

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

il y a 14 minutes, Stef67 a dit :

printer.pause_resume.is_paused voila exactement ce que je recherchais !!! 🙂 Merci bcp

Les différentes variables liées à «printer» sont précisées dans le command_templates.md 😉

Pour les menus, on ne peut plus utiliser «items: et une liste d'items. Il faut en fait pour chaque item de la liste créer une option, exemple donné dans les fichiers de conf pour la carte SD:

1) Menu principal, option liée à la carte SD

Citation
[menu __main __sdcard]
type: vsdlist
enable: {('virtual_sdcard' in printer)}

name: SD Card

2) pour chaque option de cette branche sdcard, créer autant de conf (menu principal, option SD sélectionnée
, liste des différentes possibilités (start, resume, …) :

Citation
[menu __main __sdcard __start]
type: command
enable: {('virtual_sdcard' in printer) and not printer.idle_timeout.state == "Printing"}
name: Start printing
gcode: M24
 
[menu __main __sdcard __resume]
type: command
enable: {('virtual_sdcard' in printer) and printer.idle_timeout.state == "Printing"}
name: Resume printing

gcode: M24

C'est faisable mais je n'ai ni le temps de le faire ni l'envie car je n'utilise pas l'écran 😉

🙂

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir/Bonjour,

 

Apres quelques deboires, j'ai enfin reussi a avoir exactement ce que je voulais.

 

J'ai donc ajouté un menu.cfg dans mon dossier ce qui me permet de ne pas toucher a l'original.

J'y ai ajouté le menu Fil. Runout, qui n'apparait que lorsque le print est en pause suite a un runout.

Le contenu:

-Chauffe de la hotend

-Unload filament 12cm (direct drive+Bmg)

-Load filament 12cm

-Reprise du print

-Cancel du print

cela donne :
 

Révélation

 

### menu filament runout ###
[menu __main __filrunout]
type: list
enable: {printer.pause_resume.is_paused}
name: Fil. Runout
index:1

[menu __main __filrunout __hotend0_target]
type: input
enable: {'extruder' in printer}
name: {"Ex0:%3.0f (%4.0f)" % (menu.input, printer.extruder.temperature)}
input: {printer.extruder.target}
input_min: 0
input_max: {printer.configfile.config.extruder.max_temp}
input_step: 1
gcode: M104 T0 S{'%.0f' % menu.input}

[menu __main __filrunout __unloads]
type: command
name: Unload Filament
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E-120 F480
    RESTORE_GCODE_STATE NAME=__filament__load
    
[menu __main __filrunout __loads]
type: command
name: Load Filament
gcode:
    SAVE_GCODE_STATE NAME=__filament__load
    M83
    G1 E120 F480
    RESTORE_GCODE_STATE NAME=__filament__load

[menu __main __filrunout __resumeprint]
type: command
enable: {not printer.idle_timeout.state == "Printing"}
name: Resume printing
gcode:
    FILAMENT_RESUME
    
[menu __main __filrunout __cancelprint]
type: command
enable: True
name: Cancel printing
gcode:
    CANCEL_PRINT

 

Pour finaliser le Cancel print j'ai ajouté une macro que j'ai nommée 'CANCEL_PRINTING' dans le Macros.cfg puis je l'ai ajouté dans le Gcode scripts 'After print job is cancelled'

la macro:

 

Révélation

### CANCEL PRINTING    
[gcode_macro CANCEL_PRINTING]
gcode:
    # Relative position
    G91
    # Move Z up 10mm
    G0 Z10 F600
    # Absolute position
    G90
    # Park the nozzle and present print
    G0 X0 Y290 F4000
    # Disable all heaters
    M104 S0
    M140 S0
    # Disable fan
    M106 S0

Jajoute aussi dans le Gcode scripts, dans le 'Before print job is resumed' les macros:

RESUME
RESTORE_GCODE_STATE NAME=filament_change

Cela permet de relancer le print via le bouton resume de octoprint si on est loin de la box.

 

Ensuite j'ai decoupé la macro M600 de Fran6p en 2 partie, supprimé la partie cooldown qui m'est inutile.

 

partie 1 :

Enregistre la position, emmene la tete en position park, desactive le stepper de l'extrudeur afin de pouvoir unload et reload le filament manuellement si on le desire, emet un Bip et eteinds la hotend (le plateau reste chaud pour que le print ne se decolle pas)

 

Révélation

### FILAMENT CHANGE
[gcode_macro M600]
gcode:
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    # Relative position
    G91
    # Retract 1mm
    G1 E-1 F300
    # Park the nozzle
    M125
    # Disable Stepper extrudeur for purge manually    
    SET_STEPPER_ENABLE STEPPER=extruder ENABLE=0
    # Tone for prevent
    M300 P500 S 1000
    # Disable temperature nozzle
    M104 S0

 

Partie 2:

Reprends la position et continu le print.

Révélation

### FILAMENT RESUME
[gcode_macro FILAMENT_RESUME]
gcode:
    RESUME
    RESTORE_GCODE_STATE NAME=filament_change

 

Il me reste a retrouver un post qui expliquait comment annuler un print au demarrage si le filament n'etait pas present dans le capteur et empechait aussi de resume print si le filament n'etait pas present.

 

Je met les fichiers ci-dessous, si quelqu'un est interressé, ou si ca peut donner des idées.

 

Merci encore pour l'aide que vous m'apportez sans arret 🙂

 

 

 

Edit: voici les 2 macros que j'avais trouvé pour empecher le print et la reprise si le filament n'est pas present :


 

Révélation

 

Using a macro is the best solution, however I would do it differently. Create CHECK_FILAMENT macro that you add to the beginning of your "start gcode":

[gcode_macro CHECK_FILAMENT]
gcode:
  {% if printer['filament_switch_sensor my_sensor'].filament_detected != True %}
      action_raise_error("No filament present, aborting print")
  {% endif %}

Ajout de {} Autour de action_raise_error :

[gcode_macro CHECK_FILAMENT]
gcode:
  {% if printer['filament_switch_sensor my_sensor'].filament_detected != True %}
     {action_raise_error("No filament present, aborting print")}
  {% endif %}

Apres ajout de CHECK_FILAMENT dans le START_PRINT le print est bien arreté si le filament n'est pas present.

A ce moment le terminal reponds :

Send: CHECK_FILAMENT

Recv: !! Error evaluating 'gcode_macro CHECK_FILAMENT:gcode': CommandError: No filament present, aborting print

Recv: ok

Arksine reponds a cette question :

It is behaving as intended, action_raise_error raises an exception and Klipper logs that exception.

( Si quelqu'un connait un moyen de remplacer cette phrase d'erreur par un message propre 😉 )

----------------------------------------------------------------------------------------------

 

This should raise a gcode error, forcing the print to abort.

If you want to apply a check to RESUME, you could do the following:

[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
   {% if printer['filament_switch_sensor my_sensor'].filament_detected != True %}
     action_respond_info("No filament present, abort resume")
   {% else %}
     BASE_RESUME
   {% endif %}

celle-ci, placée dans le macros.cfg fonctionne et empeche le print de reprendre si le filament n'est pas present dans le capteur.

J'ai du corriger en ajoutant des {} autour de action_respond_info

[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
   {% if printer['filament_switch_sensor my_sensor'].filament_detected != True %}
     {action_respond_info("No filament present, abort resume")}
   {% else %}
     BASE_RESUME
   {% endif %}

EDIT :

Ajout des fonctions macros ci-dessus:

empeche le print de demarrer si pas de filament.

empeche la reprise du print suite a un runout, si pas de filament.

 

KLIPPER CR10V3 Update 19.11.20.zip

Modifié (le) par Stef67
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...
  • 2 weeks later...

Bonjour à tous, me revoilà !

Bon, j'ai arrêté les impressions (Et le bidouillage de l'imprimante) depuis plusieurs mois, trop de taf, une compagne pas trop contente du peu de temps que j'ai, et un beau burn-out en route...

Bref, j'ai voulu m'y remettre depuis plusieurs jours, et la fièvre du bidouillage m'a repris... Mal m'en a pris. 😕 J'ai essayé d'installer mon bltouch (Celui-ci sur mon Ender 5 pro, avec klipper, et, malgré deux jours passés dessus, je n'arrive à rien...

Pour info, voici mon cfg : (Qui changera d'ici 5 min, en fonction de mes tests.)

# This file contains common pin mappings for the 2019 Creality
# Ender 5. To use this config, the firmware should be compiled for the
# AVR atmega1284p.

# Note, a number of Melzi boards are shipped with a bootloader that
# requires the following command to flash the board:
#  avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex
# If the above command does not work and "make flash" does not work
# then one may need to flash a bootloader to the board - see the
# Klipper docs/Bootloaders.md file for more information.

# See the example.cfg file for a description of available parameters.

[stepper_x]
step_pin: PD7
dir_pin: PC5
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC2
position_endstop: 0
position_max: 220
homing_speed: 30

[stepper_z]
step_pin: PB3
dir_pin: !PB2
enable_pin: !PA5
step_distance: .0012500 # Use .001250 for Ender5 versions after late 2019
endstop_pin: probe:z_virtual_endstop
;position_endstop: 0.0
position_min: -2
position_max: 300

[stepper_y]
step_pin: PC6
dir_pin: PC7
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC3
position_endstop: 0
position_max: 220
homing_speed: 30

[extruder]
max_extrude_only_distance: 100.0
step_pin: PB1
dir_pin: !PB0
enable_pin: !PD6
step_distance: 0.010526
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PD5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA7
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 285

[heater_bed]
heater_pin: PD4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA6
control: pid
# tuned for stock hardware with 50 degree Celsius target
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PB4

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

[display]
lcd_type: st7920
cs_pin: PA3
sclk_pin: PA1
sid_pin: PC1
encoder_pins: ^PD2, ^PD3
click_pin: ^!PC0

[firmware_retraction]
retract_length: 3
retract_speed: 30
unretract_extra_length: 0
unretract_speed: 20 

[gcode_arcs]
resolution: 1.0

[bltouch]
sensor_pin: ^PC4
control_pin: PA4
x_offset: -41
y_offset: -1
z_offset: 10.50
speed: 15
samples: 2
samples_result: average
sample_retract_dist: 2.0

[bed_mesh]
speed: 200
horizontal_move_z: 5
mesh_min: 0,0
mesh_max: 110,210
probe_count: 5,5
mesh_pps: 3,3
algorithm: bicubic

[homing_override]
set_position_z: 5
axes: z
gcode:
 G90 ; Uncomment these 2 lines to blindly lift the Z 2mm at start
 G1 Z10 F600 ; Move Z up a bit to prevent scratching
 G28 X0 Y0
 G1 X120 Y120 F3600
 G28 Z0

[gcode_macro G29]
gcode:
 G28
 G1 Z10 F600
 BED_MESH_CALIBRATE
 BED_MESH_PROFILE save=ender5

Y'a plein de choses qui ne vont pas :

- Primo : La buse est trop loin du bed. Même si je change le z offset de la section bltouch, cela ne change strictement rien... (Donc incidemment, je ne peux rien imprimer.)

- Deusio : Je ne pige rien aux paramètres mesh_min . D'après ce que je vois sur de multiples exemples de cf, le min est entre 50,30 et 70,50. (65,50 sur un cfg ender 5 d'exemple) Sauf que quand je mets ces valeurs, ma tête d'impression commence son "palpage" quasiment au milieu de l'axe x.

- Tertio : Même chose pour mesh_max . D'après ce que je vois, il devrait être de 210,210 ou 220,220. Sauf que si je mets cela, quand je lancerais un palpage, cela sortira du plateau, voir klipper me dira que je suis out range. Je suis donc obligé de mettre 110,210...

Bref... Si quelqu'un pouvait m'aide, car là je suis au bord de la rupture...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 20 heures, Ellionas a dit :

La buse est trop loin du bed.

Tu as mis :

z_offset: 10.50

C'est pas un peu beaucoup ? Après avoir «calibrer» le BLT normalement les valeurs enregistrées sont sauvegardées dans le printer.cfg (à la fin du fichier) et celles précédemment placées dans la section [Bltouch] sont mises en commentaire (précédées d'un #). Ma section BLT :

Citation

[bltouch]
# CR10V2, connexion sur ZMAXPIN (19)
sensor_pin: ^ar19
control_pin: ar11
pin_move_time: 0.680
x_offset: 47
y_offset: 0
# Increase Z_Offset to lower nozzle closer to bed. PLA 1.55
#z_offset: 1.55
speed: 60
samples: 2
#sample_retract_dist: 2
#samples_result: average
#samples_tolerance: 0.100
#samples_tolerance_retries: 0

 

Tu n'as pas de section  «safe_z_home» ?

Citation

[safe_z_home]
home_xy_position: 150,150
speed: 60.0
z_hop: 10.0
z_hop_speed: 10.0

 

Pour les mesh_min / max, sur ma CR10-V2, j'ai pour mon plateau de 310x310 :

Citation

[bed_mesh]
speed: 100
probe_count: 5,5
mesh_min: 57,10
mesh_max: 290,290
horizontal_move_z: 5
mesh_pps: 2,2
#algorithm: lagrange
#fade_start: 1
#fade_end: 10
#fade_target: 0

Ta vitesse de «calcul» du maillage (200) n'est-elle pas excessive ? Les valeurs saisies dans mesh_{min|max} sont relatives au pointeau du Bltouch pas de la buse : https://github.com/KevinOConnor/klipper/blob/master/docs/Bed_Mesh.md

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 23 minutes, fran6p a dit :

Tu as mis :


z_offset: 10.50

C'est pas un peu beaucoup ? Après avoir «calibrer» le BLT normalement les valeurs enregistrées sont sauvegardées dans le printer.cfg (à la fin du fichier) et celles précédemment placées dans la section [Bltouch] sont mises en commentaire (précédées d'un #).

Bonjour fran6p,

En fait, j'ai fait déjà plein de test sur ce paramètre, allant de -5 à 10.5. Et cela change strictement rien. (Mais vraiment aucun changement, en bien ou en mal.)

 

Citation

Tu n'as pas de section  «safe_z_home» ?

J'ai cru comprendre sur pas mal de site que soit on utilisait un [homing_override], soit le safe_z_mode. Je crois qu'on ne peut les mettre tous les deux, je vais tester.

Citation

Pour les mesh_min / max, sur ma CR10-V2, j'ai pour mon plateau de 310x310 :

Citation

[bed_mesh]
speed: 100
probe_count: 5,5
mesh_min: 57,10
mesh_max: 290,290
horizontal_move_z: 5
mesh_pps: 2,2
#algorithm: lagrange
#fade_start: 1
#fade_end: 10
#fade_target: 0

Le problème, c'est qu'en mesh_min, si je mets une valeur autre que 0,0, il va commencer son palpage loin à gauche. (Au lieu de le commencer tout à droite.)

mesh_max pose aussi problème, car si je mets 210,210, le palpage sort du plateau ou j'ai une erreur out range (En gros il essaye de palper bien au-delà du plateau.)

Citation

Ta vitesse de «calcul» du maillage (200) n'est-elle pas excessive ? Les valeurs saisies dans mesh_{min|max} sont relatives au pointeau du Bltouch pas de la buse : https://github.com/KevinOConnor/klipper/blob/master/docs/Bed_Mesh.md

Quel est l'incidence, à proprement parler ?

Merci en tout cas fran6p.

Lien vers le commentaire
Partager sur d’autres sites

Je n'utilise pas «homing_override» mais «safe_z_home»

Le mesh(min/max) ne fonctionne correctement que si la «calibration» du BLT a été correctement réalisée.

Tu as bien suivi la procédure (en anglais) : https://github.com/KevinOConnor/klipper/blob/master/docs/Probe_Calibrate.md

Les valeurs x_offset et y_offset sont correctes ?

🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 27 minutes, fran6p a dit :

Je n'utilise pas «homing_override» mais «safe_z_home»

Le mesh(min/max) ne fonctionne correctement que si la «calibration» du BLT a été correctement réalisée.

Tu as bien suivi la procédure (en anglais) : https://github.com/KevinOConnor/klipper/blob/master/docs/Probe_Calibrate.md

Les valeurs x_offset et y_offset sont correctes ?

🙂

À vrai dire, je ne connaissais pas cette page, je me suis contenté de saisir les valeurs données pour l'ender 5 sur des cfg d'autres. (Oui, pour le coup, j'ai l'impression d'avoir bâclé les choses... Désolé.)

Problème, en suivant la procédure (Je déplace la tête au centre manuellement, je mets un adhésif et je fais "probe".) il me renvoie ça :

Send: probe
Recv: // Failed to verify BLTouch probe is raised; retrying.
Recv: // probe at 0.000,0.000 is z=-0.005000
Recv: // probe at 0.000,0.000 is z=-0.125000
Recv: !! Probe samples exceed samples_tolerance

 

Et en faisant get_position à la suite, j'obtiens cela :

Send: get_position
Recv: // mcu: stepper_x:0 stepper_y:0 stepper_z:3
Recv: // stepper: stepper_x:0.000000 stepper_y:0.000000 stepper_z:-0.122500
Recv: // kinematic: X:0.000000 Y:0.000000 Z:-0.122500
Recv: // toolhead: X:0.000000 Y:0.000000 Z:-0.122500 E:0.000000
Recv: // gcode: X:0.000000 Y:0.000000 Z:-0.122500 E:0.000000
Recv: // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:0.000000
Recv: // gcode homing: X:0.000000 Y:0.000000 Z:0.000000
Recv: ok

...

 

Bon, j'ai compris, je dois pas le faire manuellement en mettant les moteurs off... Faut que je le fasse de l'interface. (Encore une victoire de canard !) Bon, je continue la procédure et je te dis quoi.

Send: probe
Recv: // Failed to verify BLTouch probe is raised; retrying.
Recv: // probe at 112.000,103.000 is z=-0.127500
Recv: // probe at 112.000,103.000 is z=-0.152500
Recv: // Result is z=-0.140000
Recv: ok
[...]
Send: get_position
Recv: // mcu: stepper_x:-191 stepper_y:-80 stepper_z:-21
Recv: // stepper: stepper_x:112.000000 stepper_y:103.000000 stepper_z:-0.152500
Recv: // kinematic: X:112.000000 Y:103.000000 Z:-0.152500
Recv: // toolhead: X:112.000000 Y:103.000000 Z:-0.152500 E:0.000000
Recv: // gcode: X:112.000000 Y:103.000000 Z:-0.152500 E:0.000000
Recv: // gcode base: X:0.000000 Y:0.000000 Z:0.000000 E:0.000000
Recv: // gcode homing: X:0.000000 Y:0.000000 Z:0.000000
Recv: ok
Lien vers le commentaire
Partager sur d’autres sites

Pense à éditer tes posts plutôt qu'en faire de multiples à la suite 😉

En haut de chaque post, se trouve un bouton « … ». Quand on clique dessus, un menu déroulant apparait dans lequel l'option ÉDITER apparait. Cette option comme son nom l'indique, permet de modifier, corriger, compléter son propos durant une période de 12 heures après parution.

editer-un-post-maj-forum-octobre2020.jpg.a4938c7846d94f5686804e7139409771.jpg


🙂

Lien vers le commentaire
Partager sur d’autres sites

il y a 10 minutes, fran6p a dit :

Pense à éditer tes posts plutôt qu'en faire de multiples à la suite 😉

En haut de chaque post, se trouve un bouton « … ». Quand on clique dessus, un menu déroulant apparait dans lequel l'option ÉDITER apparait. Cette option comme son nom l'indique, permet de modifier, corriger, compléter son propos durant une période de 12 heures après parution.

editer-un-post-maj-forum-octobre2020.jpg.a4938c7846d94f5686804e7139409771.jpg


🙂

Je ne trouvais plus le "edit". Merci. ^^

Bon, je ne comprends pas bien ce passage :

Citation

Start by homing the printer and then move the head to a position near the center of the bed. Navigate to the OctoPrint terminal tab and run the PROBE_CALIBRATE command to start the tool.

This tool will perform an automatic probe, then lift the head, move the nozzle over the location of the probe point, and start the manual probe tool. If the nozzle does not move to a position above the automatic probe point, then ABORT the manual probe tool and perform the XY probe offset calibration described above.

J'ai déplacé la tête vers le milieu du lit. Ensuite, j'ai fait probe_calibrate. Suite à cela, il déplace la tête en bas à droite de l'imprimante, hors du plateau et me mets ce message :

Send: probe_calibrate
Recv: // probe at 114.000,110.000 is z=0.106250
Recv: // Starting manual Z probe. Use TESTZ to adjust position.
Recv: // Finish with ACCEPT or ABORT command.
Recv: // Z position: ?????? --> 5.106 <-- ??????
Recv: ok

Comment il veut faire un test manuel s'il la probe est hors plateau ? 😓

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'y ai passé la nuit, mais grâce à la page de fran6p, j'ai à peu près réussi. Par contre, j'ai dû changer le position-min de [stepper_z] à -10 et faire mon [bed_mesh] ainsi

[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 115,115
mesh_max: 290, 290
probe_count: 5,5
mesh_pps: 3,3
algorithm: bicubic
bicubic_tension: 0.2
mesh_pps: 2,3
move_check_distance: 5
split_delta_z: .025

J'ai du mal à comprendre les valeurs de mesh_min et mesh_max, (En sachant que c'est un plateau ender 5, 230*230) mais au moins, j'ai pu faire des impressions...

Maintenant, il reste quelque soucis :

- Lors du lancement d'une impression, une fois que le bed et la buse sont chauds, il me fait un petit tour bien au-dessus du tapis en sortant du filament... Pourquoi ? J'ai l'impression qu'il me fait la purge dans le vide. (Néanmoins, dès qu'on passe à la jupe/radeau, il remonte bien l'axe z, et c'est au poil.) Peux-ton éviter cela ? Est-ce que l'on peut faire un palpage automatique avant la chauffe de la buse ? (Mais après la chauffe du bed.)

- Sur mon impression de cette nuit, (Une deck box pour les cartes Yu-Gi-Oh de mon fils.) j'ai eu deux décalage en y... Pouvez-vous m'indiquer comment éviter cela ? (Voir flèches sur la photo)

https://nsa40.casimages.com/img/2021/01/09/210109121618480516.jpg

Pour info, voilà le cfg complet :

# This file contains common pin mappings for the 2019 Creality
# Ender 5. To use this config, the firmware should be compiled for the
# AVR atmega1284p.

# Note, a number of Melzi boards are shipped with a bootloader that
# requires the following command to flash the board:
#  avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex
# If the above command does not work and "make flash" does not work
# then one may need to flash a bootloader to the board - see the
# Klipper docs/Bootloaders.md file for more information.

# See the example.cfg file for a description of available parameters.

[stepper_x]
step_pin: PD7
dir_pin: PC5
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC2
position_endstop: 0
position_max: 230
homing_speed: 30

[stepper_z]
step_pin: PB3
dir_pin: !PB2
enable_pin: !PA5
step_distance: .0012500 # Use .001250 for Ender5 versions after late 2019
endstop_pin: probe:z_virtual_endstop
;position_endstop: 0.0
position_min: -10
position_max: 290

[stepper_y]
step_pin: PC6
dir_pin: PC7
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC3
position_endstop: 0
position_max: 230
homing_speed: 30

[extruder]
max_extrude_only_distance: 100.0
step_pin: PB1
dir_pin: !PB0
enable_pin: !PD6
step_distance: 0.010526
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PD5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA7
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 285

[heater_bed]
heater_pin: PD4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA6
control: pid
# tuned for stock hardware with 50 degree Celsius target
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PB4

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

[display]
lcd_type: st7920
cs_pin: PA3
sclk_pin: PA1
sid_pin: PC1
encoder_pins: ^PD2, ^PD3
click_pin: ^!PC0

[firmware_retraction]
retract_length: 3
retract_speed: 30
unretract_extra_length: 0
unretract_speed: 20 

[gcode_arcs]
resolution: 1.0

[bltouch]
sensor_pin: ^PC4
control_pin: PA4
x_offset: 115
y_offset: 115
z_offset: 4.78
speed: 5
samples: 2
sample_retract_dist: 2.0
samples_result: average
samples_tolerance: 0.100
samples_tolerance_retries: 1

[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 115,115
mesh_max: 290, 290
probe_count: 5,5
mesh_pps: 3,3
algorithm: bicubic
bicubic_tension: 0.2
mesh_pps: 2,3
move_check_distance: 5
split_delta_z: .025

[safe_z_home]
home_xy_position: 115,115
speed: 60.0
z_hop: 10.0
z_hop_speed: 10.0 

[gcode_macro G29]
gcode:
 G28
 G1 Z10 F600
 BED_MESH_CALIBRATE
 BED_MESH_PROFILE save=ender5

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  -0.338125, -0.477500, -0.512500, -0.496875, -0.396875
#*# 	  -0.261875, -0.384375, -0.393750, -0.365000, -0.275000
#*# 	  -0.141250, -0.292500, -0.280625, -0.221250, -0.140625
#*# 	  -0.100625, -0.205625, -0.183750, -0.098125, -0.013750
#*# 	  -0.071875, -0.130000, -0.098125, -0.002500, 0.184375
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 3
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 115.0
#*# max_x = 290.0
#*# min_y = 115.0
#*# max_y = 290.0
#*#
#*# [bed_mesh ender5]
#*# version = 1
#*# points =
#*# 	  -0.338125, -0.477500, -0.512500, -0.496875, -0.396875
#*# 	  -0.261875, -0.384375, -0.393750, -0.365000, -0.275000
#*# 	  -0.141250, -0.292500, -0.280625, -0.221250, -0.140625
#*# 	  -0.100625, -0.205625, -0.183750, -0.098125, -0.013750
#*# 	  -0.071875, -0.130000, -0.098125, -0.002500, 0.184375
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 3
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 115.0
#*# max_x = 290.0
#*# min_y = 115.0
#*# max_y = 290.0
Modifié (le) par Ellionas
Lien vers le commentaire
Partager sur d’autres sites

@Ellionas

Bizarre tout de même ton fichier 🤔

Voici le fichier «monolithique» de ma CR10-V2 (manque les macros) :

Citation

# This file contains pin mappings for the 2020 Creality CR10-V2. To use
# this config, the firmware should be compiled for the AVR atmega2560.

# See the example.cfg file for a description of available parameters.

[include macros.cfg]

[stepper_x]
step_pin: ar54
dir_pin: ar55
enable_pin: !ar38
step_distance: .0125
endstop_pin: ^ar3
position_endstop: 0
position_max: 310
homing_speed: 50

[stepper_y]
step_pin: ar60
dir_pin: ar61
enable_pin: !ar56
step_distance: .0125
endstop_pin: ^ar14
position_endstop: 0
position_max: 310
homing_speed: 50

[stepper_z]
step_pin: ar46
dir_pin: !ar48
enable_pin: !ar62
step_distance: .0025
#endstop_pin: ^ar18
#position_endstop: 0
endstop_pin: probe:z_virtual_endstop
position_max: 400
position_min: -2.5

[extruder]
step_pin: ar26
dir_pin: ar28
enable_pin: !ar24
# BMG sans reduction (140 pas => 0.00714285)
# Calibration extrudeur: 138.95 pas
step_distance: 0.00719666
nozzle_diameter: 0.400
filament_diameter: 1.750
# permettre chrgt / dechrgt filament
max_extrude_only_distance: 540.0
max_extrude_only_velocity: 120
max_extrude_only_accel: 3000
pressure_advance: 0.67
#pressure_advance_lookahead_time: 0.040
pressure_advance_smooth_time: 0.040
heater_pin: ar10
sensor_type: EPCOS 100K B57560G104F
sensor_pin: analog13
#control: pid
#pid_Kp: 19.47
#pid_Ki: 1.59
#pid_Kd: 59.40
min_extrude_temp: 170
min_temp: 0
max_temp: 250

[heater_bed]
heater_pin: ar8
#sensor_type: ATC Semitec 104GT-2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: analog14
#control: pid
#pid_Kp: 690.34
#pid_Ki: 111.47
#pid_Kd: 1068.83
min_temp: 0
max_temp: 110

[fan]
pin: ar9

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
#serial: /dev/serial/by-path/platform-3f980000.usb-usb-0:1.3:1.0-port0
#serial: /dev/ttyUSB0
pin_map: arduino

[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 2500
#max_accel: 7000
#max_accel_to_decel: 7000
max_z_velocity: 15
max_z_accel: 100
square_corner_velocity: 5

[display]
lcd_type: st7920
cs_pin: ar16
sclk_pin: ar23
sid_pin: ar17
encoder_pins: ^ar33, ^ar31
click_pin: ^!ar35

[bltouch]
# CR10V2, connexion sur ZMAXPIN (19)
sensor_pin: ^ar19
control_pin: ar11
pin_move_time: 0.680
x_offset: 47
y_offset: 0
# Increase Z_Offset to lower nozzle closer to bed. PLA 1.55
#z_offset: 1.55
speed: 60
samples: 2
#sample_retract_dist: 2
#samples_result: average
#samples_tolerance: 0.100
#samples_tolerance_retries: 0

[safe_z_home]
home_xy_position: 150,150
speed: 60.0
z_hop: 10.0
z_hop_speed: 10.0


[bed_mesh]
speed: 100
probe_count: 5,5
mesh_min: 57,10
mesh_max: 290,290
horizontal_move_z: 5
mesh_pps: 2,2
#algorithm: lagrange
#fade_start: 1
#fade_end: 10
#fade_target: 0

[filament_switch_sensor my_sensor]
pause_on_runout: True
runout_gcode:
      M600
switch_pin: ^ar2

[pause_resume]

[virtual_sdcard]
path: ~/.octoprint/uploads/

[firmware_retraction]
retract_length: 2.6
retract_speed: 25
unretract_extra_length: 0
unretract_speed: 20

# Support for gcode arc (G2/G3) commands.
[gcode_arcs]
resolution: 1.0

#*# <---------------------- SAVE_CONFIG ---------------------->

#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [extruder]
#*# control = pid
#*# pid_kp = 25.640
#*# pid_ki = 1.554
#*# pid_kd = 105.766
#*#
#*# [heater_bed]
#*# control = pid
#*# pid_kp = 70.936
#*# pid_ki = 0.967
#*# pid_kd = 1300.785
#*#
#*# [bltouch]
#*# z_offset = 1.512
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*#       0.075000, 0.042500, 0.022500, -0.035000, -0.050000
#*#       0.022500, -0.017500, 0.005000, -0.007500, 0.017500
#*#       0.005000, -0.045000, -0.017500, -0.030000, -0.010000
#*#       0.022500, -0.020000, -0.005000, -0.025000, -0.017500
#*#       0.012500, -0.042500, -0.050000, -0.070000, -0.067500
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 57.0000000001
#*# max_x = 290.0
#*# min_y = 10.0000000001
#*# max_y = 290.0
#*#
#*# [bed_mesh cr10v2]
#*# version = 1
#*# points =
#*#       0.075000, 0.042500, 0.022500, -0.035000, -0.050000
#*#       0.022500, -0.017500, 0.005000, -0.007500, 0.017500
#*#       0.005000, -0.045000, -0.017500, -0.030000, -0.010000
#*#       0.022500, -0.020000, -0.005000, -0.025000, -0.017500
#*#       0.012500, -0.042500, -0.050000, -0.070000, -0.067500
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 57.0000000001
#*# max_x = 290.0
#*# min_y = 10.0000000001
#*# max_y = 290.0

 

Tes valeurs dans Bltouch me semblent erronées à moins que ton BLT soit situé à droite de la buse à 115 et devant à 115. x et y_offset doivent correspondre au décalage de positions du pointeau du BLT avec la pointe de la buse en X et Y.

Ton «bed_mesh» lui aussi ne me parait pas bon (x|y|z_offset)

Les documentations du Github de Klipper sont exhaustives et complètes mais en anglais. Pour paramétrer correctement l'imprimante, le meiux est de suivre toute la documentation et les étapes de overview.md et particulièrement celles générales de bed_level.md puis celle plus particulière au bltouch sans oublier celle de probe_calibrate

Tu actives la rétraction firmware, why not mais es-tu sûr de l'avoir aussi activé dans ton trancheur ?

Je joins mon fichier de macros si ça peut t'intéresser :

Révélation

# Adds print macros such as start print and end print.
# in cura, as start gcode you can define "START_PRINT" and end gcode "END_PRINT"


######################################################################
# Start Print and End Print
######################################################################

# Replace the slicer's custom start and end g-code scripts with
# START_PRINT and END_PRINT.

[gcode_macro START_PRINT]
variable_T_BED: 60
variable_T_EXTRUDER: 200
gcode:
    M117 Homing
    # Use absolute coordinates
    G90
    # Reset the G-Code Z offset (adjust Z offset if needed)
    SET_GCODE_OFFSET Z=0.0
    # Home the printer
    G28
    # Use the bed mesh
    #G29
    BED_MESH_PROFILE LOAD=cr10v2
    # Move the nozzle near the bed
    G1 X15 Y20 Z5 F6000
    
    M117 Waiting for temperature
    # Start bed heating and continue
    M140 S{T_BED}
    {% if printer.heater_bed.temperature < params.T_BED|float*0.85 %}
        M190 S{params.T_BED|float*0.85} # wait till 0.85 of bed temp is reached, then continue  
    {% endif %}
    
    M140 S{T_BED}
    M104 S170
    M190 S{T_BED}
    M109 S{T_EXTRUDER}
    
    # Prime line
    PURGE
    M117 Printing...

[gcode_macro END_PRINT]
gcode:
    M117 Done printing 🙂
    # move z up
    G91
    G1 E-2 Z+10 F3000
    # absolute xy
    G90
    G1 X5 Y295 F2000
    #disable hotend and heated bed
    M104 S0
    M140 S0
    # disable steppers
    M84
    BED_MESH_CLEAR

# prime the nozzle
[gcode_macro PURGE]
gcode:
    M117 Prime Line
    G92 E0 ;Reset Extruder
    # move z axis
    G1 Z2.0 F3000 ;Move Z Axis up
    # move to prime position
    G1 X2 Y30 Z0.28 F5000.0 ;Move to start position
    G1 X2 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
    G1 X3 Y200.0 Z0.28 F5000.0 ;Move to side a little
    G1 X3 Y50 Z0.28 F1500.0 E30 ;Draw the second line
    G92 E0 ;Reset Extruder
    G1 Z2.0 F3000 ;Move Z Axis up
 
# G29 => (1) home all (2) get bed mesh (3) move nozzle to corner so it doesnt ooze on the bed while heating up.
[gcode_macro G29]
gcode:
    G28
    BED_MESH_CALIBRATE
    G0 X0 Y0 Z10 F6000
    BED_MESH_PROFILE save=cr10v2

# Park toolhead
[gcode_macro M125]
gcode:
    SAVE_GCODE_STATE NAME=parking
    M117 Parking toolhead
    G91
    G1 Z10 F600 # move up 10 mm
    G90
    G1 X150 Y0 F4000 # move to park position
    RESTORE_GCODE_STATE NAME=parking

# LOW_TEMP_CHECK checks if there is a setpoint for the  extruder. Untested!
# - If this setpoint is reached, continue.
# - If not, heat to setpoint.
# - If no setpoint, heat to parameter T (default@200)
[gcode_macro LOW_TEMP_CHECK T]
default_parameter_T: 200
gcode:
    {% if printer.extruder.target != 0 %} # if there is a setpoint for extruder
        {% if printer.extruder.temperature < printer.extruder.target %} # if not reached, heat
            M118 Heating from {printer.extruder.temperature} to {printer.extruder.target}.
            M109 S{printer.extruder.target|float}
        {% endif %}
    {% else %} # if no setpoint for extruder
        {% if printer.extruder.target < T %}  # heat to T.
            M118 No setpoint, heating to {T}.
            M109 S{T}
        {% endif %}
    {% endif %}
    
# load filament
[gcode_macro M701]
gcode:
    SAVE_GCODE_STATE NAME=loading_filament
    M117 Loading Filament
    M83
    G92 E0.0
    LOW_TEMP_CHECK
    G1 E200 F6000  # length of bowden tube till cold-end (~430mm) Flying Xtruder with BMG 3:1 (200mm)
    G1 E10 F200  # some extra to prime the nozzle --> slower
    G92 E0.0
    RESTORE_GCODE_STATE NAME=loading_filament
    
# unload filament
[gcode_macro M702]
gcode:
    SAVE_GCODE_STATE NAME=unloading_filament
    M125 # park
    M117 Unloading Filament
    LOW_TEMP_CHECK
    G91 # set relative
    G1 E10 F100
    G92 E0.0
    G1 E-200 F6000 # the E is the length of the bowden tube (430mm) or for flying Xtruder with BMG 3:1 (200mm)
    G92 E0.0
    RESTORE_GCODE_STATE NAME=unloading_filament

# filament change
[gcode_macro M600]
gcode:
    M117 Filament Change
    M118 Filament Change
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    LOW_TEMP_CHECK
    G91 # relative
    G1 E-1 F300 # retract 1
    M125 # park
    M702 # unload

    M117 New filament
    M118 New filament
    COUNTDOWN TIME=25 MSG="Switch"
    M701
    COUNTDOWN TIME=10 MSG="Clean"
    RESUME
    M117 Resuming
    M118 Resuming
    RESTORE_GCODE_STATE NAME=filament_change
    M117 Printing..
    M118 Printing..

[gcode_macro COUNTDOWN]
default_parameter_MSG: "Time: "
default_parameter_TIME: 10
gcode:
    # countdown
    {% for s in range(TIME|int, 0, -1) %}
        # dwell 1 second
        G4 P1000
        # echo
        M117 {params.MSG} {s}s
        M118 {params.MSG} {s}s
    {% endfor %}

# M300 : Play tone. Beeper support, as commonly found on usual LCD
# displays (i.e. RepRapDiscount 2004 Smart Controller, RepRapDiscount
# 12864 Full Graphic). This defines a custom I/O pin and a custom
# GCODE macro.  Usage:
#   M300 [P<ms>] [S<Hz>]
#   P is the tone duration, S the tone frequency.
# The frequency won't be pitch perfect.
[output_pin BEEPER_pin]
pin: ar37
#   ar37 is the default RAMPS/MKS pin.
pwm: True
#   A piezo beeper needs a PWM signal, a DC buzzer doesn't.
value: 0
#   Silent at power on, set to 1 if active low.
shutdown_value: 0
#   Disable at emergency shutdown (no PWM would be available anyway).
cycle_time: 0.001
#   PWM frequency : 0.001 = 1ms will give a base tone of 1kHz
scale: 1000
#   PWM parameter will be in the range of (0-1000 Hz).
#   Although not pitch perfect.

[gcode_macro M300]
default_parameter_S: 1000
#   Use a default 1kHz tone if S is omitted.
default_parameter_P: 100
#   Use a 10ms duration is P is omitted.
gcode:
    SET_PIN PIN=BEEPER_pin VALUE={S}
    G4 P{P}
    SET_PIN PIN=BEEPER_pin VALUE=0

 

Pour ton problème de décalage lors de l'impression, les paramètres de ta section «printer» ne me semblent pas en être la cause. Peut-être un problème de vitesse d'impression dans le trancheur ou matériel (tension courroie, roue d'entrainement, Vréf moteur, …).

🙂

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, fran6p a dit :

@Ellionas

Bizarre tout de même ton fichier 🤔

Voici le fichier «monolithique» de ma CR10-V2 (manque les macros) :

Tes valeurs dans Bltouch me semblent erronées à moins que ton BLT soit situé à droite de la buse à 115 et devant à 115. x et y_offset doivent correspondre au décalage de positions du pointeau du BLT avec la pointe de la buse en X et Y.

Ton «bed_mesh» lui aussi ne me parait pas bon (x|y|z_offset)

Les documentations du Github de Klipper sont exhaustives et complètes mais en anglais. Pour paramétrer correctement l'imprimante, le meiux est de suivre toute la documentation et les étapes de overview.md et particulièrement celles générales de bed_level.md puis celle plus particulière au bltouch sans oublier celle de probe_calibrate

Tu actives la rétraction firmware, why not mais es-tu sûr de l'avoir aussi activé dans ton trancheur ?

Je joins mon fichier de macros si ça peut t'intéresser :

  Révéler le texte masqué

# Adds print macros such as start print and end print.
# in cura, as start gcode you can define "START_PRINT" and end gcode "END_PRINT"


######################################################################
# Start Print and End Print
######################################################################

# Replace the slicer's custom start and end g-code scripts with
# START_PRINT and END_PRINT.

[gcode_macro START_PRINT]
variable_T_BED: 60
variable_T_EXTRUDER: 200
gcode:
    M117 Homing
    # Use absolute coordinates
    G90
    # Reset the G-Code Z offset (adjust Z offset if needed)
    SET_GCODE_OFFSET Z=0.0
    # Home the printer
    G28
    # Use the bed mesh
    #G29
    BED_MESH_PROFILE LOAD=cr10v2
    # Move the nozzle near the bed
    G1 X15 Y20 Z5 F6000
    
    M117 Waiting for temperature
    # Start bed heating and continue
    M140 S{T_BED}
    {% if printer.heater_bed.temperature < params.T_BED|float*0.85 %}
        M190 S{params.T_BED|float*0.85} # wait till 0.85 of bed temp is reached, then continue  
    {% endif %}
    
    M140 S{T_BED}
    M104 S170
    M190 S{T_BED}
    M109 S{T_EXTRUDER}
    
    # Prime line
    PURGE
    M117 Printing...

[gcode_macro END_PRINT]
gcode:
    M117 Done printing 🙂
    # move z up
    G91
    G1 E-2 Z+10 F3000
    # absolute xy
    G90
    G1 X5 Y295 F2000
    #disable hotend and heated bed
    M104 S0
    M140 S0
    # disable steppers
    M84
    BED_MESH_CLEAR

# prime the nozzle
[gcode_macro PURGE]
gcode:
    M117 Prime Line
    G92 E0 ;Reset Extruder
    # move z axis
    G1 Z2.0 F3000 ;Move Z Axis up
    # move to prime position
    G1 X2 Y30 Z0.28 F5000.0 ;Move to start position
    G1 X2 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line
    G1 X3 Y200.0 Z0.28 F5000.0 ;Move to side a little
    G1 X3 Y50 Z0.28 F1500.0 E30 ;Draw the second line
    G92 E0 ;Reset Extruder
    G1 Z2.0 F3000 ;Move Z Axis up
 
# G29 => (1) home all (2) get bed mesh (3) move nozzle to corner so it doesnt ooze on the bed while heating up.
[gcode_macro G29]
gcode:
    G28
    BED_MESH_CALIBRATE
    G0 X0 Y0 Z10 F6000
    BED_MESH_PROFILE save=cr10v2

# Park toolhead
[gcode_macro M125]
gcode:
    SAVE_GCODE_STATE NAME=parking
    M117 Parking toolhead
    G91
    G1 Z10 F600 # move up 10 mm
    G90
    G1 X150 Y0 F4000 # move to park position
    RESTORE_GCODE_STATE NAME=parking

# LOW_TEMP_CHECK checks if there is a setpoint for the  extruder. Untested!
# - If this setpoint is reached, continue.
# - If not, heat to setpoint.
# - If no setpoint, heat to parameter T (default@200)
[gcode_macro LOW_TEMP_CHECK T]
default_parameter_T: 200
gcode:
    {% if printer.extruder.target != 0 %} # if there is a setpoint for extruder
        {% if printer.extruder.temperature < printer.extruder.target %} # if not reached, heat
            M118 Heating from {printer.extruder.temperature} to {printer.extruder.target}.
            M109 S{printer.extruder.target|float}
        {% endif %}
    {% else %} # if no setpoint for extruder
        {% if printer.extruder.target < T %}  # heat to T.
            M118 No setpoint, heating to {T}.
            M109 S{T}
        {% endif %}
    {% endif %}
    
# load filament
[gcode_macro M701]
gcode:
    SAVE_GCODE_STATE NAME=loading_filament
    M117 Loading Filament
    M83
    G92 E0.0
    LOW_TEMP_CHECK
    G1 E200 F6000  # length of bowden tube till cold-end (~430mm) Flying Xtruder with BMG 3:1 (200mm)
    G1 E10 F200  # some extra to prime the nozzle --> slower
    G92 E0.0
    RESTORE_GCODE_STATE NAME=loading_filament
    
# unload filament
[gcode_macro M702]
gcode:
    SAVE_GCODE_STATE NAME=unloading_filament
    M125 # park
    M117 Unloading Filament
    LOW_TEMP_CHECK
    G91 # set relative
    G1 E10 F100
    G92 E0.0
    G1 E-200 F6000 # the E is the length of the bowden tube (430mm) or for flying Xtruder with BMG 3:1 (200mm)
    G92 E0.0
    RESTORE_GCODE_STATE NAME=unloading_filament

# filament change
[gcode_macro M600]
gcode:
    M117 Filament Change
    M118 Filament Change
    SAVE_GCODE_STATE NAME=filament_change
    PAUSE
    LOW_TEMP_CHECK
    G91 # relative
    G1 E-1 F300 # retract 1
    M125 # park
    M702 # unload

    M117 New filament
    M118 New filament
    COUNTDOWN TIME=25 MSG="Switch"
    M701
    COUNTDOWN TIME=10 MSG="Clean"
    RESUME
    M117 Resuming
    M118 Resuming
    RESTORE_GCODE_STATE NAME=filament_change
    M117 Printing..
    M118 Printing..

[gcode_macro COUNTDOWN]
default_parameter_MSG: "Time: "
default_parameter_TIME: 10
gcode:
    # countdown
    {% for s in range(TIME|int, 0, -1) %}
        # dwell 1 second
        G4 P1000
        # echo
        M117 {params.MSG} {s}s
        M118 {params.MSG} {s}s
    {% endfor %}

# M300 : Play tone. Beeper support, as commonly found on usual LCD
# displays (i.e. RepRapDiscount 2004 Smart Controller, RepRapDiscount
# 12864 Full Graphic). This defines a custom I/O pin and a custom
# GCODE macro.  Usage:
#   M300 [P<ms>] [S<Hz>]
#   P is the tone duration, S the tone frequency.
# The frequency won't be pitch perfect.
[output_pin BEEPER_pin]
pin: ar37
#   ar37 is the default RAMPS/MKS pin.
pwm: True
#   A piezo beeper needs a PWM signal, a DC buzzer doesn't.
value: 0
#   Silent at power on, set to 1 if active low.
shutdown_value: 0
#   Disable at emergency shutdown (no PWM would be available anyway).
cycle_time: 0.001
#   PWM frequency : 0.001 = 1ms will give a base tone of 1kHz
scale: 1000
#   PWM parameter will be in the range of (0-1000 Hz).
#   Although not pitch perfect.

[gcode_macro M300]
default_parameter_S: 1000
#   Use a default 1kHz tone if S is omitted.
default_parameter_P: 100
#   Use a 10ms duration is P is omitted.
gcode:
    SET_PIN PIN=BEEPER_pin VALUE={S}
    G4 P{P}
    SET_PIN PIN=BEEPER_pin VALUE=0

 

Pour ton problème de décalage lors de l'impression, les paramètres de ta section «printer» ne me semblent pas en être la cause. Peut-être un problème de vitesse d'impression dans le trancheur ou matériel (tension courroie, roue d'entrainement, Vréf moteur, …).

🙂

Je me doute que les valeurs sont bizarres... Cependant, si j'en mets d'autre, je me retrouve soit avec un palpage qui s'effectue que sur une partie du bed, soit un palpage qui sort du bed...

 

Je vais essayer de recommencer la procédure.

EDIT 1 : Le bltouch.md c'est fait, et c'est good. On passe à la suite.

EDIT 2 : x et y offset, c'est fait. Valeur : x = 43 et y = 6.

EDIT 3 : Le z offset, c'est fait. Il m'indique :

Recv: // Z position: -4.917 --> -4.907 <-- -4.897
Recv: ok
[...]
Send: accept
Recv: // bltouch: z_offset: 4.791
Recv: // The SAVE_CONFIG command will update the printer config file
Recv: // with the above and restart the printer.
Recv: ok
[...]
Send: save_config

Cependant, j'ai dû quand même modifier le position_min: de [stepper_z] à -5, sinon impossible de remonter assez avec testz.  J'ai l'impression que pour mon imprimante, le z 0 est à +5-7 sur z...

EDIT 5 : Bon, le bed_mesh et le palpage sont finis. Voici le code complet :

# This file contains common pin mappings for the 2019 Creality
# Ender 5. To use this config, the firmware should be compiled for the
# AVR atmega1284p.

# Note, a number of Melzi boards are shipped with a bootloader that
# requires the following command to flash the board:
#  avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex
# If the above command does not work and "make flash" does not work
# then one may need to flash a bootloader to the board - see the
# Klipper docs/Bootloaders.md file for more information.

# See the example.cfg file for a description of available parameters.

[stepper_x]
step_pin: PD7
dir_pin: PC5
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC2
position_endstop: 0
position_max: 230
homing_speed: 30

[stepper_z]
step_pin: PB3
dir_pin: !PB2
enable_pin: !PA5
step_distance: .0012500 # Use .001250 for Ender5 versions after late 2019
endstop_pin: probe:z_virtual_endstop
;position_endstop: 0.0
position_min: -5
position_max: 290

[stepper_y]
step_pin: PC6
dir_pin: PC7
enable_pin: !PD6
step_distance: .012500
endstop_pin: ^PC3
position_endstop: 0
position_max: 230
homing_speed: 30

[extruder]
max_extrude_only_distance: 100.0
step_pin: PB1
dir_pin: !PB0
enable_pin: !PD6
step_distance: 0.010526
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PD5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA7
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 285

[heater_bed]
heater_pin: PD4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA6
control: pid
# tuned for stock hardware with 50 degree Celsius target
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130

[fan]
pin: PB4

[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0

[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

[display]
lcd_type: st7920
cs_pin: PA3
sclk_pin: PA1
sid_pin: PC1
encoder_pins: ^PD2, ^PD3
click_pin: ^!PC0

[gcode_arcs]
resolution: 1.0

[bltouch]
sensor_pin: ^PC4
control_pin: PA4
x_offset: 43
y_offset: 6
z_offset: 0
speed: 5
samples: 2
sample_retract_dist: 2
samples_result: average
samples_tolerance: 0.100
samples_tolerance_retries: 1

[safe_z_home]
home_xy_position: 115,115
speed: 50
z_hop: 5
z_hop_speed: 5

[bed_mesh]
speed: 100
probe_count: 5,5
mesh_min: 43,6
mesh_max: 210,210
horizontal_move_z: 5
mesh_pps: 2,3
algorithm: bicubic
bicubic_tension: 0.2
#fade_start: 1
#fade_end: 10
#fade_target: 0 
horizontal_move_z: 5

[gcode_macro G29]
gcode:
    G28
    BED_MESH_CALIBRATE
    G0 X0 Y0 Z10 F6000
    BED_MESH_PROFILE save=ender5

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  -0.250625, -0.374375, -0.413125, -0.440625, -0.374375
#*# 	  -0.155000, -0.265000, -0.323125, -0.280000, -0.243750
#*# 	  -0.065000, -0.108750, -0.190000, -0.147500, -0.090000
#*# 	  -0.014375, -0.084375, -0.073750, -0.009375, 0.081250
#*# 	  0.069375, 0.016875, 0.041875, 0.105625, 0.245000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 3
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 43.0
#*# max_x = 210.0
#*# min_y = 6.00000000004
#*# max_y = 210.0
#*#
#*# [bed_mesh ender5]
#*# version = 1
#*# points =
#*# 	  -0.250625, -0.374375, -0.413125, -0.440625, -0.374375
#*# 	  -0.155000, -0.265000, -0.323125, -0.280000, -0.243750
#*# 	  -0.065000, -0.108750, -0.190000, -0.147500, -0.090000
#*# 	  -0.014375, -0.084375, -0.073750, -0.009375, 0.081250
#*# 	  0.069375, 0.016875, 0.041875, 0.105625, 0.245000
#*# x_count = 5
#*# y_count = 5
#*# mesh_x_pps = 2
#*# mesh_y_pps = 3
#*# algo = bicubic
#*# tension = 0.2
#*# min_x = 43.0
#*# max_x = 210.0
#*# min_y = 6.00000000004
#*# max_y = 210.0
Modifié (le) par Ellionas
Lien vers le commentaire
Partager sur d’autres sites

Si ton Zoffset avait été enregistré, il serait passé dans la section en fin du fichier et dans la section Bltouch, sa ligne serait précédée de # or il est à 0. Tu n'aurais pas oublié une étape de la documentation ?

Bizarre à nouveau que ton offset soit si grand (presque 5 mm). Comment est monté le BLT sur ton imprimante? Une photo?

D'après la documentation de Antclabs, le Bltouch doit respecter un certain nombre de préconisations :

241802292_Specifications-BLTouchV2_antclabs.png.8d59f642a1fb8c28c3451a33f77c9ec3.png

🙂

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...