Найти в Дзене
Паяльник

Увеличение живучести устройств на микроконтроллерах

Оглавление

Речь пойдет о защите микроконтроллера от различных факторов, которые повышают вероятность выхода девайса из строя.

Внимание, водопад!

Как мы все знаем - микросхемы работают на дыме. Если дым вышел - микросхема перестает работать. Так вот, что бы этот дым максимально долго задержать внутри чипа, стоит предусмотреть некоторые защиты при разработке девайса.

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

Если с обычной микросхемой в выводном корпусе, условно, проблем нет (её легко заменить, если можно купить), то для BGA корпуса уже есть сложности. Не все конторы могут паять такие микросхемы. Да, я понимаю, что можно и самому запять феном или прожектором, но это попахивает самодельщиной, а мы же все профессионалы :) Да и, не редко, разработчик девайса - это один человек, а разработчик софта - другой. Программист может не знать/забыть что-то... и приехали.

Короче, на этапе разработки нужно позаботиться о том, что бы снизить вероятность выхода из строя микросхемы.

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

После воды к делу.

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

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

Если мы коротнем два вывода, которые настроены на входы - ничего страшного не будет.

В остальных случаях - это опасно для микросхемы, особенно если это два вывода, настроенные на выход. Если в этот момент на одном из них будет лог. 0, а на другом лог. 1, то через вывод потечет большой ток, так как такие ситуации равносильны КЗ (с поправкой на ограничение тока самим портом, так как есть какое-то сопротивление).

В таких ситуациях поможет включённый последовательно с портом резистор.

2. Подать на I/O пин высокое напряжение

Случайно или специально, но на входе может появиться высокое напряжение. Высокое — это то, которое выходит за рамки работы порта.

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

-2

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

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

-3

4. Повышенное напряжение питания

Еще одна засада. Думаешь что у тебя DC/DC будет качать 5В, а получаешь все 12. Бывает такое. Особенно, когда пайка обратной связи плохая. На этапе первых запусков все нормально, а потом ОС отваливается, DC/DC уходит в разнос. Неприятненько. Вот что бы уменьшить масштаб трагедии на критически важные цепи питания можно поставить что-то подобное, что изображено ниже.

-4

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

5. Превышение тока потребления периферией

Вот классическая ситуация. На порт контроллера навесили кучу всего, да еще и на максимум по току вывели.

-5

Как выяснилось, многие даже не знают, что есть такие понятия, как ток на пинток на порт и ток на кристалл.

Если, условно, говорится, что пин микроконтроллера рассчитан на ток 20 мА, то далеко не всегда (никогда) это означает, что можно по навесить 10 светодиодов каждый по 20 мА. Потому что, (условные цифры), пин рассчитан на 20 мА, порт (пусть будет 8 разрядный), на 120 мА, а кристалл на 200 мА. Как видите, нельзя на один порт вешать восемь светодиодов и загонять в них по 20 мА в каждый.

Выход: буфер, регистры. Тут уже есть варианты. Например, так.

-6

Ну или использовать что-то типа SN74AHCT1G125 (на каждый светодиод) или N штук в одном корпусе. Важно переложить нагрузку с порта MCU на этот буферок.

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

6. Перемычки по питанию

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

Вроде основное рассказал. Буду рад, если в комментариях поделитесь своим опытом.

Спасибо за внимание. Если заметили какую-либо неточность или у вас есть что сказать - добро пожаловать в комментарии!

Автор: Chip115