automatiser la mesure d'une piece avec une cnc

  • Auteur de la discussion moissan
  • Date de début
kiki86
kiki86
Compagnon
7 Jan 2015
4 490
Maisons Alfort
bonjour
en entreprise les codes G sont pratiquement universels quelque soit l'armoire : en ISO
il existe effectivement des codes G pour palper, mesurer, et modifier les correcteurs d'outils afin de rester dans les tolérances
il existe aussi le stop-cote , environ 50 ans d'existence, surtout employer sur les rectifs
 
01power
01power
Ouvrier
24 Sept 2017
401
01600
salut,

je viens juste de lire le sujet
et je viens de pensé à une autre solution, je ne sais pas comment il faudrait la mettre en pratique,

l'idée serait d'utilisé un mesureur laser à faible distance (de 0 à 1m) et d'avoir le capteur à une distance précise du plateau sur le quel on pose la pièce, (le calcul de la distance instantanée fais la mesure et l'axe Z, et tu as plus qu'a gérer les axes X et Y et à récoltée les mesure
ça évite le contacte physique avec la pièce, et évite les problèmes qui y sont lié, et augmente la précision

en faisant une petite recherche j'ai trouvé un télémètre pour arduino (c'est pour l'article pas forcément le site), cependant je ne sais pas à quel point il est précis, mais sa portée de mesure commence à 80cm, mais je pense qu'avec un peu d'optique on peut diminué cette valeur de 80cm et augmenté la précision,

et avec tous les génies sur le forum, la mise en pratique d'un tel capteur devrais être facile
et du fais que c'est un module arduino, les infos devrais être facilement récupérable

ça me fais aussi pensé qu'il y a quelques années j'avais vue qu'un gars avais mis des roues encodeurs "avec réducteur" (avec le capteur qu'il avais récupérer sur de très vielles souris) sur les axes de son imprimante 3d pour vérifier qu'il avais pas de pertes de pas, mais on peut les utilisé pour compté la distance par rapport au point d'origine de chaque axe

au final je pense que ça pourrais même servir a numérisé des pièces simples comme un pignon, ou une boite, une coque de téléphone, (on est, je l'avoue, assé loin d'un scaner 3d surtout au niveau de la vitesse)

je sais suis partis un peu plus loin que le sujet

en espérant avoir réussi à aidé au moins une personne sur le forum,

je voudrais bien le faire moi même, mais mes compétences dans certains domaines laisse encore à désirer, et je manque de temps déjà pour mes projets actuels
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
Bonsoir David

bon je me suis remit sur machscreen et cela fonctionne bon pour moi...

voici le palpeur y quand pence tu????

None
Rem palpeur Y simple
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else

Code "g4 p1" 'pause
HautSonde = GetUserDRO(1100) 'hauteur du palpeur
Offset= GetUserDRO(1110) 'offset table/dessus pièce
Vavance_cour= GetOEMDRO(818) 'vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage

If Vpalp = 0 Then
Vpalp = 20
End If
Code "F"&Vpalp 'définir vitesse de palpage
' tester

ZNew=GetOEMDRO(802)-50 'descendre jusqu'à 50 mm en dessous de la pos courante au maxi.
Code "G31 Y"&ZNew 'lancer le palpage
While IsMoving() 'attendre une détection
Wend
ZNew= GetVar(2001) 'lire la valeur du point de contact
Code "G0 Y "&ZNew 'remonter si dépassement
While IsMoving() ' attendre fin du mouvement
Wend

Call SetOEMDRO(802,HautSonde-Offset) 'hauteur de la sonde dans la visu X
Code "G4 P0.25" 'pause pour mise à jour affichage
Code "G91" ' coord incr
Code "G0 Z3" ' remonter de 3mm depuis pos actuelle
Code "G90" ' coord absolues

Code"(L'axe Y a été mis à Zéro)"
Code "F"&Vavance_cour 'remettre l'avance initiale
end if

voici le bouton retour de la fraise a l'emplacement de la caméra

Dim x As Double
Dim y As Double

x = 46.7
y = 0.40

SetOEMDRO(800,x) ' mettre la valeur de la variable x dans l'OEM DRO 800 (position X courante)
SetOEMDRO(801,y) ' mettre la valeur de la variable y dans l'OEM DRO 801 (position Y courante)

