automatiser la mesure d'une piece avec une cnc

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

kiki86

Compagnon
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
 
0

01power

Compagnon
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
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
La seul chose que je ne peut pas régler c’est que les axes Y et X partent en négatif....
 
D

dh42

Compagnon
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
 
V

vdoudou14

Apprenti
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
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
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
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
 
D

dh42

Compagnon
Sans titre-1.jpg
 
V

vdoudou14

Apprenti
oki donc 801 au deux pour Y

et 800 pour X

Erreur de debutant
 
D

dh42

Compagnon
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
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

Ouvrier
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
 
M

MegaHertz

Compagnon
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

Ouvrier
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...
 
D

dh42

Compagnon
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:

Sujets similaires

M
Réponses
4
Affichages
389
MakerJoGa
M
S
Réponses
2
Affichages
1 027
jbf
Moi33
Réponses
3
Affichages
728
dh42
D
3
Réponses
13
Affichages
1 348
3dOxyd
3
M
Réponses
6
Affichages
1 053
MitchCanon
M
Haut