Gestion d’axes rotatifs sur un contrôleur CNC autonome fait maison !

  • Auteur de la discussion saico
  • Date de début
S

saico

Apprenti
Bonjour à tous,

J’essais de développer un contrôleur CNC autonome pour gérer une machine à 3 axes linéaires et au moins un axe rotatif, @Arnaud avais déjà fait une très belle réalisation mais malheureusement elle ne répond pas à mes besoins, notamment la gestion d’axes rotatifs, l’introduction manuelle de données MDI et la gestion de la manivelle MPG.

Ce qui concerne la partie hardware, j’ai déjà réalisé presque la totalité des modules. La partie software est en cours de développement, ça avance tout doucement au rythme d’une tortue !

En gros, mon système serait capable de :

- Gérer 4 à 6 axes à une fréquence assez élevée entre 200 et 400Khz.

- Effectuer une interpolation linéaire, circulaire et hélicoïdale.

- Interpréter un fichier gcode d’une taille d’au moins 100Mo lu à partir d’une clé USB et afficher l’avancement et l’état de la machine ainsi que les compteurs sur un écran TFT de 7 pouces.

- Gérer les commandes temps réel tel que Feedhold, Resume, Feed/Rapid/Spinde Override.

- Gérer une manivelle MPG.

- Gérer l’introduction manuelle des données MDI.

- Effectuer les opération traditionnelle ( prise d’origines, palpage d’outil…)

voici à quoi ça devrait ressembler :


terminal1.jpg



Mon problème :

Au niveau de la partie interpolation, je sollicite votre aide pour essayer de comprendre comment la valeur de la vitesse d’avance « F » est gérée et interprétée par un interpolateur lorsque une ligne gcode contient au même temps des axes linéaires et rotatifs. Par exemple, si l’interpolateur reçoit la commande « G21 G1 X100 A360 F360 », quelle serait la vitesse d’avance de l’axe X en mm/min, et celle de l’axe A en deg/min ? Autrement dit, quelle est l’unité de F vue par l’interpolateur : mm/min ou deg/min ? J’avoue que j’ai du mal à comprendre.
 
V

vres

Compagnon
Bonjour,
Beau projet.

Personnellement je calcule de dplacement de 2 methodes différentes:
- Soit un diamètre de référence
- soit un rayon calculé sur l'origine du Z.

Le 2éme méthode est beaucoup mieux car la vitesse d'avance est respectée quelque soit la profondeur du Z
 
S

saico

Apprenti
Bonjour @CNCSERV,

Si j’ai bien compris, ta méthode consiste à convertir un axe linéaire en un axe rotatif on multipliant la vitesse et/ou le déplacement par un facteur qui prendra en compte le diamètre de la pièce brute à usiner, donc il suffira de déclarer tout les axes comme étant des simples axes linéaires, ce qui simplifiera vachement la programmation, puis créer pour chaque axe rotatif un paramètre, réglable par l’utilisateur, qui assurera cette conversion. Si cela est correcte, pourquoi pas attribuer cette tache de conversion au post-processeur ça serait encore plus simple. Que penses-tu ?

En cherchant sur le net, j’ai trouvé un petit article qui expose beaucoup mieux le problème :

Voici le lien :

http://galaad.forumactif.com/t51-g-codes-iso-et-axes-rotatifs


.
 
V

vres

Compagnon
convertir un axe linéaire en axe rotatif est une autre solution très intéressante.

Ce que je proposais c'est le contraire, convertir un axe rotatif en axe linéaire Y pour calculer les longueurs de déplacement et donc la vitesse.
en revanche si tu veux faire faire du 4 axes continu, ça devient beaucoup plus compliqué pour calculer la position de la fraise par rapport à la pièce.
Dans les 2 cas c'est beaucoup plus simple de travailler sur microvecteurs.
 
S

saico