Code("G0 G53 Z0") 'envoyer la commande Gcode G0 G53 Z-1 (Z haut en coord machine)
Code("G0 X0 Y0") 'envoyer la commande Gcode G0 X0 Y0 (amener la broche à 0,0 en coord piè

j attend tes conseil ou critique

merci encor ...
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
La seul chose que je ne peut pas régler c’est que les axes Y et X partent en négatif....
 
dh42
dh42
Compagnon
4 Sept 2009
5 898
Près de St Etienne (42)
Salut,

Sur le palpage, je pense que tu ne lis/ecrit pas la bonne DRO, la 802 c'est le Z ; il faut lire écrire la 801.

ce serait bien aussi de renommer les variables pour qu'elles correspondent à l'axe que tu teste ; par exemple Znew devrais être appelé Ynew pour éviter les confusions.

++
David
 
dh42
dh42
Compagnon
4 Sept 2009
5 898
Près de St Etienne (42)
La seul chose que je ne peut pas régler c’est que les axes Y et X partent en négatif....
G31 Y10 palpe dans le sens positif jusqu'à 10 maxi

G31 Y-10 palpe dans le sens négatif jusqu'à -10 maxi
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
Haaaa si j'ai trouvé

tester

XNew=GetOEMDRO(802)15 'descendre jusqu'à -15 mm en dessous de la pos courante au maxi.

il suffit de modifier sa en:

tester

XNew=GetOEMDRO(802)15 'descendre jusqu'à +15 mm en dessous de la pos courante au maxi.
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
Salut,

Sur le palpage, je pense que tu ne lis/ecrit pas la bonne DRO, la 802 c'est le Z ; il faut lire écrire la 801.

ce serait bien aussi de renommer les variables pour qu'elles correspondent à l'axe que tu teste ; par exemple Znew devrais être appelé Ynew pour éviter les confusions.

