DRO par step/dir

  • Auteur de la discussion osiver
  • Date de début
C
cr-_-
Compagnon
Bonjour,

ça repart dans l'autre sens AA = X et AB = W pour les signaux A, B et la DRO
 
osiver
osiver
Compagnon
Bon, j'ai trouvé des explications plus complètes à partir d'articles sur le décodage mais pratiquement rien sur l'encodage puisque c'est interne aux règles ou encodeurs rotatifs.

Il en ressort que :
- le décodage est basé sur une machine à états et les transitions entre les états
- il y a différentes options de décodage sur cycle complet, demi ou quart = X1,X2,X4

Screenshot_2021-02-06 Incremental encoder - Wikipedia.png

Donc tout le monde avait raison @CNCSERV en X4 et moi en X1

Pour mon dernier chronogramme (X4), en colonne AA comme l'état précédent était A=1 et B=1 on doit passer à A=1 et B=0 puis en colonne AB à A=0 et B=0 8-)

Reste maintenant à savoir quel mode de décodage les DRO utilisent pour définir la relation entre mes pulses de step et la valeur affichée par la DRO ... :smt017
 
V
vibram
Compagnon
J'aurais dit AA:
A Haut
B Bas
DRO: 9

AB:
A bas
B bas
DRO 8

non?

Mais en gros la DRO va toujours compter chaque changement d'état de A et B et apres dans les parametres on doit pouvoir modifier cela.
j'ai eu plusieurs DRO et c'était toujours ainsi
 
pailpoe
pailpoe
Compagnon
Tu découvres la quadrature ! :-D
franchement, une carte stm32 a 2€ et le tour est joué.
pour la récupération des step/dir, une interruption sur changement d’état (front descendant ) sur step qui lit en même temps le senspour incrémenter ou décrémenter un compteur 32 bits.
Dans la boucle principale du programme, la génération de la quadrature A/B et le tour est joué.
 
V
vres
Compagnon
3 circuits c'est pas beaucoup plus cher, c'est juste de savoir si on ai plus a l'aise avec la programmation ou avec le fer a souder.
Un petit Arduino nano fait aussi l'affaire, pas besoin de 32bits peut être plus compliqué a programmer.
 
V
vres
Compagnon
Reste maintenant à savoir quel mode de décodage les DRO utilisent pour définir la relation entre mes pulses de step et la valeur affichée par la DRO ... :smt017
Quadrature sans aucun doute, la quadrature permet de multiplier la résolution d'un encodeur par 4, un encodeur de 2500PPR devient un 10000PPR en quadrature.
Dans ton cas la quadrature est beaucoup plus simple et il y a moins de risque de bug.
 
Dernière édition:
osiver
osiver
Compagnon
C'est Count Enable. Dans cet exemple ils procèdent en trois temps :
- échantillonnage de l'état des lignes, donne la paire AB actuelle
- mise à jour de l'état de la machine, examine si les lignes ont changé et si le nouvel état est licite par rapport au précédent. Valide un comptage en fonction de X1,X2,X4 et définit le sens
- si CE est à un, un comptage (ou décomptage) intervient par une horloge interne au système

 
V
vres
Compagnon
la conversion encodeur -> Step/dir est très différente.
 
osiver
osiver
Compagnon
Faudra pas chômer quand même.
La VM fait 5mm de pas soit avec un incrément de 2,5µm/stp, 2000stp/t. À 3000mm/mn (vitesse max) ou 50mm/s on est à 20000stp/s et cela pour chaque axe 8-)
 
pailpoe
pailpoe
Compagnon
50us, c’est pas un soucis pour faire l’acquisition à cette période. Une carte stm32 tourne à 64mhz !
si tu veux un petit bout de code, pas de soucis.
 
midodiy
midodiy
Compagnon
J'y comprends rien à ton CE...c'est une sortie mais c'est pas le step?
Il me semble qu'une regle sort du A et du B, c'est tout.
Avec ce A et B, la dro transforme en step/dir pour pouvoir compter/décompter.
Pour dir, une simple bascule D, A en clock, B sur D. En sortie Q de cette bascule, on a le signal dir.
Pour step, la dro fait un ou exclusif entre A et B.
Suffit de faire l'inverse :-D
 
V
vres
Compagnon
Avec cette méthode on a 4 fois moins de precision qu'avec la prise en compte de la quadrature.
 
midodiy
midodiy
Compagnon
Ah oui...presque. Si j'applique un ou exclusif sur A et B a tes chronographes du post #24, j'obtiens un signal step frequence 2 fois plus faible...
 
osiver
osiver
Compagnon
J'y comprends rien à ton CE...c'est une sortie mais c'est pas le step?
Ben non, c'est pas le step mais ça y ressemble un peu.
En principe step et dir sont des sorties commandant les drivers de moteurs pap. Donc, déjà rien à voir avec les règles. Dans mon cas, c'est une dérive de les utiliser en parasite (espion) de mon système pour reconstituer AB.
D'autre part, dans ce tableau on décode une paire de signaux en quadrature suivant possiblement 3 modes différents. On voit bien que dans le X1 il y a de nombreuses transitions d'état licites qui ne donnent pas lieu à incrémentation. Le signal CE n'est pas une horloge mais une validation pour une horloge qui va incrémenter/décrémenter le compteur.
 
osiver
osiver
Compagnon
Bon, j'ai vérifié à l'oscillo, la période des step est bien de 49,85µs, signal bien carré pour plein pot en G0.
À noter que cette vitesse n'est pas atteinte pour toutes les distances, en dessous d'une certaine distance ça plafonne vers 280µs. C'est lié à l'accélération/ralentissement 8-)
 
osiver
osiver
Compagnon
La DRO est commandée en Espagne. Faut se mettre à l'interface.
50us, c’est pas un soucis pour faire l’acquisition à cette période. Une carte stm32 tourne à 64mhz !
si tu veux un petit bout de code, pas de soucis.
C'est pas de refus, va falloir que je mette au STM alors :wink:
Il était question de bluepill quelque part, celui-ci conviendrait avec le programmateur ?
 
V
vres
Compagnon
Largement, c'est 3 lignes de code :wink: mais c'est un peu lourd a mettre en œuvre.
 
V
vres
Compagnon
en logique ça pourrait ressembler à ça : (je n'ai pas testé)
1612723547587.png


Il y a 2 compteurs dont le 2éme démarre déjà a 1 ce qui fait le décalage entre A et B.
 
osiver
osiver
Compagnon
Il me semble qu'il manque la commande de Parallel load, non ?
 
pailpoe
pailpoe
Compagnon
La DRO est commandée en Espagne. Faut se mettre à l'interface.
C'est pas de refus, va falloir que je mette au STM alors :wink:
Il était question de bluepill quelque part, celui-ci conviendrait avec le programmateur ?
Oui sans soucis avec arduino.
va voir le sujet sur la dro pas chère. L’installation de la chaîne de compilation et programmation est expliquée.
 
osiver
osiver
Compagnon
Sur le principe général, j'imagine trois entrées d'interruption activées par les steps dont la routine de service examine la ligne dir correspondante et flague la demande de changement d'état. La boucle principale fait évoluer à la demande les trois machines à états et positionne les sorties AB en conséquence. :7hus5:
 
midodiy
midodiy
Compagnon
Perso, je mettrais aucune interruption, le micro passerait son temps à attendre un front descendant sur step. Sitôt le front descendant vu, je viendrais tester le dir pour definir les sorties A et B...
 
osiver
osiver
Compagnon
Oui mais il y a quand même 3 lignes steps à gérer et ils peuvent arriver n'importe quand l'un par rapport à l'autre. La période minimale est de 50µs mais au plus 25µs à l'état bas.
Il va falloir que je regarde s'il y a une relation temporelle en faisant faire une diagonale (45°) en X,Y,Z. :shock:
 
V
vibram
Compagnon
vu le prix, 3 bluepill t'epargneront sans doute quelques arrachages de cheveux !
 
osiver
osiver
Compagnon
Pas faux ! J'ai l'intension de procéder par étapes : valider le principe sur une voie puis voir en ajoutant les deux autres. Si ça ne suffisait pas, deux autres pills 8-)
Je vais aussi voir à générer des faux step/dir avec la blue pill pour boucler l'ensemble.
Premier temps : générer les signaux de sortie A/B en comptant les incréments pour voir comment la DRO réagit
Second temps générer des faux steps/dir sur deux sorties
Troisième temps ajouter la gestion des IT et y injecter les faux step/dir
Seulement là, je connecterai à la machine :wink:
 

Sujets similaires

U
Réponses
84
Affichages
2 818
Fred69
Fred69
eternity78
Réponses
9
Affichages
418
greg_elec
greg_elec
Bat74
Réponses
34
Affichages
1 991
pailpoe
pailpoe
Haut