Aide Mesure angulaire avec Arduino

  • Auteur de la discussion SuperSpinach
  • Date de début
S

SuperSpinach

Compagnon
Bonjour à tous les experts en électronique,

(Si le sujet est mal placé, merci d'avance aux modérateurs de le déplacer.)

C'est la première fois que j'écris dans cette rubrique car je suis en train de travailler sur un projet nécessitant de l’électronique. Je tiens à préciser que le projet n'en est qu'à la phase de réflexion.

Pour faire simple, je souhaites utiliser une carte Arduino pour faire des mesures angulaires. L'idée étant de mesurer la différence d'angle d'un levier sur une course d'environ 90°.

J'ai d'abord pensé à utiliser des potentiomètres mais j'ai ensuite découvert les capteurs à effet hall. Ces derniers semblent plus précis, pour plus longtemps, mais je ne suis pas sur de comprendre toutes les contraintes associées à leurs utilisations

Il semblerait que le capteur soit livré nu et qu'il faut ensuite fabriquer le reste du capteur. Quelqu'un peut-il m'expliquer comment marche ces capteurs, ce qu'il faut faire pour les rendre opérationnels ? Comment faire pour les choisir ? Sont-ils vraiment plus avantageux que des potentiomètres ?

Je tiens à préciser que je n'y connais rien en électronique et que j'apprends les bases.

Merci à tous
 
Dernière édition:
J

jpbbricole

Compagnon
Bonjour SuperSpinach
j'ai ensuite découvert les capteurs à effet hall.
J'ai utilisé un MLX90316KDC, qui sort une tension de 0 à +V en fonction de l'angle de rotation de l'axe nord/sud de l'aimant, il y a aussi une version qui sort du PWM en fonction de l'angle. L'avantage de cette solution, est que si tu arrêtes le montage, à l'allumage tu retrouves la mesure actuelle de ton angle.
Une autre solution est le codeur rotatif, mais il faut refaire un 0 angle à chaque démarrage de l'installation. Les impulsions données peuvent être multipliées par 4 pour augmenter la précision, celà dépend la façon de lire les signaux A et B.

Cordialement
jpbbricole
.
 
M

M4vrick

Compagnon
Hello,

Il va manquer des infos pour connaitre exactement ton besoin mais à première vue :

Un capteur à effet Hall est un capteur de position, c'est à dire qu'il se comporte un peu comme un interrupteur. Tu n'as pas de sortie 'progressive' pour te donner la position de ton levier.
Un potentiomètre me parait plus adapté.

Ensuite tu parles d'une différence d'angle, il s'agit d'une différence entre quoi et quoi ? Comment se comporte ton mécanisme?

EDIT: on en apprends tous les jours, j'ai découvert avec la réponse de jpbbricole les capteurs à effet Hall progressifs :mrgreen:
 
S

SuperSpinach

Compagnon
Merci pour vos réponses,

@M4vrick Dans l'idée, mon levier aura une course d'environ 90°. Lorsque le levier est à 0° je souhaite avoir une valeur (0.2 V si j'ai bien compris) et à 90° je souhaite avoir une autre valeur (4.8V je crois). Je souhaite ensuite faire correspondre ces tensions à des pourcentage : 0.2V = 0% et 4.8V = 100%. L'idée est d'avoir un pourcentage qui augmente ou qui diminue tout au long de la course du levier (j'espère avoir étais clair avec ma faible compréhension en électronique).

@jpbbricole
L'avantage de cette solution

Quand tu parles de "cette" solution tu parles de la sortie en PWM ?

Concernant la précision, comment fait-on pour définir la précision d'un capteur à effet Hall ?
 
Dernière édition:
J

jpbbricole

Compagnon
Bonsoir SuperSpinach
Quand tu parles "cette" solution tu parles de la sortie en PWM
Non je parlais de la solution MLX90316KDC, qui a 2 solutions de sortie, en Volts ou en PWM, mais, pour toi, c'est mieux de prendre l'option volts, qui se traduira, dans l'Arduino, en une valeur de 0 à 1023 pour 360°

Cordialement
jpbbricole
 
J

Jmr06

Compagnon
Bonsoir SuperSpinach

Non je parlais de la solution MLX90316KDC, qui a 2 solutions de sortie, en Volts ou en PWM, mais, pour toi, c'est mieux de prendre l'option volts, qui se traduira, dans l'Arduino, en une valeur de 0 à 1023 pour 360°

Cordialement
jpbbricole

J'utiliserai la sortie numérique du 90316 (liaison série avec l'arduino). Pour moi, c'est le plus simple et sûre.
 
P

pinou29

Compagnon
Bonjour.
Pardon pour cette question sûrement ridicule, pourquoi ne pas prendre directement un rapporteur d'angle numérique ?
C'est tout fait, pas cher et ça règle les problèmes des faibles connaissances en électronique.



Ou alors j'ai pas compris la question.
Bonne bricole.
Bernard.
 
S

SuperSpinach

Compagnon
Bonjour à tous,

@pinou29 Dans mon cas je ne cherche pas à mesurer un angle mais plutôt d'envoyer un signal à un ordinateur en fonction de l'angle d'un levier.

@jpbbricole Ou est-il possible d'acheter ces capteurs MLX90316KDC (sans que ça prenne 3 semaines de livraison de préférence et sans devoir acheter 1000 unités :mrgreen: ) ?
Que reste t-il à faire pour rendre opérationnel le capteur ? Fixer un aimant à quelques dixièmes de distance du capteur ? Comment marche les branchements sur ces capteurs ?
 
E

enguerland91

Compagnon
Comme souvent le besoin est incomplètement précisé. Il me semble que des propositions plus pertinentes seraient faites si on connaissait la chaîne de mesure entièrement. En effet :"mais plutôt d'envoyer un signal à un ordinateur en fonction de l'angle d'un levier." cela me semble insuffisant. Le potentiomètre linéaire est pour moi le capteur le plus satisfaisant mais encore faut-il savoir qu'est ce que l"on fait de la tension qu'il délivre
 
S

SuperSpinach

Compagnon
Comme souvent le besoin est incomplètement précisé

Il me semble que le besoin est clairement précisé mas je vais expliquer ma problématique une troisième fois. (en espérant être plus clair)

Je souhaite mesurer la position d'un levier dont la course angulaire sera d'environ 90°. Afin de mesurer la position de ce levier je souhaite utiliser un capteur à effet Hall qui mesurera l'angle du levier en fonction d'une position de référence. Mes questions concernent donc ces fameux capteurs à effet Hall.

En effet :"mais plutôt d'envoyer un signal à un ordinateur en fonction de l'angle d'un levier." cela me semble insuffisant

N'est-ce pas là le principe d'un capteur relié à une carte Arduino ?

savoir qu'est ce que l"on fait de la tension qu'il délivre

La tension je l'envoie dans ma carte Arduino.
 
J

jpbbricole

Compagnon
Bonjour SuperSpinach
Ou est-il possible d'acheter ces capteurs MLX90316KDC
J'ai utilisé la version MLX90316KDC-PPA (PréProgramméAnalogique), que j'avais trouvé, à l'époque (10-12 ans :smileyvieux: ) chez Conrad, mais il n'y en a plus. Mais trouvé du côté de nos amis Chinois ou éventuellement chez Mouser, attention à ce que la sortie soit analogique Pour les chinois, c'est exactement la même référence que le miens, celui de Mouser est légèrement différente, mais ça devrait jouer.
Attention, c'est en boîtier SOIC-8, pas facile à souder. Pour l'aimant, il faut faire attention à l'orientation de l'axe nord/sud, j'ai utilisé un aimant en forme de pastille que j'ai cassé en 2 et ai présenté l'axe sur le capteur.

Le schéma est assez simple:
1596471998290.png

La pin 3 de CN1 est à connecter sur A0, par exemple, de l'Arduino et la position est lus par un petit bout de programme
J'essayerai de refaire ce montage avec le capteur MLX90316KDC-PPA.

A+
Cordialement
jpbbricole
 
Dernière édition:
Z

zed

Compagnon
Ce serait tellement plus simple avec un potentiomètre...
Quel est la précision angulaire recherchée ?
Quelle est la fréquence de sollicitation du levier à contrôler ?
 
J

JMe87

Apprenti
Bonjour a tous,
pour info, SuperSpinach etait present sur le forum ce jeudi 06/08/2020 a 14h30.
Il ne s'est pas donne la peine de venir ici pour repondre aux questions posees par les volontaires qui se proposent de l'aider.
Niveau savoir-vivre, on a deja vu mieux.
Peut etre a-t-il trouve une solution, alors il pourrait nous en informer.
Bonne apres-midi.
Jacques
 
S

SuperSpinach

Compagnon
Bonjour a tous,
pour info, SuperSpinach etait present sur le forum ce jeudi 06/08/2020 a 14h30.
Il ne s'est pas donne la peine de venir ici pour repondre aux questions posees par les volontaires qui se proposent de l'aider.
Niveau savoir-vivre, on a deja vu mieux.
Peut etre a-t-il trouve une solution, alors il pourrait nous en informer.
Bonne apres-midi.
Jacques

Bonjour,

Oui JMe87, j'ai était présent sur le forum aujourd'hui pour faire autre chose que répondre à mon post. Je te remercie de faire la police pour tout le monde, le forum s'en porte bien mieux grâce à toi...

Il s'avère que si je n'ai pas répondu aux dernières réponses des gens du forum c'est parce que j'ai la décence de faire un minimum recherches avant d'exprimer mes idées.

J'ai donc, suite aux réponses de jpbbricole et de zed, fais plus de recherches concernant les capteurs, les potentiomètres, le fonctionnement des Arduino sans oublier la façon de coder sur Arduino. Je rappelle encore une fois que je suis débutant dans le domaine de l'électronique et il est pour moi parfois difficile de suivre les réponses données par les membres de ce forum.

Maintenant je me demande bien qui manque de savoir vivre entre celui qui espionne et celui qui prend plus de 2 jours pour répondre. On a encore le droit d'avoir une vie privée, il me semble...

Bonne journée aussi
 
P

pailpoe

Compagnon
Salut,
La vrai question c’est la précision et la résolution de la mesure ?
Les solutions ne sont pas les mêmes si tu veux une précision de 1degre ou de 0.0001 degré.
 
S

SuperSpinach

Compagnon
@zed et @pailpoe

Une précision angulaire aux alentours de +/-0.1° me suffirait largement. Sur ce point il semblerait que les potentiomètres suffiraient.

Mais le levier risque d'être actionné sur de faibles courses angulaires très souvent donc des capteurs à effet hall seraient plus intéressants pour la longévité. (si je pouvais éviter de changer l'électronique chaque années ça serait un +).


@jpbbricole Merci beaucoup pour le schéma et le code ça me permet de mieux visualiser. Faut-il donc fabriquer un PCB pour fixer le capteur dessus avec les condensateurs ?

J'ai cherché de mon coté des alternatives au capteur que tu m'as proposé et j'ai trouvé ceci :

En pratique, quel est la différence entre un capteur SOIC-8 et un capteur avec 3 broches ?
Il semblerait que le capteur à 3 broches serait plus facile à mettre en oeuvre en connectant les 3 broches à la terre, le +5V et l'A0.

Ce capteur fonctionnerait-il pour mon application ? Je ne comprends pas grand chose à la documentation technique fournie mais les paramètres de bases semblent convenir.

Et pour les aimants j'ai trouvé ce site : https://www.123-magnet.com/cat-aimant-neodyme-303.htm

Ils font des aimants néodyme et il me resterait plus qu'à fixer l'aimant sur mon levier et faire un support pour le capteur.
Des aimants néodymes fonctionneront-ils ?

Merci d'avance.
 
J

JMe87

Apprenti
Le but etait de te faire reagir, ca a marche, 19 minutes.

Treve de plaisanteries. Pour resoudre ton probleme je t'invite a regarder ceci :
AS5600
disponible sur Aliexpress deja monte sur un circuit imprime.

Tres bien documente, librairie disponible ici :
https://github.com/Seeed-Studio/Seeed_Arduino_AS5600

Il y a meme des videos sur Youtube, je te laisse chercher.

Ce circuit sort des donnees digitales, je te conseille de les utiliser plutot que d'utiliser la sortie analogique qui est source de problemes avec Atmega 328 (utilise par Arduino).

Je dis ca, je dis rien.

Bon courage
 
P

Philippe85

Ouvrier
Ayant la même problématique, mesurer L'angle d'une pedale, la solution en cours est une carte gy-6500 ou MPU 6500 un accéléromètre à 0.01 degré pour qqs euro pour arduino.
 
J

jpbbricole

Compagnon
Bonjour JMe87
Le but etait de te faire reagir, ca a marche, 19 minutes.
Un peu facile de s'en tirer avec ce type de pirouette, surtout que ta remarque n'avait tout sauf l'air d'une plaisanterie.

Bon, c'est pas mes oignons, c'est pas mon fil mais....

Cordialement
jpbbricole
 
Dernière édition:
J

jpbbricole

Compagnon
Bonjour SuperSpinach

Faut-il donc fabriquer un PCB pour fixer le capteur dessus avec les condensateurs ?

On trouve de petits PCB tout faits pour ça, il faut juste un fer à souder assez fin, tu peux même fixer les condensateurs dessus.
1596739704792.png

En pratique, quel est la différence entre un capteur SOIC-8 et un capteur avec 3 broches ?
C’est du On/Off
Et pour les aimants
Il n’y a pas besoin d’aimant très puissant, j’en ai piqué un petit rond dans une de ces pincette aimantée qui on prit possession de la porte de mon frigo. Il faut surtout bien l’orienter. Dans le cas d'un aimant de forme pastille, je crois qu'il faut le mettre à la verticale, contrairement au dessin ci-dessous, il faut que j'essaie.
1596739749586.png

Ce capteur fonctionnerait-il pour mon application ?
Oui, certainement, le problème est, sur l’Arduino te donnes, avec ce capteur, une valeur de . à 1023 pour 360°, ton mouvement est 90° donc une definition de 1024/4 = 256 positions.
Si c’est suffisant pour toi ?

Cordialement
jpbbricole
 
J

jpbbricole

Compagnon
Bonjour Jmr06 et SuperSpinach
Je pense que @SuperSpinach parlait du capteur "3broches", et ce capteur ne convient pas.
Tu as tout à fait raison, mauvaise lecture de ma part :smt021 , c'est clair, ces capteurs 3 broches sont des On/Off donc la réponse est non.
Si il y a des difficultés pour faire un circuit, pourquoi ne pas utiliser un tout fait
Excellent, le AS5600, il y en a même qui semblent livrés avec l'aimant qui va bien, il a l'air de fonctionner comme. le MLX90316KDC que j'avais proposé.
Les différences essentielles sont la connexion à l'Arduino en i2C et la définition sera en 12 bits donc 4096 qui divisé par 4 pour 90° = 1024, donc plus "fine" que ma proposition. Il y a même une librairie pour l'Arduino.

Cordialement
jpbbricole
 
J

JMe87

Apprenti
D'ailleurs, @jpbbricole comment fais-tu pour connaitre le nombre de divisions

il suffit de lire le datasheet dont je t'ai envoye le lien dans le message #21 a la page 1
 
J

jpbbricole

Compagnon
D'ailleurs, @jpbbricole comment fais-tu pour connaitre le nombre de divisions
D'abord en regardant sur le site de vente qui me dit 12 bits de résolution, qui, en binaire donne 4096 possibilités, en vertu du principe qui dit que le bit 0 vaut 1, le 1 vaut 2, le 3 vaut 4, 8, 16, 32, 64, 128, 256, 512, le 10 vaut 1024, et le 11 (12ème) vaut 2048.
En supposant que les 12 bits soient à 1 tu additionnes le tout et tu arrives à 4095 donc de 0 à 496 donc 4096 possibilités.


Cordialement
jpbbricole
 

Sujets similaires

wika58
Réponses
261
Affichages
18 424
midodiy
midodiy
P
Réponses
33
Affichages
16 023
wika58
wika58
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
840
Dudulle
Dudulle
T
Réponses
2
Affichages
25 414
Tristan l'apprenti
T
osiver
Réponses
14
Affichages
36 064
osiver
osiver
R
Réponses
55
Affichages
53 031
jacounet
jacounet
didpoutrator
Réponses
7
Affichages
1 581
didpoutrator
didpoutrator
T
Réponses
28
Affichages
3 081
Tristan l'apprenti
T
N
Réponses
25
Affichages
1 732
jojomouth
J
Haut