Apprenti
En effet, je n’ai pas pris le problème trop au sérieux pensant que c’était un petit détail à régler mais apparemment c’est beaucoup plus compliqué que ça. Je vais au premier temps essayer de faire en sorte que les six axes se comportent comme des simples axes linéaires et appliquer les différentes formules de conversion au niveau du post-processeur cela permet d’aller plus vite pour vérifier la faisabilité avant de confier cette mission de conversion au microcontrôleur de la carte d’interpolation.

A propos de cette carte d’interpolation, il s’agit d’une carte déportée montée sur un support DIN, qui fait office d’une carte d’interpolation et de breakout-board pour simplifier le câblage des moteurs, fin de course, bouton d’arrêt d’urgence, palpeur, on y trouve aussi quelques relais pour la commande d’un variateur pour la broche et l’arrosage… elle assure notamment l’alimentation du terminal.


breakout1.jpg
 
V

vres

Compagnon
Tu as déjà fait les PCB ?
le micro c'est un stm32f4 ou f7 ?
Dommage il n'y a pas d'usb ni d'ethernet :roll:

J'ai commencé à bricoler ma première CN il y à presque 30 ans.
J'ai peut-être du code qui peut t'intéresser.
 
S

saico

Apprenti
Le MCU sur le terminal est un stm32f7 à 216Mhz ( choisi pour assurer la transition, très bientôt, vers le stm32h7 ), sur la carte déportée c’est un stm32f4 à 180Mhz suffisamment puissant pour ce genre d’application. Un autre stm32f1 est utilisé sur un petit module qui s’occupe exclusivement du clavier ( matrice 8 x8 ) avec la gestion des trois codeurs, des « long click » et les bip sonore.

Les PCBs sont déjà réalisés et fonctionnels, les deux port USB sur le terminal sont utilisés pour accéder aux support de stockage de mass, mais l’un des deux peut être configuré pour connecter le terminal au PC en mode « Device » afin d’accéder à la micro SD intégrés ( dans ce cas le terminal sera vu par le PC comme un simple lecteur logique ) . un petit module WIFI permettra de connecter le terminal à un PC ou tablette pour transférer rapidement des fichiers gcode de petite taille, et manipuler les paramètres de la machine, aussi je prévois l’utilisation de cette connexion WIFI pour envoyer des messages et des notifications pendant l’usinage ( fin de programme, arrêt anormal pendant d’usinage, alarme sur fin de course, activation programmée d’une macro spécifique …ect).


TERM3.jpg


Edit: reduction de la taille de l'image.
 
Dernière édition:
V

vres

Compagnon
Quel boulot:shock:

Ma carte n'est pas aussi aboutie, elle est toujours a phase de développement et elle va l'être pour une nouvelle série encore.
Je n'ai pas du tout de temps pour travailler dessus. Je me sert toujours d'une carte Olimex.


Elle ne fait pas l'interpolation ni l'automatisme qui sont gérés par le PC.

Elle gère 7 axes en Pas a Pas ou en servomoteurs boucle fermée (avec une carte fille),
une entrée matrice 8X8,
2 codeurs,
16/IO dont 8 en Opto configurable.
2 sorties 0-10V et 4 entrèes analogiques.

Cette photo est d'aujourd'hui la carte est intégrée dans l'ancien coffret CN de la machine:
WP_20171023_16_44_10_Pro[1].jpg
 
S

saico

Apprenti
Wow ,Magnifique ! rien qu’intégrer un automate c’est déjà très intéressant car ça règle pas mal de problème dans une application réelle ( je veux dire sur le terrain ).

C’est vraiment dommage que tu n’aie pas de temps pour t’en occuper ! Ça a l’ère vraiment professionnelle et ça mérite vraiment qu’on lui donne un « look » convenable ! ( je veux dire un boitier industriel moderne )

En tout cas bravo ! et je ne parle même pas du soft que tu as du développer pour gérer tout ça ! je sais que c’est du costaud, ça ne peut pas être autrement !
 
Dernière édition:
V

vres

