Aide Mesure angulaire avec Arduino

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

Philippe85

Ouvrier
En m'immiscant dans la question originale : merci pour cette solution AS5600 bien plus simple que la mienne. Je vais faire les tests
 
J

JMe87

Apprenti
Je savais pas que c’etait aussi performant, j’en ai 2 en route prets a prendre l’avion :wink:
 
S

SuperSpinach

Compagnon
Bonjour à tous,

J'ai regardé un peu le AS5600 et effectivement ça à l'air vraiment bien !

En plus, j'ai vu ce capteur ci qui à l'air d'utiliser la même puce :


Quelqu'un connait la marque ?

Maintenant je me demande comment brancher le capteur car j'avais prévu d'utiliser dans mon système plusieurs leviers (donc plusieurs capteurs ) + des boutons. Si j'ai bien compris ces capteurs fonctionnent avec des prise i²c mais est-il possible de les brancher différemment ?

Faut-il un shield avec des prises i²c si je veux brancher plusieurs capteurs ? Est-il toujours possible de brancher des boutons sur les prises analog avec un shield ?

Merci d'avance,
 
J

jpbbricole

Compagnon
Bonsoir SuperSpinach
Quelqu'un connait la marque ?
Oui, c'est une référence. (pour moi :wink:)
Si j'ai bien compris ces capteurs fonctionnent avec des prise i²c mais est-il possible de les brancher différemment ?
Non
Faut-il un shield avec des prises i²c
Non, tout les Arduino "standards" on un bus i2C dont les branchement du bus sont nommés SCL et SDA, si ce n'est pas le cas comme sur certains UNO ou le Nano , c'est A4 SDA et A5 SCL.
Est-il toujours possible de brancher des boutons sur les prises analog avec un shield ?
Oui, sauf A4 et A5 sur un UNO ou un Nano.
j'avais prévu d'utiliser dans mon système plusieurs leviers (donc plusieurs capteurs )
On arrive au noeud du problème, en effet, sur un bus i2C chaque module ou périférique a sa propre adresse, on peut en mettre, théoriquement, 127 (je crois). Or le AS5600 a une adresse fixe 0x36 ou 54 décimal (0110110 in binary), ce qui veut dire que tu ne peut en mettre qu'un sur ton bus i2C.
Pour contourner ce problème, il existe des miltiplexeurs de bus i2C comme TCA9548A qui permet de gérer 8 périfériques.

J'ai commandé des AS5600 et j'ai des TCA9548A, je pourrais te "piloter" si nécessaire.

A+
Cordialement
jpbbricole
 
Dernière édition:
S

SuperSpinach

Compagnon
Bonjour,

J'ai été assez occupé et je n'ai pas eu l'occasion d'étudier dans le détail le multiplexeur mais merci beaucoup @jpbbricole pour ton retour détaillé. Je vais surement commander au moins 1 capteur pour faire mes premiers essais dans les jours qui suivent lorsque j'aurais fais un peu plus de recherche.

@Jmr06 Je comptais utiliser entre 7 et 12 capteurs mais ils n'ont pas tous besoin d'être précis (idéalement 6 doivent être de bonnes qualité comme les AS5600) . Mais j'aimerais qu'ils soient tous résistant à l'usure donc je ne suis pas convaincu par l'utilisation de potentiomètres.

Aurais-tu des suggestions ?
 
J

jpbbricole

Compagnon
Bonjour SuperSpinach
Je comptais utiliser entre 7 et 12 capteurs
Le TCA9548A multiplexe 8 périphériques et il peuvent être chaînés en modifiant leur adresse (pin A0, A1, A2) Donc tu a droit à 64 périfériques.

Cordialement
jpbbricole
 
P

pailpoe

Compagnon
Salut,
Tu peux sinon te créer ta propre routine i2c qui pourra lire les données sur plusieurs capteur en parallèle.
Tu auras besoin d’une ligne SCL ( clock) commune à tous les capteurs et x lignes SDA qui iront à chaque capteurs. C’est pas compliqué à coder
 
S

SuperSpinach

Compagnon
Bonjour,

Merci @jpbbricole j'ai fais plus de recherche sur le multiplexeurs et j'ai pu confirmer ce que tu viens de me dire. Je peux donc mettre plus que 8 leviers si le besoin se présente :roxxx: .

Je vais donc commander un capteur Grove (comme j'ai cité plus haut) mais je me demandais comment le brancher sur mon arduino (j'ai une carte Mega2560 Elegoo).
Mon SDA correspond au pin 20 et mon SCL correspond au pin 21.
Donc il me faudra une prise I²C à brancher dans le capteur pour ensuite brancher les fils sortants sur les pins 20 et 21 c'est ça ? (+ le GND et le 5V)

J'ai aussi une autre question vis-à-vis de la partie programmation : est-il de programmer un système d’arrêt du capteur ?
Je m'explique : il y a certains leviers que souhaite pouvoir désactiver. Pour cela j'avais penser rallonger la course du levier (pour une course totale d'environ 100°) pour le rendre inopérant en fin de course. Est-ce faisable en programmation ? Cela m'éviterait l'utilisation d'un autre capteur/bouton pour détecter la "fin de course".
 
S

SuperSpinach

Compagnon
Salut,
Tu peux sinon te créer ta propre routine i2c qui pourra lire les données sur plusieurs capteur en parallèle.
Tu auras besoin d’une ligne SCL ( clock) commune à tous les capteurs et x lignes SDA qui iront à chaque capteurs. C’est pas compliqué à coder

Cela nécessite t-il toujours l'utilisation d'un multiplexeurs ? Y a-t-il une différence pratique au niveau du résultat ?
 
J

jpbbricole

Compagnon
Bonsoir SuperSpinach
Mon SDA correspond au pin 20 et mon SCL correspond au pin 21.
Oui, c'est bien ça.
Donc il me faudra une prise I²C à brancher dans le capteur pour ensuite brancher les fils sortants sur les pins 20 et 21 c'est ça ? (+ le GND et le 5V)
Oui, mais ne pas oublier que ces fils SDA, SCL font le bus i2C avec GND et VSS. Ces fils sont communs à tout les interfaces i2C connectés sur le MEGA, c'est le principe du bus. Ces interfaces sont différenciés par leur adresse. Sauf que dans ton cas, il y a multiple interface avec la même adresse ce qui nécessite un multiplexeur comme le TCA9548A . Donc ton bus i2C sera connecté du Mega vers les bornes du bus i2C du multiplexeur. Multiplexeur sur lequel seront connectés tes AS5600 par les fils SDA et SCL, +5V et GND étant commun à tout le montage. Une instruction comme openChannel(2); connectera le capteur se trouvant sur le canal 2 de ton multiplexeur, ce dernier sera, alors, accessible comme s'il était connecté directement sur le bus de ton Mega. Si, par exemple, tu voulait connecter un affichage LCD en i2C, ce dernier serait câblé sur les mêmes positions que ton multiplexeur.

Pour cela j'avais penser rallonger la course du levier (pour une course totale d'environ 100°) pour le rendre inopérant en fin de course. Est-ce faisable en programmation ?
Oui, bien sûre, une condition qui dit si positionCapteur2 est > 90, capteur2 = désactivé.

A+
Cordialement
jpbbricole
 
P

pailpoe

Compagnon
Il faut repartir des routines de gestion logiciel de l’I2C présente dans arduino et la carte et modifier pour ajouter la lecture et écriture en parallèle sur plusieurs capteurs.
Sa sera pas une liaison gérée par le hardware mais ça devrait pas être très gênant.
 
J

jpbbricole

Compagnon
Bonjour pailpoe
As-tu un exemple de code?

Cordialement
jpbbricole
 
P

pailpoe

Compagnon
Je suis en vacances pendant encore une semaine avec juste mon tel ...
Mais oui, je peux trouver ça à mon retour.
 
S

SuperSpinach

Compagnon
Bonjour,

Je vais attendre ton retour pailpoe, si ta technique permet d'obtenir le même résultat ça serait super ! Ta technique est-elle utilisable avec des capteurs qui ont la même adresse ?

@jpbbricole Merci pour l'explication ça me permet de mieux assimiler les infos que j'ai trouvé sur le net. Pour mon premier essai je vais acheter un seul capteur (pour me familiariser et faire quelques tests) et j'acheterai plus tard le multiplexeur avec plus de capteurs.

Pour le branchement j'ai trouvé ces câbles :

https://www.conrad.fr/p/cable-grove...Uz88FDILr4G4K9gLDvxoCwH4QAvD_BwE&gclsrc=aw.ds

Mais du coup je vais être obligé de couper une des 2 prise pour pouvoir brancher/souder les câbles sur ma carte Mega2560 ou le multiplexeurs.
Y a t-il une alternative à ces câbles ?
 
J

jpbbricole

Compagnon
Mais du coup je vais être obligé de couper une des 2 prise pour pouvoir brancher/souder les câbles...
Ou acheter ce type de connecteurs.
1597411390844.png
et de mettre le tout sur une plaque prototype pour Arduino Mega.
1597411569364.png


