DRO par step/dir

  • Auteur de la discussion Auteur de la discussion osiver
  • Date de début Date de début
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
 
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
 
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é.
 
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.
 
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:
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

 
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-)
 
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.
 
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
 
Avec cette méthode on a 4 fois moins de precision qu'avec la prise en compte de la quadrature.
 
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...
 
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.
 
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-)
 
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 ?
 
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.
 
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.
 
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:
 
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...
 
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:
 
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 ;-)
 

Sujets similaires

CRA2
Réponses
5
Affichages
253
lolo
lolo
Coyote94
Réponses
2
Affichages
56 746
Coyote94
Coyote94
G
Réponses
48
Affichages
909
gregmuch
G
D
Réponses
41
Affichages
2 518
dh42
R
Réponses
6
Affichages
645
Ritayou0
R
Rich
Réponses
44
Affichages
2 890
bricoleur13
B
PL50
Réponses
25
Affichages
1 364
dh42

Sujets similaires

F
Réponses
11
Affichages
1 303
fertun
fertun
C
Réponses
8
Affichages
3 442
'Charlie
C
B
Réponses
2
Affichages
677
g0b
Retour
Haut