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
 
O

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
 
P

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:
O

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.
 
O

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-)
 
P

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.
 
M

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.
 
M

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...
 
O

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.
 
O

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-)
 
O

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.
 
O

osiver

Compagnon
Il me semble qu'il manque la commande de Parallel load, non ?
 
P

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.
 
O

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:
 
M

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...
 
O

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 !
 
O

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

CRA2
Réponses
4
Affichages
189
CRA2
N
Réponses
11
Affichages
1 250
nipil
N
B
Réponses
2
Affichages
8 038
Belphegor
B
Coyote94
Réponses
2
Affichages
53 172
Coyote94
Coyote94
D
Réponses
41
Affichages
2 446
dh42
R
Réponses
6
Affichages
623
Ritayou0
R
Rich
Réponses
18
Affichages
1 051
Rich
PL50
Réponses
25
Affichages
1 349
dh42
Haut