SkippyLeChat
Compagnon
Après avoir cherché sur le net, et avoir galéré sur la traduction de posts en anglais plus ou moins clairs, je vous propose une méthode pour piloter une machine fil chaud XYUV avec l'interpréteur GCode LinuxCNC (dont la qualité -fabuleuse - et le prix -rien- ont tout pour séduire)
Cette ouverture au GCode et la souplesse qui va avec, ouvre des perspectives très intéressantes pour sortir des protocoles propriétaires utilisés par la plupart des outils utilisés par les modélistes pour découper leurs ailes et leurs fuselages.
En espérant avoir fait avancé le schmililiblic !
1 - Réaliser une configuration LinuxCnc XYUV
L'utilitaire StepConf permet de définir la configuration d'une fraiseuse utilisant les 3 axes linéaires XYZ et éventuellement l'axe rotatif A. La configuration des axes B,C,D,U,V,W (voir dans la doc LinuxCNC a quoi correspondent ces axes) est possible, mais en allant modifier les fichiers .ini et .hal : c'est ce qui doit être fait pour réaliser une configuration X,Y,U,V :
Etape 1 : Avec StepConf
Créer une configuration XYZA et y définir les affectations de broches et les informations de timing. Configurer en particulier soigneusement les courses X et Y, les Fdc, la commande de chauffe et le palpeur de POM : on ne peut plus y revenir (sauf à tout refaire)
Etape 2 : Modification des fichiers HAL et INI à la main
Les 2 fichiers .ini et .hal sont dans le répertoire <perso>. LinuxCNC.Configs
a)Modifier le fichier INI :
- Il faut définir 8 axes. Pour cela, copier et coller les sections [AXIS_0] à [AXIS_3] et de les renommez en [AXIS_4] à [AXIS_7],
- Dans la section [TRAJ] :
. Modifier coordonnées de X Y Z A en X Y U V
. Modifier Axes = 8
b) Modifier le fichier HAL
- Changer toutes les occurrences axis.2 en axis.6 et axis.3 en axis.7
- Modifier les lignes « set stepgen.n.position.scale [AXIS_n]SCALE » de façon à ce que :
stepgen.2 soit affecté à [AXIS.6]
stepgen.3 soit affecté à [AXIS.7]
stepgen.0 reste affecté à [AXIS.0]
stepgen.1 reste affecté à [AXIS.1]
Attention : Ne plus modifier la config avec StepConf : les .ini et .hal seraient écrasés. Personnellement, quand tout est au point, je supprime le fichier stepconf pour éviter toute manip intempestive.
Au lancement LinuxCNC enverra une erreur : il n'arrive pas à interpréter une commande sur l'axe Z passée par le fichier g-Code par défaut (Axis.gnc). Pas grave et facile à corriger en modifiant ce fichier par défaut (sudo gedit etc.)
Les pinailleurs me diront : oui, mais la visualisation de parcours n'affiche que XY ! Et alors, répondrais-je. J'ai la machine réelle sous les yeux.
Bref, tant pis pour la visualisation.
2- Problème de coordination des vitesses de XY et de UV
En gros, la vitesse lente des déplacements G1 passée en G-code par la commande F (en unité/mn) est la vitesse de déplacement de l'addition vectorielle des déplacements XYZ. Dans notre cas XY.
Tout va bien quand le déplacement XY est plus long que le déplacement UV. Tout va mal quand UV est plus long que XY : dans ce cas « UV va trop vite ! ». Pas bon du tout pour la découpe d'une aile avec un fil chaud. Mais il y a des solutions :
a)La moins bonne : faire un fichier G-Code pour chaque aile G et D
Dans ce cas, on a beau tourner le problème (et le polystyrène) dans tous les sens, le début de découpe sera le BA dans un cas et le BF dans l'autre. Ou pire, l'inversion intrado et l'extrado. = Bof ! Et puis, avoir 2 fichiers ne simplifie pas vraiment l'archivage et est une source d'erreur.
b)Inverser les axes XY et UV
On oublie le croisement au niveau des câbles moteur (!). Par contre, l'inversion pourrait être faite physiquement au niveau du branchement des Pins du port parallèle : dans mon cas, j'ai une carte d'interfaçage entre une HobbyCnc et le câble venant du PC. Un commutateur électronique et un seul inter de commande ferait l'affaire.
Il y a beaucoup plus simple : réaliser 2 configurations de machine comme décrit en haut. C'est l'affectation les pins du port parallèle différente dans l'une et l'autre qui réalisera le croisement. Dans mon cas, j'ai 2 configurations : « CNC-FilChaud » et « CNC-FilChaud Miroir» dont je peux me servir respectivement pour faire une aile Droite ou une aile Gauche. A l'usage, c'est beaucoup moins compliqué qu'il n'y parait.
c)l'utilitaire "GCode Fil Chaud"
Même avec le croisement XY et UV proposé ci-dessus, le problème n'est pas réglé dans le cas de distances XY et UV différentes dans un sens ou dans l'autre dans le même fichier G-Code. Cela n'arrivera sans doute pas pour des découpes d'ailes (sauf pour les évidements), mais ceux qui réalisent des fuselages peuvent être confrontés au problème.
J'ai réalisé un utilitaire "GCode Fil Chaud" développé en VisualBasic (*) qui modifie le GCode avec un prétraitement : les commandes G1 dans lesquelles XY < UV sont complétées par une commande F qui ralentira l'équipage XY pour ajuster UV à une vitesse normale de découpe.
Exemple :
Si la vitesse de découpe Fdec est F 200 (soit 3.33mm/s)
Arrive une commande :
G1 X 0,0356 Y 0,0866 U 0,3267 V -0,3213
Les distances Dxy = 0,0936 et Duv = 0,4582 (racine de la somme des carrés)
La Vitesse de XY doit alors être corrigée à Fcor = Fdec x Dxy / Duv
La commande G1 est donc complétée par Fcor = 200 x 0,0936 / 0,4582 = 40,87 et devient :
G1 X 0,0356 Y 0,0866 U 0,3267 V -0,3213 F 41
Pour rétablir la situation, la première commande G1 suivante est complétée avec F 200.
Voilà, il y a maintenant tout ce qu'il faut pour réaliser des ailes, des fuselages, etc. Avec un interpréteur de haut niveau tel que LinuxCNC.
Skippy
(*) Cet utilitaire est à disposition pour qui veut ! Suffit de demander..
Cette ouverture au GCode et la souplesse qui va avec, ouvre des perspectives très intéressantes pour sortir des protocoles propriétaires utilisés par la plupart des outils utilisés par les modélistes pour découper leurs ailes et leurs fuselages.
En espérant avoir fait avancé le schmililiblic !
1 - Réaliser une configuration LinuxCnc XYUV
L'utilitaire StepConf permet de définir la configuration d'une fraiseuse utilisant les 3 axes linéaires XYZ et éventuellement l'axe rotatif A. La configuration des axes B,C,D,U,V,W (voir dans la doc LinuxCNC a quoi correspondent ces axes) est possible, mais en allant modifier les fichiers .ini et .hal : c'est ce qui doit être fait pour réaliser une configuration X,Y,U,V :
Etape 1 : Avec StepConf
Créer une configuration XYZA et y définir les affectations de broches et les informations de timing. Configurer en particulier soigneusement les courses X et Y, les Fdc, la commande de chauffe et le palpeur de POM : on ne peut plus y revenir (sauf à tout refaire)
Etape 2 : Modification des fichiers HAL et INI à la main
Les 2 fichiers .ini et .hal sont dans le répertoire <perso>. LinuxCNC.Configs
a)Modifier le fichier INI :
- Il faut définir 8 axes. Pour cela, copier et coller les sections [AXIS_0] à [AXIS_3] et de les renommez en [AXIS_4] à [AXIS_7],
- Dans la section [TRAJ] :
. Modifier coordonnées de X Y Z A en X Y U V
. Modifier Axes = 8
b) Modifier le fichier HAL
- Changer toutes les occurrences axis.2 en axis.6 et axis.3 en axis.7
- Modifier les lignes « set stepgen.n.position.scale [AXIS_n]SCALE » de façon à ce que :
stepgen.2 soit affecté à [AXIS.6]
stepgen.3 soit affecté à [AXIS.7]
stepgen.0 reste affecté à [AXIS.0]
stepgen.1 reste affecté à [AXIS.1]
Attention : Ne plus modifier la config avec StepConf : les .ini et .hal seraient écrasés. Personnellement, quand tout est au point, je supprime le fichier stepconf pour éviter toute manip intempestive.
Au lancement LinuxCNC enverra une erreur : il n'arrive pas à interpréter une commande sur l'axe Z passée par le fichier g-Code par défaut (Axis.gnc). Pas grave et facile à corriger en modifiant ce fichier par défaut (sudo gedit etc.)
Les pinailleurs me diront : oui, mais la visualisation de parcours n'affiche que XY ! Et alors, répondrais-je. J'ai la machine réelle sous les yeux.
Bref, tant pis pour la visualisation.
2- Problème de coordination des vitesses de XY et de UV
En gros, la vitesse lente des déplacements G1 passée en G-code par la commande F (en unité/mn) est la vitesse de déplacement de l'addition vectorielle des déplacements XYZ. Dans notre cas XY.
Tout va bien quand le déplacement XY est plus long que le déplacement UV. Tout va mal quand UV est plus long que XY : dans ce cas « UV va trop vite ! ». Pas bon du tout pour la découpe d'une aile avec un fil chaud. Mais il y a des solutions :
a)La moins bonne : faire un fichier G-Code pour chaque aile G et D
Dans ce cas, on a beau tourner le problème (et le polystyrène) dans tous les sens, le début de découpe sera le BA dans un cas et le BF dans l'autre. Ou pire, l'inversion intrado et l'extrado. = Bof ! Et puis, avoir 2 fichiers ne simplifie pas vraiment l'archivage et est une source d'erreur.
b)Inverser les axes XY et UV
On oublie le croisement au niveau des câbles moteur (!). Par contre, l'inversion pourrait être faite physiquement au niveau du branchement des Pins du port parallèle : dans mon cas, j'ai une carte d'interfaçage entre une HobbyCnc et le câble venant du PC. Un commutateur électronique et un seul inter de commande ferait l'affaire.
Il y a beaucoup plus simple : réaliser 2 configurations de machine comme décrit en haut. C'est l'affectation les pins du port parallèle différente dans l'une et l'autre qui réalisera le croisement. Dans mon cas, j'ai 2 configurations : « CNC-FilChaud » et « CNC-FilChaud Miroir» dont je peux me servir respectivement pour faire une aile Droite ou une aile Gauche. A l'usage, c'est beaucoup moins compliqué qu'il n'y parait.
c)l'utilitaire "GCode Fil Chaud"
Même avec le croisement XY et UV proposé ci-dessus, le problème n'est pas réglé dans le cas de distances XY et UV différentes dans un sens ou dans l'autre dans le même fichier G-Code. Cela n'arrivera sans doute pas pour des découpes d'ailes (sauf pour les évidements), mais ceux qui réalisent des fuselages peuvent être confrontés au problème.
J'ai réalisé un utilitaire "GCode Fil Chaud" développé en VisualBasic (*) qui modifie le GCode avec un prétraitement : les commandes G1 dans lesquelles XY < UV sont complétées par une commande F qui ralentira l'équipage XY pour ajuster UV à une vitesse normale de découpe.
Exemple :
Si la vitesse de découpe Fdec est F 200 (soit 3.33mm/s)
Arrive une commande :
G1 X 0,0356 Y 0,0866 U 0,3267 V -0,3213
Les distances Dxy = 0,0936 et Duv = 0,4582 (racine de la somme des carrés)
La Vitesse de XY doit alors être corrigée à Fcor = Fdec x Dxy / Duv
La commande G1 est donc complétée par Fcor = 200 x 0,0936 / 0,4582 = 40,87 et devient :
G1 X 0,0356 Y 0,0866 U 0,3267 V -0,3213 F 41
Pour rétablir la situation, la première commande G1 suivante est complétée avec F 200.
Voilà, il y a maintenant tout ce qu'il faut pour réaliser des ailes, des fuselages, etc. Avec un interpréteur de haut niveau tel que LinuxCNC.
Skippy
(*) Cet utilitaire est à disposition pour qui veut ! Suffit de demander..