
V3DP
Membres-
Compteur de contenus
399 -
Inscrit(e) le
-
Dernière visite
À propos de V3DP
- Date de naissance 05/01/1968
Information
-
Genre
Masculin
-
Lieu
Conflans Sainte Honorine
-
Intérêts
Services Impression 3D
-
Imprimantes
Mankati Fullscale XT
Palette 3 Pro
Ultimaker 3 Extended
Ultimaker S5
BCN3D Epsilon W50
Qidi Tech X Max 3
Elegoo Saturn 3 Ultra
Visiteurs récents du profil
523 visualisations du profil
Récompenses de V3DP
-
Bon après 15h d'impression, résultat des courses bof. Plus de blocage de tête. La qualité d'impression s'est un peu améliorée, mais le défaut est toujours présent. J'avais imprimé cette même pièce en Mars, sans ce souci de "banding". Mais avec une matière légèrement différente : ePLA de chez FormFutura au lieu d'un recyclé interne. Donc le souci serait sur la matière et / ou les réglages pour cette bobine. J'ai changé de production sur cette imprimante, et elle tourne sans soucis avec de l'ASA. Si quelqu'un a une idée pour ce problème de "banding" je suis preneur.
-
Je viens de rechercher pour remplacer les petits ventilateurs de la tête d'impression qui refroidissent l'extrudeur. Ce que j'ai trouvé de plus approchant, dans les fabricants reconnus, c'est le Sunon suivant, déjà utilisé en remplacement de celui qui refroidit le RP2040 sur mes 2 X Max 3 depuis de nombreux mois. A l'époque acheté chez Rs Components, mais meilleur prix chez TME ce jour https://www.tme.eu/fr/details/mf20080v1-a99-a/ventilateurs-dc-5v/sunon/mf20080v1-1000u-a99/ Plus performant pour la même puissance absorbée, mais 1,5 mm plus épais. A priori ça devrait passer tout juste avec l'extrudeur. Pour le RP2040, j'ai fait un post complet sur le remplacement de l'origine avec ce ventilateur. J'ai regardé pour le blower de 120 mm. J'avais pris ce modèle là en 24V 2 fils. J'ai un ventilateur d'origine qui couine un peu... https://fr.aliexpress.com/item/33021068426.html?spm=a2g0o.cart.0.0.202b378dh3xM9T&mp=1&pdp_npi=5%40dis!EUR!EUR 15.99!EUR 15.99!!EUR 15.99!!!%402140f54217477470625961261e83d1!12000036055964022!ct!FR!4826755631!!2!0&gatewayAdapt=glo2fra J'ai trouvé (plus cher) celui ci sur un site allemand https://www.evg.de/en/12032ga-24m-aa-00-nmb_24v_dc-blower_120x120x32_48_mh Pas sur que la différence de prix vaille le coup par rapport à Ali.
-
J'ai progressé ce matin sur le problème, reste à voir si c'est bien ça qui générait le souci de qualité de la surface. Voici le coupable pour les problèmes de heatcreep et le blocage de la tête. C'est le ventilateur qui refroidit l'extrudeur Il donnait l'impression de tourner, mais ne soufflait pas d'air. Il devait osciller .... Remplacé par un de ceux récupéré en changeant celui refroidissement le RP2040 à l'arrière de la tête d'impression. Ca fait deux heures que ça tourne sans problèmes de blocage de l'extrusion. Pour ce qui est de la qualité, on verra demain matin quand la pièce sera imprimée car plus au bureau. A la caméra ça a l'air mieux.
-
Bonjour à tous. Je sèche un peu sur un problème de qualité d'impression sur une de mes X Max 3. Il y a comme un banding, mais incliné, touchant plusieurs couches. La déformation est nettement perceptilble et pour la mise en peinture ça va être coton. C'est une impression en PLA (r PLA de FormFutura) en 100 microns. J'utilise ce matériau depuis de nombreuses années et c'est la première fois que j'ai ce phénomène. La machine a été tunée (tension des courroies, input shaping, shake n' tune) et a produit des pièces de haute qualité à 60 microns avec le matériau de fin Avril au 10 mai. Mécaniquement la machine a l'air en bon état et a produit des pièces pour ce modèle sans défauts, mais avec une autre bobine du même filament. C'est peut être un souci lié à la bobine en question avec en plus des difficultés d'extrusion (heatcreep et blocage de la tête au final). J'ai changé la hotend complète et refait le PID, vérifié les refroidissements .... Température plateau 60°C, hotend à 235°C pour une MVS de plus de 20 mm3/s, machine ouverte devant et au dessus. Je pense à de la vibration, vu que la piste température d'extrusion est surtout avec un banding bien horizontal. Merci pour vos conseils. J'oubliais, les vitesses sont toutes en dehors de la plage critique entre 70 et 110 m/min et les périmètres ne sont pas ralentis sur les overhangs. Slicing avec Orca 2.3
-
@pommeverte @fran6p Merci pour votre aide et les pistes. J'ai trouvé le problème.... donc on peut faire propre en utilisant les méthodes fournies par Klipper. En fait la valeur renvoyée par printer['output_pin partfan'].value est un décimal entre 0 et 1. Et la commande M106 attend une valeur entre 0 et 255, qui peut être décimale également. Donc en faisant une petite multiplication ça fonctionne. Voici les deux macros fonctionnelles [gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} {% set partfan_speed = printer["output_pin partfan"].value %} {% set filterfan_speed = printer["output_pin filterfan"].value %} {% set sidefan_speed = printer["output_pin sidefan"].value %} ##### end of definitions ##### SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={temp} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_restore VALUE={restore} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_partfan_speed VALUE={partfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_filterfan_speed VALUE={filterfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_sidefan_speed VALUE={sidefan_speed} # set a new idle_timeout value {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=True M104 S0 M106 S0 M106 P2 S0 M106 P3 S0 SFS_DISABLE PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} [gcode_macro RESUME] description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: 0 variable_last_extruder_restore: False variable_last_partfan_speed: 0 variable_last_filterfan_speed: 0 variable_last_sidefan_speed: 0 variable_restore_idle_timeout: 0 variable_idle_state: False gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" # no runout else True if not printer[client.runout_sensor].enabled # sensor is disabled else printer[client.runout_sensor].filament_detected %} # sensor status {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder {% set do_resume = False %} {% set prompt_txt = [] %} ##### end of definitions ##### #### Printer comming from timeout idle state #### {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_restore %} # we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp) }' M109 S{last_extruder_temp} M106 S{last_partfan_speed * 255} M106 P2 S{last_sidefan_speed * 255} M106 P3 S{last_filterfan_speed * 255} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %} {% endif %} #### Printer comming out of regular PAUSE state #### {% elif can_extrude %} {% set do_resume = True %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder}' {% set _d = prompt_txt.append("\"%s\" not hot enough, please heat up again and press RESUME" % printer.toolhead.extruder) %} {% endif %} {% if runout_resume %} {% if do_resume %} {% if restore_idle_timeout > 0 %} SET_IDLE_TIMEOUT TIMEOUT={restore_idle_timeout} {% endif %} # restore idle_timeout time {client.user_resume_macro|default("")} _CLIENT_EXTRUDE SFS_ENABLE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} {% endif %} {% else %} RESPOND TYPE=error MSG='{"Resume aborted !!! \"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]}' {% set _d = prompt_txt.append("\"%s\" detects no filament, please load filament and press RESUME" % (client.runout_sensor.split(" "))[1]) %} {% endif %} ##### Generate User Information box in case of abort ##### {% if not (runout_resume and do_resume) %} RESPOND TYPE=command MSG="action:prompt_begin RESUME aborted !!!" {% for element in prompt_txt %} RESPOND TYPE=command MSG='{"action:prompt_text %s" % element}' {% endfor %} RESPOND TYPE=command MSG="action:prompt_footer_button Ok|RESPOND TYPE=command MSG=action:prompt_end|info" RESPOND TYPE=command MSG="action:prompt_show" {% endif %} Merci encore pour l'aide
-
Merci. J'ai trouvé aussi ça pendant qu'on échangeait. Je n'ai plus de message d'erreur sur mes macros. Pour autant ça ne fonctionne pas lors du RESUME. Je pense à un problème de format de la valeur obtenue. Pas sur .... le sujet avance proprement pour l'instant, mais il reste ce dernier point à traiter
-
Ben non, car c'est la macro qui fonctionne pour FreeDi, donc avec des sections output_pin et non pas fan_generic...
-
Test fait, si on définit le ventilateur auxiliaire en fan_generic, cela ne fonctionne plus avec l'écran flashé FreeDi La macro M106 a bien été redéfinie pour gérer la notion d'outil (Px) pour fonctionner avec FreeDi (c'est bien décrit dans son GitHub) @pommeverte Merci pour l'idée. A défaut d'être élégante, j'ai peur que ça ne marche pas si simplement que ça : si on passe une variable (3 en fait) pour définir le dernier état des ventilateurs au niveau de la macro M106, comme la macro PAUSE va appeler la macro M106 pour arrêter les ventilos, les variables vont être remises à 0. Une idée serait de sauvegarder ces valeurs dans une nouvelle variable juste avant le changement d'état des ventilateurs par la macro PAUSE et passer ces variables à la macro RESUME. En fait ca reviendrait à faire ce que Klipper fait théoriquement nativement, sauf que la propriété native .value pour l'objet output_pin ne renvoie pas l'attendu. Si je ne trouve pas comment fonctionner avec la mécanique native de Klipper c'est ce que je ferais.
-
Merci @fran6p Oui, c'est plus simple dans ce cas, car la propriété speed est décrite. Un printer.fan.speed remonte la valeur Par contre je ne sais pas si cela continuerait à fonctionner avec l'écran d'origine flashé avec FreeDi. J'ai suivi le GitHub de Phil1988 pour la configuration du printer.cfg pour que ça fonctionne avec l'écran flashé
-
Bonjour à tous J'ai libéré mes X Max 3 et tourne sur Klipper 0.12 actuellement J'essaye d'améliorer mes macros PAUSE RESUME (déjà non standard) pour couper les ventilateurs lors de la mise en pause et les redémarrer à la vitesse définie lors de l'arrêt à la reprise. Donc passage par une variable définie lors de la macro PAUSE et récupération lors de la macro RESUME, comme c'est déjà le cas pour la température de la buse. Voici la macro PAUSE [gcode_macro PAUSE] description: Pause the actual running print rename_existing: PAUSE_BASE gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set idle_timeout = client.idle_timeout|default(0) %} {% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %} {% set restore = False if printer.toolhead.extruder == '' else True if params.RESTORE|default(1)|int == 1 else False %} {% set partfan_speed = printer.partfan if printer.partfan != '' else 0 %} {% set filterfan_speed = printer.filterfan if printer.filterfan != '' else 0 %} {% set sidefan_speed = printer.sidefan if printer.sidefan != '' else 0 %} ##### end of definitions ##### SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={temp} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_restore VALUE={restore} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_partfan_speed VALUE={partfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_filterfan_speed VALUE={filterfan_speed} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_sidefan_speed VALUE={sidefan_speed} # set a new idle_timeout value {% if idle_timeout > 0 %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout} SET_IDLE_TIMEOUT TIMEOUT={idle_timeout} {% endif %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=True M104 S0 M106 S0 M106 P2 S0 M106 P3 S0 SFS_DISABLE PAUSE_BASE {client.user_pause_macro|default("")} _TOOLHEAD_PARK_PAUSE_CANCEL {rawparams} Et la partie de la macro RESUME [gcode_macro RESUME] description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: 0 variable_last_extruder_restore: False variable_last_partfan_speed: 0 variable_last_filterfan_speed: 0 variable_last_sidefan_speed: 0 variable_restore_idle_timeout: 0 variable_idle_state: False gcode: ##### get user parameters or use default ##### {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set velocity = printer.configfile.settings.pause_resume.recover_velocity %} {% set sp_move = client.speed_move|default(velocity) %} {% set runout_resume = True if client.runout_sensor|default("") == "" # no runout else True if not printer[client.runout_sensor].enabled # sensor is disabled else printer[client.runout_sensor].filament_detected %} # sensor status {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder {% set do_resume = False %} {% set prompt_txt = [] %} ##### end of definitions ##### #### Printer comming from timeout idle state #### {% if printer.idle_timeout.state|upper == "IDLE" or idle_state %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False {% if last_extruder_restore %} # we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp) }' M109 S{last_extruder_temp} M106 S{last_partfan_speed} M106 P2 S{last_sidefan_speed} M106 P3 S{last_filterfan_speed} {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% else %} En lançant la macro PAUSE, j'obtiens une erreur lors de l'évaluation de la variable partant_speed !! Unable to parse '' as a literal: invalid syntax (, line 0) Donc à priori c'est que la variable qui doit être un décimal n'est pas du bon format. Si je spécifie que c'est la valeur de objet set partfan_speed = printer.partfan.value, j'obtiens une erreur bloquante lors du démarrage de Klipper !! Error evaluating 'gcode_macro PAUSE:gcode': jinja2.exceptions.UndefinedError: 'extras.gcode_macro.GetStatusWrapper object' has no attribute 'partfan' Pourtant dans le guide de référence des états output_pin¶ Les informations suivantes sont disponibles dans les objets output_pin nom_de_la_sortie : value : la "valeur" de la broche, telle que définie par une commande SET_PIN. Et le printer.cfg définit les ventilateurs de la X Max 3 comme des output_pin et non pas des fan. J'ai essayé avec la syntaxe complète : printer[printer.partfan].value sans succès. Impossible de récupérer la valeur numérique de la sortie du ventilateur. Si quelqu'un a une idée ....
-
J'ai fait la même chose il y a assez longtemps, même si je n'utilise pas très souvent les ventilateurs de coté (beaucoup de PETG ou d'ABS / ASA) j'ai regardé il y a peu lorsque j'ai libéré ma plus vieille X Max, pas de soucis. Je pense aussi que le problème vient du serrage des cosses. Effectivement des Wago seraient une bonne option pour reprendre l'alimentation, avec des câbles mono brins. Avec du multibrins il faut étamer les câbles avant, tout comme pour monter des cosses si on veut être sur du sertissage. Autre option, aller rechercher le 24V directement sur l'alimentation et bien serrer les cosses. Pour le MOSFET, j'ai pris la même référénce pour monter mes ventialeurs additionnels.
-
Perso j'ai mis un blower coté gauche de mes X Max pour palier le déséquilibre qui se voyait plateau chargé. J'ai pris un ventilo équivalent sur Ali... pas cher et j'en ai un de rechange. De fait je ne tourne généralement qu'à 50% pour du PLA ou du TPU uniquement. Bon elles ont une utilisation pro, mais beaucoup d'ABS, ASA ou de PETG, donc finalement ils ne servent pas tant que cela. Je suis preneur par contre d'une bonne réf pour le ventilateur de pièce de la tête. J'envisage de virer les capots de celle ci pour gagner en température sur le MCU, TMC (avec un ventilateur plus puissant et mieux positionné) et ne plus avoir le ventilateur qui souffle (à défaut de vraiment refroidir) sur l'extrudeur modifié BondTech.
-
Je viens de libérer ma deuxième X Max 3. Pas sans mal et pas tout à fait comme prévu. J'avais prévu de passer par un clone de l'eMMC de la première, de flasher les MCU, de flasher l'écran avec la procédure FreeDi et de mettre à jour le printer.cfg (adresses des MCU, paramètres de PiD). Au boot après mise en place de l'eMMC, l'écran a été flashé avec le FW FreeDi et la machine est restée plantée sans accès SSH ou web. A voir il y a un souci avec l'écran dans ce cas et certains services (ceux de FreeDi ?) ne démarrent pas et bloquent le boot. L'écran boote et reste en attente de connexion à Klipper. Donc reconstruction de l'image suivant le tutoriel de @fran6p et reprise des fichiers de configuration de la première machine après avoir mis à jour le printer.cfg avec les paramètres de la deuxième machine. Pour FreeDi, pas de soucis, il a reflashé l'écran malgré la première tentative. Pour le flashage de la carte mère, j'ai essayé HID Flash, sans plus de succès que sur la première machine. Donc passage par la case microSD. Pour le flashage de la tête, à nouveau des soucis avec Katapult, impossible de flasher la carte avec le bootloader, malgré de nombreux essais (avec arrêt de Klipper, sans, passage en BootSel avec un boot - reset, ....). Donc flashage en direct de la tête sans bootloader et plus de soucis. Un reboot pour la reconnection de l'écran (qui veut bien se faire une fois toutes les MCU à jour), puis les calibrations du Z offset, Input shaping et mesh bed leveling. Elle est à nouveau prête à imprimer ! Le flashage de Katapult est toujours aussi aléatoire. Faut-il effacer la mémoire du RP2040 avant de flasher le bootloader ?
-
@fran6p J'ai reçu la carte mère Qidi pour X Max 3 : une X_6 V1.0. Effectivement les drivers sont soudés Le bon coté dans mon cas, c'est que le changement est assez rapide : remplacement physique, changement de l'eMMC et flashage des MCU et c'est reparti. Bref dans la demie journée c'est reparti.