Compagnon
Le problème c'est que le développement d'une carte ça demande beaucoup de travail et il y a aussi la période de débogage et mise au point.

De plus je suis proche de la retraite, je n'ai plus la même motivation qu'il y a 10 ou 20 ans.

Quand je vois le travail que tu as fait ça me laisse rêveur.
 
V

vax

Modérateur
Juste quelques mots d'encouragement pour marquer le sujet et suivre vos échanges.
 
S

saico

Apprenti
Autrement dit, quelle est l’unité de F vue par l’interpolateur : mm/min ou deg/min ?


Je me rends compte que la question ne devrait pas se poser, en faite, la valeur de F dans une ligne Gcode n’exprime pas une vitesse de déplacement d’un axe linéaire ni une vitesse de rotation d’un axe rotatif, mais plutôt la vitesse relative du mouvement de l’outil par rapport à la pièce à usiner (ou aussi de la pièce par rapport à l’outil), donc cette vitesse est toujours exprimée en mm/min... c'est la fameuse vitesse de coupe !

Un cas particulier, quand le mouvement est effectué sur un seul axe linéaire, cette valeur de F exprimera la vitesse de déplacement de l’axe lui-même. Sinon, pour 3 axes linaires, F exprimera la résultante des vecteurs des vitesses de déplacement des 3 axes linéaires (qui peuvent avoir chacun une valeur différente de l’autre).

Pour un système avec 3 axes linaires et un axe rotatif, c’est la même chose, F est la résultante des vecteurs de vitesse des axes linéaires et la vitesse tangentielle de l’axe rotatif calculée en tenant en compte le diamètre de la pièce.
 
V

vres

Compagnon
c'est pour cela qu'en 4 axes continus tout les axes peuvent bouger sans déplacement de la fraise sur la pièce.
 
S

saico

Apprenti
Alors là ! c'est vraiment beau !

Si je ne me trompe pas, c'est une réalisation avec ton système de commande ?
 
G

gaston48

Compagnon
Bonsoir,
C'est chouette !! si je comprends bien, l'axe de la fraise est toujours
maintenu normal à la tangente de trajectoire .
 
S

saico

Apprenti
l'axe de la fraise est toujours
maintenu normal à la tangente de trajectoire .


A mon avis ce n'est pas le cas, car en absence d’autres axes rotatifs B ou C, l’axe Z reste toujours vertical par rapport à la structure de la machine , donc ça ne sera pas possible d’être à la fois vertical, et normal à la tangente qui varie en fonction de la position de l'axe rotatif (à l’exception biensure quand l’axe rotatif fait un angle -90° et +90°).
 
V

vres

Compagnon
Alors là ! c'est vraiment beau !

Si je ne me trompe pas, c'est une réalisation avec ton système de commande ?
Oui bien sur, ici on était limité par la vitesse de l'axe rotatif.
Par la suite on a passé la machine en servomoteurs et mis un axe rotatif plus rapide.
La fabrication d'une fraise spéciale a permis de ne plus faire d'ébauche
Maintenant mon client à racheté une machine plus grosse.

C'est chouette !! si je comprends bien, l'axe de la fraise est toujours
maintenu normal à la tangente de trajectoire .

Oui, ici c'est selon la normale mais avec WorkNC on peux choisir un autre angle.
 
V

vres

Compagnon
A mon avis ce n'est pas le cas, car en absence d’autres axes rotatifs B ou C, l’axe Z reste toujours vertical par rapport à la structure de la machine , donc ça ne sera pas possible d’être à la fois vertical, et normal à la trajectoire (à l’exception quand l’axe rotatif fait un angle -90° et +90°).

Oui tu as raison, ce n'est la normale que par rapport au plan de coupe en X.
 
S

saico

Apprenti
ici on était limité par la vitesse de l'axe rotatif.

Euuuh... ce qu'on voit sur la video c'est déjà pas mal comme vitesse pour un axe rotatif, ça permet déjà d'avoir des belle vitesse de coupe ! ( facilement les 2000 à 5000mm/min en fonction du diamètre de la pièce) .

