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

  • Auteur de la discussion saci
  • Date de début
S
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #1
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.
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
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
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #3
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


.
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
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
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #5
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
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
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
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #7
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:
S
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #8
J'ai commencé à bricoler ma première CN il y à presque 30 ans

Ah, ça explique pourquoi je trouve ta signature presque sur tout les topics !

Tout mes respects !
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
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
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #10
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:
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
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.
 
vax
vax
Modérateur
5 Mar 2008
7 715
Guipavas (près de Brest)
Juste quelques mots d'encouragement pour marquer le sujet et suivre vos échanges.
 
S
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #13
Assemblage clavier :


keypad2.jpg





keypad3.jpg






keypad4.jpg







keypad1.jpg




keypad5.jpg
 
S
saci
Apprenti
12 Oct 2013
150
Ile De France
  • Auteur de la discussion
  • #14
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.
 
CNCSERV
CNCSERV
Compagnon
27 Déc 2007
5 667
FR-28360
c'est pour cela qu'en 4 axes continus tout les axes peuvent bouger sans déplacement de la fraise sur la pièce.
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut