I2C

Материал из Multicopter Wiki
(Различия между версиями)
Перейти к: навигация, поиск
(См. также)
(На что обратить внимание)
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
 
Шина I²C предназначена для последовательной передачи управляющих сигналов. Для этого в ней используются две двунаправленные линии: D (Data, SDA) - для передачи управляющих данных, и C (Clock, SCL) - для синхронизации.
 
Шина I²C предназначена для последовательной передачи управляющих сигналов. Для этого в ней используются две двунаправленные линии: D (Data, SDA) - для передачи управляющих данных, и C (Clock, SCL) - для синхронизации.
  
Особенностью применения шины I²C в полётных контроллерах мультикоптеров является параллельное подключение всех [[Контроллеры моторов|контроллеров моторов]] к шине.
+
Особенностью применения шины I²C в полётных контроллерах мультикоптеров является '''параллельное''' подключение к шине всех периферийных устройств (датчиков, модулей [[компас]]а/[[GPS]] или, например, [[Шина I2C в Mikrokopter|контроллеров моторов в Mikrokopter]].
 
+
 
+
 
+
== Рекомендации по обеспечению безошибочной работы шины I2C ==
+
# Вывести напрямую из FC провода C-D и землю от процессора, эти 3 провода уходят в контроллеры.
+
# Провода в экране, экран соединён с общей землёй коптера, на стороне контроллеров висит в воздухе.
+
# Провода проходят внутри балки. Контроллеры размещены на балках максимально близко к куполу.
+
# Силовые провода толстые и короткие 3-4 см.
+
[http://multicopter.ru/forum/viewtopic.php?p=20828#p20828 Источник]
+
 
+
# Замена кондеров вместо 220uF на 2xCapxon 330uF LZ (Ultra Low Impedance)
+
# Добавил согласование и фильтр на шину, как в [[Mikrokopter BL-Ctrl V2.0|регулях 2.0]] (два резистора по 27 Ом последовательно, и конденсатор 1uF на SDA)
+
# Поменял подтяжку шины к питанию +5В на 3.6к как в 2.1, вместо 1к (в 2.0)
+
# Шина i2c проложена в экранированом кабеле, со стороны регулей экран не замкнут, со стороны [[FlightCtrl]] экран подключен к минусу питания.
+
Помогло, но не сильно. Посчитал суммарную емкость шины, вышло около 800 pF. Это очень много. После чтения мануалов поменял pull up резисторы на главной плате на 750 ом, что в общем-то за пределами рекомендаций по i2c, и знаете, помогло - ошибки ушли, по крайней мере на 3S. На будущее сделал выводы: провода шины как можно короче, регули в центр, ну а с охлаждением как-то разберемся. Резисторы подтяжки начинать с 4.7к и уменьшать до пропадания ошибок, но ниже 750 ом опускаться уже стремно. Провод шины (если провод, а не печатный проводник) - как можно с меньшей емкостью.
+
[http://multicopter.ru/forum/viewtopic.php?p=20793#p20793 Источник]
+
 
+
* Уменьшать сопротивление минусового провода питания регулятора (увеличивая сечение или укорачивая его)
+
* Ставить качественные конденсаторы большей емкости с низким ESR (эквивалентным последовательным сопротивлением, низкоимпедансные). Минимизируют просадки и скачки земли при импульсах.
+
* Разделение линий управления и питания (первая снаружи балки, вторая - внутри), сопровождение линий C, D линией земли (использую сервокабель), которая имеет припаянным только один конец - у процессора контроллера. [http://www.multicopter.ru/forum/viewtopic.php?p=24732#p24732]
+
  
 
== На что обратить внимание ==
 
== На что обратить внимание ==
* Согласно [http://www.nxp.com/documents/user_manual/UM10204.pdf официальной спецификации (PDF)], ёмкость шины не может быть больше 400 nF, что эффективно лимитирует шину на длину около нескольких метров. теперь прикинем, что это октокоптер с пропеллерами 12" - в результате длина одного I2C провода может достигать 35см, помножить всё это на 8, получаем 280см - почти 3 метра, что само по себе уже МНОГО для этой шины. Таким образом, вынос регуляторов на балки под пропеллеры становится проблематичным. [http://multicopter.ru/forum/viewtopic.php?p=20811#p20811 Источник]
+
* Для нормальной функциональности I2C шина должна иметь общую землю!
* Для нормальной функциональности I2C шина должна иметь общее питание!
+
* В [[MK-Tools]] есть окно, где показываются ошибки по каждому контроллеру, благодаря чему можно вычислить проблемное место.
+
 
* Проверять I²C на КЗ с помощью мультиметра не советую, там вольтаж подаётся, способный убить I²C. [http://multicopter.ru/forum/viewtopic.php?p=25061#p25061]
 
* Проверять I²C на КЗ с помощью мультиметра не советую, там вольтаж подаётся, способный убить I²C. [http://multicopter.ru/forum/viewtopic.php?p=25061#p25061]
 
== Гальваническая развязка ==
 
[[Файл:Adum.png|200px|thumb]]
 
Самая большая проблема - это не длина (ёмкость), а разность питания между участниками шины - т.е. участники шины питаются от разных источников питания (стабилизаторов), что на корню решается гальванической развязкой.
 
 
Применение [[ADUM1250ARZ]] ([http://multicopterwiki.ru/downloads/ADUM1250.pdf PDF]) по идее должно решить все известные проблемы с ошибками шины I2C. [http://multicopter.ru/forum/viewtopic.php?p=20811#p20811] [http://multicopter.ru/forum/viewtopic.php?p=20797#p20797]
 
 
Кроме того, неисправность одного контроллера мотора не позволит подвесить всю шину, остальные контроллеры смогут работать как будто ничего не случилось.
 
 
По [http://multicopterwiki.ru/downloads/ADUM1250.pdf AD-ному appnote], да и по [http://i2c2p.twibright.com:8080/spec/i2c.pdf стантарту I2C] на выходе каждого ADuM нужно поставить подтяжки по питанию (pull-up резисторы на SDA/SCL, в плате [[FlightCtrl 2.0|МК2.0]] стоят 1.0к, в плате [[FlightCtrl 2.1|МК2.1]] - 3.6к), еще в [http://multicopterwiki.ru/downloads/ADUM1250.pdf appnote] указан фильтрующий кондер на VCC/GND входа и выхода 0.01uF-0.1uF.
 
  
 
== Ссылки ==
 
== Ссылки ==

Текущая версия на 18:16, 14 сентября 2016

Шина I²C предназначена для последовательной передачи управляющих сигналов. Для этого в ней используются две двунаправленные линии: D (Data, SDA) - для передачи управляющих данных, и C (Clock, SCL) - для синхронизации.

Особенностью применения шины I²C в полётных контроллерах мультикоптеров является параллельное подключение к шине всех периферийных устройств (датчиков, модулей компаса/GPS или, например, контроллеров моторов в Mikrokopter.

На что обратить внимание [править]

  • Для нормальной функциональности I2C шина должна иметь общую землю!
  • Проверять I²C на КЗ с помощью мультиметра не советую, там вольтаж подаётся, способный убить I²C. [1]

Ссылки [править]

См. также [править]

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Инструменты
Группа ВКонтакте