Aller au contenu

Messages recommandés

Posté(e) (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) par Greg44
Posté(e)

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 …

🙂

Posté(e)

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'

Posté(e)

Peut-être essayer :

Citation

{% set SPEED = params.SPEED | float * 0.01 %}

🙂

Posté(e) (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) par Greg44
Posté(e)

Ton ventilateur est capable de fonctionner à n'importe quel pourcentage de vitesse ?

Posté(e)

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

Posté(e)
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 ?

Posté(e)
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.

Posté(e)
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.

🙂

Posté(e)

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 🙌

Posté(e) (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) par fran6p
  • fran6p changed the title to [RÉSOLU] G-code: Passer d'une valeur en % à une valeur décimale

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
×
×
  • Créer...