Greg44 Posté(e) Mars 8, 2023 Posté(e) Mars 8, 2023 (modifié) Bonjour à tous, J'ai récemment ajouté un petit système de chauffage ventilé dans mon imprimante sous Klipper. Le réglage de la chauffe est aujourd'hui indépendante de la marche du ventilateur, c'est à dire que le système de chauffe peut être à 100% de sa puissance sans que le petit ventilo qu'il y a derrière ne tourne. C'est pas efficace et je trouve ça potentiellement dangereux. J'ai cherché pendant plusieurs jours à créer une macro qui activerait le ventilateur dès qu'une température de consigne est donnée au système de chauffe. Mais bon, je n'ai pas trouvé quelque chose de compréhensible pour mon niveau de programmation. J'ai trouvé une autre option. Le Slicer de Bambulab "Bambu Studio" à 2 paramètres intéressants : "chamber_temperature" et "additional_cooling_fan_speed". J'ai donc ajouté cela à mon G-code de départ : SET_FAN_SPEED FAN=chamber SPEED="[additional_cooling_fan_speed]" SET_HEATER_TEMPERATURE HEATER=heater_chamber TARGET="[chamber_temperature]" La première ligne pilote le ventilateur et la seconde donne la valeur de consigne au système de chauffe. Cela fonctionne très bien sauf que lors d'une impression, le ventilateur à toujours au maximum. Après une petite analyse du problème, j'ai compris que cela venait de l'unité utilisée dans Bambu Studio qui est en % alors que Klipper attends une valeur décimale. Donc quand je mets 50% dans Bambu Studio, Klipper reçoit 50 à la place de 0.5. La solution est de pouvoir automatiquement diviser par 100 (ou de multiplier par 0.01) ma valeur [additional_cooling_fan_speed] et c'est là où est mon problème.... J'ai essayé plusieurs possibilités comme : SET_FAN_SPEED FAN=chamber SPEED="[additional_cooling_fan_speed]"*0.01 SET_FAN_SPEED FAN=chamber SPEED="[additional_cooling_fan_speed]*0.01" Mais cela ne fonctionne pas, Klipper me donne l'erreur -> Malformed command SET_FAN_SPEED FAN=chamber SPEED="50*0.01" Auriez-vous une idée de comment faire ??? Modifié (le) Mars 8, 2023 par Greg44
fran6p Posté(e) Mars 9, 2023 Posté(e) Mars 9, 2023 En réécrivant une macro ? Du genre : Citation [gcode_macro SET_FAN_SPEED] rename_existing: _SET_FAN_SPEED gcode: {% set SPEED = params.SPEED * 0.01 | default(1) | float %} _SET_FAN_SPEED FAN=chamber SPEED=SPEED Je n'ai pas testé mais c'est en gros ce que je ferais si …
Greg44 Posté(e) Mars 9, 2023 Auteur Posté(e) Mars 9, 2023 Bonjour Fran6p, merci pour cette piste. J'ai injecté la macro dans mon fichier macros.cfg, j'ai lancé une impression et j'ai cette erreur : Error evaluating 'gcode_macro SET_FAN_SPEED:gcode': TypeError: can't multiply sequence by non-int of type 'float'
fran6p Posté(e) Mars 10, 2023 Posté(e) Mars 10, 2023 Peut-être essayer : Citation {% set SPEED = params.SPEED | float * 0.01 %}
Greg44 Posté(e) Mars 10, 2023 Auteur Posté(e) Mars 10, 2023 (modifié) Il y a 10 heures, fran6p a dit : {% set SPEED = params.SPEED | float * 0.01 %} Je viens d'essayer et plus d'erreur, l'impression se lance mais mon ventilateur reste à 0. J'en conclu que la macro se lance bien car sans elle, le ventilo était à 100%. J'ai essayé de remplacer le * 0.01 par / 100, mais cela ne change rien. (Pour info dans mon Gcode en PJ, la chambre doit être à 40° (ça, ça fonctionne) avec le ventilateur à 50%) Cylinder_ASA.gcode Modifié (le) Mars 10, 2023 par Greg44
fran6p Posté(e) Mars 11, 2023 Posté(e) Mars 11, 2023 Ton ventilateur est capable de fonctionner à n'importe quel pourcentage de vitesse ?
Greg44 Posté(e) Mars 11, 2023 Auteur Posté(e) Mars 11, 2023 Tu m'as mis le doute un instant, mais oui il peut être réglé à n'importe quelle vitesse. Est ce que le pb peut venir de l'emplacement où j'ai mis la macro ? je l'ai mise dans "macro" à la fin
fran6p Posté(e) Mars 12, 2023 Posté(e) Mars 12, 2023 Il y a 20 heures, Greg44 a dit : Est ce que le pb peut venir de l'emplacement où j'ai mis la macro ? Je dirais, sans certitude, non. @Savatetu en penses quoi ? Je suis à cours d'idée Quand au début tu testais directement via l'ajout de la commande SET_FAN_SPEED, il me semble que le passage du paramètre SPEED ne peut se faire tel quel : Citation SET_FAN_SPEED FAN=chamber SPEED="[additional_cooling_fan_speed]"*0.01 Je n'ai encore jamais testé mais il me semble qu'il faudrait utiliser la syntaxe «jinja» pour effectuer un calcul à partir d'un placeholder passé en paramètre par le trancheur, du genre : Citation SPEED={[additional_cooling_fan_speed]/100} En réécrivant la macro: Citation [gcode_macro SET_FAN_SPEED] rename_existing: _SET_FAN_SPEED gcode: {% if params.SPEED is defined %} {% set s = (params.SPEED)|default(1)|float %} {% endif %} _SET_FAN_SPEED FAN=chamber SPEED={s/100} A tester ?
Savate Posté(e) Mars 12, 2023 Posté(e) Mars 12, 2023 Il y a 2 heures, fran6p a dit : Je dirais, sans certitude, non. pareil mais jinja2 étant un peu caractériel j'essayerai sans les espace avant et après le | {% set SPEED = params.SPEED|float * 0.01 %} Sinon la version proposée par @fran6p devrait bien faire le job aussi.
fran6p Posté(e) Mars 12, 2023 Posté(e) Mars 12, 2023 il y a 54 minutes, Savate a dit : jinja2 étant un peu caractériel Cépafo et toutafé . Un coup ça passe et la fois suivante, non. Les mystères de certains langages sont parfois insondables voire incompréhensibles, on dirait dans certains cas qu'on à affaire à de la magie.
Greg44 Posté(e) Mars 13, 2023 Auteur Posté(e) Mars 13, 2023 Yoouuhouuuu !!! ça fonctionne avec le code: Citation [gcode_macro SET_FAN_SPEED] rename_existing: _SET_FAN_SPEED gcode: {% if params.SPEED is defined %} {% set s = (params.SPEED)|default(1)|float %} {% endif %} _SET_FAN_SPEED FAN=chamber SPEED={s/100} C'est parfait merci beaucoup pour votre aide messieurs
fran6p Posté(e) Mars 13, 2023 Posté(e) Mars 13, 2023 (modifié) Il y a 12 heures, Greg44 a dit : C'est parfait merci beaucoup pour votre aide messieurs De rien, c'est le principe du forum: aider si / quand on le peut J'ai marqué le titre de ton sujet en «résolu». Modifié (le) Mars 13, 2023 par fran6p
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