Capteur de déplacement à cable

Bonjour à tous,

Dans le cadre d’un projet, je dois utiliser un capteur de déplacement à câble pour mesurer le mouvement d’un objet. Le modèle m’a été imposé : capteur amazon

J’utilise un ESP32-S3 pour ce projet, car j’ai besoin du WiFi et du Bluetooth Low Energy (BLE) pour développer une application par la suite.

Le capteur fonctionne visiblement avec un encodeur rotatif intégré. D’après l’étiquette du capteur, le câblage est le suivant :

  • Blanc : Alimentation (5–24 V)
  • Noir : GND
  • Vert : A
  • Rouge : B
  • Jaune : Z

Je comprends bien les signaux A et B (classique pour un encodeur incrémental), mais je ne sais pas à quoi correspond le signal Z dans ce contexte. À quoi sert-il ? Est-il obligatoire de le connecter ?

Autre problème : je ne reçois aucune donnée de l’encodeur lorsque je tire sur le câble, alors que tout fonctionne correctement quand je teste avec un encodeur rotatif plus classique. Est-ce que ce type de capteur nécessite un traitement particulier ou une vitesse de lecture spécifique ?

Merci d’avance pour votre aide !

Bonjour damien-fcn

C'est une impulsion par tour (position Zéro), il n'est pas indispensable de l'utiliser.

Ton encodeur "plus classique" a des sorties (A et B) en logique (0 et 5V dans ton cas), celui qui t'est imposé a des sorties 4-20mA que tu dois adapter pour en faire de la logique 0-5V.

Cordialement
jpbbricole

et fonctionne selon le principe des boucles de courant : bonne lecture

Bonjour;

A mon avis, vous avez trés probablement affaire à un codeur optique avec voie A et B chaqune à X points par tour.

La voie A est en quadrature sur la voie B, et la voie Z à 1 point par tour, comme dans cet article ci dessous

" Qu’est-ce qu’un codeur optique ?"
ICI

Les voies A et B permettent de déterminer le sens de rotation, la voie Z de compter le nombres de tour d'axe codeur.

Vous avez besoin de connaitre le nombre de points par tour de votre codeur et le nombre de tour par m de câble déroulé, je ne sais pas où vous allez trouver cela, peut-être est-ce à vous de le déterminer par des essais?

J'utilise un codeur optique "chinois" 1000pts par tour en ce moment sur un ESP32

Les voies A, B et Z sont dites à "collecteurs ouverts", c'est à dire qu'il faut mettre une résistance de PULLUP entre la sortie (sur le codeur) des voies et le +3.3V de l'ESP pour que le codeur sorte des niveau de tension (sinon, collecteur "ouvert", il y aura toujours 0V), et bien entendu relier ces sorties à des entrées ESP

Moi j'ai alimenté mon codeur avec une alimentation +5V indépandante, GND relié au GND de l'ESP, j'ai relié voie A et B à 2 entrées ESP, et j'ai mis des R de PULLUP de 2k entre voies A et B du codeur et la broche de 3.3V de l'ESP.

Pour le code, je vous laisse cherché un peu (je me suis aidé du Chat, il faut bien lui poser la question pour un codeur voie A, B et Z).

attention : on a affaire ici à des générateurs de courant, pas à des commutations au 0V !
on peut schématiser le fonctionnement ainsi :


pour des niveaux TTL (0~5V), l'idéal étant d'utiliser un comparateur pour "rendre francs" les niveaux logiques avant d'attaquer les entrées du µC
(R=150ohms pour du 0~3V3)

Bonsoir,

Je ne pensais pas que le 4-20mA soit utilisé sur ce genre de codeur, j'ai donc suspecté une erreur de la part du vendeur.

Effectivement mon interprétation (collecteur ouvert + PULLUP) n'est pas compatible avec du 4-20mA.

Merci pour les infos !

Je vais tester avec des résistances de pull-up et une alim 5V séparée comme tu le suggères.
Il me semble que mon capteur est 600pts par tour dans mon cas.

Merci encore !

Je vais vous donner un peu plus de détails sur mon système, car je ne suis pas sûr que le capteur que j’utilise soit le plus adapté.

Il s’agit d’un banc de test pour des garde-corps. L’idée est de tirer sur la main courante avec un treuil, et de mesurer le déplacement du garde-corps, d’abord sans charge, puis avec charge.
Je dois avoir une précision au millimètre.

Pensez-vous que le codeur rotatif est adapté pour ce type de mesure, ou voyez-vous un autre type de capteur qui permettrait une mesure plus précise ou plus simple à mettre en œuvre ?

Bonjour damien-fcn

Pour ton montage, réfères toi au schéma de @5_cylindres, vu que ce sont des sorties générateurs du courant.
Ce ne sont pas de "simples" sorties collecteur ouvert.
@jef59 l'a bien dit:

Tu peux utiliser une bibliothèque comme Encoder.h pour le lire.

Cordialement
jpbbricole

Bonjour damien-fcn

Donc le câble orange fait tourner l'axe de l'encodeur?
Ca peut âtre assez précis, dépendant du diamètre de la poulie sur l'axe de l'encodeur.

Un codeur à 600 pts donne 2400 tops par tour (quadrature)


Donc a une "finesse" qui doit être suffisante.

A+
Cordialement
jpbbricole

Bonjour,

Je ne suis pas mécano, mais il me semble que pour lire des mm, effectivement la résoluion doit être suffisante.

Par contre, c'est la rigidité du systéme qui ne me semble pas trés adapté à ce genre de mesure.

Il faut je présume que le câble soit bien enroulé, avec la lême tension à chaque mesure, qu'il soit accroché sans jeu.

Je pense que ce type d'encodeur + câble est plus adapté à mesurer des dizaines de cm que des mm, à vérifier.