Script python pour trouver le centre d'une pièce

Le logiciel le plus complet pour piloter GRBL
Avatar du membre
DranerB
Administrateur
Messages : 1693
Enregistré le : 31 janv. 2019, 11:56
Localisation : Bourbon-Lancy, France
A remercié : 101 fois
A été remercié : 195 fois
Contact :

Re: Script python

Message non lu par DranerB » 12 nov. 2019, 13:05

scalaire00 a écrit :
12 nov. 2019, 12:09
Salut à tous,

j'ai un peu avancé. j'arrive à palper le X, je fais le zéro X sur une face puis palpe l'autre face mais impossible de récupérer la valeur.

je n'arrive pas à le faire en un seul script mais ça a l'aire de fonctionner (tester sur un arduino de test + un bouton sur la pin A5 sans la cnc).

@++ Jean Claude
Il faudrait que je teste ça, mais je n'ai pas vraiment le temps en ce moment.
Quelques petites remarques:
  1. - A priori, tu n'as pas besoin du diamètre de l'outil. Tu mesures d'un coté, puis de l'autre. La différence divisée par 2 donne le centre, quelque soit le diamètre de l'outil.
  2. - Ligne 24 (Je crois)

    Code : Tout sélectionner

    "%_posXmi = float(wx)/2			(# stock la valeur trouvée dans la variable _posXmi )" 
    Là, je ne comprends pas, tu viens de faire un palpage, en X-. Pourquoi wx/2? wx te donne la position courante sur l'axe x. Ce devrait être

    Code : Tout sélectionner

    %_posXmoins = float(wx)
  3. - Dans le sondage en X+, après le G38.2, tu n'as pas de stockage de la valeur trouvée. Il manque quelque chose comme

    Code : Tout sélectionner

     %_posXplus = float(wx)
  4. - Ensuite, tu devrais avoir

    Code : Tout sélectionner

    %_posmi = float((_posXmoins - _posXplus)/2)
Dès que j'ai un peu de temps, je vais tacher de tester ça.
Bien Cordialement,
Bernard
Image
Avatar du membre
scalaire00
Pied Tendre Actif
Messages : 15
Enregistré le : 08 nov. 2019, 20:12
Localisation : Nord du 77
A été remercié : 1 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par scalaire00 » 12 nov. 2019, 20:43

J'ai fais les corrections mais toujours des erreurs.

@++ Jean Claude
Avatar du membre
DranerB
Administrateur
Messages : 1693
Enregistré le : 31 janv. 2019, 11:56
Localisation : Bourbon-Lancy, France
A remercié : 101 fois
A été remercié : 195 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par DranerB » 12 nov. 2019, 22:30

scalaire00 a écrit :
12 nov. 2019, 20:43
J'ai fais les corrections mais toujours des erreurs.

@++ Jean Claude
Quelles erreurs?
Bien Cordialement,
Bernard
Image
Avatar du membre
scalaire00
Pied Tendre Actif
Messages : 15
Enregistré le : 08 nov. 2019, 20:12
Localisation : Nord du 77
A été remercié : 1 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par scalaire00 » 13 nov. 2019, 00:22

Des erreurs de dimensions, cela ne correspond pas aux valeurs de l'axe X.

@++ Jean Claude
Avatar du membre
DranerB
Administrateur
Messages : 1693
Enregistré le : 31 janv. 2019, 11:56
Localisation : Bourbon-Lancy, France
A remercié : 101 fois
A été remercié : 195 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par DranerB » 13 nov. 2019, 10:06

scalaire00 a écrit :
13 nov. 2019, 00:22
Des erreurs de dimensions, cela ne correspond pas aux valeurs de l'axe X.

@++ Jean Claude
Tu peux montrer ton code actuel ?
Bien Cordialement,
Bernard
Image
Avatar du membre
scalaire00
Pied Tendre Actif
Messages : 15
Enregistré le : 08 nov. 2019, 20:12
Localisation : Nord du 77
A été remercié : 1 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par scalaire00 » 13 nov. 2019, 15:57

Code : Tout sélectionner

%_DiaOutil = app.entry("Entrez diametre de l'outils:");
%_long = app.entry("Entrez la longueur de la piece:");
(# %_larg = app.entry("Entrez la largeur de la piece:"); )
%_posXmoins = float();
%_posXplus = float();
%_posXmi = float();
%_posYmoins = float();
%_posYplus = float();
%_posYmi = float();
%msg Debut de Sondage
(=======  Z  =========)
G92 x0 y0 z0 		(# Reset des offsets )
G38.2 Z-45 F100; 	(# Sonde en Z de 45 mm maximum a 100 mm/min)
G10 L20 P1 Z0 		(# stocke ce qui a ete trouve comme position Z0)
( G38.4 Z1 F20 )	(# Remonte de 1mm a vitesse lente, declenche lorsque le )
(# contact est perdu. Devrait aider a ameliorer la precision)
(G10 L20 P1 Z0) 	(# stock la valeur trouvee dans G54 Z0)
G91 G0 Z3 			(# remonte de 3mm rapidement)
(# =======  palpage X nega =========)
(# G91 G0 X-[float(_long) / 2 + (float(_DiaOutil) * 2) ] Recule en X rapidement de )
(#la moitie de la longueur + 2 x diametre outil )
G91 G0 X-[float(_long)/2 + 10] 	(# Recule en X rapidement de la moitie de la longueur + 10 mm )
G91 G0 Z-5 						(# descend de 5 mm rapidement, en preparation du sondage en X)
G38.2 X20 F50 					(# Sonde en x de 20 mm maximum a 50 mm/min)
G92 x0 							(# reset offset Axe X)
%wait
%_posXmoins = float(wx)			(# stock la valeur trouvee dans la variable _posXmi )
(# G38.4 x-1 F20 )				(# Remonte de 1mm a vitesse lente, declenche lorsque le )
(# contact est perdu. Devrait aider a ameliorer la precision)
G91 G0 Z5 						(# remonte de 5mm rapidement)
(# =======  palpage X posi =========)
G91 G0 X[str(float(_long) + 11) ]  	(# deplacement rapide vers l'autre face de la piece)
G91 G0 Z-5 							(# descend de 5mm rapidement, en preparation du sondage en X)
G38.2 X-20 F50 						(# Sonde en x de 20 mm maximum a 50 mm/min)
%wait
%_posXplus = float(wx)				(# stock la valeur de _poXmi dans offset X )
G91 G0 Z5 							(# remonte de 5mm rapidement)
(# G92 X[str(_posXmi)]) 			(# stock la valeur de _poXmi dans offset X )
(# G4 P2)
(# G92 X[wx / 2])
G4 P2	(# Pause de 2s)
%_posXmi = float((_posXplus - _posXmoins)/2)
%wait
G90 G0 X[_posXmi]
(# =======  palpage Y posi =========)
(# =======  palpage Y nega =========)
%wait
%msg Sondage Termine
Avatar du membre
DranerB
Administrateur
Messages : 1693
Enregistré le : 31 janv. 2019, 11:56
Localisation : Bourbon-Lancy, France
A remercié : 101 fois
A été remercié : 195 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par DranerB » 13 nov. 2019, 16:09

scalaire00 a écrit :
13 nov. 2019, 15:57

Code : Tout sélectionner

%_DiaOutil = app.entry("Entrez diametre de l'outils:");
%_long = app.entry("Entrez la longueur de la piece:");
(# %_larg = app.entry("Entrez la largeur de la piece:"); )
%_posXmoins = float();
%_posXplus = float();
%_posXmi = float();
%_posYmoins = float();
%_posYplus = float();
%_posYmi = float();
%msg Debut de Sondage
(=======  Z  =========)
G92 x0 y0 z0 		(# Reset des offsets )
G38.2 Z-45 F100; 	(# Sonde en Z de 45 mm maximum a 100 mm/min)
G10 L20 P1 Z0 		(# stocke ce qui a ete trouve comme position Z0)
( G38.4 Z1 F20 )	(# Remonte de 1mm a vitesse lente, declenche lorsque le )
(# contact est perdu. Devrait aider a ameliorer la precision)
(G10 L20 P1 Z0) 	(# stock la valeur trouvee dans G54 Z0)
G91 G0 Z3 			(# remonte de 3mm rapidement)
(# =======  palpage X nega =========)
(# G91 G0 X-[float(_long) / 2 + (float(_DiaOutil) * 2) ] Recule en X rapidement de )
(#la moitie de la longueur + 2 x diametre outil )
G91 G0 X-[float(_long)/2 + 10] 	(# Recule en X rapidement de la moitie de la longueur + 10 mm )
G91 G0 Z-5 						(# descend de 5 mm rapidement, en preparation du sondage en X)
G38.2 X20 F50 					(# Sonde en x de 20 mm maximum a 50 mm/min)
G92 x0 							(# reset offset Axe X)
%wait
%_posXmoins = float(wx)			(# stock la valeur trouvee dans la variable _posXmi )
(# G38.4 x-1 F20 )				(# Remonte de 1mm a vitesse lente, declenche lorsque le )
(# contact est perdu. Devrait aider a ameliorer la precision)
G91 G0 Z5 						(# remonte de 5mm rapidement)
(# =======  palpage X posi =========)
G91 G0 X[str(float(_long) + 11) ]  	(# deplacement rapide vers l'autre face de la piece)
G91 G0 Z-5 							(# descend de 5mm rapidement, en preparation du sondage en X)
G38.2 X-20 F50 						(# Sonde en x de 20 mm maximum a 50 mm/min)
%wait
%_posXplus = float(wx)				(# stock la valeur de _poXmi dans offset X )
G91 G0 Z5 							(# remonte de 5mm rapidement)
(# G92 X[str(_posXmi)]) 			(# stock la valeur de _poXmi dans offset X )
(# G4 P2)
(# G92 X[wx / 2])
G4 P2	(# Pause de 2s)
%_posXmi = float((_posXplus - _posXmoins)/2)
%wait
G90 G0 X[_posXmi]
(# =======  palpage Y posi =========)
(# =======  palpage Y nega =========)
%wait
%msg Sondage Termine
Tu ne dis pas quel problème tu as, mais entre-temps j'ai testé de mon coté. Mon code "semble' tout bon, MAIS le code python est exécuté avant que le Gcode aie fait le sondage! Donc, évidemment, les valeurs dans les variables sont fausses.
Il semble que %wait ne change rien. J'ai posé une question sur le GitHub de bCNC, on va voir quelle réponse ils donnent.
Bien Cordialement,
Bernard
Image
Avatar du membre
scalaire00
Pied Tendre Actif
Messages : 15
Enregistré le : 08 nov. 2019, 20:12
Localisation : Nord du 77
A été remercié : 1 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par scalaire00 » 14 nov. 2019, 10:24

Salut, le problème est que les valeurs dans les variables ne sont pas correctes sinon ça a l'aire de fonctionner. Espérons qu'il y a une solution pour trouver les valeurs wx et wy au bon moment.

Pour le moment cela marche sur l'axe X avec deux boutons. Reste à faire l'axe Y et un autre script pour chercher le centre d'un alésage pour faire des filetages.

@++ Jean Claude
Avatar du membre
scalaire00
Pied Tendre Actif
Messages : 15
Enregistré le : 08 nov. 2019, 20:12
Localisation : Nord du 77
A été remercié : 1 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par scalaire00 » 21 nov. 2019, 10:26

Salut à tous,

toujours pas de réponse sur github sur cette histoire de "wait"?

Bon le palpage marche en deux temps:

- bouton #1
- je palpe le côté droit de la pièce un g92 x0 pour remettre à zéro le Z
- je palpe l'autre côté de la pièce, j'ai l'épaisseur de la pièce + diamètre du palpeur.

ensuite:

- bouton #2
- je récupère la position courante de l'axe X (wx) que je divise par deux.
- puis me déplace de cette valeur ce qui me donne le centre de la pièce.

idem pour l'axe Y ( deux autres boutons )

Pour le palpage de précision je préfère lors du premier touché reculé de 0.5 mm et repalper à vitesse très lente.

exemple:

Code : Tout sélectionner

G91 G0 Z 0.5   (# remonte de 0.5 mm rapidement)
G38.2 Z-5 F10  (# Sondage de precision en Z de 5 mm maximum à 10 mm/min)

@++ Jean Claude
Avatar du membre
DranerB
Administrateur
Messages : 1693
Enregistré le : 31 janv. 2019, 11:56
Localisation : Bourbon-Lancy, France
A remercié : 101 fois
A été remercié : 195 fois
Contact :

Re: Script python pour trouver le centre d'une pièce

Message non lu par DranerB » 21 nov. 2019, 10:42

scalaire00 a écrit :
21 nov. 2019, 10:26
Salut à tous,

toujours pas de réponse sur github sur cette histoire de "wait"?

Bon le palpage marche en deux temps:

- bouton #1
- je palpe le côté droit de la pièce un g92 x0 pour remettre à zéro le Z
- je palpe l'autre côté de la pièce, j'ai l'épaisseur de la pièce + diamètre du palpeur.

ensuite:

- bouton #2
- je récupère la position courante de l'axe X (wx) que je divise par deux.
- puis me déplace de cette valeur ce qui me donne le centre de la pièce.

idem pour l'axe Y ( deux autres boutons )

Pour le palpage de précision je préfère lors du premier touché reculé de 0.5 mm et repalper à vitesse très lente.

exemple:

Code : Tout sélectionner

G91 G0 Z 0.5   (# remonte de 0.5 mm rapidement)
G38.2 Z-5 F10  (# Sondage de precision en Z de 5 mm maximum à 10 mm/min)

@++ Jean Claude
Non, pas de réponse.Tu pourrais montrer ton code? Un système qui marche, c'est mieux que rien, mais les 2 boutons sont ennuyeux quand même. En tous cas, bravo pour tes efforts.
Bien Cordialement,
Bernard
Image
Répondre