Attention de ne pas choisir du tout fait comme ceci
1597411721950.png

c'est des bus câblés, comme tes capteurs ont tous la même adresse tu dois câbler toi-même.

j'acheterai plus tard le multiplexeur avec plus de capteurs.
Je vais faire un montage avec le multiplexeur pour tester la solution.

A+
Cordialement
jpbbricole
 
P

pailpoe

Compagnon
Oui, on peut travailler avec des capteurs ayant la même adresse.
La lecture des capteurs se fait en parallèle.
 
S

SuperSpinach

Compagnon
Bonsoir,

@jpbbricole Merci pour toutes ces infos. Dans mon kit Mega2560, il y a une plaque prototype (je ne savais pas à quoi cela servait). Il me manque donc juste les prises 4 broches.
Si j'ai bien compris il suffit juste de brancher ces prises dans les trous et ensuite relier les prises aux bons pin. (Faut-il les souder ?)
Mais les trous au centre ne semble pas être relié à entre eux... Est-ce normal ?

Je vais commander les prises, les 2 capteurs et les câbles 4 pins. Je comptais acheter tout cela sur Seeed (les prix sont plus intéressant que AliExpress), quelqu'un connais ?

@zed Merci pour le lien. J'ai déjà pas mal de câbles comme ceux là avec mon kit.

@pailpoe D'accord, je vais attendre ton retour sur le code. Ça me permettra d'avoir 2 solutions pour le branchement (au cas où)

Merci d'avance
 
J

jpbbricole

Compagnon
Si j'ai bien compris il suffit juste de brancher ces prises dans les trous et ensuite relier les prises aux bons pin. (Faut-il les souder ?)
Oui, c'est le principe, tu disposes tes composants, pour toi les connecteurs Grove (sur l'image c'est pas de Grove mais des JST-XH), sur le dessus
1597570626650.png

et tu les soudes depuis le dessous. Les pastilles dessus et dessous sont reliées entre elles par leur trous qui est métallisé. Il faut souder une pin et, ensuite, contrôler que le connecteur plaque bien sur le PCB , ensuite, souder le reste. Il est préférable de mettre le connecteur mâle pendant le soudage, car, si le fer à souder est très chaud, on risque que les pin perdent leur alignement.

Mais les trous au centre ne semble pas être relié à entre eux... Est-ce normal ?
Oui, c'est à toi de faire les liaisons, ainsi:
1597571407430.png

J'utilise des restes de câbles en nappe ainsi:
1597571478626.png


A+
Cordialement
jpbbricole
 
S

SuperSpinach

Compagnon
Bonsoir,

J'ai commandé les composants aujourd'hui. Délai de livraison : 3 à 4 semaines.

Merci @jpbbricole pour l'explication. Mais est-il possible de désouder les composants une fois les essais réalisés ?
 
J

jpbbricole

Compagnon
Bonjour SuperSpinach
Mais est-il possible de désouder les composants une fois les essais réalisés ?
Avec des moyens simples, non. C'est du aux trous métallisés. Au début d'un projet, il est préférable de travailler avec une plaque d'essais dans ce genre
1597743199597.png


(en français ça s'appelle un breadboard :wink: ) et, après, monter le tout sur la plaque à trous de MEGA.

A+
Cordialement
jpbbricole
 
S

SuperSpinach

Compagnon
Merci jpbbricole,

Les prises 4 pins peuvent-elles être branchées dessus ? La distance entre les trous est-elle normalisée pour tout les connecteurs ?
 
S

SuperSpinach

Compagnon
Bonsoir jppbricole,

Merci beaucoup pour le montage et le code ! J'ai reçu les miens hier mais je n'ai pas encore eu le temps de faire quoique ce soit. Je vais me pencher dessus en fin de semaine quand j'aurais un peu plus de temps.

Quels aimants as-tu utilisé ? Je suis assez de curieux de savoir la taille et la forme.

Bonne soirée
 

Sujets similaires

wika58
Réponses
261
Affichages
18 516
midodiy
midodiy
P
Réponses
33
Affichages
16 100
wika58
wika58
Dudulle
Général langage MMBASIC
Réponses
8
Affichages
842
Dudulle
Dudulle
T
Réponses
2
Affichages
25 481
Tristan l'apprenti
T
osiver
Réponses
14
Affichages
36 137
osiver
osiver
R
Réponses
55
Affichages
53 103
jacounet
jacounet
didpoutrator
Réponses
7
Affichages
1 584
didpoutrator
didpoutrator
T
Réponses
28
Affichages
3 085
Tristan l'apprenti
T
N
Réponses
25
Affichages
1 734
jojomouth
J
Haut