Décodage de signaux en quadrature

Décodage de signaux en quadrature

Le Yocto-PWM-Rx est un capteur avec deux entrées destinées à mesurer des trains d'impulsions électriques. Jusqu'à présent, le signal sur chaque entrée était mesuré pour lui-même, indépendamment de l’autre entrée. Désormais, il est possible d’analyser en plus les deux entrées comme une paire de signaux codés en quadrature.



Un codeur en quadrature est un dispositif qui sert à transmettre la position linéaire ou angulaire d’une pièce mobile, en n’utilisant que deux lignes digitales. Il est basé sur le fait que la comparaison de deux impulsions décalées permet de déterminer le sens du déplacement :

L'ordre des impulsions sur les deux capteurs indique le sens du mouvement
L'ordre des impulsions sur les deux capteurs indique le sens du mouvement


Si l’on étend le principe en répétant le motif, on obtient deux signaux périodiques décalés, dont le sens du décalage indique le sens de déplacement et le nombre d'impulsions la distance:

Le déphasage entre les deux capteurs indique le sens du mouvement
Le déphasage entre les deux capteurs indique le sens du mouvement


Ainsi, si l’on somme :

  • +1 chaque fois que le signal A monte alors que le signal B est bas,
  • +1 chaque fois que le signal B monte alors que le signal A est haut,
  • -1 chaque fois que le signal A descend alors que le signal B est bas, et
  • -1 chaque fois que le signal B descend alors que le signal A est haut,

alors on peut mesurer précisément la position de l’objet, sans être perturbé par des éventuels allers-retours ou hésitations des détecteurs sur les zones de transitions. Il ne s'agit pas d’un positionnement absolu puisqu’il manque une référence univoque du point de départ, mais d’un positionnement relatif par rapport à un moment donné.
Ce type de codeur en quadrature est utilisé en particulier pour faire des capteurs angulaires avec une sortie numérique et une précision allant jusqu'au dixième de degré. Dans ce cas, il existe souvent un 3e signal donnant une impulsion unique à l'angle zéro, fournissant ainsi une référence absolue en plus du codage incrémental en quadrature.

Si vous mettez à jour le firmware de votre Yocto-PWM-Rx, vous aurez désormais accès à une fonction quadratureDecoder que vous pourrez activer si nécessaire pour que le module décode automatiquement la position si vos entrées correspondent à un signal de codeur en quadrature. En plus de la position, le décodeur en quadrature calcule automatiquement la vitesse de déplacement/rotation toutes les 100ms. La vitesse correspond au nombre d'impulsions par seconde, et le signe indique la direction du mouvement.

Voici un petit exemple en Python qui illustre l'utilisation de cette nouvelle fonction.

quadrature = YQuadratureDecoder.FirstQuadratureDecoder()
quadrature.set_currentValue(0)

while True:
    print("Position: %d " % quadrature.get_currentValue() + \
    + "(Vitesse: %d steps/s)" % quadrature.get_speed() + \
    + " -- Press Ctrl-c to stop")
    YAPI.Sleep(1000)



Et voici une petite démonstration d'un capteur angulaire utilisant en sortie un encodeur quadratique incrémental, avec une résolution de 0.025 degrés, soit 14'400 positions par tour !

  

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.