en tout cas bravo pour la réalisation !
 
V

vres

Compagnon
Un système similaire mais en 3 axes X, Z, A, le Y reste fixe.

Euuuh... ce qu'on voit sur la video c'est déjà pas mal comme vitesse pour un axe rotatif, ça permet déjà d'avoir des belle vitesse de coupe ! ( facilement les 2000 à 5000mm/min en fonction du diamètre de la pièce) .

L'axe rotatif était de très mauvaise qualité, soit il y avait du jeu ou soit ça coincait.

Pour la vitesse il me semble que l'objectif était une empreinte en moins de 40 minutes.
 
G

gaston48

Compagnon
Un système similaire
C'est rare de voir un usinage avec un axe A qui travaille toujours dans le même sens
(rattrapage de jeu naturel). Toutes les FAO accessibles rusent par enroulement
d'un axe de la forme, avec pour conséquence un vas et vient permanent de l'axe A.
Ce genre de parcourt en coordonnées polaire pourrait être imaginé à plat ? comme
la façon de travailler d'un tour à médailler, avec également l'avantage d'un rattrapage
de jeu naturel de l'axe A et par conséquent sa facilité de construction.
 
V

vres

Compagnon
C'est rare de voir un usinage avec un axe A qui travaille toujours dans le même sens

Ca pose quelques problèmes, car si tu veux reprendre un usinage a l'angle 92640°, si tu ne fais pas un recalage l'axe rotatif n'a pas fini de tourner avant de recommencer l'usinage.
outes les FAO accessibles rusent par enroulement
d'un axe de la forme, avec pour conséquence un vas et vient permanent de l'axe A.

Sur cette vidéo on voit une instance avec axe rotatif d'un usinage de flacon généré par deskproto.

Ce genre de parcourt en coordonnées polaire pourrait être imaginé à plat ?

Cette technique est utilisée par les graveurs
 
G

gaston48

Compagnon
Merci Christian
Quelles sont les logiciels qui peuvent pondre des parcours en coordonnées polaires ?
et existe-t-il des machines CNC type Y Z A ? inspirées du tour à médailler ?
 
V

vres

Compagnon
Désolé je n'ai pas très bien compris ta question, le g-code est toujours en X Y Z A B C ?
Sur la des machines il y avait la possibilités de débrancher un axe pour le remplacer par un tourne-cylindre, mais je ne connais pas les "tours à médailler":oops:

Pour graver sur un cylindre les graveurs font un fichier en 2D ou 3D comme d'habitude et c'est le pilotage de la machine qui converti en axe rotatif en fonction d'un diamètre de référence.
 
G

gaston48

Compagnon
C'est moi qui me suis mal exprimé, c'est le "tour à réduire"
pour graver les matrices de frappes de monnaies et médailles.
https://www.google.fr/search?q=tour...kJbXAhXInBoKHaRpCjcQ_AUICigB&biw=1201&bih=847

On part d'un fichier 3D et il s'agirait de générer le parcourt de la fraise à graver similaire à celui
du tour à réduire donc une spirale au lieu de l'habituel va et viens.
avec un Z rapide pour la plongé de la fraise,
un Y lent correspondant au parcourt du rayon fichier 3D
et un axe A lent à rotation continu.
 
V

vres

Compagnon
Les logiciels comme Type3 Artcam Aspire peuvent faire la même chose en cartésien.
L'avantage c'est que l'on peut avoir des stratégies différentes en fonction de la partie a graver.
 

Sujets similaires

P
Réponses
33
Affichages
12 779
wika58
wika58
J
Réponses
39
Affichages
24 312
a123111
A
F
Réponses
13
Affichages
5 226
François B
F
V
Réponses
11
Affichages
19 081
wika58
wika58
mattowitch
Réponses
64
Affichages
8 852
mattowitch
mattowitch
Haut