Збільшення живучості пристроїв на мікроконтролерах

Йдеться буде про захист мікроконтролера від різних факторів, які підвищують ймовірність виходу пристрою з ладу.

Увага, водоспад!

Як ми всі знаємо - мікросхеми працюють на димі. Якщо дим вийшов - мікросхема перестає працювати. Так ось, щоб цей дим максимально довго затримати всередині чіпа, варто передбачити деякі захисти при розробці пристрою.

Суть в тому, що під час налагодження пристрою може статися всяке. Особливо, якщо контролер/FPGA не дуже знайомий розробнику.

Якщо з звичайною мікросхемою в вивідному корпусі, умовно, проблем немає (її легко замінити, якщо можна купити), то для BGA корпусу вже є складнощі. Не всі компанії можуть паяти такі мікросхеми. Так, я розумію, що можна і самому запаяти феном або прожектором, але це пахне саморобщиною, а ми ж всі професіонали :) І, не рідко, розробник пристрою - це одна людина, а розробник софту - інша. Програміст може не знати/забути щось... і приїхали.

Коротше, на етапі розробки потрібно подбати про те, щоб знизити ймовірність виходу з ладу мікросхеми.

Картинка, що символізує випускання диму з мікросхеми в тему. 

Після води до справи.

Я зробив добірку деяких найбільш поширених (на мій погляд) причин виходу з ладу мікроконтролерів.

 

1. Коротнути I/O пін на землю/замкнути піни між собою

Якщо ми коротнемо два виводи, які налаштовані на входи - нічого страшного не буде.

В інших випадках - це небезпечно для мікросхеми, особливо якщо це два виводи, налаштовані на вихід. Якщо в цей момент на одному з них буде лог. 0, а на іншому лог. 1, то через вивід потече великий струм, так як такі ситуації еквівалентні КЗ (з поправкою на обмеження струму самим портом, так як є яке-небудь опір).

В таких ситуаціях допоможе увімкнений послідовно з портом резистор.

 

2. Подати на I/O пін високе напругу

Випадково або спеціально, але на вході може з'явитися високе напруга. Високе — це те, яке виходить за рамки роботи порту.

Простіше рішення - поставити стабілітрон, який "з'їсть" рівень. Хоча, якщо йдеться про високовольтні перешкоди, то краще поставити захисний діод ( TVS-діод ). У нього швидкодія вище, та й заточений він під ці цілі. Варіант схеми зі стабілітроном нижче. Актуально для ланцюгів програмування мікросхем. Часто буває різниця потенціалів між ПК - програматором - цільовим пристроєм. Я так (і колеги) вижигали FPGA, мікроконтролери. Якщо захисту немає, то треба спочатку підключати програматор до плати, вмикати програматор в USB порт і в останню чергу вмикаємо живлення пристрою.  

 

3. Перепутати полярність живлючого напруги

Класика жанру. Хоч ти тисячу разів уважний, все одно, рано чи пізно, ти переплутаєш "+" і "-". Як правило, плата, під час налагодження, підключається "бананами" до блоку живлення. Так, так. Можна ж зробити конектор/перехідник з ключем, можна якось щось намудрити з терміналами підключення, але ми з вами знаємо, що це все дурниці. Тільки змонтована плата потрапила до нас в руки - накидаємо дроти і запускаємо. Коротше, найпростіше (але не найелегантніше) - це діод Шотткі в ланцюзі живлення. Ця захист від дурня вже не раз мене рятувала )))

 

4. Підвищене напруга живлення

Ще одна засада. Думаєш, що у тебе DC/DC буде качати 5В, а отримуєш всі 12. Буває таке. Особливо, коли пайка зворотного зв’язку погана. На етапі перших запусків все нормально, а потім ОС відвалюється, DC/DC йде в рознос. Неприємно. Ось щоб зменшити масштаб трагедії на критично важливі ланцюги живлення можна поставити щось подібне, що зображено нижче.

Як працює. Як тільки напруга на прямому вході 1 компаратора DA1 перевищить задане (напруга захисту задається стабілітроном на інверсному вході 3 DA1), на виході 4 компаратора DA1 встановлюється лог.1 і транзистор закривається. Це "скелет". Звісно, потрібно зробити певний розкид між напругою зі стабілітрона і напругою з дільника. Інакше, при найменшому переході напруги після дільника через 2,5В у нас схема спрацює і відключить живлення. Поріг спрацьовування розраховується індивідуально. Крім того, потрібно врахувати напругу живлення компаратора і можливе "високе" напруга на вході. Як правило, можна знайти компаратори з широким діапазоном живлячих напруг, перекриваючих потенційно "високе" напруга. Інакше, при стрибку напруги, вигорає і компаратор. Звісно, можна його захистити і простим стабілітрон. Загалом, потрібно дивитися конкретну ситуацію. 

 

5. Перевищення струму споживання периферією

Ось класична ситуація. На порт контролера навісили купу всього, та ще й на максимум по струму вивели.

Як виявилося, багато навіть не знають, що є такі поняття, як струм на пінструм на порт і струм на кристал.

Якщо, умовно, йдеться, що пін мікроконтролера розрахований на струм 20 мА, то далеко не завжди (ніколи) це означає, що можна навісити 10 світлодіодів кожен по 20 мА. Тому що, (умовні цифри), пін розрахований на 20 мА, порт (нехай буде 8 бітний), на 120 мА, а кристал на 200 мА. Як бачите, не можна на один порт вішати вісім світлодіодів і заганяти в них по 20 мА в кожному.

Вихід: буфер, регістри. Тут вже є варіанти. Наприклад, так.

Ну або використовувати щось на кшталт SN74AHCT1G125 (на кожен світлодіод) або N штук в одному корпусі. Важливо переложити навантаження з порту MCU на цей буферок.

Крім того, корисно ставити такі SNки просто на логічні висновки, які йдуть з/до конектора, наприклад. Хто його знає, що там прилетить, а от міняти BGA чіп, який коштує під 30 баксів, не дуже хочеться.

 

6. Перемички по живленню

Мається на увазі, що блок живлення (який припаяний на тій же платі, що і цільове пристрій), повинен бути вимикаючим і при першому запуску спочатку перевіряється режим роботи БП, потім вішується перемичка, яка з'єднує цей БП з рештою схемою і перевіряється працездатність пристрою в цілому. Також, не зайвим, буде перевірити і опір по ланцюгах живлення ДО того, як буде встановлена перемичка.

Здається основне розповів. Буду радий, якщо в коментарях поділитеся своїм досвідом.

Дякую за увагу. Якщо помітили якусь неточність або у вас є що сказати - ласкаво просимо в коментарі!

Top