Кілька плат PCA9685 на одній шині
Шістнадцять каналів закінчуються швидше, ніж здається: насоси, вентилятори, мішалка, підсвітка, кілька нагрівальних контурів — і місця вже немає. Друга плата вирішує це за десять хвилин і за вартість чашки кави, але рівно один недогляд перетворює її на кілька годин пошуку: дві плати з однаковою адресою на одній шині.
Ця стаття — про те, як не потрапити в цю ситуацію.
Скільки плат тримає контролер#
Прошивка oCBot має вісім слотів під плати розширення. Вісім плат PCA9685 —
це 128 каналів ШІМ, і всі вони живуть на тих самих двох лініях SDA і
SCL. Жодного додаткового піна контролера друга й наступні плати не займають.
У чужих туторіалах трапляється цифра «62 модулі, 992 сервоприводи» — це теоретична межа адресації самої мікросхеми, а не працездатна конфігурація. Реальні межі задають довжина шини, підтяжки й кількість слотів у прошивці.
Таблиця адрес#
Адресу задають паяльні майданчики A0…A5 на платі. Незапаяні дають базову
0x40, кожен запаяний додає свій біт. Веб-інтерфейс oCBot пропонує вісім
адрес — рівно стільки, скільки є слотів, і всі вони набираються трьома
майданчиками:
| Адреса | Що запаяно на платі |
|---|---|
0x40 |
нічого (заводський стан) |
0x41 |
A0 |
0x42 |
A1 |
0x43 |
A1 + A0 |
0x44 |
A2 |
0x45 |
A2 + A0 |
0x46 |
A2 + A1 |
0x47 |
A2 + A1 + A0 |
Майданчики A3…A5 існують на платі, але в інтерфейсі відповідних адрес
немає — запаювати їх не треба.
Порядок дій простий: спершу паяльник, потім інтерфейс. Запаяли перемичку — записали на плату маркером її адресу — і тільки тоді додаєте плату в розділі Плати та шини з тією самою адресою. Навпаки виходить гірше: плата в інтерфейсі є, на шині її немає, а причина неочевидна.
Підпишіть адресу прямо на платі, поки вона в руках. Через півроку, коли треба буде додати третю плату, знімати щиток і роздивлятись краплі припою під лупою — найгірший спосіб згадати, яка з них 0x41.
Як з'єднати плати#
Кожна плата має гребінку 1×6 з обох торців, і вони повністю однакові. Тому з'єднання виглядає так:
- Перша плата йде до контролера чотирма проводами:
VCC→ 3.3 В,GND→ земля,SDA→ пін SDA,SCL→ пін SCL. - Друга плата з'єднується з першою шлейфом на шість контактів: вивід у вивід,
GNDдоGND,SDAдоSDAі так далі. - Третя — з другою, і далі так само.
Шлейф іде паралельно, а не послідовно: усі плати сидять на одних і тих самих лініях. Порядок плат у ланцюжку не має значення — важлива лише адреса.
Якщо гребінка з другого боку плати не запаяна, є два варіанти: запаяти штирки самому або розвести шину зіркою — від контролера окремими проводами до кожної плати. Електрично це те саме, монтажно зірка навіть акуратніша, коли плати рознесені по щитку.
Три речі, які ламають ланцюжок#
Однакова адреса. Дві плати з 0x40 на одній шині відповідають одночасно.
Симптом упізнаваний: канал, увімкнений на одній платі, вмикається одразу на
обох, або жодна з них не працює стабільно. Лікується перепайкою перемички.
Немає спільної землі. Плата, живлена «своїм» блоком без з'єднання земель з контролером, не має точки відліку для сигналів I2C. Працює випадково: іноді озивається, іноді ні, іноді ламає всю шину разом із рештою пристроїв. Земля контролера, земля кожної плати й мінус кожного джерела мають сходитись в одну точку.
Перевантажені підтяжки. На кожній платі SDA і SCL підтягнуті до VCC
власними резисторами. Вісім плат — вісім пар резисторів паралельно, і сумарний
опір падає у вісім разів: типові 10 кОм перетворюються на 1.25 кОм. Разом із
підтяжками самого контролера й інших пристроїв шини цього достатньо, щоб лінія
перестала впевнено притягуватись до нуля.
Симптом перевантажених підтяжок — система, яка працює з двома-трьома платами й починає сипатись на четвертій-п'ятій. Лікування: випаяти підтягувальні резистори з усіх плат, крім однієї, лишивши одну пару на всю шину.
Номінал підтяжок на клонах буває різний — звірте зі своєю платою, перш ніж рахувати. Правило те саме незалежно від номіналу: підтяжка на шині потрібна одна, а не по одній на кожному пристрої.
Силове коло не ланцюжкове#
Шлейф на шість контактів несе й вивід V+ — силову шину сервоприводів. У
нашій схемі вона не використовується взагалі, тому питання «як розподілити
живлення між платами» не виникає: живлення до навантаження приходить не через
плати.
Кожен буфер, кожен ключ, кожна твердотілка отримує напругу від свого джерела за схемою, описаною в статті Твердотілки на платі розширення. Плати передають лише сигнал. Єдине, що між ними обов'язково спільне, — земля.
Додавання другої плати в інтерфейсі#
Дії ті самі, що й для першої, лише адреса інша:
- Плати та шини → додати плату.
- Тип плати — Шина I2C, тип пристрою — ШІМ PCA9685 — 16 каналів.
- Адреса — та, яку ви запаяли:
0x41,0x42і так далі. - Назва, за якою ви впізнаєте плату в списках («ШІМ куба», «ШІМ щитка №2»).
- Зберегти — плата стає до роботи одразу, без перезавантаження контролера.
Далі пристрої створюються звично, у розділі Периферія, і в полі джерела
з'являється вибір між усіма доданими платами. Нумерація каналів у кожної своя,
від 0 до 15 — це OUT0…OUT15 на її корпусі.
Суміжні статті#
- Плата розширення PCA9685 — перше підключення, адреси й прив'язка каналів.
- Плата PCA9685 зблизька — що на платі є фізично, зокрема майданчики адреси й друга гребінка.
- Плати та шини — загальні налаштування шин I2C та OneWire в інтерфейсі.
- Твердотілки на платі розширення — буфер між каналом і силовим навантаженням.