Controleur autonome de cnc

  • Auteur de la discussion arnaud2
  • Date de début
K

K-micaz

Apprenti
ah ouai moi aussi je prends les commentaires, ça va bien m'etre utile car j'ai pas tout compris au prog ( je debute moi aussi ...) thx Arnaud !!
 
A

arnaud2

Ouvrier
merci je vais essayer d'en tirer quelque chose pour l'integrer dans le controleur
 
M

MaX-MoD

Compagnon
super traduction Fabrice, ce document est de loin le plus simple qu'il m'ait été donné de voir!

Et encore chapeau Arnaud!
 
M

MaX-MoD

Compagnon
là j'avoue, je en pourrais pas t'être d'un grand secours, désolé
 
A

arnaud2

Ouvrier
j'ai ajouté la fonction pause pendant l'usinage avec possibiliter d'ajuster les vitesses d'avance pendant la pose
testé fonctionnel
je met le nouveau zip en ligne
pour ceux qui cherche des exercises ce en ferait un exelent de trouver exactement ce qui a eté modifié :P Voir la pièce jointe firmcnc.zip
 
M

MaX-MoD

Compagnon
$diff ./cnc.pbas ./cnc_modif.pbas a la réponse!
^^
 
B

bcwan

Nouveau
Bresenham (line, circle,ellipse)

Salut tous le monde et Merci Arnaud pour cette superbe réalisation

ici je vous envoi des Algorithmes que je trouve vraiment très simple pour
ligne, Cercle et Ellipse, tres simple a suivre.

Bon courage a tous. Voir la pièce jointe Bresenham.rar
 
A

arnaud2

Ouvrier
merci beaucoup
je vais coder tout ca et tester
apres je metterai en ligne le code
 
A

arnaud2

Ouvrier
:mad: :mad: :mad:
j'ai essayé toutes les solutions possibles mais la j'y arive plus j'aurai vraiment besoin d'un coup de main

le seul moyen qui marche a peu pres c'est en fesant une table de sinus cosinus mais ca bouffe beaucoup trop de ressources la vitesse maxi est de 100hz et encore

l'algorithme de bresenham pour les cercles n'est pas apliquable

on connait les coordonées du point de depart , du point d'arivé et du centre
apres c'est facile de calculer le rayon : r = rac ((x-x2)^2 + (y-y^)^2)
et c'est apres que je plane a fond
 
A

arnaud2

Ouvrier
en fait ce qui me manque surtout c'est une formule pour calculer la longueur de l'arc de cercle avec les coordonées du point de depart , d'arrivée et du rayon
 
B

bcwan

Nouveau
Arc Length

Salut Arnaud,

je vois pas exactement ou vous voulez en venir mais je vous repond en ce qui concerne la longueur de l'arc de cercle en connaissant :
- le point de depart (x0,y0)
- le point d'arrivee (x1,y1)
- le rayon du cercle r

alors voila

notons par c la corde (le segment de ligne entre les deux points
donc la distance entre les deux points dans l'espace

c²=(x1-x0)²+(y1-y0)² .....(1) d'une part

d'autre part

c²=r²+r²-2*r*r*cos(ß) .......(2)

ß est l'angle entre les deux vecteurs (centre-point depart et centre-point arrivee)

(1)=(2)

(x1-x0)²+(y1-y0)² = 2r²-2*r²*cos(ß)

cos(ß)=2r²-((x1-x0)²+(y1-y0)²)/2r²

donc ß=arc cosinus(2r²-((x1-x0)²+(y1-y0)²)/2r²)

la longueur de l'Arc va être ß*r (ß en radians)

longueur de l'arc=r*arc cosinus(2r²-((x1-x0)²+(y1-y0)²)/2r²)

notons que
en faite il yaura toujours 2 arcs le petit se calcul comme above et le grand sera le perimetre - ce dernier

voila j'espere que aide un peut et bon courage
 
A

arnaud2

Ouvrier
interpolation circulaire G02 operationelle et testé
frequence maxi 35khz en interpolation circulaire
je joint le code source tout est comenté et facile a comprendre
pas besoin de trigo comme pour l'interpolation lineaire c'est un simple algorithme de bresenham
je termine encore le G03 c'est la meme chose inversé

je vais aussi rajouter une correction de la hauteur des outils programmable avex possibilité de rentrer 100 outils Voir la pièce jointe firmcnc_G02.zip
 
F

fabrice c

Compagnon
trop fort arnaud2
que pense tu qu'il manque à ton programme pour être complet?
penses tu faire des vidéos de ta nouvelle carte en action?
 
A

arnaud2

Ouvrier
je suis en train de terminer la version 2 avec plein de fonctions en plus

-naviguateur de fichiers
-sauveguarde et resaurations des parametres sur la carte sd
-ecran lcd 240*128 (t6963c)
-gestion changeur d'outils automatique jusqu'a 50 outils
-palpeur d'outils
-programmation des corrections d'outils

il faut juste que je termine la programmation

je vais voir pour faire faire quelques circuits imprimées pro (serigraphie et tout) si quequ'un a une bonne adresse pour ca pas trop cher?
 
C

cogchristian

Apprenti
Controleur autonome pour tour

Je suis nouveau sur ce site. Il ya de très belles réalisations. Bravo à Arnaud2, son système est bien pensé. Cependant, à la lecture de ce soft, il me semble qu'il y a des disfonctionnements possibles. En interpolation linéaire, des erreurs risquent de se produire quand le déplacement en X est inférieur à celui en Y ou Z. Pour une interpolation presque parfaite, il faut que les déplacements soient traités dans l'ordre décroissant.
Pour l'interpolation circulaire, si jamais le point d'arrivée n'est pas sur le cercle (à +/- 2 points), le soft risque de tourner en rond. La méthode que j'utilise dans mes contrôleur CNC : vérification que le point d'arrivée est sur le cercle, si oui pas de probleme; s'il est à moins de 20 pas -> interpolation circulaire jusqu'à ce point intermédiaire puis interpolation linéaire jusqu'au point d'arrivée ; s'il est à plus de 20 points -> refus de travailler car risque d'un segment droit trop grand.

Mes contrôleurs autonomes CNC sont différents sur le principe. Après avoir passer un certain temps à motoriser un tour, m'etre amuser peu de temps à le commander par un soft sur PC, j'ai très vite été exaspéré d'avoir un tour délicat à utiliser en manuel.
Maintenant : un boitier de commande à base du PIC16F877, un joystik pour commander les déplacements à la vitesse que je veux, visualisation sur écran des positions. mémorisation en EEProm I2C de la passe si elle est OK, mise à zéro des compteurs, retour à l'origine, chanfrein, cône, suppression d'une ligne, exécution en automatique ou en pas à pas, paramétrage du pas des vis, sauvegarde éventuelle sur PC avec Hypertherminal, et chargement (mais ce n'est pas le but) etc ... Maintenant, il devient rare que j'ututilise les soft PC sauf quand une forme complexe est utile, et encore ....
L'autre contrôleur autonome est beaucoup plus complexe, il est à base de PIC18F4620 (comme celui de Arnaud2 d'ailleurs). Il a beaucoup plus de fonctions. Il est utilisable sur un tour ou sur une fraiseuse mais le principe reste dans le même esprit : c'est moi qui fais la pièce PAS LE PC ; si une deuxième pièce est utile, il suffit de mettre le brut et d'apuyer sur une touche ; le PC n'est qu'un outil de sauvegarde.
 
A

arnaud2

Ouvrier
pour l'interpolation lineaire le deplacement est controlé a partir d'un axe virtuel (vm) dont la longueur est la longueur totale du deplacement

vm = rac (x^x + y^y + z^z)

pour l'interpolation circulaire effectivement si le point d'arrivée n'est pas sur le cercle ca tourne en rond sans arret et si le point d'arrivée est le meme que le point de depart ca marche pas non plus

pour eviter de tourner en rond le vais rajouter une condition a l'inerpolation

si le rayon du point de depart est different du rayon du point d'arivée alors l'interpolation ne se fait pas

mais on beau mettre plein de securitées contre la connerie humaine on ne peut strictement sien faire (ca m'est deja arrivé plus d'une fois de crasher une machine)

par contre aurais tu une solution pour faire un cercle complet ?
 
C

cogchristian

Apprenti
Bonjour Arnaud, bonjour à tous.

je connais bien et pratique l'algorithme de Bresenham.

INTERPOLATION LINEAIRE----------------------------------

Je suis entièrement d'accord avec ce que tu écris :
"pour l'interpolation lineaire le deplacement est controlé a partir d'un axe virtuel (vm) dont la longueur est la longueur totale du deplacement
vm = rac (x^x + y^y + z^z) "
Mais ta façon de calculer n'est pas optimisée.
Exemple simple: 1 pas à faire en X et 10 pas à faire en Y
Ton calcul donne :
XYYYYYYYYYY ou X représente un clock sur axe X ; Y un clock sur Y
Le calcul idéal est :
XXXXXYXXXXX
Dans ton cas, il ya une "marche" de hauteur 1 & de longueur 10 car tu traites les pas toujours dans l'ordre X, Y, Z.
Dans l'autre, il y a 2 marches de longueur 5
De toutes les façons, il y aura des "marches" plus ou moins visibles

INTERPOLATION CIRCULAIRE -------------------------------------

Tu as écrit :
"pour l'interpolation circulaire effectivement si le point d'arrivée n'est pas sur le cercle ca tourne en rond sans arret et si le point d'arrivée est le meme que le point de depart ca marche pas non plus "
-> Regarde dans mon dernier post, tu as une solution éprouvée.

CERCLE COMPLET --------------------------------------------------
J'utilise une solution très simple :

G2(3) X1, Y1, I, J, X2, Y2 avec X1 = X2 & Y1 = Y2
(point de départ = point d'arrivée)

Comme le point de départ est le même que le point d'arrivée : c'est un cercle complet. Donc je calcule tout simplement le point diamétralement opposé au point de départ soit (X3, Y3). Je fais un demi-cercle partant de (X1,Y1) jusqu'au point (X3,Y3) dans le sens CW ouCCW suivant G2 ou G3.
Puis je fais l'autre demi-cercle dans le même sens partant du point (X3,Y3) jusqu'au point (X1,Y1).... et c'est tout

Espérant t'être utile

Remarque : le cercle n'est jamais parfait à cause du jeu dans les axes
 
B

BosniaCNC

Nouveau
What is wrong?

arnaud2 a dit:
voila c'est fait codes G02 et G03 integrées
attention I et J sont des coordonées absolues et pas incrementale
pour l'interpolation lineaire et circulaires aucune valeurs doit etre negatives sauf pour l'axe Z


I am used PIC18Simulator IDE and cnc.hex (G02G03).
What is wrong in cnc.bas?
Regard,
BosniaCNC

Broj004.jpg
 
C

cogchristian

Apprenti
hello BosniaCNC

"I am used PIC18Simulator IDE and cnc.hex (G02G03). "
"What is wrong in cnc.bas? "

Actualy, G02G03 is wrong when the end point of the arc is not on the circle.
Care, try the gCode without tool and motor !

Actuellement, G02G03 est faux dans le cas ou le point final n'est pas sur le cercle.
Attention, tester le gCode sans outil ni pièce ni moteur !

Regard

cogChristian
 
B

BosniaCNC

Nouveau
Test

I am tested with Proteus v7.4 and LCD is ok. MMC card is problem on market and I have Kingston MMCM card for dual voltage. What pins I must use for compatibility with mmc? On Kingston suport site not have datasheet for MMCM 1GB.
With best regards,
S.Markovic
 

Sujets similaires

D
Réponses
9
Affichages
571
Doctor_itchy
D
part's-and-co
Réponses
22
Affichages
2 377
part's-and-co
part's-and-co
HoloLab
Réponses
9
Affichages
595
HoloLab
HoloLab
laurenttanguy
Réponses
0
Affichages
1 329
laurenttanguy
laurenttanguy
C
Réponses
5
Affichages
1 391
christt4
C
Haut