Auteur Sujet: Câblage I2C et servos  (Lu 261 fois)

JPM06

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Câblage I2C et servos
« le: juillet 14, 2020, 07:03:18 pm »
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

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1961
  • 100% Arduino et N
    • Voir le profil
Re : Câblage I2C et servos
« Réponse #1 le: juillet 14, 2020, 10:34:14 pm »
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
Cordialement

simontpellier

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : Câblage I2C et servos
« Réponse #2 le: juillet 15, 2020, 01:48:21 pm »
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

  • Newbie
  • *
  • Messages: 9
    • Voir le profil
Re : Câblage I2C et servos
« Réponse #3 le: juillet 18, 2020, 12:46:14 pm »
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

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Re : Câblage I2C et servos
« Réponse #4 le: juillet 26, 2020, 07:05:35 pm »
... 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)

trimarco232

  • Newbie
  • *
  • Messages: 40
    • Voir le profil
Re : Câblage I2C et servos
« Réponse #5 le: juillet 29, 2020, 12:13:24 am »
normalement en i2c, ça le fait :
- baisser la vitesse
- mettre les pull-up à 4.7kR à chaque extrémité (typiquement, arduino et dernier module i2c)
- les registres du PCF8574 peuvent être lus, donc vérification après écriture pour être tranquilou, voire reverification pour être blindé

vers les servos, on a moins de moyens, mais je pense que mettre une 4k7 entre la commande et le - (ou le + …), au droit du servo, doit aussi améliorer les choses
« Modifié: juillet 29, 2020, 07:12:37 am par trimarco232 »