Hardware splitter multiplexer I2C board

Bonjour à tous,

Je me décide a poster pour la première fois sur ce forum car j'ai un petit soucis matériel pour lequel je recherche deux petit conseils.

Voila je suis sur un projet avec:

-Arduino Uno Rev 3 + shield EasyVR (master) de reconnaissance vocale

-Arduino mini (slave) qui contrôle des LED (une centaine)
-Arduino uno (slave) + adafruit shield PWM 16 servo
-Arduino uno (slave) qui contrôle une carte syren 10A et une carte MP3 trigger sparkfun
-carte motion controller (prototype).

Je souhaite contrôler tous ce petit monde via un bus I2C pour sa simplicité d'utilisation. Les distance des cartes seront inférieur à 1 mètre. J'utilise un mode de communication très simple: Master envoi un ordre sous forme d'un caractère (A, B, ...) un ou des slaves exécute une routine en conséquence.

Alors comme vous l'imaginez niveau câblage ça va être un joyeux bor**l et je recherche donc une board I2C afin de structurer tous ça.

Auriez-vous un lien vers une carte multiplexer/ splitter I2C ?

La carte proposé par adafruit ne me plait pas car elle exclue GND et VCC. Alors a moins que l'on puisse alimenter toutes les cartes esclave avec leur propre alimentation je ne voit pas l’intérêt de les sortir , on se retrouve avec les même soucis de câblage et en cas de soucis bonjour le debugage.

Ensuite on a le fameux sujet des résistance push-pull. C'est vraiment pas mon point fort. J'ai compris le principe mais j'ai vraiment pas le niveau en électronique de les calculer.

Existe t'il un calculateur en ligne ou un modèle standard de résistance ?

Comme je doit pas être le seul a avoir ce soucis et tend qu'a faire, existe-il une board I2C multiplexer qui intègre un espace de soudage de ce type de résistance (ou qui l'integre directement)

Voila un grand merci pour votre aide

1€34 chez Ali...

Mode d'emploi chez Adafruit.

Je comprends pas!
L'I²C est un bus donc, en principe, chaque abonné vient se brancher sur le bus. Pourquoi vouloir utiliser une carte pour raccorder les différents esclaves?
Si c'est juste un problème d'adresse sur le bus il suffit d'allouer une adresse différentes à chacune de tes cartes esclaves.
Et il ne doit y avoir qu'une paire de résistances de pullup sur le bus.

Bonjour,

Si les "slaves" ont des adresses I2C différentes, il n'y a besoin de rien : relier directement tous les SCL ensemble et tous les SDA ensemble. Dans votre cas, vous allez faire une étoile.

Pour les résistances de pull-up, la seule chose qui compte vraiment, c'est la tension de rappel. Le bus I2C a (entre autres) comme avantage de pouvoir mélanger des circuits 5V et des circuits 3V3.

Si vous n'avez que des 5V, rappel sur le 5V.
Si vous n'avez que des 3V3, rappel sur le 3V3.
Si vous avez les deux, rappel sur le 3V3. Ca c'est important pour ne pas griller les circuits 3V3 !

Les résistances : idéalement un couple de rappel sur chaque circuit, mais on peut en mettre moins. Si les fils sont longs, il vaut mieux mettre les résistances sur chaque circuit. Cela charge la ligne. Veillez à ce que les alims soient découplées par des capacités pas trop éloignées des résistances de rappel.

La valeur des résistances n'a rien de critique. Le courant doit être < 10mA. Typiquement, on met 1 à 2 mA.
Avec une longueur de fil importante (1m est importante en I2C car le bus est rapide), il vaut mieux mettre une résistance un peu plus faible, donc un courant un peu plus important, pour compenser les effets capacitifs de la longueur des fils. Mettons 2mA de courant.

Sous 5V (U=RI) cela donne une résistance R = 2,5 kOhm. Vous pouvez arrondir aux valeurs standard 2k2 ou 2k7 suivant ce que vous avez sous la main.
Si vous avez n circuits avec chacun une résistance, la valeur de chaque résistance Rx = R * n.

Par exemple, si vous avez 5 circuits (tous sous la même tension 5V) R = 5 * 2k2 = 11k, arrondi à la valeur standard de 10k.

Voila, j'espère que c'est clair,

Bonne bidouille,

MicroQuettas

lesept:
1€34 chez Ali...

Mode d'emploi chez Adafruit.

Merci . J'avais vu celle la chez adafruit mais le fait de vouloir sortir l'alim de la carte ne me plait pas trop . J'ai besoin d'avoir des faisceaux de câble assez compacte c'est a dire la même carte qui intègre en plus pin 5V et GND pour avoir une seul natte.

MicroQuettas:
Bonjour,

Si les "slaves" ont des adresses I2C différentes, il n'y a besoin de rien : relier directement tous les SCL ensemble et tous les SDA ensemble. Dans votre cas, vous allez faire une étoile.

Oui, et c'est justement la carte "centre de l'étoile" que je cherche :slight_smile: si en plus elle a 1 emplacement pour y fixer les resistance sa serait le bonheur :slight_smile:

Pour le reste un grand merci MicroQuettas pour tes explications . Avec ça je vais pouvoir acheter mes résistances

je pense que cette carte correspond a mes attentes.
Pour les resistance elles semblent integrer directement mais j'ai un doute. Pouvez vous me confirmer la chose ?

la carte ici

Re-bonjour,

Euh... si vos adresses I2C "slaves" sont différentes, cette carte est totalement inutile. Elle va vous compliquer la vie car il faut programmer le circuit.

Vous n'avez besoin que d'un bout d'epoxy pastillé pour y souder vos résistances (au plus simple 2 résistances de 2k2 sur le 5V si tout est en 5V), les condos de découplage entre 5V et GND et vos connecteurs, si connecteurs il y a.

Bonne bidouille

MicroQuettas

MicroQuettas:
Si les "slaves" ont des adresses I2C différentes, il n'y a besoin de rien : relier directement tous les SCL ensemble et tous les SDA ensemble. Dans votre cas, vous allez faire une étoile.

Franchement, l'étoile n'est pas la meilleur topologie pour un bus de ce genre. On est pas en ligne adaptée et il y a toujours le risque d'avoir des réflexions dans les branches. Il vaut mieux faire cheminer le bus de carte en carte

Est-ce que ce type de board pourrais convenir ?
On est a mi chemin entre perfboard et carte dédié :slight_smile:

http://aus3d.com.au/I2C-splitter-board

fdufnews:
Franchement, l'étoile n'est pas la meilleur topologie pour un bus de ce genre. On est pas en ligne adaptée et il y a toujours le risque d'avoir des réflexions dans les branches. Il vaut mieux faire cheminer le bus de carte en carte

Ok mais tu as besoin de 4 pin a chaque fois du coup SCL SDA in et Out ? C'est faisable sur des arduino Uno ?

Y'a pas de "In" et "Out" en I2C.
Tu fais un truc dans ce genre avec les branches "verticales" les plus courtes possible (quelques centimètres)

Bon je me lance . Merci pour le schémas Forhorse.

Je vais test un peu tous ça . Je commence regretter mon bon vieux mode de liaison Rx Tx :smiley:

merci a tous le monde