Premiers pas avec Linuxcnc et règle de mesure

  • Auteur de la discussion Bruno26
  • Date de début
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
  • Auteur de la discussion
  • #1
Bonjour à tous,
Après avoir déjà bien bricolé avec mes machines numérisées, une fraiseuse Crouzet FC100 et un tour Celtic 12 avec Mach3 je me décide à passer à Linuxcnc notamment pour profiter de ce que Linuxcnc peut faire avec des règles de mesure (encodeur à quadrature).
Mes machines sont numérisées à moindres coup, des PaP pas très gros, une Breakout board de base (http://www.omc-stepperonline.com/5-axis-cnc-breakout-board-interface-for-stepper-motor-driver-stv2-p-197.html) et des drivers à quelques euros à peine.
Dans un premier temps je ne veux installer qu'une règle sur mon tour, sur le chariot transversal, là où j'ai le plus besoin de précision.
Je n'ai aucune expérience avec Linux non plus.
Pour l'instant j'ai juste réussi à installer Linuxcnc et à faire tourner 3 moteurs PaP. Jusque là, c'est pas plus difficile qu'avec Mach3.
Par contre, pour paramétrer les signaux A et B de ma règle, je comprend plus rien.
J'ai parcouru en autre ce document:
http://linuxcnc.org/docs/html/hal/rtcomps.html
mais je ne comprend rien à la syntaxe qu'il faut respecter et à quel paramètre correspond le numéro de pin sur le port //. Si j'ai bien compris, mais je n'en suis pas sûr du tout, il faut écrire dans le fichier ma-machine.hal?
Dans stepconf il y a comme choix pour les entrées du port // "entrée numérique" 0, 1,2 et3. Est-ce ça que l'on doit utiliser?
Si quelqu'un avait un exemple de config avec un encodeur autre que celui de la broche (que je rajouterai certainement plus tard) cela m'aiderai beaucoup.

A+
 
vax
vax
Modérateur
5 Mars 2008
7 212
Guipavas (près de Brest)
D'autres vont te confirmer ça je pense, mais pour moi, tu ne peux pas lire une règle sur un port parallèle...

J'ai une petite chinoise numérisée avec des pas à pas et une cartes sur port //, mais mes machines qui utilisent des servos avec codeurs ou des règles) sont toutes ave des cartes MESA (5i20 et 7i33).
Codeurs en quadrature pour le tour, servos et règles Renishaw (directement en RS422) pour les machines 3 axes.
 
vax
vax
Modérateur
5 Mars 2008
7 212
Guipavas (près de Brest)
Je ne sais pas comment il utilise sa règle, il parle d'un seul signal...
J'avais vu cette manière d'utiliser une règle...

Au plaisir de te lire pour me coucher moins c.. un de ces jours prochain (j'espère pour toi :) )
 
Dernière édition:
bendu73
bendu73
Compagnon
18 Septembre 2013
1 220
SAVOIE
Sur ma machine, les règles Heidenhain sont branchées sur des boitiers ( EXE ). Ces derniers "transforment" le signal et ensuite il passe sur les entrées encoder de ma carte Mesa.
 
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
  • Auteur de la discussion
  • #7
Salut,
Ca ne marche pas encore mais je suis sur la bonne voie.
Pour l'instant en ayant rajouté les quelques lignes dans le fichier .hal comme dans l'exemple trouvé sur le forum linuxcnc, avec un inter sur une entrée de ma petite carte j'arrive à faire varier l'état de la variable encoder.0.phase-A (et B). Par contre avec ma règle ça ne marche pas mais le pb est juste électrique. Sur chaque entrée de la carte il y a un optocoupleur, ma règle est alimentée par le 5V du PC (qui tombe d'ailleurs à 4.70 quand je branche la règle) mais l'optocoupleur par l'alimentation 24V qui alimente les moteurs.
En écrivant ça je me dis, mais bien sûr, le but de cette carte est aussi d'isoler électriquement le PC du reste de la machine!
Bon, la règle, j'ai vérifier au multimètre, elle fonctionne bien.
Il faut donc que je bidouille ma carte au niveau des optocoupleurs et ça devrait le faire.
Il restera encore à ce que Linuxcnc affiche bien ce qui vient du module "encoder" de Linuxcnc.
Avec les cartes Mesa ou autre vous utilisez aussi les variables encoder.0.phase-A ou la carte Mesa renvoie directement l'info de position?

A+
 
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
  • Auteur de la discussion
  • #8
Re salut,

Je viens d'installer Linuxcnc sur un autre PC un peu meilleur que celui que j'avais. En démarrant Linuxcnc pour la première fois je me suis un peu plus attardé sur le choix des configs proposées. Il y a en une qui correspond pas mal à ce que je veux faire à ceci près quelle utilise des servos commandés avec un PWM. Mais au niveau des encoders il y a tout ce qu'il faut. Cette config est by_interface.parport.etch-servo. Il y a bien les infos des encoders en entrée sur un port // et si j'ai bien compris pour afficher sur les visus la position mesurée il fallait que je rajoute dans ma config:
net Xpos-fb <= encoder.0.position
net Xpos-fb => axis.0.motor-pos-fb

A+
 
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
Euh, je n'ai pas eu le temps de faire mes petites soudures sur ma carte. Je vous tiendrai au courant de mes essais.
D'ailleurs, est-ce gênant que la règle soit alimentée par le 5v du pc?
 
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
Yes! Ca marche! J'ai bien la position lue par la règle en visu.
Il me restera à calibrer tout ça, et j'espère bien pouvoir utiliser la boucle fermée avec le moteur PaP et cette règle.
J'ai configuré Linuxcnc pour mon tour, savez-vous comment je peux enlever l'affichage du rayon et n'avoir que celui du diamètre, me connaissant c'est une source d'erreur.
C'est bon, j'adore, j'adopte définitivement Linuxcnc!
Il faut aussi que je refasse plus proprement toute l'installation de l'électronique dans un boitier métallique. Je pense utiliser comme boitier... une bonne vieille boite aux lettres, de celles qui sont étroites pour être mise à la verticale.

A+
 
Charly 57
Charly 57
Compagnon
21 Décembre 2008
5 026
FR-57330 Moselle
Yes! Ca marche! J'ai bien la position lue par la règle en visu.
Il me restera à calibrer tout ça, et j'espère bien pouvoir utiliser la boucle fermée avec le moteur PaP et cette règle. A+
Super et de plus en plus intéressant le coup de la boucle fermée.
Je lis tes posts avec attention
 
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
Merci Charly pour ton intérêt.
La boucle ouverte est réglée. Par contre j'ai dû limiter la vitesse du moteur sinon à cause de la latence du PC je perds des infos venant de la règle. J'ai BASE_PERIODE à 20000 et le chariot se déplace à 420mm/min. Il faut dire que la règle a une résolution de 1µm, ça fait beaucoup d'infos par mm à ne pas rater. Oui, je sais, je n'ai pas besoin de 1µm de précision sur ma pièce, mais en tournage j'ai parfois besoin (ou envie) du 1/100 en diamètre, ce qui ne fait que 5µm sur le déplacement du chariot. La résolution doit forcément être inférieure à la précision voulue, surtout pour la boucle fermée.
Pour vérifier que la règle ne raconte pas n'importe quoi j'ai utilisé un comparateur. Après des mouvements rapides dans tous les sens, je reviens à la position où j'avais mis le comparateur à zéro et je compare avec l'info de la règle.
En boucle ouverte, le positionnement se fait déjà avec à peu près 1/100 d'écart. La boucle fermée ne sera utile que pour ce dernier petit centième. Pour m'y atteler, il faut déjà que je potasse la doc...

A+
 
G
gaston48
Compagnon
26 Février 2008
9 070
59000
Bonjour,
C'est ton port // qui limite la fréquence d'entrée du codeur d'ou l’intérêt d'un système Mesa
dont le FPGA assure le comptage. Le traitement de la position est calculé ensuite par des boucles
en servo-thread entre 1 et 3 Khz en fonction de la vitesse du noyaux temps réel de ton PC.
Il n'y a que la Beaglebone black et son Linuxcnc qui s'appelle Machinekit qui dispose d'entrée / sortie
très rapides grâce, à non pas un FPGA, mais à ses PRU.
Il faut quand même adapter une carte fille spécifique, "un CAPE" au beaglebone comme la Furaday
ou la faire soi-même .
Pour gérer ta boucle fermée, tu vas rentrer le composant PID.
Il va piloter le step/dir en mode vitesse, c'est prévu dans le composant "stepgen".
La PID va gérer une consigne et une information retour, sous la forme d'une "position".
La position est un terme en flottant, qui est le résultat du comptage en terme entier issu du codeur
multiplié (ou diviser) par un coefficient d'échelle.
 
Dernière édition:
Bruno26
Bruno26
Compagnon
25 Février 2015
1 072
FR-26 Drôme
Il y a sans doute une limite de fréquence du port//, mais je ne doit pas encore y être. En passant BASE_PERIODE de 50000 à 20000 j'ai pu multiplier par 2 la vitesse de déplacement sans perdre d'infos de la règle. Si j'oublie la règle je peux multiplier encore la vitesse par 2.
J'ai un peu galère et pas tout compris aux différentes affectation de "pins" dans le fichier Hal, mais je crois que j'ai fini par trouver un réglage Tip-top!
Je n'ai pas fait comme tu as écrit gaston. Vu que la boucle ouverte marche déjà pas mal, je trouve dommage de piloter les Pap en vitesse. J'ai essayé, mais c'est pas terrible.
Avec un pap, si on lui demande de bouger d'1mm, il va le faire le plus vite possible avec la précision de la mécanique. Comme pré-positionnement, on ne peut pas faire mieux.
Du coup, dans le PID, j'ai utilisé surtout le terme FF0. En mettant ce terme à 1 et tout le reste à 0, on retrouve exactement la boucle ouverte. Le reste, c'est à dire les derniers pouillèmes, c'est le terme intégral qui le fait.
Vu que j'ai 3 dixièmes de backlash sur le transversal de mon tour, j'ai en fait mis FF0 à 0.985 pour ne pas dépasser la consigne et Pgain à 0.15 pour compléter. Avec Igain à 10, j'ai un positionnement très rapide avec une bande morte à ....2.5microns! Je n'ai pas rentré de valeur de backlash dans le fichier ini, mais le système sans fou, c'est aussi rapide et précis même en changeant de sens.
Je suis super content, c'est génial Linux. Je vais avoir envie de mettre aussi une règle sur le trainard et sur ma fraiseuse!

J'essayerai de faire une copie d'écran avec Halscope en imposants quelques déplacements rapides.
Je posterai aussi mes fichiers ini et Hal, qui sont un peu brouillons, je découvre à peine Linuxcnc.
J'essayerai d'autre chose aussi avec Linuxcnc, comme utiliser un brushless d'avion de 500W pour en faire un servo sur l'axe vertical de ma fraiseuse qui pour l'instant est bien lent avec un Pap pas très puissant.
A+
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut