Application pour métrologie de marbre au niveau à bulle

J

Jmr06

Compagnon
Bonjour.
Suite au sujet de @Guydo67 sur la cartographie de son marbre, et envisageant de faire pareil sur le mien, j'ai "pondu" une petite application Excel d'éxploitation des mesures.
L'idée est de réaliser une cartographie précise d'un marbre avec un niveau, comme par exemple le superbe niveau réalisé par @cudrouc.
Pour la méthode de mesure, voire le sujet de @Guydo67 : https://www.usinages.com/threads/ca...-de-fonte-avec-un-niveau.120904/#post-1456391
Les posts suivant sont réservés pour des explications et présentation.
Le logiciel, enfin le fichier Excel est en pièce jointe

La première feuille donne des explications sur l'utilisation.
La deuxième est la feuille de calcul et de présentation des résultats.
Il n'y a aucune protection sur le classeur, vous pouvez donc explorer dans tous les détails ce qui y est fait.
Par exemple, la figure suivante présente un exemple de saisie :
474972


Et cette saisie donne les résultats suivants :
474973

Les 3 posts suivants sont réservés pour la suite de la présentation.
Edit : Ajour d'une nouvelle version v2 :
Edit 2 : Portage sur Libre Office. Il y a donc maintenant une version pour Microsoft Excel et une autre pour Calc Libre Office. Ces deux versions font la même chose, calculent de la même manière.
 

Fichiers joints

  • Nivellement.xlsm
    75.8 KB · Affichages: 176
  • Nivellement_v2.xlsm
    77.3 KB · Affichages: 185
  • Nivellement_v2_LO.ods
    41.4 KB · Affichages: 122
Dernière édition:
J

Jmr06

Compagnon
Le logiciel suppose que la méthode de vérification du marbre consiste à disposer de proche en proche un niveau de précision, comme expliqué par la figure suivante :
474978

De proche en proche, on réalise un quadrillage du marbre comme indiqué par la figure suivante :
474977

Dans cet exemple, on effectue dont 4 mesures par ligne horizontale et 3 par ligne verticale. Il y a donc 35 mesures en tout, pour 20 points sur le marbre.

Le problème de résout l’application Excel, est comment déterminer la hauteur des 20 points avec ces 35 mesures : il y a trop de mesures pour le nombre de points pour avoir une solution directe.

La solution mathématique pour ce problème sera expliquée dans un poste dédié.

En pratique, il suffit :
De réaliser les mesures et de noter pour chaque translation du niveau la position de la bulle (c’est-à-dire le nombre de graduations).
Puis ouvrir le fichier Excel et :
- Indiquer le nombre de lignes et de colonnes de la grille de mesure
- Indiquer les caractéristiques du niveau : précision et longueur
- Saisir les mesures, évidement
Et, en appuyant sur le bouton « calculer », tous les calculs s’effectuent et donne la géométrie du marbre.
 
Dernière édition:
J

Jmr06

Compagnon
Dans ce premier exemple simple, on considère une grille de mesure de 3 x 3.
474983

Comme on le voit, le niveau a une précision de 2 centième par mètre et une longueur de 100 mm.
Les mesures sont toutes à une graduation.
Dans cette situation, la conclusion est simple : le marbre est parfait, il est simplement penché dans sa longueur et sa largeurs, ce qui fait que la bulle est toujours au même endroit.
Avec ces mesures, les résultats sont les suivants :
474993


Le premier tableau, dit "Résultats bruts", montre cette pente constante, de 2 micro à chaque déplacement du niveau : en partant du point haut-gauche qui est à zéro, on a 2 microns d'augmentation de la hauteur à chaque fois, ce qui est logique puisque le marbre est penché.
Le tableau du bas donne la hauteur de chaque point par rapport à un plan qui serait parfait. Comme dans cette exemple simpliste, le marbre est parfait, on a des zéros partout. Les défauts moyens et maximum sont de zéro.
 
Dernière édition:
J

Jmr06

Compagnon
Prochaines évolutions pour demain, si j'y arrive :
- présenter les résultats sous forme graphique. Il y aurra 2 graphiques correspondant aux 2 tableaux, dans un nouvel onglet.
- modifier le code pour des mesures sur une seule ligne. Le logiciel n'est pas vraiment indispensable dans ce cas (on peut résoudre à la main), mais il peut être pratique néanmoins.
Et pour plus tard, car il faut que j'étudie la question :
- le faire fonctionner sous LibreOffice.
 
Dernière édition:
J

Jmr06

Compagnon
Pour les matheux, voila la présentation de la méthode de calcul.
Si vous êtes allergique au math, je vous conseille vraiment de sauter ce post et d'aller au suivant...

Si on considère une grille de 5 lignes à 6 colonnes, cela fait :
- 30 points dont il faut déterminer la hauteur ;
- et 4x6 + 5x5 = 49 mesures.
Il y a donc bien plus de mesures que de points. Le système d'équations est donc "sur-déterminé". Il y a "trop" d'équations pour le nombre de points à calculer.
On pose le problème ainsi :
si X est le vecteur contenant la hauteur de tous les points.
M est le vecteur contenant toutes les mesures.
A est la matrice reliant les mesures à la hauteur des points : on a donc M = A * X.
- On connait A, cela se déduit facilement de la géométrie du problème
- on connait M, ce sont nos mesures
Il faut donc déterminer X.

Comme il y a plus de mesures que de points, A est une matrice rectangle.
Comme les mesures sont en fait des différences de hauteurs entre 2 points, il y a une indétermination par une translation en hauteur. La matrice A est donc de rang N-1 si N est le nombre de points. Plus précisément, elle est de rang N-1 et a N colonnes.
On corrige cela en plaçant un point arbitrairement à zéro. On prend le point n°1, le plus en haut à gauche que l'on met à zéro. Comme cela, on a donc maintenant N-1 points avec une matrice de N-1 colonnes et de rang N-1. Elle accepte donc une matrice pseudo-inverse de Moore-Penrose unique B qui se calcule facilement par B = inverse(At.A) . At. (ici, on notre At la transposée de A). On sait que B est telle que B * A = matrice identité de dimension N-1 et telle que X = B * M avec X optimal au sens des moindres carrés.
On obtient ainsi le vecteur X tel que les deux vecteurs M (nos mesures) et A.X (les mesure qu'on devrait trouver sachant X) sont les plus proches possibles au sens des moindres carrés.
On a ainsi, avec X, la cartographie des hauteurs de la plaque.
On a même l'erreur quadratique RMS des mesures en calculant la moyenne quadratique du vecteur M - A*X, qui s'écrit aussi M - A*B*M .

Certe, c'est bien beau, on a les positions des points de mesure. Mais ne c'est pas les défauts du marbre. Les défauts, ce sont les distances entre un plan parfait et les points de mesure. Pour cela, il faut déterminer ce plan parfait qui passe au plus près de tous ces points et ensuite calculer la distance entre ce plan et nos points de mesure.
Ce second problème est posé ainsi.
On considère nos points X est on considère un plan déterminé par :
- une position h en z (sa position en hauteur)
- un angle a selon l'axe x
- un angle b selon l'axe y
Le problème est de déterminer le vecteur (h,a,b) de manière à ce que, en moyenne, la distance entre le plan et les points soit minimale.
Si on a N points sur ce plan en regard à nos N points de mesure, on note R la matrice qui détermine la hauteur de ces points en fonction de (h,a,b). (R est donc une matrice de N lignes et 3 colonnes). On veut donc que R.(h,a,b) soit le plus proche possible de X. Et bien on utilise à nouveau la pseudo-inverse de R qu'on note S. Et on estime les paramètres du plan par (h,a,b) = S.X. On obtient ainsi notre plan qui passe au mieux à proximité des points de mesure. Et les distances des points à ce plan, c'est-à-dire les défauts du marbre, sont X - R.(h,a,b).
On a ainsi les défauts du marbre.
Pour éviter d'avoir des valeurs positives et négative, j'ai translaté toutes les valeurs de manière à avoir un point à zéro et tous les autres avec des valeurs positives.

Voili-voilou
 
Dernière édition:
Y

yvon29

Compagnon
Bonjour
Super boulot en math et tableur! :tumbsupe:
Grand merci à toi !

Et hop, c'est téléchargé :wink:
 
S

serge 91

Lexique
Bonjour,
J'ajouterais trois choses,
1/ Le quadrillage doit être réalisé(marqué) soigneusement (parallèles et perpendiculaire)
2/ le marbre doit être le plus horizontal possible (voir dessin)

475026


3/ La pente dans un sens modifie la mesure dans l'autre !
475027
 
T

tydji

Compagnon
Bonjour,
Super utile pour gagner du temps ! Merci ! : D
(Sous open-office cela devrait marcher, non ?)
En fait non, les calculs ne sont pas repris
 
Dernière édition:
J

Jmr06

Compagnon
Sous open-office cela devrait marcher
Comme tu l'as constaté, cela ne marche pas sous open office, car les calculs sont en VBA propre à Excel Microsoft.
J'ai fait une première version en MATLAB, mais comme je suppose que personne sur ce forum utilise MATLAB, j'ai fais en Excel que je pensais le plus répandu.
Si tu as besoin, tu peux toujours envoyer les mesures, on fera les calculs.
 
S

simon74

Compagnon
cela ne marche pas sous open office, car les calculs sont en VBA propre à Excel Microsoft.
Ceci n'est pas tout a fait vrai - par defaut, OpenOffice / LibreOffice ne prends pas en charge les macros VBA non-signés cryptographiquement par des sources "connus". Il faut modifier les parametres de securité et mettre un niveau de securité moyenne ou bas pour les macros.

Ceci dit, ca ne marche pas sur ma machine (LibreOffice Mac 6.1.0.3, OSX 10.11.6), erreur sur feuille 1 (calculs) ligne 102


Erreur 91 "Object variable not set"
 
J

Jmr06

Compagnon
Merci @simon74 de ces précisions. J'ai un ordi avec LibreOffice, je vais régarder ce soir si je peux faire tourner le code. Je pensais bêtement que ce n'était pas compatible.
La fonction Math.Sqr() extrait la racine carrée. Elle n'existe pas sous cette forme en LibreOffice ? Ou faut-il déclarer quelque chose au préalable ?
 
J

Jmr06

Compagnon
J'ai édité le poste 4, pour annoncer les prochaines évolutions.
Si vous pensez à d'autres chose ou si vous souhaitez des évolutions en priorité, n'hésitez pas à le dire.
N'hésitez pas non plus à faire des remarques sur l'ergonomie ou sur la notice explicative.
 
S

serge 91

Lexique
Bonjour,
@Jmr06
Tes calculs sont évidement parfaitement justes...
Mais je ne suis pas convaincu de la méthode pour deux raisons.
La premiere, c'est que tu parts sur un niveau à "deux pieds"(ce qu'on ne trouve pas), ils sont toujours plats. Pour la simple raison que cela permet de voir les bosses!
475145

La deuxième, c'est que la cartographie obtenue n'est que celle des points de mesure et qu'on ne sait pas ce qu'il en est entre eux !

475147
 
J

Jmr06

Compagnon
Bonjour @serge 91 .
C'est tout à fait vrai, la méthode indiquée ne fait que la géométrie aux points de mesure, pas entre ces points. C'est pour déterminer la forme "globale" du marbre.
Ce que tu évoques, c'est ce qu'on appelle, il me semble, la "répétitivité" des mesures, due aux défauts locaux et qu'on estime avec ce type d'instrument :

La méthode considérée et prise en compte dans la feuille Excel est adaptée au travail de surfaçage avec un marbre de rodage ou la méthode des 3 plaques. Avec ces méthodes, le problème est de suivre l'évolution de la géométrie globale du marbre, sachant que les défauts locaux sont corrigés par le rodage.
Comme tu le remarques, la méthode ne cartographie pas tous les défauts d'un marbre, seulement les défauts d'ensemble. Cela permet de déterminer là où il faut insister durant la phase de rodage suivant.
Pour ceux que cela intéresse, il y a les belles vidéos de @floods sur ce forum (et Youtube) . Bon, lui il fait cela à la lunette auto-colimatrice ! C'est la solution de luxe. Mais je pense qu'on devrait être capable faire la même chose au niveau, d'où ce fichier Excel.
 
F

floods

Compagnon
Bonjour,
Très intéressant, alors effectivement j'ai utilisé l'autocollimateur, et aussi le niveau, je pense vraiment qu'il est possible de faire quelque chose de précis avec un bon niveau, j'ai utilisé le niveau entre chaque passe pour voir où j'en suis, et avec le niveau 0.02mm/m c'est très précis, il faut juste faire attention de ne pas trop le tenir en main, c'est très très sensible à la température.
 
S

simon74

Compagnon
La fonction Math.Sqr() extrait la racine carrée. Elle n'existe pas sous cette forme en LibreOffice ? Ou faut-il déclarer quelque chose au préalable ?

Il me semble, apres avoir debattu avec LibreOffice un peu, que l'object "Math" n'existe pas, Sqr etant un fonction runtime. Si je supprime le "Math.", on arrive plus tard, mais on scratch sur les fonctions sur le selection dans macro9, l n'as pas l'aire d'aimer ".weight = x1Medium". En supprimant cela, on fini sans bordures (mais le macro se complet sans erreurs)

Par contre, y a quelquechose d'autre qui cloche, feuille F_P (et plein d'autres) est plein de ERR:508, qui me semble etre un erreur de parentheses. La, je seche.
 
T

tydji

Compagnon
Comme tu l'as constaté, cela ne marche pas sous open office, car les calculs sont en VBA propre à Excel Microsoft.
J'ai fait une première version en MATLAB, mais comme je suppose que personne sur ce forum utilise MATLAB, j'ai fais en Excel que je pensais le plus répandu.
Si tu as besoin, tu peux toujours envoyer les mesures, on fera les calculs.
Il me semblait qu'open-office était libre d'accès, donc répandu ...
Donc c'est que les formules de calculs sont différentes je suppose ?
"MATLAB" ?
(Ce qui m'intéressait c'était surtout la possibilité d'avoir une génération automatique du nombre de cases à données en fonction du nombre des mesures. )
 
J

Jmr06

Compagnon
MATLAB est un logiciel pour les calculs de math ou de traitement du signal. C'est un peu mon outil de travail, mais c'est vraiment pour les matheux. Et cela coûte une blinde.
Vu la réponse de @simon74 , il semble que si c'est juste pour avoir la grille de saisie, Open-Office marche, il suffit de ne pas appuyer sur le bouton "calculer". Ce sont les calculs qui plantent. Donc pour ton besoin, cela devrait aller.
Mais pour moi, c'était justement ces calculs qui étaient intéressants, parce que avec cette méthode de mesure, le traitement manuel des résultats est quasi impossible.
 
Y

yvon29

Compagnon
Bonjour
Un truc qui était top autrefois en basic c'est qu'on pouvait compiler et produire un fichier directement inusable ( --- . exe ) .
Ça n'existe plus pour des langages plus évolués?

J'ai utilisé, programmé en matlab , c'est vraiment la Rolls...
 
C

cudrouc

Compagnon
Super tout ça @Jmr06 !!! Merci pour le partage !!!!
Je suis en train de remettre office sur ma vieille bourrique de PC portable vintage, car je n'ai pas de pack office sur le Mac !!
J'essaie ça dès qu'il a fini son installation.....si il y parvient !!!! :lol:

Ca va me servir avec mon petit niveau maison pour contrôler le rodage des mes 3 marbres maison !
Sinon je pensais le faire sur Blender, en graphique uniquement donc !! Je l'avais déjà fait pour mon terrain et c'était redoutablement parlant !!!!
A la limite je pourrai tester les 2 versions et montrer le résultat comparatif !!

M - E - R - C - I encore !!!!!! :smt023
 
Y

yvon29

Compagnon
Bonjour

@Jmr06 j'utilise ton application, grand merci à toi !

niveau se déplaçant d'une distance égale à sa longueur

En fait je pose le niveau sur une cale parallèle ( le niveau présente un decrochement au milieu ) posée elle même sur deux cales étalon de même épaisseur.

Les cales sont posées sur le quadrillage, et donc comme longueur de niveau je mets la distance entre les cales....

Pourrais tu STP préciser à quelle classe de précision se trouve la surface à partir des résultats ?
Encore merci pour ton travail !
 
J

Jmr06

Compagnon
Pourrais tu STP préciser à quelle classe de précision se trouve la surface à partir des résultats
Je ne suis pas sûr de comprendre la question. :smt017
- Tu fais référence au meilleur plan passant au plus près des points de mesure ? Si c'est cela, et bien c'est une référence purement mathématique, en quelque sorte infiniment précise.
- Tu fais référence à la précision estimée des mesures, valeur que donne le tableau ?
- Tu penses à autre chose ?
 
Y

yvon29

Compagnon
Re bonjour

En fait je pense qu'à partir des résultats des calculs on peut certainement faire une correspondance avec les normes de classe de précision...
C'est souvent x microns + y microns fonction de la dimension du marbre.
Je vais essayer de trouver ça....
 
J

Jmr06

Compagnon
Ha ok, je comprends mieux.
Il faudrait donc déduire automatiquement la classe de précision en considérant les écarts par rapport au meilleur plan.
Non, je n'ai pas fait ce travail. :spamafote:
 
C

cudrouc

Compagnon
Bonjour, j'ai utilisé ton application @Jmr06 mais ça ne reflète pas la réalité : Le calcul n'a pas l'air de prendre en compte des déviations négatives.....j'ai dans ma matrice des déviations de + quelques divisions, et d'autres de - quelques divisions.....mais le résultat me donne un truc s'apparentant à tout positif....
Tu sais ce qu'il se passe ?

a+
 
C

cudrouc

Compagnon
Je parle uniquement pour le tableau résultat final, celui qui donne les défauts par rapport au plan théorique......
Le reste marche au top, SUPER BOULOT, tu es vraiment fort !!!!!! :prayer:
 
J

Jmr06

Compagnon
Bizarre en effet. Je regarde cela demain soir. Je suis en déplacement, je ne peux pas de suite.
 
C

cudrouc

Compagnon
Ah non, toutes mes excuses @Jmr06 !!!! En fait je crois que j'ai compris : le plan théorique est situé d'office sur le point haut, qui prend la hauteur 0.0, tous les autres étant en dessous. Quand je dessine de cette manière sur Blender, il me sort la forme de ma surface bien conforme à celle du tableau résultats bruts...même forme de surface mais légèrement redressée !!

Je crois que je vais m'amuser avec ton outil !!! Trop chouette !!
 
J

Jmr06

Compagnon
Ha oui ! Je ne me souviens pas pourquoi j'avais fait ainsi.
Le point 0.0, c'est le plus haut ou le plus bas ? Il me semblait que je l'avais mis au plus bas, pour que les valeurs indiquées soit directement ce qu'il faudrait retirer pour avoir une surface parfaite.
Si tu veux, c'est facile de corriger, pour positionner le plan selon l'écart moyen, l'écart quadratique moyen, au plus haut ou au plus bas.
 
C

cudrouc

Compagnon
Salut !! Pour moi le plus parlant serait de donner les ecarts par rapport au plan théorique avec les valeurs positives pour les bosses et les valeurs négatives pour les creux !!!enfin ce n’est que mon avis !!!
 
Haut