Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour à toutes et tous,

J'enfonce peut-être une porte ouverte, mais je bute sur un problème semblant assez simple (et pourtant peut docummenté) ...
En effet, j'essaie de créer une boucle de 10s avec une macro de contrôle qui se lancerait au démarrage de la machine ... et ... sans succès !

Je m'explique,
Sur mon projet, je chauffe la chambre d'impression (avec un chauffage, en plus des plateaux - "heater_generic") et je la refroidie (avec un ventillateur - "temperature_fan").
Klipper ne supportant pas de partager une thermistance, j'en ai donc deux. Une pour le "Heater" et une pour le "Fan".
De là, avec un positionnement adéquate (relativements ecartées), la différence de température entre les deux sondes peut m'apporter une informations substantielle sur un potentiel incendit dans la chambre d'impression. L'idée est : Après un check toutes les 10s, si la différence de température entre les deux sondes est supérieure à 2°C, alors PANIQUE et je coupe tout !!!
Mais comment faire ... ?

J'ai essayé avec :
- Un [delayed_gcode] qui appel une macro, qui rappelle le [delayed_gcode] - sans succès !
- Le module "DynamicMacros" qui devrait permettre de créer des macros récursives - sans succès !

Une grossière erreur de ma part ?
Une solution inexploitée ?
Une autre idée ?

Modifié (le) par pascal_lb
Posté(e)
il y a 38 minutes, Badid a dit :

Une autre idée ?

tu veux faire ce contrôle pendant l'impression, avant l'impression, les 2 ?

Au lieu de lancer ton contrôle toutes les x secondes pourquoi ne pas lancer ta macro à chaque changement de couche

image.png.107cd5fc0cacdd22c9e44a90428403f9.png

là c'est pour le contrôle pendant l'impression bien évidement 😉 

 

Posté(e)

Pendant l'impression, pas de problèmes. Mais l'idée était de surveiller en continu (pendant les périodes de pré-chauffe) ...

Posté(e) (modifié)
il y a une heure, Badid a dit :

Klipper ne supportant pas de partager une thermistance

Pourtant, avec une section [duplicate_pin_overrride], c'est ce que j'utilise régulièrement.

Avec Klipper (jinja), les boucles n'existent pas réellement. La difficulté vient du fait que les macros sont instanciées au démarrage de Klipper. Il faut utiliser une combinaison de macros et de delayed_gcode.

Exemple avec une macro qui continue d'extruder du filament alors que le détecteur de fin de filament a été déclenché (le détecteur est situé en amont de l'extrudeur d'une soixantaine de centimètres) :

# macros work with that declaration
#[filament_switch_sensor fila]
#switch_pin: PC1  # Qidi: !PC1  / SFS: PC1
#pause_on_runout: False
#runout_gcode: KEEP_PRINTING_AFTER_FIL_RUNOUT D={750}

[gcode_macro KEEP_PRINTING_AFTER_FIL_RUNOUT]
description: Trigger to pause the print after a further distance has been extruded
variable_end_d: 0
gcode:
  {% set d_start = printer.print_stats.filament_used|float %}
  {% set d_end = (d_start + params.D|float)|float %}
  SET_GCODE_VARIABLE MACRO=KEEP_PRINTING_AFTER_FIL_RUNOUT VARIABLE=end_d VALUE={d_end}
  M117 Pause at {printer["gcode_macro KEEP_PRINTING_AFTER_FIL_RUNOUT"].end_d|round(2)}
  UPDATE_DELAYED_GCODE ID=PAUSE_AT_D DURATION=1

[delayed_gcode PAUSE_AT_D]
initial_duration: 0
gcode:
  {% set d_current = printer.print_stats.filament_used|float %}
  {% if d_current < printer["gcode_macro KEEP_PRINTING_AFTER_FIL_RUNOUT"].end_d %}
    M117 Stopping {d_current|round(2)} {printer["gcode_macro KEEP_PRINTING_AFTER_FIL_RUNOUT"].end_d|round(2)}
    UPDATE_DELAYED_GCODE ID=PAUSE_AT_D DURATION=1
  {% else %}
    PAUSE
    M117 FILAMENT RUNOUT DETECTED!
    CHANGE_TUNE # BEEP to notify user to change filament
    UPDATE_DELAYED_GCODE ID=PAUSE_AT_D DURATION=0
  {% endif %}

# Alternative, modify filameny_switch_sensor for runout_gcode to call DELAYED_PAUSE
# with the two macros under.
# 
#[filament_switch_sensor fila]
#switch_pin: PC1  # Qidi: !PC1  / SFS: PC1
#pause_on_runout: False
#runout_gcode: SZLAYED_PAUSE

[gcode_macro DELAYED_PAUSE]
variable_extrusion_before_pause: 650          # mm of filament to be extruded before pausing
variable_extrusion_amount: 0                  # helper variable
gcode:
  SET_GCODE_VARIABLE MACRO=DELAYED_PAUSE VARIABLE=extrusion_amount VALUE={printer.print_stats.filament_used}
  UPDATE_DELAYED_GCODE ID=_DELAY_PAUSE DURATION=1

[delayed_gcode _DELAY_PAUSE]
gcode:
  {% set allowed_extrusion = printer["gcode_macro DELAYED_PAUSE"].extrusion_before_pause|float %}
  {% set start_amount = printer["gcode_macro DELAYED_PAUSE"].extrusion_amount|float %}
  
  QUERY_FILAMENT_SENSOR SENSOR=fila
  # check if predetermine length is reached
  {% if printer.print_stats.filament_used|float <= (start_amount + allowed_extrusion) %}
    # wait for extrusion amount to be reached, cancel if new filament was inserted
    {% if printer['filament_switch_sensor fila'].filament_detected != True %}
      # start looping this script every second
      UPDATE_DELAYED_GCODE ID=_DELAY_PAUSE DURATION=1
    {% endif %}
  {% else %}
    PAUSE
  {% endif %}

🙂 

Modifié (le) par fran6p
Posté(e) (modifié)

Oh p'tain ...
une erreur de syntaxe dans

UPDATE_DELAYED_GCODE

Merci, au fait 😉

il y a 26 minutes, fran6p a dit :

Pourtant, avec une section [duplicate_pin_overrride], c'est ce que j'utilise régulièrement.

Non ... Le DeepWiki de klipper, specifie bien qu'un [duplicate_pin_override] sur un capteur de temperature engendre des problèmes de "Queue" (de multiples interprétations).
D'ou la préférence à une double thermistance ...

Et si je duplique les entrées, comment détecter l'incendie (idée de base) ?

Modifié (le) par Badid
Posté(e) (modifié)
Le 26/10/2025 at 13:55, Badid a dit :

comment détecter l'incendie

Avec un détecteur d'incendie, non 😉.

OK, je =>

Sinon, je ne connais pas le «deepwiki», kézako ?

Modifié (le) par fran6p
  • Haha 1
Posté(e) (modifié)

La documentation officielle de Klipper est inutile ? Elle est partiellement traduite en français, ici (il faudrait juste la compléter avec les nouveautés).

Après un survol rapide de ce  «Deepwiki», j'ai l'impression qu'aucun humain n'a participé à l'écriture des textes 🤔.

Modifié (le) par fran6p
  • +1 1
Posté(e)
Le 28/10/2025 at 11:48, fran6p a dit :

Après un survol rapide de ce  «Deepwiki», j'ai l'impression qu'aucun humain n'a participé à l'écriture des textes 🤔.

Regarde le avec plus d'attention ...

Pour l'incendie, j'ai aussi un MQ2 en [gcode_button] sur PC5.

Posté(e)
Il y a 6 heures, Badid a dit :

Regarde le avec plus d'attention ...

Oui et ça fait peur, 100% généré par ia à partir du dépôt github ...

Alors c'est joli, il y a de beaux graphiques ... mais est-ce que c'est juste ? ...

La documentation originale de Klipper n'a pas été générée par ia, est largement compréhensible et est juste 🙂

 

Posté(e) (modifié)

Oui c'est une ia, les sources sont mêmes citées (dépôt officiel). L'avantage est que cela synthétise plusieurs paramètres (configuration_reference et .py).
J'ai paramétré mon projet avec les 2 en parallèles. Je n'ai pas relevé d'erreurs grossières (sur Klipper), et dans certains cas cela m'a été utile.
Je m'en suis aussi servi pour mieux comprendre la notion de blending dans le module Led Effect. Par contre (et je vous rejoins), une catastrophe sur d'autres modules ... presque aussi hallucinant que les réponses du p'tit module d'IA de Qwant !

De la documentation officielle :

[duplicate_pin_override]

This tool allows a single micro-controller pin to be defined multiple times in a config file without normal error checking. This is intended for diagnostic and debugging purposes. This section is not needed where Klipper supports using the same pin multiple times, and using this override may cause confusing and unexpected results.

Modifié (le) par Badid
Posté(e)

Depuis le temps que j'utilise le duplicate_pin_override, si cela provoquait confusion et résultats inattendus, je m'en serais rendu compte 😉.

  • +1 1
Posté(e) (modifié)

Je n'arrive plus à retrouver le message de Kevin O'connor qui expliquait un problème de variable pour la gestion du "contrôle" dans la queue.
Et je ne sais plus où j'ai vu que cela devrait fonctionner si on utilise 2 contrôles de type "watermark". ... C'est ce que j'ai croisé, et compris ... 🤔, comme infos sur divers forums (humains ! 😉).

Il me reste de la place, j'ai des 3950 ... Ces explications me conviennent. De là, autant profiter de la redondance pour faire un contrôle comparatif (sonde défectueuse, "détection incendie")

Modifié (le) par Badid

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