Какой кабель использовать?
- Войдите на сайт для отправки комментариев
Втр, 15/03/2016 - 11:55
Привет всем!
Задался вопрсом, какой кабель лучше использовтаь для удаленных датчиков i2c по квартире к Arduino.
Полазив нашел варианы телефонного кабеля: http://www.chipdip.ru/catalog-show/phone-cable/
И обычную витую пару.
Подскажите, кто что РЕАЛЬНО использует на длинне до 10-20 метров в реальных реализованных проектах, а не стенде.
I2C изначально внутрисхемный интерфейс, поэтому длины, большие 1-2 метров, могут уже стать проблемой. Проблемой внезапных фокусов из-за наводок, вероятность которых даже от силовой сети при трассе в 20м крайне высока.
Хотите экспериментов - попробуйте хотя бы витую пару компьютерную, лучше - экранированную. Но на трассе в 20м рискуете получить значительное падение напряжения питания на самом датчике.
На такой длине i2c работать не обязан ибо как уже заметили - интерфейс внутрисхемный
для температуры можно применить ds18b20, она нормально работают на длинных проводах, витой паре в частности
для других датчиков как вариант ставить ардуину с двух сторон используя для связи rs485
Мне нравится витая пара, но желательно брать хороший кабель хорошего изготовителя.
Достаточно давно на Украине проверяли такой кабель, и получилось, что из 11 изготовителей НИ ОДИН не выпускал кабель, соответствующий требованиям!
Не очень верится, что с той поры ситуация сильно улучшилась :(((
На короткие расстояния (5-10 м) такой кабель пойдет, а вот на большой длине ловить нечего.
Усеченая версия статьи без картинок ТУТ.
Мне попадались такие отстойные кабели с жилами из х.з. чего, но только не из меди.
I2C изначально внутрисхемный интерфейс, поэтому длины, большие 1-2 метров, могут уже стать проблемой.
Хотите экспериментов - попробуйте хотя бы витую пару компьютерную, лучше - экранированную.
Но на трассе в 20м рискуете получить значительное падение напряжения питания на самом датчике.
Полностью согласен с первым и вторым пунктом. Про экран промолчу....
По третьему пункту: эначительное ??????
Сопротивление пары ( двух жил) 20 Ом на 100 метров.
Если, конечно, не нарваться на алюминиевый кабель.
Даже на ста метрах при токе 50 миллиампер, (а такой "жрущий" датчик ещё и поискать нужно),
на дальнем конце падение будет 1 Вольт.
Из 5-ти стало 4 - многим датчикам это не совсем критично.
На крайняк можно и поднять питание на входе в линию. На 1 Вольт.
Можно на конце поставить http://www.ebay.com/itm/DC-DC-Boost-Converter-Step-Up-Module-1-5V-to-5V-...
Кстати если датчик много потребляет только кратковременно, допустим при его опросе,
ситуацию спасёт кондёрчик, да побольше.
Дело не в питании. а в ёмкости кабеля.
Для витой пары она 5600 пик на 100 метров.
И при "слабеньком", не рассчитанном для того чтобы заряжать такую ёмкость выходном каскаде датчика,
то есть повышенного выходного сопротивления выхода,
вы можете получить не импульсы, а что-то сильно напоминающее синус.
Я уж и не говорю про резисторы привязки дающие "единицу".
http://student-proger.ru/2014/08/vliyanie-nominala-podtyagivayushhih-rez...
Да и отражение волны от концов несогласованной линии никто не отменял.
Поэтому ещё и " звон" добавится.
А вы - падение напряжения питания...........
Сопротивление пары ( двух жил) 20 Ом на 100 метров.
сопротивление межной жилы 0.5мм2 33 ома на километр. Это 6.6 ом на две жилы на 100 метров. А если на питание выделить две пары из четырех то получим 3.3 ом на сто метров. для питания датчиков это ерунда чистой воды. По этим проводам питают IP оборудование включая видео камеры пусть и с преобразованием, но там и до ампера может быть ток на 12в с преобразованием от 48в
а вот емкость да, это осложнение. но оно тоже не критично, если скорости обмена не высокие как у 1-wire например
Я в целом согласен с прозвучавшими здесь мнениями насчет небольшой длины сегмента I2C, которое для идеальных условий вроде бы должно быть ограничено емкостью линии в 400pF, что в случае использования витой пары обещает не больше семи метров, но в интернетах попадаются и другие мнения на этот счет:
I work for a company making USB sensors. Most of them are based on I2C sensor chips, those devices can be split in two, so you can install the CPU part in one place and the sensor part in another. We conducted quite a lot of tests on the I2C connection between the device CPU and the I2C sensors. At 100 kHz, with a good error recovery protocol, 25m can be easily reached using basic wires. We were even able to reach 100m once with CAT5 cable.
Не совсем понятно, что имелось ввиду под "good error recovery protocol", но по всему выходит, что их эксперименты на больших длинах показали, что достижимы приемлемые результаты и при нарушении требований стандарта.
В этом смылсе автору вопроса лучше самостоятельно проверить, какая максимальная длина сегмента окажется работоспособной в его случае. Помимо прочего, I2C-утройства обычно не сильно привередничают, если их гонять на скоростях существенно ниже стандартных 100кгц и если МК позволяет сбрасывать частоту или используется софтовый I2C, то падать вниз можно чуть не до телетайпных скоростей, увеличивая, соответственно дальность.
Подниму тему. Задумал так же вынести i2c датчики. Для эксперимента взял самый большой, какой у себя нашел, кусок обжатого кабеля типа витая пара и он оказался длиной 10,5 метра. Сдвоенную (только такая нашлась) розетку под RJ-45 разрезал пополам, чтобы использовать одну половинку на одном конце кабеля, другую на другом. По сути, сдвоенную розетку разделил на две одинарных. К ножевым разъемам розеток присоединил еще по кусочку витой пары, длиной 20см для соединения с устройстовм с одной стороны и датчиком с другой. Вобщем, с учетом всех соединений и общей длины, емкость должна была получиться заметно больше максимальных по стандарту 400pF. Учитывая, что устройство на МК (питание 3.3в) у меня работает с частотой I2C равной 400кгц, можно сказать, что эксперимент ставился для тяжелых условий. В качестве датчика использовался китайский модуль с BMP180.
Первый "подход" начался с того, что в кабеле были задействованы две пары проводов, "синие" под сигнал (по одной жиле SCL, по другой SDA) и "коричневые" под питание. Так ничего не заработало. Датчик не отзывался совсем. Полагая, что использование единственной пары для линий SCL/SDA не совсем оптимально с точки зрения электрической емкости, обе пары были разделены таким образом, что в каждой паре по одной жиле подавался сигнал, а по другой плюс питания или земля. Датчик начал что-то отвечать, но именно "что-то", т.к. вместо реальных данных стал приходить какой-то мусор. Видя, что намечается некоторое "улучшение", было решено двинуться дальше в том же направлении и использовать по одной жиле от каждой из четырех пар. Для простоты, однотонные жилы -- рыжую, зеленую синюю и коричневую. Зеленая с рыжей под сигнал, синяя с коричневой под питание. На удивление, все прекрасно заработало и за весь период наблюдений (минут двадцать), среди принимаемых данных не обнаружилось ни одной ошибки. Дальше еще были произведены некоторые манипуляции по использованию разных проводников и устаканилось все на схеме, когда питание подается по одной паре, а сигналы по одиночным проводникам из двух разных пар.
Не знаю, что там могло бы получится насчет максимальной длины кабеля при таком использовании, но проверить пока просто нечем, так как кабеля большой длины у меня под рукой сейчас нет. По условиям моей задачи мне необходим вынос метров 8-10, т.ч. результаты эксперимента позволяют надеяться, что с этим вполне может все получиться.
Можно еще частоту понизить до 100кгц