Плата розширення PCA9685 — 16 каналів ШІМ
У контролера є лише два вбудовані виходи з плавним регулюванням. Щойно в системі з'являється третій пристрій, яким треба керувати не в режимі «увімкнено-вимкнено», а плавно, вбудованих виходів не вистачає. Плата розширення PCA9685 додає одразу 16 незалежних каналів ШІМ по шині I2C.
Що це дає#
Кожен із 16 каналів працює як окремий вихід 0–100%. До каналу прив'язується один пристрій: насос, вентилятор, мішалка, підсвітка, нагрівач. У картці пристрою з'являється звичний повзунок замість перемикача, а сценарії й скрипти керують ним так само, як вбудованими виходами.
Плата коштує копійки, займає лише дві лінії контролера (SDA і SCL) і не потребує жодного вільного GPIO на кожен канал.
Підключення до контролера#
Плата живиться й спілкується по чотирьох проводах:
| Вивід плати | Куди | Примітка |
|---|---|---|
VCC |
3.3 В контролера | живлення логіки |
GND |
земля контролера | спільна з контролером обов'язково |
SDA |
пін SDA контролера | лінія даних I2C |
SCL |
пін SCL контролера | лінія тактування I2C |
Плата стає на ту саму шину I2C, де вже сидить вбудована периферія контролера. Окремих пінів під неї виділяти не треба: I2C на те й розрахована, щоб на двох лініях жило багато пристроїв з різними адресами.
Пін V+ на платі (окремий силовий рай для сервоприводів) для наших задач не використовується — залиште його непідключеним.
Номери пінів SDA і SCL для вашої моделі контролера дивіться в розділі Налаштування → Обладнання. У KC868-A6 та KC868-A16 вони вже задані заводською розкладкою й міняти їх не треба.
Адреса на шині#
PCA9685 займає адреси від 0x40 до 0x47 — конкретна задається перемичками (майданчиками A0…A5) на самій платі. Заводська, коли жодна перемичка не запаяна, — 0x40.
Адреса має бути унікальною на шині. Якщо ставите дві або більше плат (32 канали й далі), кожній наступній запаяйте свою перемичку: 0x41, 0x42 і так далі. Контролер підтримує до восьми плат розширення одночасно.
Додавання в інтерфейсі#
- Відкрийте розділ Плати та шини й натисніть додавання плати.
- Тип плати — Шина I2C, тип пристрою — ШІМ PCA9685 — 16 каналів.
- Адреса підставиться
0x40автоматично. Якщо ви паяли перемички, оберіть свою. - Дайте платі зрозумілу назву («ШІМ куба», «ШІМ холодильника») і колір картки — за ними її буде видно у списках.
- Збережіть.
Плата починає працювати одразу після збереження, перезавантажувати контролер не потрібно.
Якщо плата не озвалась на шині, контролер напише про це в журнал і канали лишаться мертвими. Найчастіші причини: переплутані SDA і SCL, відсутня спільна земля, або адреса в інтерфейсі не збігається з перемичками на платі.
Прив'язка пристрою до каналу#
Пристрої створюються як завжди, у розділі Периферія:
- Створіть пристрій і виберіть його тип (насос, нагрівач, вентилятор, мішалка).
- У полі джерело замість «Внутрішні порти контролера» оберіть вашу плату.
- Виберіть канал — від 0 до 15. Зайняті канали в списку позначені, двічі один канал зайняти не вийде.
- Збережіть.
Номер каналу відповідає підпису OUT0…OUT15 на платі.
Два режими керування каналом#
Контролер сам обирає, як керувати каналом, за типом пристрою — бо різні навантаження вимагають різного:
- Швидкий ШІМ, 1 кГц — насоси, вентилятори, мішалки, підсвітка. Все, що комутується транзисторним ключем або драйвером затвора. На такій частоті двигун не гуде, а світло не мерехтить.
- Часо-пропорційне керування, період 10 секунд — нагрівачі. Канал повністю вмикається й вимикається, а потужність задається співвідношенням часу: 1 кВт із 2 кВт означає 5 секунд увімкнено, 5 вимкнено.
Другий режим існує тому, що ТЕНи вмикають через твердотілки, а твердотілка швидкий ШІМ відпрацювати не може. Докладно — у статті Твердотілки на платі розширення.
Головне обмеження: канал не тягне навантаження#
Виходи PCA9685 розраховані приймати струм до 25 мА і віддавати лише близько 10 мА. Це сигнальні виходи, а не силові.
Прямо до каналу можна підключати тільки те, що споживає одиниці міліампер: вхід транзисторного ключа, вхід буфера-драйвера, світлодіод через резистор.
Не можна підключати прямо: твердотілки, електромагнітні реле, обмотки, лампи, двигуни. Не тому, що згорить плата, а тому, що напруга на виході просяде й пристрій просто не спрацює як слід. Для будь-якого такого навантаження між платою і пристроєм ставиться буфер — про це наступна стаття.
Перетворювач логічних рівнів (модуль на BSS138 з підтяжками 10 кОм) не є буфером і цієї задачі не вирішує: він передає рівень сигналу, але віддає менш ніж міліампер струму. Для узгодження I2C між 3.3 і 5 В він правильний, для живлення навантаження — ні.
Суміжні статті#
- Твердотілки на платі розширення — буфер, схема й безпечне вмикання ТЕНів.
- Підключення ТЕНів та регуляторів потужності — силова частина, вибір SSR і заземлення.
- Плати та шини — загальні налаштування шин I2C та OneWire.
- Плата PCA9685 зблизька — що на платі є фізично і чого з неї не варто чекати.
- Кілька плат PCA9685 на одній шині — таблиця адрес, ланцюжок і 128 каналів.
- Сервопривід і плата розширення — чому сервомашинку до каналу не підключити і що ставити замість неї.