fran6p Posté(e) Mai 26, 2020 Posté(e) Mai 26, 2020 (modifié) Ayant rencontré quelques difficultés d’impression avec des pièces cylindriques sur ma CR10V2 récemment mise à jour avec un bon et beau Marlin 2.0.5.3 dont j’avais fait part dans ce post : La remarque de @Tircown quant au firmware Klipper m’a «provoqué». Aimant les défis, particulièrement quand ils sont liés à l’informatique, l’électronique et la bidouille en général, j’ai sauté le pas. Je vais donc relater mon expérience, en renvoyant vers les liens qui m’ont été utiles et en fournissant évidemment les fichiers de configuration de ma CR10-V2 (pour les pressés, aller directement à la fin du post pour y trouver ceux-ci). Étape préliminaire Étant de la vieille école, je préfère de loin une bonne documentation format écrit fusse-t’elle en anglais plutôt que des vidéos pour me plonger dans un sujet nouveau. Le créateur du firmware Klipper, justement, a bien fait les choses, de nombreuses heures de lecture sont à prévoir (en ligne ou après récupération de l’archive compressée) : https://github.com/KevinOConnor/klipper Un utilisateur du forum, @Nibb31 a réalisé un excellent tutoriel (en français évidemment) qui explique tout : Tout ce que vous avez toujours voulu savoir sur Klipper sans jamais oser le demander Un autre site dont je me suis fortement servi : https://klipper.info/ Après lecture assidue des documents des liens précédents, je peux alors me lancer, d’autant plus que j’ai tout le matériel nécessaire (imprimantes, raspberry pi, cerveau et couteau). Première étape, installation de Klipper Octoprint étant déjà installé et fonctionnel, je m’y connecte via SSH (utilisateur : pi, mdp : cestmonsecret ou raspberry si vous ne l’avez pas modifié (c’est pas bien de ne pas le faire)). On récupère Klipper : git clone https://github.com/KevinOConnor/klipper ./klipper/scripts/install-octopi.sh Ces deux lignes, télécharge Klipper (git), installe les dépendances indispensables, prépare Klipper pour qu’il démarre automatiquement à l’allumage de la framboise et démarre celui-ci sous forme d’un service (le script «install-octopi.sh»est un fichier texte contenant les lignes de commandes). On construit puis flashe le microcontrôleur : cd ~/klipper/ make menuconfig Choix du microcontrôleur de la carte : Atmega2560 pour la CR10-V2, puis on lance la «compilation» : make On vérifie sur quel port la carte est connectée en USB : ls /dev/serial/by-id/* Le résultat affiche un lien symbolique /dev/serial/by-id/usb-1a86_USB-Serial-if00-port0 vers le périphérique physique (chez moi /dev/ttyUSB0). pi@octopi:~ $ ls -l /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 lrwxrwxrwx 1 root root 13 May 18 12:56 /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0 Il ne reste plus qu’à flasher le firmware : sudo service klipper stop make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB-Serial-if00-port0 sudo service klipper start Pour que ce flashage réussisse il faut que Octoprint ne soit pas connecté à l’imprimante (bouton «Déconnecter»). Seconde étape, configurer Octoprint Configurer Octoprint pour qu’il utilise Klipper : ajouter un port série nommé /tmp/printer dans les préférences, Connexion série, onglet Général, «ports série supplémentaires» puis sauvegarder. Revenir dans les préférences, dans l’onglet «comportement» modifier à la section «Que faire en cas d’erreur de firmware» en cochant «Annuler toutes impressions en cours mais rester connecté à l’imprimante», enregistrer. Reste à tester la connexion après avoir sélectionné le bon port série ( /tmp/printer) puis en cliquant sur le bouton «Connecter». En utilisant le terminal avec la commande «status», une erreur est retournée puisque la configuration de l’imprimante n’est pas faite. Pour me faciliter encore plus la vie, j’ajoute un plugin à Octoprint : Octoklipper Troisième étape, configurer Klipper Il reste à préparer un fichier de configuration correspondant à ma CR10V2. Dans les fichiers du répertoire «config» de Klipper, celle-ci n’est pas présente. Il y en a pour la CR10 et la CR10S (printer-creality-cr10-2017.cfg et printer-creality-cr10s-2017.cfg) Dans les sources du Marlin2, les attributions des pattes d’un microcontrôleur sont regroupées dans le dossier src/pins/«controleur»/pins_«carte».h. La carte de la CR10-V2, version2.5.2 (Atmega2560), est déclarée comme une RAMPS modifiée par Creality : #define MOTHERBOARD BOARD_RAMPS_CREALITY les numéros des pins à déclarer seront donc dans pins_RAMPS_CREALITY.h (et en inclusion pins_RAMPS.h). Le fichier prévu pour une CR10S correspond aux attributions, il y aura donc moins de travail de tâtonnement et ça c’est cool. Il y a bien quelques différences mais elles sont minimes. Ayant un Bltouch d’installé, le pin utilisé est celui du Z_MAX alors que le endstop est sur le Z_MIN. Je complète ce fichier de configuration avec les options dont j’ai besoin, place ce fichier dans le home du Pi et relance Klipper soit via le terminal d’Octoprint («firmware_restart») ou via le plugin Octoklipper et le bouton «Firmware» ou «Host» Quatrième étape, vérifier la configuration La documentation relate les étapes à suivre pas-à-pas : vérifier l’affichage des températures vérifier l’«arrêt d’urgence» (M112) vérifier la mise en chauffe du lit et de la tête vérifier le fonctionnement des moteurs vérifier les fins de course vérifier les pilotes des moteurs vérifier le moteur de l’extrudeur calibrer les réglages de PID (tête / lit) Dans l’ensemble peu de modifications à effectuer pour que l’ensemble fonctionne (au cas où, j’avais le doigt prêt à appuyer sur l’interrupteur de l’alimentation). Toutes les attributions de «pins» format «arduino» (déclaration pin_map dans la section [mcu] du fichier de configuration) sont correctes. Possédant un détecteur de fin de filament, j’ai juste eu à inverser sa logique de fonctionnement : au départ : switch_pin: ar2 devient : switch_pin: !ar2 Ma CR10V2 a été modifiée par l’adjonction d’un système d’auto-nivellement (BLTouch de Antclabs ®). Creality a prévu d’origine la possibilité de cet ajout, tout est pré câblé sur la carte mère, il suffit de connecter la prise femelle du câble du Bltouch (5 broches avec détrompeur) sur l’embase électronique située sous l’extrudeur. Cela évite d’ouvrir le boîtier d’alimentation pour déconnecter le contacteur de fin de course de l’axe Z branché sur le ZMIN. La pré connexion du BLTouch le branche sur le ZMAX donc la «pin» à déclarer est la n”19 en mode «pullup» : [bltouch] # CR10V2, connexion sur ZMAXPIN (19) sensor_pin: ^ar19 control_pin: ar11 pin_move_time: 0.4 x_offset: 47 y_offset: 0 # Increase Z_Offset to lower nozzle closer to bed. PLA 1.55 #z_offset: 1.55 speed: 60 Cinquième étape, améliorer la configuration L’imprimante étant à nouveau fonctionnelle, quelques impressions sont réalisées. Auparavant, il me faut modifier les gcodes de démarrage et de fin de mon trancheur (Cura dans un premier temps). En effet, Klipper n’utilise pas la totalité de ceux prévus pour un Marlin (ex : G29). Cette page donne tous les gcodes connus de Klipper. Il utilise de nouvelles directives (extended G-code) sous forme de mots clés équivalents aux gcodes (ex : STATUS, FIRMWARE_RESTART, BED_MESH_CALIBRATE, …). L’avantage de ce système est que l’on peut créer des macros relativement complexes afin de simuler leur équivalent en gcode Marlin. Par exemple pour mes gcodes de démarrage / fin, je vais utiliser les macros suivantes : [gcode_macro START_PRINT] variable_T_BED: 60 variable_T_EXTRUDER: 200 gcode: M117 Home sweet home # 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 Chauffe Marcel # 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 # Prechauffe buse M190 S{T_BED} M109 S{T_EXTRUDER} # Prime line PURGE M117 C’est parti, mon Kiki...[gcode_macro END_PRINT] gcode: M117 C’est fini # 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 Ligne de purge 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 Dans Cura, mes gcodes de démarrage / fin deviennent ) : ; gcode macro Klipper (démarrage) START_PRINT T_BED={material_bed_temperature_layer_0} T_EXTRUDER={material_print_temperature_layer_0} ; gcode macro Klipper (fin) END_PRINT Avant de me lancer dans les impressions, je réalise la calibration de l’extrudeur (100 mm demandés = 100 mm fourni), méthode «matérielle only» donc PTFE déconnecté en sortie d’extrudeur. Résultats, un poil trop (trois tests de 100 mm, au lieu de 300mm, j’ai 303, donc règle de trois pour affiner mes pas qui passent de 0,00714285 (1/140 pas) à 0.00719666 (1/138.95 pas) [mon extrudeur a été remplacé par celui des CR10S Pro, BMG sans réduction]. Un premier cube de calibration (25x25x25mm) est tranché puis envoyé à Octoprint afin d’être imprimé. Les résultats dimensionnels sont très corrects (25 x 25 x 25,02 (XxYxZ). Au dessus j’ai bien 10 , 20 et 6 mm, les ponts sont bons, pas de «stringing» sur la face colonnes, un beau cercle, des «overhang» quasi parfaits. Le seul défaut est un léger «pied d’éléphant». Impression faite avec du PLA 3D870 Blanc (le stock de filament commence à s’épuiser), température de 215°, vitesse d’impression de test à 100 mm/s sauf pour les parois, interne à 75 mm/s, externe à 50 mm/s. J’en profite en continuant mes tests, j’ajoute la gestion de la rétraction dans le firmware Klipper (je reprends les valeurs utilisées par Cura) : [firmware_retraction] retract_length: 5.2 retract_speed: 25 unretract_extra_length: 0 unretract_speed: 20 et en ajoutant l’option dans Cura : Un autre cube de calibration (30x30x30) avec des cylindres internes de profondeur 20 mm sert à tester cette «nouvelle rétraction». L’examen du gcode obtenu permet de voir les nouveaux gcodes de rétraction (G10/ G11). ;Generated with Cura_SteamEngine 4.6.1 M82 ;absolute extrusion mode ; gcode macro Klipper START_PRINT T_BED=60 T_EXTRUDER=215 G92 E0 G92 E0 G10 ;LAYER_COUNT:150 ;LAYER:0 M106 S255 G0 F6000 X165.065 Y129.811 Z0.2 ;TYPE:SKIRT G11 G1 F1200 X165.708 Y129.86 E0.02145 … Sixième étape, Pressure Advance Qu’est que c'est que ça que c'est ? D’après la documentation, «Pressure advance does two useful things - it reduces ooze during non-extrude moves and it reduces blobbing during cornering. (traduction approximative : L'avance à la pression a deux effets utiles : elle réduit le suintement lors des mouvements sans extrusion et elle réduit les coups dans les virages (mon interprétation : les coins sont plus francs, moins arrondis )). C’est plus ou moins l’équivalent du «Linear advance» pour Marlin. Malheureusement, cette option, je ne peux pas l’activer dans Marlin avec ma carte Creality «silencieuse» équipée de pilotes TMC2208 déclarés en mode standalone. Si je l’active, mon extrudeur va plus ou moins rapidement arrêter de fonctionner. Depuis quelques mois (mi mars 2020), le développeur de Klipper a fourni une correction qui permet d’utiliser ce firmware avec cette option pour des TMC2208 en standalone. En suivant scrupuleusement la documentation, la tour carrée est tranchée, les directives d’impression sont données, l’impression est lancée. Une fois finie et examinée, mes valeurs de PA sont ajoutées dans la section [extruder] du fichier de configuration. Conclusion (provisoire) Klipper est un excellent firmware qui mérite d’être essayé. Une fois le flashage sur la carte mère réalisé, sa facilité de paramétrage, de tests est sans commune mesure avec Marlin : on effectue les modifications dans le fichier de configuration, après un RESTART ou un FIRMWARE_RESTART, la nouvelle configuration est prise en compte, plus besoin de modifier son (se) fichier(s) «.h» puis de recompiler et installer en flashant. La possibilité des «macros» est juste énorme, de nombreuses choses deviennent possibles. Klipper peut gérer (je n’ai pas testé) plusieurs cartes (en gros principe de maître / esclave), l’absence d’une fonctionnalité sur la carte principale n’oblige pas forcément à en changer. On ajoute une autre carte (une RAMPS par exemple) et on peut utiliser ses fonctionnalités en plus de la carte «principale». Merci @Tircown de m’avoir obligé à sortir de ma zone de confort et un grand merci @Nibb31 pour avoir créer son excellent tutoriel. A suivre… PS : pour ceux qui voudraient tenter l’aventure, comme promis en début du sujet, mes fichiers de configurations actuellement utilisés et fonctionnels sur ma CR10V2 avec sa carte d’origine V2.5.2. Fichiers à placer dans le home de Pi, là où se trouve Octoprint (/home/pi): Ma configuration est désormais accessible sur mon dépôt Github : https://github.com/fran6p/cfg_klipper Modifié (le) Aout 11, 2020 par fran6p 6 2 3
Kachidoki Posté(e) Mai 26, 2020 Posté(e) Mai 26, 2020 J'attends toujours le test du cylindre en mode vase. Dommage de ne pas avoir des journées de 72h pour pouvoir tester tout ça... D'un autre côté, je me dis qu'au bout d'un moment, même 72h par jour ne suffiraient plus...
fran6p Posté(e) Mai 26, 2020 Auteur Posté(e) Mai 26, 2020 il y a 10 minutes, Kachidoki a dit : Dommage de ne pas avoir des journées de 72h pour pouvoir tester tout ça... Si seulement les heures pouvaient être compressées comme les fichiers informatiques (Einstein, Bohr, Planck, Fermi, revenez SVP) ? Pour le test des cylindres, ça se fera (quand ça se fera ) avec Klipper et / ou avec le « fork s-curve» pour voir si ça apporte du mieux ou pas. Comme le beau temps se maintient, en ce moment, je suis plutôt dans la mécanique moto (Suzuki Vstrom1000), problème de recharge batterie probablement dû au stator qui a lâché (il a tenu plus de 80.000 km, c'est déjà pas mal). Pas de garage pour effectuer ces bricolages, donc moto déplacée sur ce qui fait office de pelouse .
doby02 Posté(e) Mai 26, 2020 Posté(e) Mai 26, 2020 Il y avait un truc que je ne comprenais pas avec klipper. Je savais que le principe était d'utiliser la carte mére de l'imprimante comme "pont de puissance" et que la partie intelligente était déplacé dans le raspberry. Donc je me disais qu'il fallait installer un firmware minimaliste sur l'imprimante et en survolant quelques tutos je n'avais pas trouvé ou cela se faisait, là j'ai ma réponse, ça se fait à cet endroit. Il y a 5 heures, fran6p a dit : Il ne reste plus qu’à flasher le firmware : sudo service klipper stop make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB-Serial-if00-port0 sudo service klipper start Pour que ce flashage réussisse il faut que Octoprint ne soit pas connecté à l’imprimante (bouton «Déconnecter»). 1
Ellionas Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) Le 26/05/2020 at 13:02, fran6p a dit : [gcode_macro START_PRINT] variable_T_BED: 60 variable_T_EXTRUDER: 200 gcode: M117 Home sweet home # 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 Chauffe Marcel # 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 # Prechauffe buse M190 S{T_BED} M109 S{T_EXTRUDER} # Prime line PURGE M117 C’est parti, mon Kiki...[gcode_macro END_PRINT] gcode: M117 C’est fini # 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 Ligne de purge 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 CR10V2-LI3D.zip 4 Ko · 2 downloads Je ne comprends pas très bien comment on configure ces macros. On les mets bien dans l'onglet Macros du plugin Octoklipper ? Enfin, pour le PRESSURE_ADVANCE, cela m'intéresse. J'ai lu un peu la doc, mais je vois pas où rentrer ces lignes... Dans le gcode de démarrage ? Ces questions paraissent peut-être idiotes, mais dans beaucoup de tutos que je vois pour le gcode, on te dit souvent de le mettre, mais très peu à quel endroit... Et pour un noob, à part penser au bout d'un moment qu'on parle de ton fondement, eh bien on est un peu perdu... Modifié (le) Juin 11, 2020 par Ellionas
Tircown Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) J'avais loupé ce sujet de notre @fran6p! Bien joué. @Ellionas, pour faire simple: quand ça commence par [quelquechose] c'est que c'est dans la config de l'imprimante (fichier printer.cfg). Tu as vu le loup: il y a les macros du firmware et les macros du plugin octoklipper, deux choses différentes. Les macros du plugin n'ont d'utilité que pour rajouter des boutons à l'interface d'octoprint mais je dissuade quiconque de mettre quelque chose de complexe là dedans. Il vaut mieux mettre un raccourcis vers une macro de Klipper. @fran6p j'utilise désormais un second MCU en permanence pour gérer la baie dans laquelle est placée l'imprimante. C'est un Arduino Nano sur un PCB que j'ai dessiné. Il y a 6 mosfets prévus pour 3A@12V, quelques emplacements pour des capteurs et quelques autres détails. Actuellement je gère la ventilation, l'éclairage et très prochainement la filtration. Il y a de la place pour gérer un chauffage et son ventilateur. J'y ai mis une thermistance NTC 100k pour suivre la température et l''afficher dans octoprint. J'avais aussi fais des tests avec un BME280 (température, humidité, pression atmosphérique) et ça marchait impec par contre il n'y a pas de 1-Wire donc pas de DS18B20 . Ça fait un bout de temps que je veux faire un sujet ici pour présenter ce projet mais je fais de la procrastination. Pour ma cubique j'ai aussi prévu de brancher l'écran LCD sur un Nano pour n'avoir qu'un câble usb à brancher au lieu des deux grosses nappes. Au cours de mes recherches je me suis aperçu que je n'étais pas le seul à avoir eu cette idée: la communauté voron a fait exactement ce que je prévoyais: https://github.com/VoronDesign/Voron-Hardware/tree/master/Nano_Display Depuis que les macros incluent Jinja2 il y a possibilité de faire des choses vraiment très intéressantes. Modifié (le) Juin 11, 2020 par Tircown
Ellionas Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) il y a 13 minutes, Tircown a dit : J'avais loupé ce sujet de notre @fran6p! Bien joué. @Ellionas, pour faire simple: quand ça commence par [quelquechose] c'est que c'est dans la config de l'imprimante (fichier printer.cfg). Tu as vu le loup: il y a les macros du firmware et les macros du plugin octoklipper, deux choses différentes. Les macros du plugin n'ont d'utilité que pour rajouter des boutons à l'interface d'octoprint mais je dissuade quiconque de mettre quelque chose de complexe là dedans. Il vaut mieux mettre un raccourcis vers une macro de Klipper. Pourtant, toutes les macros sont bien dans un fichier séparé, (Y compris celle ne servant que comme fonction pour d'autres.) et pas dans printer.cfg, si je regarde dans le .zip de fran6p. Donc si ce n'est pas dans le plugin macro, où est-ce donc ? Quand à la PRESSURE_ADVANCE, il n'y a pas de balise, donc je sais toujours pas où la mettre. SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1 ACCEL=500 TUNING_TOWER COMMAND=SET_PRESSURE_ADVANCE PARAMETER=ADVANCE START=0 FACTOR=.020 Mais, merci pour tes éclaircissements. Modifié (le) Juin 11, 2020 par Ellionas
Tircown Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) Tu peux scinder en autant de fichier que tu veux pour organiser ton code. Il suffit de faire un include et il est au début de son printer.cfg: [include macros.cfg] Je fais pareil pour la Nano qui gère la baie. Si je veux imprimer en dehors sans la brancher j'ai juste la ligne d'include à commenter. Car tous les MCU déclarés doivent être banchés sinon ça ne démarre pas. Modifié (le) Juin 11, 2020 par Tircown
fran6p Posté(e) Juin 11, 2020 Auteur Posté(e) Juin 11, 2020 il y a 27 minutes, Ellionas a dit : Pourtant, toutes les macros sont bien dans un fichier séparé, (Y compris celle ne servant que comme fonction pour d'autres.) et pas dans printer.cfg, si je regarde dans le .zip de fran6p. Donc si ce n'est pas dans le plugin macro, où est-ce donc ? Tu as parfaitement raison. Adepte du principe KISS (cool ), j'aurai dû détailler mon fichier (qui à ce jour est encore plus modulaire). Plutôt que d'avoir un «gros» fichier de configuration printer.cfg, j'ai une floppée de fichiers .cfg qui sont inclus dans le principal qui doit se nommer printer.cfg. Mes macros sont donc dans un fichier seul et sont ajoutées au fichier principal via une ligne : include /chemin-du-fichier-a-inclure/macros.cfg printer.cfg: 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 cfg_klipper/generic/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: -1.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 # test scurve (accel, accel_to_decel) #max_accel: 5000 #max_accel_to_decel: 5000 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: 5.2 retract_speed: 25 unretract_extra_length: 0 unretract_speed: 20 # Support for gcode arc (G2/G3) commands. [gcode_arcs] resolution: 1.0 # Fork Scurve-smoothing de dmbutyugin [smooth_axis] smooth_x: 0.0144 smooth_y: 0.0108 accel_comp_x: 0.000012 accel_comp_y: 0.000006 #[scurve] #acceleration_order: 4 #min_jerk_limit_time: 0.016 #*# <---------------------- 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 macros.cfg (mes fichiers à inclure sont sur mon RaspberryPi dans mon répertoire personnel (/home/pi) dans un dossier nommé «cfg_klipper/generic/» pour les fichiers de configurations génériques Citation # 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 E430 F6000 # length of bowden tube till cold-end (~430mm) G1 E40 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-530 F6000 # the E is the length of the bowden tube (430mm) + 100 mm. 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 Pendant que je réponds, je vois que @Tircown a répondu Tu peux copier le contenu de macros.cfg et l'ajouter dans le fichier printer.cfg pour n'avoir qu'un seul fichier (qui sera éditable avec OctoKlipper qui ne peut éditer que le fichier nommé printer.cfg ). 1
Tircown Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 il y a 1 minute, fran6p a dit : qui sera éditable avec OctoKlipper qui ne peut éditer que le fichier nommé printer.cfg ). En fait tu peux lui dire d'éditer un autre fichier mais c'est pas très bien fait car il faut reparamétrer pour changer de fichier. De toute façon je crois que tôt-ou-tard tout le monde fini par utiliser un vrai éditeur de texte. 1
fran6p Posté(e) Juin 11, 2020 Auteur Posté(e) Juin 11, 2020 il y a 15 minutes, Tircown a dit : tout le monde fini par utiliser un vrai éditeur de texte. Notepad++ via WinSCP quand je travaille à partir du PC sinon j'utilise Vi avec Linux (j'aime vraiment pas Emacs ). il y a une heure, Tircown a dit : Ça fait un bout de temps que je veux faire un sujet ici pour présenter ce projet mais je fais de la procrastination. Je suis adepte aussi mais de temps en temps je fais des exceptions donc j'espère que ton sujet ne tardera pas trop
Ellionas Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) Je comprends mieux... Merci à vous deux. Sauf pour le pressure_advance... Les deux lignes de codes que je vois sur ton lien fran6p, je sais malheureusement pas où les mettre. (Je ne vois nulle part la création d'une macro/fonction sur les tutos... Donc, pas de balise.) Donc au final, cela donnerait ça comme fichier. (Voir ci-joint) Cela te semble correct ? (Si tu as le temps de regarder, bien sûr.) J'avoue que j'ai la flemme d'uploader ou de créer un autre fichier en ssh. PS : Le change_filament, et le PURGE, (Celui-là, je l'ai aussi inclut dans le firmware, puisque START_PRINT y fait appel.) je trouve cela intéressant de les garder en tant que macro pure, pour avoir le petit bouton qui va bien. Je sais pas si c'est viable ? printer.cfg Modifié (le) Juin 11, 2020 par Ellionas
Tircown Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 (modifié) Pour le PA ça se met dans la section de l'extrudeur: https://github.com/KevinOConnor/klipper/blob/master/config/example.cfg#L135 Perso je n'ai jamais pris le temps de le régler, il est même désactivé et ça imprime nickel à mes yeux. Après bon, je ne fais pas du 120mm/sec Modifié (le) Juin 11, 2020 par Tircown 1
Ellionas Posté(e) Juin 11, 2020 Posté(e) Juin 11, 2020 Ah, super, un grand merci. J'avais pas parcouru tout ce fichier, je vais le bouquiner ce soir.
fran6p Posté(e) Juin 12, 2020 Auteur Posté(e) Juin 12, 2020 @Ellionas Ton printer.cfg m'a l'air correct. Réalise les tests préconisés sur le github de Klipper : https://github.com/KevinOConnor/klipper/blob/master/docs/Config_checks.md Voilà ma section «extruder» avec les paramètres PA. Conseil si tu réalises le fichier qui sert à la calibration: prends une couleur autre que le blanc : Citation [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: 3000pressure_advance: 0.67 #pressure_advance_lookahead_time: 0.040pressure_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 1
Ellionas Posté(e) Juin 15, 2020 Posté(e) Juin 15, 2020 Bon, j'ai reçu tout mon matériel de réparation, bien galéré avec les soudures pour les connecteurs, (Surtout que je n'avais pas la pince correspondante.) mais la température, c'est ok. Par contre, j'ai essayé de lancer un premier print, et ça s'est cancelled arrivé à température. La cause annoncée : Citation Your printer's firmware reported an error. Due to that the ongoing print job will be cancelled. Reported error: Must home axis first: 92.846 95.982 0.500 [-4.000] J'ai remarqué qu'en appuyant sur le bouton home de klipper, cela ne bougeait pas ma tête, uniquement le bed. Il n'arrive pas à contrôler les moteurs X/Y ? Bon, ben c'est les macro dans le printer.cfg que klipper n'aime pas. Pour le moment, je réessaye un print sans macro, ça a l'air de fonctionner. Je me replongerais dans les macros une fois tout bien calibré.
fran6p Posté(e) Juin 15, 2020 Auteur Posté(e) Juin 15, 2020 Il y a 2 heures, Ellionas a dit : c'est les macro dans le printer.cfg que klipper n'aime pas. Leur syntaxe (priez pour nous ) répond à des exigences: - gcode: doit être en début de ligne, - la liste des commandes doit posséder une indentation (au moins un espace). La lecture de tous les documents (certes en anglais) du dossier docs et du dossier configs est fortement recommandée : Citation gcode: <-- placé au tout début de ligne # Start bed heating <-- identation ici de deux espaces (idem pour les lignes suivantes) M140 S{BED_TEMP} # Use absolute coordinates G90 # Reset the G-Code Z offset (adjust Z offset if needed) SET_GCODE_OFFSET Z=0.0 Extrait du fichier Command_Templates.md Citation ### Formatting of G-Code in the config Indentation is important when defining a macro in the config file. To specify a multi-line G-Code sequence it is important for each line to have proper indentation. For example: ``` [gcode_macro blink_led] gcode: SET_PIN PIN=my_led VALUE=1 G4 P2000 SET_PIN PIN=my_led VALUE=0 ``` Note how the `gcode:` config option always starts at the beginning of the line and subsequent lines in the G-Code macro never start at the beginning.
Ellionas Posté(e) Juin 15, 2020 Posté(e) Juin 15, 2020 (modifié) L'indentation est importante ?! Oh, pitié... C'est Lucifer en personne ce truc. (En même temps, mettre saint et taxe dans le même mot...) Bref, je te remercie, je bouquinerais ça. Pour le moment, je suis plus embêté avec ce hotend BROZZL... Il fuit tout le temps à mi-impression du cube de calibration. Et comme ce n'est pas le même système que pour le hotend d'origine de l'ender (Le PTFE reste au niveau du début du radiateur, il ne peut pas aller au contact de la visserie de la buse.), je n'arrive pas encore à trouver la solution. (P'têt appeler un plombier ?) Modifié (le) Juin 15, 2020 par Ellionas
Tircown Posté(e) Juin 15, 2020 Posté(e) Juin 15, 2020 As tu vissé la buse en ayant préalablement chauffé la hotend presque au max de sa capacité? Pour des inserts téflon: ~245°C - pour du full métal ~285°C.
Ellionas Posté(e) Juin 15, 2020 Posté(e) Juin 15, 2020 Oui, je me suis même cramé les doigts. (J'avais chauffé à 200°, p'têt pas assez.) Cela dit, il restait tout de même 0.5 mm de marge entre le cul de la buse et le reste. Je réessayerais demain.
Tircown Posté(e) Juin 30, 2020 Posté(e) Juin 30, 2020 Le 11/06/2020 at 17:45, Tircown a dit : Pour ma cubique j'ai aussi prévu de brancher l'écran LCD sur un Nano pour n'avoir qu'un câble usb à brancher au lieu des deux grosses nappes. Au cours de mes recherches je me suis aperçu que je n'étais pas le seul à avoir eu cette idée: la communauté voron a fait exactement ce que je prévoyais: https://github.com/VoronDesign/Voron-Hardware/tree/master/Nano_Display J'ai pu tester ça hier avec une breadboard et une tonne de câbles de prototypage (20 pour être précis). Ça fonctionne impeccablement bien et c'est assez magique de brancher son écran juste en USB sur le rpi. Du coup j'ai commandé le circuit imprimé (PCBWay) d'après les sources du github. J'ai du refaire le fichier de perçage avec Kicad pour qu'ils l'acceptent. Je trouvais d'abord dommage d'avoir besoin de petites nappes IDC avec les connecteurs entre le nano et l'écran. Mais comme ça c'est adaptable à n'importe quel écran LCD et souder les petits fils de la nappe aurait été un calvaire. Sur l'arduino nano il reste 3 broches de libres et l'UART. Arrivé jusque là c'est assez facile de rajouter quelques boutons vers des macros personnalisées.
fran6p Posté(e) Juin 30, 2020 Auteur Posté(e) Juin 30, 2020 il y a 52 minutes, Tircown a dit : Du coup j'ai commandé le circuit imprimé (PCBWay) d'après les sources du github. Tu en as pris combien d'exemplaires? Si tu en as un en surplus, je veux bien te l'acheter
fran6p Posté(e) Aout 11, 2020 Auteur Posté(e) Aout 11, 2020 Juste une petite mise à jour. J'utilise de plus en plus git et son corolaire Github, c'est franchement top pour la gestion de versions de fichiers (faut dire que c'est son rôle ). Donc, plutôt que fournir des fichiers compressés sur le forum (où ils occupent de l'espace disque sur les serveurs du forum), je fournirai désormais un lien vers le dépôt Github (les mises à jour s'y font facilement). J'ai donc modifié mon premier post pour y ajouter le lien vers le dépôt qui va bien. Je le remets aussi ici pour ceux harassés par la chaleur que le fait de manipuler la souris va exténuer : >>> il est là <<< @Ellionas, même si c'est avec un peu de retard, je suis tombè (rassurez-vous, sans me faire mal) sur ce sujet d'un blog (c'est en anglais mais il y a plein de zolis zimages) pour le réglage du Pressure Advance. Mes prochains tests (quand il fera bien moins chaud ) devraient porter sur la compensation de résonance (bien que j'ai peu voire pas de «ghosting», «echoing» et autre ing). 1
Tircown Posté(e) Aout 11, 2020 Posté(e) Aout 11, 2020 Il y a 1 heure, fran6p a dit : Mes prochains tests (quand il fera bien moins chaud ) devraient porter sur la compensation de résonance (bien que j'ai peu voire pas de «ghosting», «echoing» et autre ing) l'ADXL345 est parti de chine hier . Ce n'est pas indispensable pour profiter de la compensation de résonance mais c'est implémenté dans une "branch" et assez bluffant. J'ai hâte de tester. 1
fran6p Posté(e) Aout 12, 2020 Auteur Posté(e) Aout 12, 2020 Il y a 14 heures, Tircown a dit : l'ADXL345 est parti de chine hier Il vient à pied par la … . J'ai lu effectivement que ce capteur (accéléromètre) était un plus (encore quelques câbles supplémentaires à faire passer quelque part ). J'ai reçu hier de BTT un «EXP MOT V1.0 Driver Extension Module» (pas testé pour le moment mais pour le cas où ). 1
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant