JL3D46 Posté(e) Octobre 10, 2018 Posté(e) Octobre 10, 2018 (modifié) Il y a 10 heures, yopla31 a dit : si @JL3D46 est d'accord. @cmatec et @pascal_lb Oui bien sur ! parce que c'est "notre projet !" J'ai gratté un peu dans la doc smoothie, et li y a pas mal de littérature dédiée aux "modules" intégrées à smoothie ou à développer pour intégrer une fonction spécifique, c'est du langage C, assez accessible s'y on s'y colle sérieusement. Il y aurait peut être la possibilité de dédier un post à tout ce qui concerne le soft "smoothie", pour cela il me semble que @cmatec a déjà le bon intitulé dans son post, et je pourrais y contribuer pour la partie soft. Coté mécanique, on peut se concentrer ici et j'y contribuerai dans ce sens, et pour le code spécifique "Marlin" là à part quelques applications arduino je n'ai jamais touché à ce soft ... Pascal & Yop, si vous avez une idée d'organisation pour cette branche "Marlin", ici pourquoi pas ,à vous de juger. Concernant le module "servo" un extrait de la doc. smoothie : Hobby Servo This configuration will allow you to control a servo using the standard reprap G-codes for controlling a servo. M280 S5 would be fully to the left and M280 S10 would be fully to the right. # Switch module for servo control switch.servo.enable true # Enable this module switch.servo.input_on_command M280 # M280 S7.5 would be midway switch.servo.input_off_command M281 # Same as M280 S0 0% duty cycle, effectively off switch.servo.output_pin 3.25 # Must be a PWM capable pin switch.servo.output_type hwpwm # H/W pwm output settable with S parameter in the input_on_comand #switch.servo.pwm_period_ms 20 # set period to 20ms (50Hz) default is 50Hz Modifié (le) Octobre 10, 2018 par JL3D46 j'ai un souci de format de texte ...
cmatec Posté(e) Octobre 10, 2018 Posté(e) Octobre 10, 2018 @JL3D46 : Super idée Un complément d'info pour le servo : sous smoothie, on utilise un module switch pour le piloter ... une commande à explorer : switch.nomdumodule.output_on_command. Le but serait de créer 2 nouveaux modules switch qui seraient activés à l'appel de T0 et T1. output_on command : M280 S8.5 par exemple (on peut insérer des commandes G-code dans le config). Il faudrait trouver le input_pin pour T0 et T1 au changement d'outil. @pascal_lb : tu vas encore avoir du taf !!!
cmatec Posté(e) Octobre 10, 2018 Posté(e) Octobre 10, 2018 @JL3D46 : Citation J'ai gratté un peu dans la doc smoothie, et li y a pas mal de littérature dédiée aux "modules" intégrées à smoothie ou à développer pour intégrer une fonction spécifique, c'est du langage C Si tu veux te pencher sur le code, ce serait top !
JL3D46 Posté(e) Octobre 10, 2018 Auteur Posté(e) Octobre 10, 2018 Le plus dur c'est de trouver la porte d'entrée et quelques exemples, quand on sait ce qu'on veut faire, on arrive toujours à coder ... Donc sur smoothie, si quelqu'un à déjà développé ses propres macros, c'est par là qu'il faudrait commencer, voir la procédure pour rentrer dans le soft et tester deux ou trois fonctions simples, ensuite ça devrait rouler ...
Tircown Posté(e) Octobre 10, 2018 Posté(e) Octobre 10, 2018 Pour Smoothieware il y a un module de changement d'outil nommé toolmanager qui gère les commandes T[X]. Pour faire ça proprement il faudrait rajouter deux options à la configuration des extrudeurs: extruder.module_name.servo_pin extruder.module_name.servo_angle Puis rajouter à la méthode ToolManager::on_gcode_received (Smoothieware/src/modules/tools/toolmanager/ToolManager.cpp) ce qu'il faut de Switch.cpp. Très sommairement, il s'agit du code de la ligne 274 à 278 (version du 11 Avril) et ses parties dépendantes.
JL3D46 Posté(e) Octobre 10, 2018 Auteur Posté(e) Octobre 10, 2018 (modifié) Il y a 1 heure, Tircown a dit : Puis rajouter à la méthode ToolManager::on_gcode_received Alors, on va faire simple ... comme je l'ai indiqué dans mes premiers messages (de débutant) je viens juste d'intégrer ma première carte mère (Smoothie MKS Sbase 1.3) sur une grosse imprimante de ma fabrication, j'ai fait un tuto "basique de basique" au fur et à mesure de l'intégration, parce que les conseils c'est bien, mais quand on part de zéro c'est le boxon... Maintenant, ça marche impec, mais je n'ai jamais joué avec le code source de la smoothie pour la bonne raison que je n'en ai eu ni le temps, ni le besoin. Pour la phase 2 (les développements soft) , ce qu'il me faut, c'est partir de zéro ! - Comment est ce qu'on trouve les codes source à jour ? - Faut il une licence ou une application pour compiler le C et intégrer les modifs dans le code de la carte mère - Comment transfère t'on les modifs à la carte ( re-compilation du firmware ou ajout de modules annexes )? - Et si j'en oublie (ce qui est quasi certain) qu'est ce que j'oublie ? Les codes source sur smoothieware\src .... j'en ai bien trouvé, mais pour le moment je ne sais rien en faire. à la limite, l'exercice de base pour moi ce serait : (ex:) définir une nouvelle fonction M , (ex M234) et faire en sorte que quand je passe M234 en Gcode dans le programme, une sortie de la carte passe à 1 pour allumer une Led ! Quand je saurai fait ça, la suite ne m'inquiète pas... A+ Modifié (le) Octobre 10, 2018 par JL3D46
pascal_lb Posté(e) Octobre 10, 2018 Posté(e) Octobre 10, 2018 Dans ce sujet vous retrouvez les posts concernant le double extrudeur à bascule piloté par smoothieware... Les premiers posts semblent décousus car ils viennent d'un autre sujet...
JL3D46 Posté(e) Octobre 11, 2018 Auteur Posté(e) Octobre 11, 2018 Le 10/10/2018 at 16:44, JL3D46 a dit : l'exercice de base pour moi ce serait : (ex:) définir une nouvelle fonction M , (ex M234) et faire en sorte que quand je passe M234 en Gcode dans le programme, une sortie de la carte passe à 1 pour allumer une Led ! (Je me cite moi même ! ça tourne en boucle) tout ça pour dire que ce premier exercice, sans l'avoir effectivement testé (je préférerais avoir une seconde carte pour jouer sur un banc d’essai) j'ai à peu près trouvé le chemin pour y parvenir. En fait, on a une série de déclarations dans le fichier config. qui utilisent le module "switch" , ce module ne demande pas à être édité pour y ajouter des fonctionnalités, il sait en créer autant qu'on veut. Par exemple, si je veux allumer une Led sur un code M234 il faut juste rajouter une commande "switch" pour ce qu'on veut faire, on peut en créer autant que nécessaire. et il n'est pas interdit d'écrire en français tout ce qui peut l’être (donc acte) ... # Module Switch pour alumage Led - on l'appelera "lumiere" switch.lumiere.enable true # Initialise ce module switch.lumiere.input_on_command M234 # ce switch allume la lumière quand M234 est envoyé switch.lumiere.input_off_command M235 # ce switch éteint la lumière quand M235 est envoyé switch.lumiere.output_pin 1.21 # Cette sortie passe à 1 quand le switch est activé et à 0 dans l'autre cas switch.lumiere.output_type digital # c'est une sortie marche / arrêt simple
cmatec Posté(e) Octobre 11, 2018 Posté(e) Octobre 11, 2018 @JL3D46 : Citation j'ai à peu près trouvé le chemin pour y parvenir des infos !!! Citation # Switch module for servo control switch.servo.enable true # Enable this module switch.servo.input_on_command M280 # M280 S7.5 would be midway switch.servo.input_off_command M281 # Same as M280 S0 0% duty cycle, effectively off switch.servo.output_pin 3.25 (1.23) # Must be a PWM capable pin switch.servo.output_type hwpwm # H/W pwm output settable with S parameter in the input_on_comand #switch.servo.pwm_period_ms 20 # set period to 20ms (50Hz) default is 50Hz ça ça marche, ce qu'il faut arriver à faire c'est de définir la position du servo lors des changements d'outil et là je bloque ...
JL3D46 Posté(e) Octobre 11, 2018 Auteur Posté(e) Octobre 11, 2018 Ben, je crois bien que c'est clair dans la doc ... Je cite (en traduisant) Le paramètre Shift spécifie le facteur de marche en pourcentage et, pour un servo typique, il sera compris entre 5% et 10% (1 ms à 2 ms lorsque la vitesse est réglée à 50 Hz) pour une rotation à 180 °" et ta seconde ligne de code indique : switch.servo.input_on_command M280 # M280 S7.5 would be midway Ce qui veut dire selon toute logique (et selon la course de ta servo) que pour une valeur 5 elle est en position mini (ex: 0°) à 7.5 en position intermédiaire (ex:90°) et à 10 en position maxi (180°) , donc si tu travailles dans une tranche de 20° , si la position de la tête 1 est 80° ça va faire M280 S7.22 et pour 100° : M280 S7.77 ( je ne sais pas combien on peut mettre de décimales) en faisant une simple règle de trois. Peut être je me goure mais il suffit d'essayer ... Ah si j'avais gardé mon banc d'essai ! il faut que je rachète une smoothie, de toute façon j'en aurai besoin pour intégrer la Zatsit
JL3D46 Posté(e) Octobre 12, 2018 Auteur Posté(e) Octobre 12, 2018 Il y a 9 heures, cmatec a dit : des infos !!! Le chemin, il est tout simple, lorsque la fonction existe dans le firmware de la carte par exemple la fonction "switch" elle est dotée de multiples options. Il suffit de faire un copier / coller d'une séquence switch de ton fichier config.txt , (ça rajoute des lignes dans ton fichier config.) de changer le nom du truc à piloter, moi je l'ai appelé "lumiere" et de donner les bons paramètres pour que ça fasse ce que ça doit faire ( d'ou les quelques différences entre le pilotage de "switch lumiere" et "switch servo" ) mais dans l'esprit on utilise juste une boite à outils dispo dans le firmware. Par contre, je ne trouve pas de trace de la fonction "tool change" qui (peut être) se résume à une fonction "switch" correctement paramétrée ... d'ou ma question sur l'autre post : ton Gcode, Il pilote comment le changement de tête ?
Tircown Posté(e) Octobre 12, 2018 Posté(e) Octobre 12, 2018 il y a une heure, JL3D46 a dit : Par contre, je ne trouve pas de trace de la fonction "tool change" qui (peut être) se résume à une fonction "switch" correctement paramétrée ... d'ou ma question sur l'autre post : ton Gcode, Il pilote comment le changement de tête ? J'ai mis le chemin quelques post plus haut...
cmatec Posté(e) Octobre 12, 2018 Posté(e) Octobre 12, 2018 (modifié) @JL3D46 : je vais essayer de clarifier un peu la problématique ... Pour piloter un servo sous smoothie, ben c'est pas trop compliqué, il suffit d'insérer ce module switch dans le config.txt Citation # Switch module for servo control switch.servo.enable true # Enable this module switch.servo.input_on_command M280 # M280 S7.5 would be midway switch.servo.input_off_command M281 # Same as M280 S0 0% duty cycle, effectively off switch.servo.output_pin 1.23 # Must be a PWM capable pin switch.servo.output_type hwpwm # H/W pwm output settable with S parameter in the input_on_comand #switch.servo.pwm_period_ms 20 # set period to 20ms (50Hz) default is 50Hz et basta, il n'y a pas besoin de plus ... La commande M280 intègre un paramètre S qui permet de définir l'angle du servo : M280 S7.5 par exemple Pour faire simple, si sous repetier ou équivalent, je tape la commande M280 S7 puis M280 S8 on pilote le servo en mode manuel. Le but est d'introduire ce pilotage dans le G-code du print à réaliser et cela se fait dans le trancheur (section g-code avant changement d'extrudeur). Et c'est là que les problèmes commencent ... Repetier et slic3r : un seul module avant changement d'extrudeur pour les 2 têtes. Il faut donc éditer le g-code à la main pour positionner le servo correctement en fonction de la tête active (c'est ce que je fais actuellement avec une petite combine ...) Simplify3d est payant donc hors philosophie linux La solution semble être dans cura 3.x car il intègre 1 module avant changement d'extrudeur pour chaque tête. Les g-code sont déjà prêts, il faut que je teste la gestion du dual sous smoothie avec cura3.x Modifié (le) Octobre 12, 2018 par cmatec
JL3D46 Posté(e) Octobre 12, 2018 Auteur Posté(e) Octobre 12, 2018 (modifié) Ok, merci pour l'info , je travaille souvent avec Cura, donc il faudra que je teste cette fonctionnalité, mais il me manque une autre explication ... quelle commande switche les extrudeurs, il faut bien qu'un moteur se mette en veille et que l'autre prenne le relais ? C'est écrit avec l'axe E et l'axe F (par exemple) dans le Gcode Modifié (le) Octobre 12, 2018 par JL3D46
cmatec Posté(e) Octobre 12, 2018 Posté(e) Octobre 12, 2018 (modifié) @JL3D46 : T0, T1 ... Le G-code produit par cura 3.5 est "propre" et inclus bien les commandes de pilotage du servo au changement d'extrudeur !!! Modifié (le) Octobre 12, 2018 par cmatec
JL3D46 Posté(e) Octobre 12, 2018 Auteur Posté(e) Octobre 12, 2018 Et pour les moteurs d'extrudeurs tu en as 1 ou 2 ?
cmatec Posté(e) Octobre 12, 2018 Posté(e) Octobre 12, 2018 (modifié) @JL3D46 : ? deux moteurs -2 têtes (cartouche de chauffe + thermistance) Mais au final c'est super simple ... : ajout du module servo dans le config et après tout se passe dans cura 3.x ça marche sans rien de plus !!! (je renseigne les offset dans le config) Modifié (le) Octobre 12, 2018 par cmatec
JL3D46 Posté(e) Octobre 12, 2018 Auteur Posté(e) Octobre 12, 2018 (modifié) Et bien tant mieux ... En fait, j'ai pas mal cherché ou est ce que ce foutu toolmanager pouvait gérer le switch des moteurs d'extrudeurs : Le 10/10/2018 at 15:00, Tircown a dit : Puis rajouter à la méthode ToolManager::on_gcode_received (Smoothieware/src/modules/tools/toolmanager/ToolManager.cpp) ce qu'il faut de Switch.cpp. Très sommairement, il s'agit du code de la ligne 274 à 278 (version du 11 Avril) Et bien, la dernière version à télécharger est du Dec 16, 2015 , et les lignes 274 à 278 n'existent pas encore dans cette version. Voilà mon souci, @Tircown s'il te plait ne me laisse pas dans l’ignorance, dis moi ou se trouve cette version du 11 Avril Et dans le fichier config.txt de la carte, il n'y a aucune allusion à un "toolchange" + des paramètres associés, d'ou mon questionnement : que peut on paramétrer dans cette fonction à partir du fichier config.txt Modifié (le) Octobre 12, 2018 par JL3D46
Tircown Posté(e) Octobre 13, 2018 Posté(e) Octobre 13, 2018 (modifié) Sur le github de smoothieware dont le lien est sur le site officiel: https://github.com/Smoothieware/Smoothieware Edit: Suite à ces révélations de @cmatec, ceci devrait encore mieux fonctionner: Paramétrer un Z lift au retract, ceci évitera aux buses heurter la pièce lors de la bascule. Malheureusement ça le fera aussi à chaque retract. #extruder.hotend.retract_zlift_length 3 # Z-lift on retract in mm, 0 disables Extruder start gcode G11 M280 Sx ;x à définir avec l'angle selon l'extrudeur Tx ;x à définir selon l'extrudeur Extruder end gcode G10 ;retract Modifié (le) Octobre 13, 2018 par Tircown 1
cmatec Posté(e) Octobre 13, 2018 Posté(e) Octobre 13, 2018 @Tircown : Je confirme ! ça fonctionne nickel !!! Juste le G11 à placer après le M280 Sx Citation Malheureusement ça le fera aussi à chaque retract J'ai désactivé les lignes retract et retract_recover dans le config. Du coup, à l'appel de G10 et G11 seul le zlift entre en action. Pour les retracts lors des déplacements, ce sont les paramètres cura qui sont pris en compte.
Tircown Posté(e) Octobre 14, 2018 Posté(e) Octobre 14, 2018 Il y a 16 heures, cmatec a dit : @Tircown : Je confirme ! ça fonctionne nickel !!! Juste le G11 à placer après le M280 Sx Exact. Pourquoi ne veux-tu pas de retract?
cmatec Posté(e) Octobre 14, 2018 Posté(e) Octobre 14, 2018 Pour la retract au changement d'outil, j'ai choisi de gérer ce paramètre dans cura. Une fois les bons réglages trouvés, je renseignerai tout cela dans le config.
Tircown Posté(e) Octobre 14, 2018 Posté(e) Octobre 14, 2018 (modifié) OKEYYY! j'avais pas compris comme ça. Effectivement ça marche aussi très bien. Modifié (le) Octobre 14, 2018 par Tircown
JL3D46 Posté(e) Octobre 15, 2018 Auteur Posté(e) Octobre 15, 2018 Le 14/10/2018 at 10:48, cmatec a dit : Pour la retract au changement d'outil, j'ai choisi de gérer ce paramètre dans cura J'ai pris le temps de télécharger la V3.5 de Cura, et testé une config double extrudeur avec une pièce test trouvé sur le net. Effectivement, Cura gère les deux extrudeurs 1 et 2 en T0 et T1 , il met automatiquement une hotend en veille (175°) pendant que l'autre travaille, et réactive la chauffe quelques lignes avant de changer à nouveau. c'est bien ! J'ai ajouté quelques lignes pour chaque changement, ça les intègre sans souci, donc on pourrait imaginer faire un mini retrait Z (incrémental) en fin d'utilisation d'une tête et réinjecter cette valeur après changement, reste à voir comment il gère l'offset Z s'il y en a, en général sur le premier mouvement Z programmé (en CN classique) mais là il faudra tester. Dans smoothie, le seul paramètre se référant à T(0?) et T1 se trouve dans les lignes spécifiques au module "temperature_control" c'est pas très explicite ... #temperature_control.hotend2.designator T1 # Designator letter for this module Mais c'est le seul endroit ou la CM peut savoir à qui se réfère T1 , et pourquoi pas T2, T3 et plus... pour le savoir il faudrait mettre T3 et T4 à la place de T et et T1 dans le fichier config et dans le programme Gcode , on verra bien si c'est un discriminant de changement de tete. J'ai commandé une nouvelle carte MKS Sbase pour remonter un banc d'essai. A bientôt
Tircown Posté(e) Octobre 15, 2018 Posté(e) Octobre 15, 2018 @JL3D46, c'est exactement ça: #temperature_control.hotend2.designator T1 Le nom de l'outil dans la config est hotend2 et il est appelé par T1. Sans même enlever T et T1 tu peux rajouter toute une série de paramètre en créant un outil hotend3 ou autre: # Third hotend configuration #temperature_control.hotend3.enable true # Whether to activate this ( "hotend" ) module at all. #temperature_control.hotend3.thermistor_pin blabla # Pin for the thermistor to read #temperature_control.hotend3.heater_pin blabla # Pin that controls the heater #temperature_control.hotend3.thermistor EPCOS100K # See http://smoothieware.org/temperaturecontrol#thermistor ##temperature_control.hotend3.beta 4066 # or set the beta value #temperature_control.hotend3.set_m_code 104 # M-code to set the temperature for this module #temperature_control.hotend3.set_and_wait_m_code 109 # M-code to set-and-wait for this module #temperature_control.hotend3.designator T2 # Designator letter for this module etc. En oubliant pas bien sur de déclarer toute la partie extrudeur avec le même nom d'outil. Smoothie semble prendre le premier objet "extruder" déclaré dans la config comme outil par défaut.
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant