Mikron WF2/3DCM... encore un retrofit Linuxcnc/Mesa

B

Bruno26

Compagnon
Oui, oui, d'origine les drives analogiques. J'ai remplacé le tachymetre, analogique lui aussi, par un encodeur rotatif. C'est Linuxcnc qui transforme les signaux de l'encodeur en renvoyant une tension proportionnelle à la vitesse pour reconstituer le signal qui vient normalement du tachy. C'est juste 3 lignes de plus dans le fichier hal.
 
J

jéjé

Compagnon
Bravo
Avec ton montage, ça me permettrait d'utiliser directement mes drive Granite plus facilement. J'ai deux servos identiques à ceux d'origines mais avec un encodeur en plus qui peuvent remplacer mes servos sur X et Y. Je cherchais une solution pour Z, tu l'as trouvé :-D
 
G

gaston48

Compagnon
Super, pour être certain, j'essayerais quand même avec un signal de règle .
A moins que tu es un très gros backlach, mais normalement les vis à billes sont sans
jeu, précontrainte.

Sinon j'ai regardé comment était fichu l'ampli Bosch, on doit pouvoir tester facilement et
sans risque, sans l'asservissement en vitesse avec la tachy et donc tout gérer avec la position
par Linuxcnc.
Il faudrait comparer l'amplitude du signal de commande avec celui de la tachy, aux bornes
d'entrées de l'ampli. Normalement il doivent être très similaires aux corrections près.
Il suffirait donc d'appliquer exactement le même signal de commande (le +/-10V) avec une amplitude
et une polarité similaire à celle provenant de la tachy, sur l'entrée tachy.
C'est à la page 26 du document pdf de 46 pages, le schéma N° 2
A20 est l'ampli op de base monté en inverseur avec un gain sans la boucle de contre réaction tachy
de 2 ou 3 je pense. La contre réaction tachy est appliquée à travers l'ampli op A18 monté en différentiel.
Le taux de contre-réaction détermine le taux de correction. On part d'un
ampli avec un gain de 100, avec la contre réaction on ramène son gain a 1
l'erreur est divisée par un facteur 100.

https://www.sonelec-musique.com/electronique_theorie_aop.html

Le principe est simple, ça devrait même marcher simplement en débranchant la tachy et en diminuant
l'amplitude du signal de commande mais je crains un control quelque part et le déclenchement d'une alarme.
tachy.jpg
 
Dernière édition:
G

gaston48

Compagnon
Au niveau de A20 ce qui sort de 7 qui passe par R80 de 10 K pour rejoindre l'entrée inverseuse 6,
c'est le signal de contre réaction propre à A20
le signal de tachy est comme si il provenait aussi de 7 pour aller aussi vers 6 donc une résistance
supplémentaire en parallèle avec R80 qui va donc augmenter la contre-réaction en diminuant le gain
mais en corrigeant l'erreur de toute la chaîne en aval d' A20
 
B

Bruno26

Compagnon
J'essaierai avec l'info du tachy reconstituée à partir de la règle. Pour la science, parce que ça ne pourra pas être aussi performant qu'avec l'encodeur sur le moteur. Avec mon essai, la règle ne bouge que d'un micron alors que l'encodeur doit voir plusieurs changements d'état. Je ferai un petit enregistrement.
Eh oui, j'ai pu constater que si l'info du tachy est bidon, le variateur coupe tout. Surement quand l'erreur entre consigne et vitesse mesurée est trop grande.
 
G

gaston48

Compagnon
le maître :oops: oh non, juste un autodidacte, qui a eu un plus de temps pour se documenter
j'ai reçu ma carte mesa en 2012 ! :smileyvieux:
 
B

Bruno26

Compagnon
Ils sont chouettes ces petits encoders. J'en prendrais bien quelques un, notamment pour la broche de mon tour aussi.

A partir de désormais et jusqu'à dorénavant, je me tais et j’écoute :roll::-D
Bon, ça ira pour cette fois, c'était y'a 3 ans quand même...
 
V

vibram

Compagnon
tu en as de 400 à 2400pulse par tour (voire plus) et tu peux faire un decodages en X4 donc multiplier ce chiffre par 4. La contrainte vient ensuite du processeur qui va décoder, il doit etre assez rapide et pouvoir lire les grands chiffres. Il a des alternatives à ca d'ailleurs, on peut en discuter mais il y a des gens tres calés la dessus sur le forum :wink:
J'ai un peu bricolé avec donc selon, je peux aider, mais je ne connais pas du tout mesa, HAL etc etc
 
B

Bruno26

Compagnon
Attention, pas d'index par tour !
il faut fouiller dans le forum sur les sujets arduino jpbbricole , il y a d'autres sources
Oups, effectivement ça n'irait pas pour un tour pour faire des filetages.
Sinon avec un index y'a celui-là pas trop cher non plus:
http://fr.rs-online.com/web/p/codeurs-rotatifs/7140237/

J'ai essayé de reconstituer l'info du tachy à partir de la règle, ça marche mais c'est beaucoup moins bon. Il faut baissé le gain du PID et ça oscille à peu près comme avec le tachymetre fatigué.
Me reste plus qu'à commander un truc comme ça:
https://www.omc-stepperonline.com/s...r.html?mfp=50-matching-shaft-mm,8 - 10,8 - 12
Ca sera mieux que la gaine thermo...

La contrainte vient ensuite du processeur qui va décoder, il doit etre assez rapide et pouvoir lire les grands chiffres. Il a des alternatives à ca d'ailleurs, on peut en discuter mais il y a des gens tres calés la dessus sur le forum :wink:
J'ai un peu bricolé avec donc selon, je peux aider, mais je ne connais pas du tout mesa, HAL etc etc
Justement c'est le rôle de la carte Mesa qui reste dans le PC de faire l'acquisition et le comptage des impulsions.

A+
 
V

vibram

Compagnon
Oups, effectivement ça n'irait pas pour un tour pour faire des filetages.
Sinon avec un index y'a celui-là pas trop cher non plus:
http://fr.rs-online.com/web/p/codeurs-rotatifs/7140237/

J'ai essayé de reconstituer l'info du tachy à partir de la règle, ça marche mais c'est beaucoup moins bon. Il faut baissé le gain du PID et ça oscille à peu près comme avec le tachymetre fatigué.
Me reste plus qu'à commander un truc comme ça:
https://www.omc-stepperonline.com/shaft-coupling/8mm-12mm-flexible-jaw-coupling-30x40mm-cnc-stepper-motor-shaft-coupler.html?mfp=50-matching-shaft-mm,8 - 10,8 - 12
Ca sera mieux que la gaine thermo...


Justement c'est le rôle de la carte Mesa qui reste dans le PC de faire l'acquisition et le comptage des impulsions.

A+
j'ai justement développé 1 bricole pour faire du filetage avec ces codeurs :wink:
je me suis arreté apres le software car le hardware posait trop de difficulté mai le soft etait fonctionnel de ce que j'ai testé :wink:
l'index n'est pas obligatoire, tu peux faire sans

Pour les coupleurs tu en as sur aliexpress si tu veux economiser quelques dollars et perdre quelques semaines :wink:
 
B

Bruno26

Compagnon
Avec le codeur de radiospare? Il a assez d'impulsions par tour?
Pour l'index indispensable ou pas, faudra que je regarde ce qu'il en est pour Linuxcnc. Mais c'est vrai que ça paraît logique de pouvoir s'en passer, peu importe où commence le filetage du moment qu'on ne perd pas d'impulsions du codeur.
Je pourrai pas attendre que le coupleur vienne de l'autre bout du monde. Je languis trop de faire des copeaux, même si je prend plaisir à remettre cette machine en route.
A+
 
Dernière édition:
V

vibram

Compagnon
Tout dépend de la vitesse d'acquisition de ta carte ou de ton microcontrolleur
je ne suis pas un expert en unités malheureusement mais si tu prends un timer reglé sur 72Khz par exemple, ave cun codeur 400ppr; tu as une vitesse max de 10800RPM, ca commence à faire pas mal deja.
TU as des microcontrolleurs qui montent jusqu'à 168 ou 180KHz, donc 27RPM max
Bon ca c'est la vitesse du clock, mais visiblement certains timers peuvent monter à 100KHz donc 15000RPM en 400ppr

je dois avoir un codeur en rab si cela t'interesse, je te le fais au prix qu'il m'a couté si j'arrive à remettre la main dessus, sinon je te laisse commander normalement car tu seras pas forcement gagnant avec le port
 
G

gaston48

Compagnon
ça oscille à peu près comme avec le tachymetre fatigué.
Ok merci d'avoir essayer.
Pour accoupler les codeurs dans les règles de l'art, il faut des accouplements à soufflet métallique "à rigidité torsionnelle"
en cherchant on en trouve à des prix très raisonnable.
L'index, une impulsion par tour de broche est indispensable si tu adoptes le gcode de
cycle de filetage G76 à la fin de la première passe au moment du retour rapide tu as perte de synchronisation,
l'outil se repositionne au début et attend le top index pour repartir.
(ça peut être une fourche avec 1 trou indépendamment du codeur).
G76 est basé sur G33
http://linuxcnc.org/docs/2.7/html/gcode/g-code.html#gcode:g33

Spindle-synchronized motion waits for the spindle index and spindle at speed pins,

http://linuxcnc.org/docs/2.7/html/gcode/g-code.html#gcode:g76

HAL Connections
The pins motion.spindle-at-speed and the encoder.n.phase-Z for the spindle must be connected in your HAL file before G76 will work. See the spindle pins in the Motion section for more information.

suite :
Finalement, comme tu as reconstitué une voie avec le codeur, tu peux comparer avec halscope
(aux scales près) le signal analogique de commande et le retour vitesse analogique vers l'ampli
et essayer si tu peux leurrer l'ampli en dupliquant le signal de commande.
Ce qui est embêtant c'est que si on supprime les 3 tachys, on monopolise les 6 voies de
la 7i77 . Plus de voie disponible pour un 4 ème axe par exemple.
l'idéal serait serait peut être de traiter le codeur localement avec un arduino par exemple
(voir le code de 59jag) et un ampli op pour sortir un signal tachy complètement autonome, "une tachy brushless"
 
Dernière édition:
B

Bruno26

Compagnon
Pour l'accouplement du codeur, j'avais vu effectivement dans la doc du codeur ces accouplements à soufflet métallique. J'en ai vu à 90€.
Ca me semble beaucoup vu le peu de couple qu'il y a à transmettre. Dans mon montage bricolé, ça tient avec 2 bouts de gaine thermo pour relier l'arbre du moteur de diamètre 12 avec celui de diamètre 10 du codeur.
Je croyais avoir compris en lisant d'autres posts qu'un arduino était trop lent pour compter les impulsions d'un codeur?
Pour le 4ème axe, j'ai un gros diviseur que j'ai eu avec la fraiseuse, exactement le même que wapiti, avec un gros moteur pas à pas.
 
G

gaston48

Compagnon
J'en ai vu à 90€.

j'en ai trouvé beaucoup moins chère, sur ebay et sur un site indépendant il faut chercher avec " bellows "
il y a une technique aussi avec un accouplement rigide et une suspension type diaphragme spider du corps de
codeur.

edit:
ici par exemple:

https://www.ebay.fr/itm/GRC-Bellows...hash=item4b25dc1180:m:m5Xet2ZUT4AJtv1ZQTBdZfw

https://www.ebay.fr/sch/i.html?_odk...70.l1313&_nkw=bellows+coupling+servo&_sacat=0

qu'un arduino était trop lent

non, pas avec le code de 59jag
 
Dernière édition:
B

Bruno26

Compagnon
Ouah, cool. Y'a exactement celui qu'il me faut, 10mm d'un côté et 12 de l'autre.:-D Merci gaston:-D
 
B

Bruno26

Compagnon
Salut,
Quelques news :-D
L'encoder est installé comme il faut, pour l'instant avec cet accouplement:
https://www.omc-stepperonline.com/s...r.html?mfp=50-matching-shaft-mm,8 - 10,8 - 12
C'est déjà très rigide, largement suffisant pour le peu de couple qu'il faut pour faire tourner l'encodeur. L'accouplement avec le tube inox annelé est commandé mais il vient de plus loin.
P1070659.JPG


Même avec ça il restait une oscillation sur l'axe Z, la faute à la règle de mesure. La tête de lecture avait certainement pris mal en tapant dans les butées. C'est réparé-bricolé et maintenant ça ne bouge plus que d'1 petit micron :-D.
Par contre la vitesse est limitée. Pas plus de 1000mm/mn, au dessus la vitesse mesurée par l'encodeur dit n'importe quoi. Pourtant les cartes Mesa doivent être encore loin de la fréquence maxi, mais il y a beaucoup plus d'impulsions à compter au niveau de l'encodeur qu'au niveau de la règle. Peut-être la carte d'interpolation qui arrive à sa limite?
Bon pour l'instant 1000mm/min sur l'axe Z ça me suffit largement.
Le problème de la sortie de la carte 7i77 limitée à +/-10v pour simuler le signal du tachy qui lui va jusqu'à 34v est réglé en rajoutant 2 résistances au bon endroit sur le variateur d'axe. C'est écrit dans la doc qu'on peut changer ces résistances en fonction de la tension maxi du tachymètre.
J'ai commencé à découper dans ma feuille plastique (rhodoïd) des raidisseurs pour les soufflets de l'axe X avec la fraiseuse. Son premier programme! :-D Mais c'est pas terrible avec une broche limitée à 2500tr/min. La feuille se décolle trop facilement, même avec du bon scotch double face. Il m'en reste encore pas mal à faire, je crois que je vais juste faire du traçage avec ma machine et découper aux gros ciseaux.

A+
 
G

gaston48

Compagnon
Bonjour,
C'est bizarre cette limitation. Mesa n'est pas en cause, le codeur habituellement non plus.
il faudrait vérifier au scope, (si tu n'en as pas, ce petit scope peut bien rendre service:)
https://www.banggood.com/fr/Orignal...-p-1093865.html?rmmds=search&cur_warehouse=CN
j'espère que ce n'est pas le calcul de la dérivée, c'est une petite boucle temps réel en servo thread
de ce type là:
J'imagine que tu as rentré un servo-thread de 1000000 ns (1 Khz) si tu as un bon temps de latence,
essaye de le diminuer pour voir...
Tu ne peux pas essayer de couper en pyrogravure, comme Christophe
 
B

Bruno26

Compagnon
Je n'ai pas d'oscillo. Ca fait longtemps que ça me tente un petit oscillo comme celui de ton lien.
Pour les règles, encoder_scale=1000. Pour le codeur rotatif, encoder_scale=88055. Avec cette valeur l'info position donnée par les 2 sont très proches, ça fait quand même 88 fois plus d'impulsions à compter, mais il me semble que même à 3000mm/min on devrait être loin de la fréquance maxi.
Servo_period était déjà à 500 000ns. C'est vrai que je n'ai pas essayé en dessous. C'est pas la 5i25 qui calcule aussi cette dérivée?
 
B

bendu73

Compagnon
@gaston48 tu as ce petit scope??? C'est bien?

Allez bon courage pour ce retrofit!!!

Comment sont tes PID?
 
G

gaston48

Compagnon
C'est pas la 5i25 qui calcule aussi cette dérivée?
non c'est un servo-thread, car avec un calcul en flottant (le calcul du ratio /period dans le petit programme).

Disons qu'en rapide, ta machine devrait être à 4000 mm/mn (les autres axes à 6000)
cela nous donne un certain régime moteur avec une certaine résolution du codeur x 4 qui donne
la fréquence max du comptage de base rawcount.

Tu peux charger le composant ddt à part et voir si sa valeur yoyote aussi
http://linuxcnc.org/docs/2.7/html/man/man9/ddt.9.html
tu as comparé le signal tachy et le signal commande +/-10V avec halscope ?

tu as ce petit scope
Non, j'ai un gros classique, j'ai vu l'info ici :wink::
https://forum.linuxcnc.org/12-milling/33035-retrofitting-a-1986-maho-mh400e?start=230
 
B

Bruno26

Compagnon
6000mm/min??! D'après la doc d'origine c'est 3000mm/min le maxi.
Voici les quelques lignes que j'ai rajoutées dans hal:


#*******************
# ENCODER U
#*******************



# ---PWM Generator signals/setup---


setp hm2_5i25.0.7i77.0.1.analogout3-scalemax 50
setp hm2_5i25.0.7i77.0.1.analogout3-minlim -50
setp hm2_5i25.0.7i77.0.1.analogout3-maxlim 50

net u-vel-fb => hm2_5i25.0.7i77.0.1.analogout3

# ---Encoder feedback signals/setup---

setp hm2_5i25.0.encoder.00.counter-mode 0
setp hm2_5i25.0.encoder.00.filter 1
setp hm2_5i25.0.encoder.00.index-invert 0
setp hm2_5i25.0.encoder.00.index-mask 0
setp hm2_5i25.0.encoder.00.index-mask-invert 0
setp hm2_5i25.0.encoder.00.scale -88055

net u-pos-fb <= hm2_5i25.0.encoder.00.position
net u-vel-fb <= hm2_5i25.0.encoder.00.velocity
net u-pos-rawcounts <= hm2_5i25.0.encoder.00.rawcounts


J'avais mesuré la tension du tachymètre d'origine pour une vitesse donnée. Vu qu'elle dépassait de loin les 10v pour la vitesse maxi, j'ai configurer hal pour avoir une tension 3 ou 4 fois (je ne sais plus combien exactement) plus petite et rajouté 2 résistances sur le variateur pour s'adapter à ce niveau de tension.
Je ne suis pas sûr d'avoir compris ta question à propos de la comparaison des signaux.

Mes PID, on peut pas faire plus simple:
P=1
OUTPUT_SCALE = 1
FF1 = 0.017 (un peu différents pour chaque axe)
Le reste à 0.

Pour régler FF1, je met d'abord P à 0, et je donne une consigne de vitesse fixe. Avec halscope je compare la mesure de vitesse avec la tension de commande (quand la vitesse est stabilisée) et FF1= Tension de commande/vitesse mesurée.
Avec ça le PID n'a déjà plus grand chose à corriger. En départ arrêté de 0 à 3000mm/min il doit y avoir 2 ou 3 centième d'erreur au maxi. J'ai pas relevé exactement la valeur de l'erreur maxi tellement elle était petite :-D

A+
 
G

gaston48

Compagnon
Je ne suis pas sûr d'avoir compris ta question à propos de la comparaison des signaux.
je t'avais déjà suggérer la manip précédemment.
Un asservissement en vitesse analogique rapide local avec la tachy était, à l'époque de ta machine, la seule
façon d'obtenir une bonne précision globale des trajectoires sachant la vitesse de calcul de la boucle PID
numérique des processeurs de cette époque.
Maintenant, un PC avec Linuxcnc est à peu près 10 fois plus rapide, ce qui fait qu'on peut se contenter
d'un asservissement analogique local en courant (couple) uniquement.
Ce qu'il faut, c'est continuer à leurrer ton ampli actuel avec un pseudo signal de tachy et reporter tout le travail
d'asservissement vitesse et position resultantes sur le PC et Linuxcnc.
Or un pseudo signal de tachy est très semblable au signal de commande +/- 10V
L'idée est de supprimer la tachy ou actuellement son codeur de substitution,
et de rentrer le signal de commande sur l'entrée commande et sur l'entrée tachy !

6000 c'est le modèle suivant, années 87 90 WF31 ton extrait de fichier HAL, ne me dit
pas la fréquence max du rawcount.
 
Dernière édition:
B

Bruno26

Compagnon
J'avais essayé en reconstituant l'info du tachy à partir de la vitesse mesurée à partir de la règle.
Là tu penses que ça pourrai marcher avec non pas la vitesse mesurée mais celle commandée?
En tous cas, actuellement, les 2 signaux doivent être proches puisque je me suis arrangé pour qu'à 3000mm l'info tachy soit proche de 10v, et c'est visiblement le maxi aussi pour le variateur.
Je ferai l'essai.
 

Sujets similaires

D
Réponses
6
Affichages
1 233
ornemaniste
ornemaniste
A
Réponses
18
Affichages
1 029
Marc le Gaulois
M
F
Réponses
23
Affichages
865
Dudulle
Dudulle
RzO
Réponses
89
Affichages
8 364
RzO
Flavccw
Réponses
12
Affichages
2 557
jeanmichel1946
jeanmichel1946
N
Réponses
78
Affichages
9 409
nipil
N
E
Réponses
15
Affichages
11 423
remy06710
R
Haut