P
PCB5
Apprenti
Bonjour,
Je voudrais presenter mon systeme de commande CNC. Il y a quelque temps deja lorsque j'ai commencé avec la CNC, s'est le probleme de trouver un systeme permettant la commande des moteurs depuis mon PC.
La réponse que j'ai trouvé est composé d'une mini carte USB , d'une carte moteur , et d'un logiciel PC avec un language de programmation .
Je voudrais parler plus particulierement du language de commande utilisé.
Ce language que j'appelle GCode amelioré contient les instructions G0 et G1 ordinaires pour commander les deplacements , mais aussi des elements d'un language de programmation avec variables, parametres, constantes, fonctions , boucles etc.
Par example pour usiner une rainure de clavette sur un axe , j'ecrit :
#<dx>=8 (clavette de longueur 12 avec fraise de 4
#<pass>=0.4 (0.4mm de descente par passe
#<z>=0 (surface de la piece en z=0
#<profondeur>=2
g1x0
g1z0
#<i>=0
while [#<z> le #<profondeur>]
#<z>=#<z>-#<pass>
g1z#<z>
if [#<i> eq 0]
g1x#<dx> (passe a droite
#<i>=1
else
g1x0 (passe a gauche
#<i>=0
pause 1
endif
g1z0
g1x0
Je peux aussi mettre ce programme dans une fonction et un fichier separé clavette.txt
!clavette sub
#<dx>=#<1> (dx est passe en premier parametre
#<pass>=#<2> (profondeur de passe 2ieme parametre
#<profondeur>=#<3> (profondeur de la rainure 3ieme parametre
..... (le programme de taille
endsub
et l'appeler à chaque fois que necessaire :
%include "clavette.txt"
!clavette call 8 0.4 2
An autre programme incluant la matrice de transformation des corrdonnées , qui peut changer la taille, l'orientation et la position des objets . De plus , les transformations peuvent êtres combinés à loisir et restaurer la transformation initiale pour le programme suivant.
3 percages 120° autour d'un cercle :
pushmat (empile une copie de la transformation d'axe courante
translate[7,11] (combine une translation le cercle est centré en x=7 et y=11
%xyrot[120] (combine une rotation de 120°
G0x16
execute
%messagebox["percer ici !"]
%xyrot[120]
G0x16
execute
%messagebox["percer ici !"]
%xyrot[120]
G0x16
execute
%messagebox["percer ici !"]
popmap (restitue la matrice à l'etat initilal
Autre example:
Tailler un engrenage sur la fraiseuse avec une fraise à engrenage et une table rotative CNC (branchée sur l'axe z)
#<N>=16 (engrenage 16 dents
#<dx>=21 (largeur de l'engrenage 21mm
#<dx_margin>=3 (espace droite et gauche pour la fraise 3mm
#<depth>=3.2355 (profondeur de coupe
#<pass>=0.2 (profondeur d'une passe 0.2mm
#<dy_far>=-1 (espace devant pour la fraise
#<j>=0 (compteur j
#<k>=1 (compteur k
while [#<k> le #<N>] (pour k<=N donc k compte les dents
#<r>=[[#<k>-1]*360/#<N>] (angle pour la dent No k
G0Y#<dy_far> (la fraise s'eloigne
G0Z#<r> (l'engrenage jusqu'a la dent k
#<y>=0 (la taille commence en y=0
while [#<y> le #<depth>] (tant que la profondeur non atteinte
G1Y#<y> (la fraise va en y
if [#<j> eq 0] (si la fraise est à gauche
#<j>=1 (elle va a droite
G1X[#<dx>+2*#<dx_margin>]
else
#<j>=0 (sinon la fraise va a gauche en 0
G1X0 (la fraise execute un va et vient en x
endif
#<y>=[#<y>+#<pass>] (y augmente de la profondeur de passe
endwhile
#<k>=[#<k>+1] (on passe a la dent suivante
endwhile
G0Y#<dy_far> (c'est la fin la fraise retourne en 0
G0X0
Chaque dent est taillée en plusieurs passes puis on continue sur la dent suivante.
Photo mini carte USB :
Le logiciel PC :
Je pense que ce systeme peyt être interessant pour d'autres lecteurs , peut être surtout e usinage conventionnel et 2D . Mais aussi pour des projets plus importants en raison de la possibilité d'ecrire des librairies de fonctions.
Les commentaires sont les bienvenus
Je voudrais presenter mon systeme de commande CNC. Il y a quelque temps deja lorsque j'ai commencé avec la CNC, s'est le probleme de trouver un systeme permettant la commande des moteurs depuis mon PC.
La réponse que j'ai trouvé est composé d'une mini carte USB , d'une carte moteur , et d'un logiciel PC avec un language de programmation .
Je voudrais parler plus particulierement du language de commande utilisé.
Ce language que j'appelle GCode amelioré contient les instructions G0 et G1 ordinaires pour commander les deplacements , mais aussi des elements d'un language de programmation avec variables, parametres, constantes, fonctions , boucles etc.
Par example pour usiner une rainure de clavette sur un axe , j'ecrit :
#<dx>=8 (clavette de longueur 12 avec fraise de 4
#<pass>=0.4 (0.4mm de descente par passe
#<z>=0 (surface de la piece en z=0
#<profondeur>=2
g1x0
g1z0
#<i>=0
while [#<z> le #<profondeur>]
#<z>=#<z>-#<pass>
g1z#<z>
if [#<i> eq 0]
g1x#<dx> (passe a droite
#<i>=1
else
g1x0 (passe a gauche
#<i>=0
pause 1
endif
g1z0
g1x0
Je peux aussi mettre ce programme dans une fonction et un fichier separé clavette.txt
!clavette sub
#<dx>=#<1> (dx est passe en premier parametre
#<pass>=#<2> (profondeur de passe 2ieme parametre
#<profondeur>=#<3> (profondeur de la rainure 3ieme parametre
..... (le programme de taille
endsub
et l'appeler à chaque fois que necessaire :
%include "clavette.txt"
!clavette call 8 0.4 2
An autre programme incluant la matrice de transformation des corrdonnées , qui peut changer la taille, l'orientation et la position des objets . De plus , les transformations peuvent êtres combinés à loisir et restaurer la transformation initiale pour le programme suivant.
3 percages 120° autour d'un cercle :
pushmat (empile une copie de la transformation d'axe courante
translate[7,11] (combine une translation le cercle est centré en x=7 et y=11
%xyrot[120] (combine une rotation de 120°
G0x16
execute
%messagebox["percer ici !"]
%xyrot[120]
G0x16
execute
%messagebox["percer ici !"]
%xyrot[120]
G0x16
execute
%messagebox["percer ici !"]
popmap (restitue la matrice à l'etat initilal
Autre example:
Tailler un engrenage sur la fraiseuse avec une fraise à engrenage et une table rotative CNC (branchée sur l'axe z)
#<N>=16 (engrenage 16 dents
#<dx>=21 (largeur de l'engrenage 21mm
#<dx_margin>=3 (espace droite et gauche pour la fraise 3mm
#<depth>=3.2355 (profondeur de coupe
#<pass>=0.2 (profondeur d'une passe 0.2mm
#<dy_far>=-1 (espace devant pour la fraise
#<j>=0 (compteur j
#<k>=1 (compteur k
while [#<k> le #<N>] (pour k<=N donc k compte les dents
#<r>=[[#<k>-1]*360/#<N>] (angle pour la dent No k
G0Y#<dy_far> (la fraise s'eloigne
G0Z#<r> (l'engrenage jusqu'a la dent k
#<y>=0 (la taille commence en y=0
while [#<y> le #<depth>] (tant que la profondeur non atteinte
G1Y#<y> (la fraise va en y
if [#<j> eq 0] (si la fraise est à gauche
#<j>=1 (elle va a droite
G1X[#<dx>+2*#<dx_margin>]
else
#<j>=0 (sinon la fraise va a gauche en 0
G1X0 (la fraise execute un va et vient en x
endif
#<y>=[#<y>+#<pass>] (y augmente de la profondeur de passe
endwhile
#<k>=[#<k>+1] (on passe a la dent suivante
endwhile
G0Y#<dy_far> (c'est la fin la fraise retourne en 0
G0X0
Chaque dent est taillée en plusieurs passes puis on continue sur la dent suivante.
Photo mini carte USB :
Le logiciel PC :
Je pense que ce systeme peyt être interessant pour d'autres lecteurs , peut être surtout e usinage conventionnel et 2D . Mais aussi pour des projets plus importants en raison de la possibilité d'ecrire des librairies de fonctions.
Les commentaires sont les bienvenus