У меня есть проект, который требует сделать I²C / I2C / TWI на большом расстоянии (от 30 до 40 метров).
Я видел, как некоторые люди предлагали снизить тактовую частоту примерно до 500 Гц, чтобы смягчить влияние емкости такой длинной линии, я полагаю? Для компонентов, которые я использую, требуется как минимум стандартная тактовая частота 100 кГц. Я провел дополнительное исследование и нашел среди ответов на другой вопрос предложение использовать регулятор уровня P82B96. В техническом описании они приводят примеры использования их на линиях длиной даже 100 метров:
я сталкивался с другим способом смещения уровней через разделительную доску от adafruit , который представляет собой просто mosfet (bss138) с двумя подтягивающими резисторами (один для каждая сторона / напряжение). Они получили идею отпримечание о применении от NXP (AN10441) и два канала там могут использоваться следующим образом:
Теперь мне интересно: какое решение лучше? Или я что-то упустил из виду? А также, достаточно ли 5 В для обеспечения хорошего соединения? Будет ли преимущество в использовании еще более высокого напряжения, например, 12 В?
Ответы:
Я думаю, что вы на правильном пути с чем-то вроде NXP P82B96. Если вы посмотрите на рисунок 14 и соответствующий текст, в техническом описании обсуждается использование кабеля длиной до 250 м со скоростью передачи данных более 100 кГц.
Существует много датчиков температуры I2C, которые могут дать вам точность в несколько градусов Цельсия без калибровки и без каких-либо дополнительных аналоговых схем. Так как вы все равно возвращаете данные для обработки, отфильтровать шум будет очень просто.
Если вас беспокоит емкость проводов, вам лучше использовать неэкранированную витую пару, а не экранированный кабель.
источник
Вероятно, вы можете обойтись без датчиков DS18B20 с помощью экранированного кабеля CAT5 или аналогичного кабеля. Это только тепловые измерения, поэтому, если некоторые показания будут искажены, вы можете сделать вашу программу достаточно надежной, чтобы справиться с этим (в любом случае, это хорошая практика).
Для использования в сетевых ресторанах я разработал так называемые элементы управления RTU (на крыше), которые работают на нескольких пассивных датчиках (они используют сменные термисторы NTC, которые не требуют калибровки для комфортного обогрева). Гораздо проще отфильтровать шум от пассивного датчика. Другой набор установок (крупный автомобильный комплекс в Северной Америке) использовал платиновые RTD с формирователями сигналов - очень точные и стабильные устройства. Сначала вы должны выбрать датчик, а затем посмотреть, как он может быть подключен - любой из этих параметров датчика подходит для вашего приложения (хотя RTD могут быть излишними).
В случае, если неясно, я предлагаю «звездную» конфигурацию датчиков вокруг вашего процессора.
Если вы действительно хотите использовать «шину» (кроме однопроводной или I2C), вам понадобятся смарты на концах, что означает процессор в некоторой форме. Если вы идете изо всех сил, вы можете рассмотреть возможность использования беспроводных датчиков, которые обмениваются данными через какую-то полосу ISM, которая разрешена в вашей местности. В качестве альтернативы, вы можете использовать один датчик на Pi и заставить их общаться друг с другом через вашу интранет-сеть WiFi.
источник