Parlons Arduino > Trucs & astuces
Câblage I2C et servos
JPM06:
Bonjour à tous,
J'envisage de motoriser les aiguillages d'une gare avec des servomoteurs commandés par des modules I2C PCA9685.
Je voudrais optimiser / minimiser le câblage et je me pose les questions suivantes:
- quelle est la longueur maximum d'un bus I2C?
- le bus I2C est-il sensible aux parasites générés par les trains (ici, en conventionnel)?
- quelle est la distance maximum acceptable entre le générateur PWM (ici PCA9685) et les servos?
- peut-on commander les servos avec un seul fil par servo, les alims étant distribués de servo en servo?
Merci pour tout retour d'expérience sur la question.
Dominique:
Bonjour,
Une recherche dans le forum avec les mots « parasites I2C » donne une dizaine de réponses.
Il y a aussi pas mal de discussions sur le câblage.
Le bus I2C n’est pas le plus sûr moyen pour commander des servos et il est fait principalement pour des distances (très) courtes (Inter-Integrated-Circuit)
On peut voir une comparaison des bus ici : https://socialcompare.com/fr/comparison/comparison-of-network-buses-for-arduino-usage
Bon courage
simontpellier:
Bonjour,
étant ces temps ci particulièrement sensible à ce qui touche à l'I2C, j'étais obligé de regarder de quoi il était question !
et constater que je ne sais pas répondre aux questions, sauf pour la dernière : oui bien sûr, sous réserve que j'ai bien compris la question, peu importe que la tension provienne d'un nœud ou d'une antenne. Et aussi confirmer que, en effet, l'I2C est chatouilleux.
Pour le reste... chaque configuration ayant sa spécificité, j'imagine qu'il n'y a pas de réponse absolue. Je peux néanmoins confirmer qu'un bus I2C n'est pas sans surprises, mais je vois que vous êtes averti. Dans mon cas pourtant, ça n'est jamais sur le PCA9685 que j'ai eu des soucis.
Je signale au passage qu'il y a sur LOCODUINO des articles sur un sujet "satelliteV1" qui donnent à la fois à réfléchir sur l'organisation générale du contrôle commande et une parade possible aux problèmes récurrents des bus I2C. Solution qui répond de plus au souci de réduction du câblage.
Bonne lectures
JPM06:
Merci à tous deux,
Je précise qu'il n'est pas question d'équiper tout un réseau, mais seulement une gare qui fait à peu près 1,5m x 2m.
L'Arduino serait dans le poste de commande, et les modules PCA9685 à une distance de 50cm à 1m de lui, au plus.
Ensuite les servos seraient au plus à 2m des PCA9685.
Il se trouve que j'ai déjà réalisé des montages satisfaisants en I2C, avec un bus de 3 m, testé jusqu'à une dizaine de mètres, sans module additionnel, mais dans un environnement propre et avec un beau câble (câble série).
Je pense que tout dépend ce qu'on fait du bus I2C: si le maitre se contente d'envoyer des commandes aux esclaves, il est bien plus tolérant que si on doit récupérer des données de l'esclave vers le maître (c'est une question de clocking). Il est donc assez facile de commander des afficheurs ou des PCF8574 à une "certaine" distance. Mais je ne sais pas ce que fait la bibliothèque PCA9650.
(Au passage je remercie Aranacorp pour m'avoir indiqué comment commander plusieurs modules).
Il y a aussi des astuces au niveau de l'utilisation du bus, comme travailler ou pas en mode rapide...
Concrètement, je vais faire des essais, et en cas de pb, envisager une solution CAN.
Cordialement
simontpellier:
... une solution extrême
https://shop.mchobby.be/fr/cartes-breakout/1079-extension-bus-i2c-differentiel-longue-distance-3232100010796.html
Mais bon à savoir tout de même, non?
(pour encore mieux apprécier le CAN)
Navigation
[#] Page suivante
Utiliser la version classique