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 ?
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.
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 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)
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.
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 ?
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.