J'ai un projet qui nécessite de faire I²C / I2C / TWI sur une longue distance (30 à 40 mètres).
J'ai vu certaines personnes suggérer de réduire la fréquence d'horloge à environ 500 Hz, pour atténuer les effets de la capacité d'une si longue ligne, je suppose? Les composants que j'utilise nécessitent au moins la fréquence d'horloge standard de 100 kHz. J'ai fait d'autres recherches et trouvé parmi les réponses à une autre question une suggestion d'utiliser un levier de vitesses P82B96. Dans la fiche technique, ils donnent des exemples de leur utilisation sur des lignes de 100 mètres, même:
j'ai rencontré une autre façon de déplacer les niveaux à travers une carte de dérivation d'adafruit , qui n'est qu'un mosfet (bss138) avec deux résistances de traction (une pour chaque côté / tension). Ils ont eu l'idée deune note d'application de NXP (AN10441) , et deux des canaux dessus pourraient être utilisés comme ceci:
Maintenant, je me demande: quelle solution est la meilleure? Ou y a-t-il quelque chose que j'ai oublié? Et aussi, le 5V est-il suffisant pour assurer une bonne connexion? Y aurait-il un avantage à utiliser une tension encore plus élevée comme 12V?
Réponses:
Je pense que vous êtes sur la bonne voie avec quelque chose comme le NXP P82B96. Si vous regardez la figure 14 et le texte associé, la fiche technique traite de l'utilisation d'une longueur de câble jusqu'à 250 m avec des débits de données supérieurs à 100 kHz.
Il existe de nombreux capteurs de température I2C qui peuvent vous donner une précision de quelques degrés Celsius sans étalonnage et sans circuits analogiques supplémentaires. Comme vous ramenez quand même les données pour traitement, il serait très facile de filtrer le bruit.
Si vous êtes préoccupé par la capacité de câblage, vous pourriez être mieux avec une paire torsadée non blindée plutôt qu'avec un câble blindé.
la source
Vous pouvez probablement vous en sortir avec les capteurs DS18B20 en utilisant un câble blindé CAT5 ou similaire. Ce ne sont que des mesures thermiques, donc si certaines lectures sont corrompues, vous pouvez rendre votre programme suffisamment robuste pour y faire face (c'est une bonne pratique de toute façon).
Pour une utilisation en chaîne, j'ai conçu ce que l'on appelle des contrôles RTU (rooftop unit) qui fonctionnent sur plusieurs capteurs passifs (ils utilisent des thermistances NTC interchangeables , qui ne nécessitent aucun étalonnage pour le chauffage de confort). Il est beaucoup plus facile de filtrer le bruit d'un capteur passif. Un autre ensemble d'installations (un complexe automobile majeur en Amérique du Nord) a utilisé des RTD en platine avec des conditionneurs de signaux - des dispositifs très précis et stables. Vous devez d'abord décider du capteur, puis regarder comment il pourrait être interfacé - l'une de ces options de capteur convient à votre application (bien que les RTD puissent être excessifs).
Dans le cas où ce n'est pas clair, je propose une configuration "en étoile" de capteurs autour de votre processeur.
Si vous voulez vraiment utiliser un "bus" (autre que monofil ou I2C), vous aurez besoin d'intelligence aux extrémités, ce qui signifie un processeur sous une forme ou une autre. Si vous optez pour le porc entier, vous voudrez peut-être envisager d'utiliser des capteurs sans fil qui communiquent via une bande ISM légale dans votre localité. Alternativement, vous pouvez utiliser un capteur par Pi et les faire parler via votre intranet WiFi.
la source