Aller au contenu

Filament ABS

Où se cachent les sous-programmes "utilitaires" de nos imprimantes ?


Messages recommandés

Bonjour,

Sur toutes les imprimantes 3D on trouve des fonctions dites "utilitaires" qui permettent par exemple de faire le niveau du plateau, ou de faire préchauffer buse et/ou plateau ou encore de mettre en pause une impression. Ces fonctions sont accessibles par l'écran, sensitif ou avec bouton de sélection.

Voici ma question: où trouve t-on les sous-programmes qui gèrent ces fonctions?

- dans le firmware de la carte mère?

- dans le firmware de l'écran?

- ailleurs ?

Perso, j'ai une Alfawise U30pro. J'ai cherché dans le firmware Marlin mais je n'ai rien trouvé qui ait un rapport avec ces fonctions. En même temps, mes connaissances sur Marlin sont probablement insuffisantes d'où mon échec à les trouver...

Est-ce que vous avez une idée, une suggestion?

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

Ta question est compliquée car peu compréhensible:

- niveau du plateau : c'est essentiellement mécanique. Si tu parles de l'offset Z, on peut le préparamétrer dans le Firmware de la CM (Marlin : NOZZLE_TO_PROBE_OFFSET). Mais si tu parles du mesh du plateau, ces valeurs sont stockées dans l'EEPROM et donc doivent être mesurées sur la machine par le BL Touch.

- le préchauffage est dans le firmware CM : section temperature, preheat constant

-mettre en pause : je ne comprends pas car cela ne peut se faire que par intervention ou sur un évènement.

Pourrais-tu être plus précis dans ta demande ?

Lien vers le commentaire
Partager sur d’autres sites

bonsoir @RFN_31

Oui, j'admets que ma question est mal formulée...

Pour le nivellement du plateau, sur la U30pro mais ça existe aussi sur d'autres, il y a une séquence automatique qui se lance quand on appuie sur le bouton LEVELLING.

Il faut choisir un des 4 coins du plateau en appuyant sur le bouton correspondant, puis la tête se déplace toute seul vers ce point. Ainsi de suite pour les autres points.

Il y a donc bien un programme qui gère ces déplacements. Où se trouve t-il?

Pour le préchauffage, idem. Il y a bien une sous-routine qui, quand on appuie sur le bouton PLA ou ABS, lance la mise en chauffe à une température préréglée dans ladite routine. Où se trouve t-elle? Dans le firmware de la CM, je n'ai pas trouvé de lignes de code lançant par exemple le gcode M104 Sxxx ou M140 Sxxx quand on appuie sur les boutons de l'écran...

Enfin, pour la mise en pause, je pensais surtout au changement de filament. Quand il n'y a plus de filament, ou si l'on veut changer de filament, on appuie sur un bouton FILAMENT CHANGE/UNLOAD/LOAD et une séquence se met en marche. Où se trouve le programme gérant cette séquence?

Voilà, j'espère avoir été plus clair maintenant... Sinon, il faut me le dire à nouveau...

Merci de ton aide.

Modifié (le) par Ambo73
Lien vers le commentaire
Partager sur d’autres sites

Tout cela se trouve dans le firmware avant compilation : c'est paramétré dans les fichiers configuration.h et configuration_adv.h

Lien vers le commentaire
Partager sur d’autres sites

Les fonctions apparaissant dans l'écran sont géré par marlin (ou autre comme klipper) et sont donc a activer/configurer dans celui-ci.

Mais il y'a aussi des moyens détournés pour certaines fonctions via des logiciels comme pronterface ou par gcode ou par octoprint.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Habituellement et historiquement c'est géré par le firmware "principal", Marlin. L'écran n'étant qu'un périphérique sans intelligence (comme un écran de PC).

Mais les écrans modernes embarquent de plus en plus de choses. Les BTT TFT par exemple, ont leur propre firmware et reprennent des fonctions à leur compte, du coup pas mal de choses sont gérées par l'écran dans ce cas. C'est d'ailleurs assez pénible car certains comportements sont différents, comme l'annulation d'une impression en cours.

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

merci pour vos interventions et commentaires.

@RFN_31

Oui, c'est ce que je pensais mais j'ai fouillé un peu et je n'ai rien trouvé correspondant à ce que cherche...

@Idealnight

Quand tu dis "Les fonctions apparaissant dans l'écran sont géré par marlin (ou autre comme klipper) et sont donc a activer/configurer dans celui-ci."

"Dans celui-ci", tu veux dire dans "Marlin de la CM" ou dans "l'écran" ?

@Kachidoki

Tu dis "Mais les écrans modernes embarquent de plus en plus de choses". Est-ce que l'écran de la U30pro fait partie de ces écrans "modernes" ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 6 minutes, Ambo73 a dit :

"Dans celui-ci", tu veux dire dans "Marlin de la CM" ou dans "l'écran" ?

Marlin est sur la carte mère et c'est Marlin qu'il faut modifier

il y a 8 minutes, Ambo73 a dit :

Oui, c'est ce que je pensais mais j'ai fouillé un peu et je n'ai rien trouvé correspondant à ce que cherche...

Mais que cherches tu ?

Lien vers le commentaire
Partager sur d’autres sites

Il y a 16 heures, Ambo73 a dit :

J'ai cherché dans le firmware Marlin mais je n'ai rien trouvé

Tu n'as pas cherché longtemps.

Pour le leveling, c'est dans src/gcode/bedlevel

Pour les températures, c'est dans src/gcode/temp

Et ainsi de suite...

Lien vers le commentaire
Partager sur d’autres sites

@jmarie3D

Ça ressemble bien à ce que je cherche en effet mais je suis sous Marlin 1.1.9 et quand je l'ouvre avec l'Arduino IDE, je ne trouve pas d'onglet correspondant à ce que tu dis....

Il y a un truc qui m'échappe... 🥴

Lien vers le commentaire
Partager sur d’autres sites

Effectivement dans Marlin 1.1.9, tout est dans le même répertoire, mais on retrouve les fonctions : mesh_bed_leveling.cpp, temperature.cpp...

Après, comme le disent d'autres contributeurs, les constructeurs incluent parfois des fonctions à eux et s'ils ne fournissent pas le code source, tu es chocolat.

Modifié (le) par jmarie3D
Lien vers le commentaire
Partager sur d’autres sites

@jmarie3D

OK, je vais regarder cela un peu plus en détail. Merci.

Pour mon info perso, que signifie dans les noms des onglets les groupes de lettres LGT, .cpp, SCR, .h ?

Modifié (le) par Ambo73
Lien vers le commentaire
Partager sur d’autres sites

.cpp et .h c'est du C++

Si tu ne sais pas ce que c'est, je ne comprends pas ce que tu cherches à faire.

LGT et SCR, je ne sais pas. Ils n'existent pas dans les sources de base.  Peut-être justement des fichiers ajoutés par le constructeur ? SCR= screen = image ?

Lien vers le commentaire
Partager sur d’autres sites

@jmarie3D

Je n'ai pas d'expérience en langage C++. Je connais seulement la programmation Arduino avec laquelle je me débrouille pas mal mais c'est tout.

En fait ce que je cherche, outre ma culture perso, est en relation avec un post que j'ai posé récemment dans le forum dédié Alfawise/Longer3D

J'aimerais connaître les vitesses/accélérations utilisée dans le sous-programme de "changement de filament"...

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, Ambo73 a dit :

Est-ce que l'écran de la U30pro fait partie de ces écrans "modernes" ?

Ca m'en a tout l'air, il y a un firmware dans la carte mère, et un autre dans l'écran.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Ambo73 a dit :

J'aimerais connaître les vitesses/accélérations utilisée dans le sous-programme de "changement de filament"...

Pour ça le plus simple est de se raccorder avec Pronterface sur l'imprimante et de taper M503.

Extrait de la réponse sur mon imprimante:

Citation

echo:; Maximum feedrates (units/s):
echo:  M203 X200.00 Y200.00 Z200.00 E60.00
echo:; Maximum Acceleration (units/s2):
echo:  M201 X1500.00 Y1500.00 Z1500.00 E3000.00
echo:; Acceleration (units/s2): P<print_accel> R<retract_accel> T<travel_accel>
echo:  M204 P800.00 R2000.00 T800.00
echo:; Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate> X<max_x_jerk> Y<max_y_jerk> Z<max_z_jerk> E<max_e_jerk>
echo:  M205 B20000.00 S0.00 T0.00 X5.00 Y5.00 Z5.00 E5.00

 

Lien vers le commentaire
Partager sur d’autres sites

@Kachidoki

Pas bonne nouvelle pour ma recherche... Il se pourrait bien alors que les routines "utilitaires" se trouvent dans le FW écran...

Encore une question de béotien: comment peut-on "lire" sur PC le contenu des programmes du FW écran? (j'ai téléchargé le répertoire complet sur le github).

 

@jmarie3D

oui, je connais le M503. J'y voit effectivement la Vmax de l'extrudeur à 60 mm/s.

Je vais essayer de baisser cette vitesse (avec parcimonie) pour voir si j'ai toujours mon pb de Unload. Je ne sais pas si c'est cette vitesse max qui est utilisée dans la routine "changement de filament", je verrai bien...

Modifié (le) par Ambo73
Lien vers le commentaire
Partager sur d’autres sites

non l'écran a son firmware mais juste pour fonctionner avec celui de la carte mère qui possède marlin ou autre et donc toutes les fonctions.

C'est juste plus "délicat" puisque les 2 doivent fonctionner ensemble car suivant ce que tu choisis comme marlin et fonctions il faut que le firmware de l'écran soit adapté pour afficher cela.

Pour la connexion @jmarie3D te l'a noté, le pc raccordé en usb a l'imprimante avec le logiciel pronterface. Vérifier que l'imprimante soit bien reconnue dans les ports com

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Idealnight a dit :

non l'écran a son firmware mais juste pour fonctionner avec celui de la carte mère qui possède marlin ou autre et donc toutes les fonctions.

 

OK, donc il faut bien que je cherche là.

 

il y a une heure, Idealnight a dit :

Pour la connexion @jmarie3D te l'a noté, le pc raccordé en usb a l'imprimante avec le logiciel pronterface. Vérifier que l'imprimante soit bien reconnue dans les ports com

Oui, c'est bien Pronterface que j'utilise régulièrement.

 

Merci à tous pour vos interventions. A ce stade, je n'ai pas vraiment trouvé la réponse à ma question mais je vais persévérer en fouillant plus profond dans Marlin.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, Ambo73 a dit :

J'aimerais connaître les vitesses/accélérations utilisée dans le sous-programme de "changement de filament"...

Une partie de ton questionnement se trouve dans les deux fichiers de configuration principaux.

Extrait de ce sujet (d'autres fonctions sont abordées) :

Citation

Détection de fin de filament et changement de filament

Configuration.h

  • A #define FILAMENT_RUNOUT_SENSOR

  • A&C #define FILAMENT_RUNOUT_DISTANCE_MM 5

  • C #define EXTRUDE_MAXLENGTH 435

    • Longueur de la roue crantée de l’extrudeur à la buse

  • A #define NOZZLE_PARK_FEATURE

  • C #define NOZZLE_PARK_Z_FEEDRATE 3

Configuration_adv.h

  • C #define ADVANCED_PAUSE_FEATURE

  • C #define PAUSE_PARK_RETRACT_LENGTH 6

    • Modifiez par votre distance de rétraction

  • C #define PAUSE_PARK_RETRACT_FEEDRATE 30

    • Modifiez par votre distance de rétraction

  • C #define FILAMENT_CHANGE_UNLOAD_FEEDRATE 40

  • C #define FILAMENT_CHANGE_UNLOAD_LENGTH 435

    • Longueur de l'engrenage de l'extrudeuse à la buse OU régler sur 0 pour l'extraction manuelle du filament

  • A #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE 30

  • A #define FILAMENT_CHANGE_FAST_LOAD_ACCEL 15

  • C #define FILAMENT_CHANGE_FAST_LOAD_LENGTH 435

    • Longueur de l'engrenage de l'extrudeuse à la buse OU régler sur 0 pour l'insertion manuelle du filament

  • A #define ADVANCED_PAUSE_PURGE_LENGTH 20

  • A #define ADVANCED_PAUSE_FANS_PAUSE

  • A #define FILAMENT_UNLOAD_PURGE_RETRACT 4

  • C #define FILAMENT_CHANGE_ALERT_BEEPS 2

    • 3 peut être trop / énervant, si oui, diminuez à votre convenance

  • A #define PARK_HEAD_ON_PAUSE

  • A #define HOME_BEFORE_FILAMENT_CHANGE

  • A #define FILAMENT_LOAD_UNLOAD_GCODES

    • Ajoute le gcode (M701/M702) et Charger/décharger dans le menu de préparation de l'écran LCD.

  • A #define HOST_ACTION_COMMANDS

  • A #define HOST_PROMPT_SUPPORT

Plus d’infos :

Voir la partie M600 - Filament Change

Chris Riley

 

Si tu comprends a minima l'anglais, les fichiers de configuration de Marlin sont très documentés. Tu peux également y accéder ici .

🙂

Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, fran6p a dit :

Une partie de ton questionnement se trouve dans les deux fichiers de configuration principaux.

Extrait de ce sujet (d'autres fonctions sont abordées) :

Si tu comprends a minima l'anglais, les fichiers de configuration de Marlin sont très documentés. Tu peux également y accéder ici .

🙂

Je rappelle que je suis sous MARLIN 1.9.0. Les config que tu proposes ne sont pas plutôt pour MARLIN 2.0 ?

Je retrouve cependant des lignes comparables. Je vais essayer de mieux comprendre.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 11 heures, Ambo73 a dit :

Je rappelle que je suis sous MARLIN 1.9.0. Les config que tu proposes ne sont pas plutôt pour MARLIN 2.0 ?

Cette version n'existe pas  😉  par contre existe l'antédiluvienne 1.1.9.1

Marlin reste Marlin même en passant en version 2 (2.0.9.3 à ce jour) et hormis quelques noms de directives qui ont été modifiés au fil du temps, le code est très semblable. 

Marlin 1.1.9.1, configuration.h :

Citation

/**
 * Filament Runout Sensors
 * Mechanical or opto endstops are used to check for the presence of filament.
 *
 * RAMPS-based boards use SERVO3_PIN for the first runout sensor.
 * For other boards you may need to define FIL_RUNOUT_PIN, FIL_RUNOUT2_PIN, etc.
 * By default the firmware assumes HIGH=FILAMENT PRESENT.
 */
//#define FILAMENT_RUNOUT_SENSOR
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
  #define NUM_RUNOUT_SENSORS   1     // Number of sensors, up to one per extruder. Define a FIL_RUNOUT#_PIN for each.
  #define FIL_RUNOUT_INVERTING false // set to true to invert the logic of the sensor.
  #define FIL_RUNOUT_PULLUP          // Use internal pullup for filament runout pins.
  #define FILAMENT_RUNOUT_SCRIPT "M600"
#endif

et configuration_adv.h

Citation

/**
 * Advanced Pause
 * Experimental feature for filament change support and for parking the nozzle when paused.
 * Adds the GCode M600 for initiating filament change.
 * If PARK_HEAD_ON_PAUSE enabled, adds the GCode M125 to pause printing and park the nozzle.
 *
 * Requires an LCD display.
 * Requires NOZZLE_PARK_FEATURE.
 * This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
 */
//#define ADVANCED_PAUSE_FEATURE
#if ENABLED(ADVANCED_PAUSE_FEATURE)
  #define PAUSE_PARK_RETRACT_FEEDRATE         60  // (mm/s) Initial retract feedrate.
  #define PAUSE_PARK_RETRACT_LENGTH            2  // (mm) Initial retract.
                                                  // This short retract is done immediately, before parking the nozzle.
  #define FILAMENT_CHANGE_UNLOAD_FEEDRATE     10  // (mm/s) Unload filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_UNLOAD_ACCEL        25  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_UNLOAD_LENGTH      100  // (mm) The length of filament for a complete unload.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
                                                  //   Set to 0 for manual unloading.
  #define FILAMENT_CHANGE_SLOW_LOAD_FEEDRATE   6  // (mm/s) Slow move when starting load.
  #define FILAMENT_CHANGE_SLOW_LOAD_LENGTH     0  // (mm) Slow length, to allow time to insert material.
                                                  // 0 to disable start loading and skip to fast load only
  #define FILAMENT_CHANGE_FAST_LOAD_FEEDRATE   6  // (mm/s) Load filament feedrate. This can be pretty fast.
  #define FILAMENT_CHANGE_FAST_LOAD_ACCEL     25  // (mm/s^2) Lower acceleration may allow a faster feedrate.
  #define FILAMENT_CHANGE_FAST_LOAD_LENGTH     0  // (mm) Load length of filament, from extruder gear to nozzle.
                                                  //   For Bowden, the full length of the tube and nozzle.
                                                  //   For direct drive, the full length of the nozzle.
  //#define ADVANCED_PAUSE_CONTINUOUS_PURGE       // Purge continuously up to the purge length until interrupted.
  #define ADVANCED_PAUSE_PURGE_FEEDRATE        3  // (mm/s) Extrude feedrate (after loading). Should be slower than load feedrate.
  #define ADVANCED_PAUSE_PURGE_LENGTH         50  // (mm) Length to extrude after loading.
                                                  //   Set to 0 for manual extrusion.
                                                  //   Filament can be extruded repeatedly from the Filament Change menu
                                                  //   until extrusion is consistent, and to purge old filament.

                                                  // Filament Unload does a Retract, Delay, and Purge first:
  #define FILAMENT_UNLOAD_RETRACT_LENGTH      13  // (mm) Unload initial retract length.
  #define FILAMENT_UNLOAD_DELAY             5000  // (ms) Delay for the filament to cool after retract.
  #define FILAMENT_UNLOAD_PURGE_LENGTH         8  // (mm) An unretract is done, then this length is purged.

  #define PAUSE_PARK_NOZZLE_TIMEOUT           45  // (seconds) Time limit before the nozzle is turned off for safety.
  #define FILAMENT_CHANGE_ALERT_BEEPS         10  // Number of alert beeps to play when a response is needed.
  #define PAUSE_PARK_NO_STEPPER_TIMEOUT           // Enable for XYZ steppers to stay powered on during filament change.

  //#define PARK_HEAD_ON_PAUSE                    // Park the nozzle during pause and filament change.
  //#define HOME_BEFORE_FILAMENT_CHANGE           // Ensure homing has been completed prior to parking for filament change

  //#define FILAMENT_LOAD_UNLOAD_GCODES           // Add M701/M702 Load/Unload G-codes, plus Load/Unload in the LCD Prepare menu.
  //#define FILAMENT_UNLOAD_ALL_EXTRUDERS         // Allow M702 to unload all extruders above a minimum target temp (as set by M302)
#endif

Tu peux constater qu'il y a peu de différences 😉

🙂

Modifié (le) par fran6p
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 18 heures, Idealnight a dit :

non l'écran a son firmware mais juste pour fonctionner avec celui de la carte mère qui possède marlin ou autre et donc toutes les fonctions.

Je ne sais pas si c'est pareil pour le firmware de l'U30 pro, mais sur ma machine avec une BTT GTR + BTT TFT35, l'écran peut basculer du mode TFT au mode Marlin (émulation de l'écran LCD).

En mode Marlin, la communication se fait en SPI, à l'ancienne via les nappes, la carte SD est lue directement par la carte mère et tout est géré par Marlin.

En mode TFT, la communication passe en UART, et l'écran prend des initiatives. Par exemple, la pause ou l'annulation d'une impression ne déplace pas la tête d'impression et ne coupe pas la chauffe. Pour les réglages comme les PID ou le leveling, c'est l'écran qui gère, et envoie les G-Code adaptés à la carte mère. Il est même capable d'ajouter son propre start et stop G-Code aux impressions qu'on lance.

Et c'est parfois pénible de ne pas avoir le comportement attendu car on pense que c'est correctement réglé dans Marlin, alors que c'est l'écran qui va prendre la main, et c'est lui qu'il faut régler pour certaines fonctions (comme pour pause / cancel).

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, fran6p a dit :

Cette version n'existe pas  😉  par contre existe l'antédiluvienne 1.1.9.1

Bonjour,

oui, c'est une mauvaise faute de frappe de ma part... Trop distrait je suis...

il y a une heure, fran6p a dit :

 

Marlin reste Marlin même en passant en version 2 (2.0.9.3 à ce jour) et hormis quelques noms de directives qui ont été modifiés au fil du temps, le code est très semblable.

Tu peux constater qu'il y a peu de différences 😉

Oui, j'ai remarqué cela en effet. Je vais essayer de bien tout comprendre avant de faire quoi que ce soit...

Il y a 20 heures, jmarie3D a dit :

Pour ça le plus simple est de se raccorder avec Pronterface sur l'imprimante et de taper M503.

Je reviens sur le M503. J'aimerais modifier le feedrate max de l'extrudeur.

Les valeurs affichées via Octoprint sont:

echo:Steps per unit:
echo:  M92 X80.00 Y80.00 Z400.00 E423.56
echo:Maximum feedrates (units/s):
echo:  M203 X500.00 Y500.00 Z12.00 E120.00
echo:Maximum Acceleration (units/s2):
echo:  M201 X9000.00 Y9000.00 Z500.00 E10000.00

J'ai un peu honte de poser la question mais comment modifier la valeur de E120 dans le M203? 🥴

Je croyais savoir faire mais quand je tape M203, les paramètres ne s'affichent pas.... Pourtant M203 est bien le gcode qui permet le réglage des paramètres des feedrate max non?

j'ai seulement

Send: M203
Recv: ok
Lien vers le commentaire
Partager sur d’autres sites

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