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

 

Dérouler  

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 %}

Dérouler  

🙂

Posté(e) (modifié)
  Le 10/03/2023 at 11:00, fran6p a dit :

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

Dérouler  

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

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)
  Le 11/03/2023 at 15:26, Greg44 a dit :

Est ce que le pb peut venir de l'emplacement où j'ai mis la macro ?

Dérouler  

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

Dérouler  

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}

Dérouler  

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}

Dérouler  

A tester ?

Posté(e)
  Le 12/03/2023 at 11:55, fran6p a dit :

Je dirais, sans certitude, non.

Dérouler  

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)
  Le 12/03/2023 at 14:08, Savate a dit :

jinja2 étant un peu caractériel

Dérouler  

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}

 

Dérouler  

C'est parfait merci beaucoup pour votre aide messieurs 🙌

Posté(e) (modifié)
  Le 13/03/2023 at 04:08, Greg44 a dit :

C'est parfait merci beaucoup pour votre aide messieurs

Dérouler  

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