++
David[/QUOTE

alors j'ai fait des modif david...

801 c'est pour Y
802 c'est Z
et X stp
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
ha sa y est je croit que j 'ai bon

palpeur x

Rem palpeur X simple
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else

Code "g4 p1" 'pause
HautSonde = GetUserDRO(1100) 'hauteur du palpeur
Offset= GetUserDRO(1110) 'offset table/dessus pièce
Vavance_cour= GetOEMDRO(818) 'vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage

If Vpalp = 0 Then
Vpalp = 20
End If
Code "F"&Vpalp 'définir vitesse de palpage
' tester

XNew=GetOEMDRO(800)+15 'descendre jusqu'à 50 mm en dessous de la pos courante au maxi.
Code "G31 X"&XNew 'lancer le palpage
While IsMoving() 'attendre une détection
Wend
XNew= GetVar(2000) 'lire la valeur du point de contact
Code "G0 X"&XNew 'remonter si dépassement
While IsMoving() ' attendre fin du mouvement
Wend

Call SetOEMDRO(802,HautSonde-Offset) 'hauteur de la sonde dans la visu X
Code "G4 P0.25" 'pause pour mise à jour affichage
Code "G91" ' coord incr
Code "G0 Z3" ' remonter de 3mm depuis pos actuelle
Code "G90" ' coord absolues

Code"(L'axe X a été mis à Zéro)"
Code "F"&Vavance_cour 'remettre l'avance initiale
end if
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
palpeur y

Rem palpeur Y simple
If GetOEMLED(825)<>0 Then 'tester si contact pas déja actif
Code"(Le palpeur est déja actif)"
Else

Code "g4 p1" 'pause
HautSonde = GetUserDRO(1100) 'hauteur du palpeur
Offset= GetUserDRO(1110) 'offset table/dessus pièce
Vavance_cour= GetOEMDRO(818) 'vitesse d'avance en cours
Vpalp=GetUserDRO (1101) 'vitesse de palpage

If Vpalp = 0 Then
Vpalp = 20
End If
Code "F"&Vpalp 'définir vitesse de palpage
' tester

YNew=GetOEMDRO(801)+15 'descendre jusqu'à 15 mm en dessous de la pos courante au maxi.
Code "G31 Y"&YNew 'lancer le palpage
While IsMoving() 'attendre une détection
Wend
YNew= GetVar(2001) 'lire la valeur du point de contact
Code "G0 Y "&YNew 'remonter si dépassement
While IsMoving() ' attendre fin du mouvement
Wend

Call SetOEMDRO(802,HautSonde-Offset) 'hauteur de la sonde dans la visu Y
Code "G4 P0.25" 'pause pour mise à jour affichage
Code "G91" ' coord incr
Code "G0 Z3" ' remonter de 3mm depuis pos actuelle
Code "G90" ' coord absolues

Code"(L'axe Y a été mis à Zéro)"
Code "F"&Vavance_cour 'remettre l'avance initiale
end if
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
oki donc 801 au deux pour Y

et 800 pour X

Erreur de debutant
 
V
vdoudou14
Apprenti
29 Juin 2008
247
ouilly le vicomte
cool ça fonctionne nickel merci encor David
 
dh42
dh42
Compagnon
4 Sept 2009
5 898
Près de St Etienne (42)
Je précise que je n'ai pas testé ton code, je l'ai juste lu ; pour l'instant je ne peux plus tester ce type de macro sur le PC de la maison depuis que je suis en 64 bits, les Hotkey que j'assigne aux entrées pour simuler les contacts ne fonctionnent pas si aucun port // (ou carte d'interpolation USB ou Ethernet) n'est installé, et sur un Windows 64 bits, impossible d'installer un port // ... les LED réagissent bien quand je tape la touche assignée au palpeur (ou aux contacts de référencement), mais le G31 (ou le référencement) lui ne réagit pas du tout ; d'après ce que j'ai put comprendre sur le forum Mach3, sans carte d'interpolation ou le Pulse Engine (le pilote du port //), l'émulation par touche ne peut pas fonctionner pour ce type de commandes.

++
David
 
J
jack.sand
Nouveau
1 Déc 2019
6
Bonjour a tous et bonne heureuse Année 2020 .
J'ai un petit PB avec les sous progammes Linuxcnc . effectivement j'ai inclus dans mon programme principal l'appel d'un sous programme o<palpeurz> ( pour mesurer automatiquement la longueur de mon outils ) .je l'appelle à chaque changement outils . Or quand je charge mon programme principal axis me détecte une erreur pas au premier outils mais au second, ( il ne comprend pas le caractére "o") pourtant la syntaxe est la même que le premier . Quelqu'un a t'il une réponse à ce phénomène .

Merci pour votre aide
 
R
Radiel
Apprenti
18 Juin 2012
200
grenoble
bonjour,
je ne connais que les CNC industrielles et il n'y a pas de standard de palpage, mais on retrouve les mêmes base, c'est a dire des variables qui enregistre les coordonnées de palpage.
donc a partir du moment ou l'on connais les variables utilisé il suffit de les extraire pour les utiliser dans des macros
 
MegaHertz
MegaHertz
Compagnon
31 Août 2017
1 057
bonjour : il n'y a pas une grande difference entre une fraiseuse CNC et une machine de mesure tridimensionnelle
Euh... Juste deux ou trois trucs...

Une boule d'invar
Moins de puissance en métrologie qu'en usinage
Plus de précision en métrologie qu'en usinage
Un soft propriétaire fait pour mesurer, enregistrer et calculer.
Une salle à 20°C

Le GCode n'est pas fait pour récupérer des données, c'est fait pour obeir à des ordres.
Ce qui se rapprocherait un tant soit peu de la métrologie c'est le cycle probe.
Quand tu fais un cycle probe, je ne crois pas que tu puisses récupérer le résultat des mesures.

Bref, désolé, mais cette assertion est fausse.
 
R
Radiel
Apprenti
18 Juin 2012
200
grenoble
la mesure en machine ça ce fait dans l'industrie, mais la plage de lecture et plus large que celle d'une MMT,
avec les jeux machine et outil on arrive a mesurer a 0.03mm
on peu récupérer les valeur de mesure dans les variable, sur siemens 840D c'est OVR_... et sur Mitsubishi c'est #100 ... a condition d'utiliser les fonctions de mesures de la machine
apres le calcul ce n'est que de la trigo, une sphere qui touche une surface avec un angle de contact...
 
dh42
dh42
Compagnon
4 Sept 2009
5 898
Près de St Etienne (42)
Salut,
Quand tu fais un cycle probe, je ne crois pas que tu puisses récupérer le résultat des mesures.
Sur Mach3 c'est possible ; ça te crée un fichier de points (fichier texte) que tu peux utiliser sur d'autres applications (voir page 1) ; je m'en suis déjà servi pour du relevé de formes 2D et du palpage de forme 3D.

++
David
 
Dernière édition:
Haut