Пін OE — апаратне зняття всіх виходів
На гребінці плати PCA9685 є вивід OE — Output Enable. Він гасить усі
шістнадцять каналів повз шину I2C і повз прошивку: мікросхема знімає виходи
сама, не питаючи ні контролера, ні сценарію.
Це єдиний спосіб зупинити всі виходи плати, який працює, навіть коли контролер завис, перезавантажується або втратив зв'язок. Дротом і кнопкою за десять хвилин. Але тільки якщо розуміти, що саме він зупиняє, а що ні.
Як він поводиться#
Логіка інверсна: нуль вмикає, одиниця гасить.
Стан OE |
Що з каналами |
|---|---|
низький рівень (GND) |
канали працюють штатно |
| не підключений | канали працюють — на платі є підтяжка до землі |
високий рівень (VCC) |
усі 16 виходів переведені в нуль |
Через підтяжку до землі плата працює «з коробки», нічого нікуди підключати не
треба. Саме тому в стандартній схемі підключення про OE не згадують — і саме
тому про його існування зазвичай дізнаються запізно.
Що робить мікросхема при високому рівні: у прошивці oCBot регістр MODE2
налаштований так, що зняті виходи йдуть у нуль. Не у високий рівень, не у
«вільний стан» — у чистий нуль.
Чому для нашої схеми це безпечно#
У штатній схемі oCBot канал плати заходить на вхід буфера ULN2803, а той уже
відкриває твердотілку або ключ. Буфер не інвертує: нуль на вході — закритий
вихід.
Вибудовується наскрізний ланцюжок:
OE = 1 → канал = 0 → вхід буфера = 0 → ключ закритий → ТЕН вимкнений
Кожна ланка тут — залізо. Прошивка в цьому ланцюжку не бере участі взагалі.
Це справедливо лише для буфера, який не інвертує. Оптронні модулі часто інвертують сигнал — на них нуль на вході означає увімкнений вихід. У такій схемі OE не зупинить нагрів, а увімкне його на повну, і кнопка «стоп» стане кнопкою «все на максимум».
Як розрізнити модулі — у розділі «Що перевірити при купівлі буфера» статті Твердотілки на платі розширення.
Проста кнопка: дві дротини#
Найкоротший варіант — нормально розімкнена кнопка між OE і VCC плати
(3.3 В). Натиснули — на OE одиниця, усі канали в нулі. Відпустили — підтяжка
на платі повертає OE в нуль, канали оживають.
Для стенда й налагодження цього достатньо. Для щитка, який лишається без нагляду, — ні, і ось чому: обрив дроту до такої кнопки нічим себе не проявляє. Кнопка просто перестає працювати, а дізнаєтесь ви про це в той момент, коли вона знадобиться.
Відмовостійкий варіант: розмикальний контур#
Правильна аварійна кнопка влаштована навпаки: замкнений контур утримує роботу, а будь-який розрив — натиснута кнопка, обрив дроту, від'єднана клема — її зупиняє.
Для цього треба перебороти підтяжку плати зовнішньою підтяжкою вгору:
- Резистор 2.2 кОм між
OEіVCC(3.3 В). - Нормально замкнений контакт аварійної кнопки — між
OEіGND.
Як це рахується. Підтяжка на платі — близько 10 кОм до землі. Разом із
зовнішніми 2.2 кОм до 3.3 В вони утворюють дільник, і при розімкненому контурі
на OE лишається близько 2.7 В — упевнена одиниця, канали зняті. Замкнений
контакт кнопки садить OE на землю намертво, і крізь резистор тече
півтора міліампера — дрібниця, яку витримає будь-який контакт.
Номінал підтяжки на клонах буває інший. Правило: зовнішній резистор має бути помітно меншим за підтяжку плати, щоб на розімкненому контурі вийшло більше ніж дві третини VCC. 2.2 кОм проти 10 кОм цю умову виконують із запасом.
У такий контур послідовно вмикаються кілька кнопок і кінцевиків: розімкнеться будь-який — стануть усі канали.
Чого ця кнопка не замінює#
Тут потрібна повна чесність, бо ціна помилки — пожежа.
OE знімає сигнал, а не живлення. Мережа так само підведена до твердотілки
й до ТЕНа. Якщо твердотілка пробита — а пробивається вона саме в замкнений стан,
— вона лишиться відкритою, і ТЕН гріє далі, скільки б ви не тримали кнопку.
Реальна аварійна зупинка розриває силове коло: контактор або автомат на вводі
щитка. OE — це другий, швидший рівень, який спрацьовує раніше й акуратніше,
але під ним, а не замість нього.
Не підписуйте кнопку на OE словом «аварійна», якщо в щитку немає контактора, який рве живлення. Людина біля апарата має точно знати, яка кнопка знеструмлює, а яка лише знімає керування.
Прошивка про це нічого не знає#
Контролер не бачить стану OE і не отримує сповіщення. Наслідки, які треба
тримати в голові:
- Сценарій продовжує йти. Таймери тікають, етапи змінюються, у журналі все виглядає штатно.
- Контролер вважає, що канал так і стоїть на своїх 40%. У картці пристрою й на графіках буде задане значення, а не реальне.
- Щойно контур замкнеться назад, усі канали ввімкнуться миттєво й на тих рівнях, які прошивка тримала весь цей час. Ніякого плавного повернення чи паузи не буде.
Знявши виходи кнопкою, зупиніть сценарій у веб-інтерфейсі, перш ніж повертати контур у робочий стан. Інакше процес продовжиться з тієї точки, де його застали, — з холодним кубом і сценарієм, який вважає, що вже пів години йде відбір.
Програмний шлях зупинки — аварійні сценарії й межі давачів — описаний у
Аварійні сценарії та безпека. Він розумніший, бо
контролер знає, що сталось. OE — грубіший, бо працює тоді, коли контролер уже
не працює. Ці два рівні не конкурують, а доповнюють один одного.
Суміжні статті#
- Твердотілки на платі розширення — буфер між каналом і реле, безпека при подачі живлення й перевірка модуля на інверсію.
- Плата PCA9685 зблизька — де фізично шукати
OEна гребінці. - Аварійні сценарії та безпека — програмний рівень захисту, який знає причину зупинки.
- Підключення ТЕНів та регуляторів потужності — силова частина щитка й місце контактора в ній.