Дорогой читатель, после столь длительного перерыва, рады приветствовать тебя на страницах нашего блога. Наконец, мы начали восстанавливать контент, потерянный в процессе перехода от старого магазина, к новому магазину и бренду – «Точка Пайки». Сегодняшняя публикация посвящена очень важной проблеме – аппаратному убийству платы Arduino. Нам часто пишут о том, что всё работало нормально до некоторого момента, а потом плата либо просто перестала определяться компьютером, либо перестала прошиваться, либо нашла ещё какой-то способ отказаться работать и доставить печали своему владельцу. Прочитав не один десяток таких писем за время существования проекта, мы решили обратиться к нашему техническому консультанту, чтобы узнать, как повредить свою плату так, что она наверняка уже не оправится от этого и перестанет радовать тебя своими техническими возможностями.
Стоит отметить, что всё описанное в данной статье относится к любой версии Arduino, построенной без серьёзных модификаций основной схемы. Является ли это проблемой? С одной стороны – да, это может вызвать затруднения у тех, кто не прочитает нашу статью. С другой - попытки сделать плату менее уязвимой, привели бы к её усложнению и удорожанию стоимости и, разумеется, было бы не так просто собрать её аналог на макетной плате. К тому же, при переносе проектов с платы Arduino на самостоятельно сделанную плату, пришлось бы столкнуться с большим количеством проблем, которые ранее решала используемая плата Arduino.
Перейдём, непосредственно, к теме статьи: все возможности можно разделить на несколько больших групп:
- Замыкание питания на землю
- Перегрузки по току и напряжению
- Неправильное подключение
- Бонусная группа, о ней можно прочитать в конце статьи
ЗАМЫКАНИЕ ПИТАНИЯ НА ЗЕМЛЮ
Нам с детства известно, короткое замыкание - это плохо (или хорошо, иногда, в отношении отдельных соседей с любовью к работе перфоратором). На картинке ниже представлено, как выглядят последствия короткого замыкания:
В случае с Arduino, фейерверка, скорее всего, достичь не удастся (хотя, стоит заметить, небольшой взрыв позволял бы намного быстрее осознать, что что-то пошло не так).
Что происходит в момент короткого замыкания? При коротком замыкании сильно возрастает ток, что, согласно закону Джоуля-Ленца, приводит к сильному тепловыделению, а, следовательно, повреждению всего, где этот ток проходит.
Рассмотрим, как можно этого достичь.
Самое простое (и потому распространённое) – это замыкание через цифровые выходы платы.
Почему так происходит? Дело в том, что при работе чип ATmega оперирует теми линиями земли и питания, что ему даны, т.е. ни земля, ни 5V не берутся из ниоткуда, а при переключении цифровых входов/выходов просто подсоединяются к соответствующим входам.
Что можно сделать через GPIO:
- Замыкаем любой из пинов на землю. Подаём на него высокий сигнал через digitalWrite. Получаем КЗ. Обратная схема (замыкание на 5V и подача низкого сигнала) тоже верна. Ток возрастает до максимального, что есть в источнике. Чувствуем запах желаемого результата, дёргаемся, выключаем, но плату уже не вернуть.
- Замыкаем пины друг на друга, а потом на один подаём высокий сигнал, а на другой - низкий. Результат как и в пункте 1. Последовательность действий - такая же.
Менее распространённым методом является замыкание пина внешнего питания Vin на землю (в основном потому, что он редко используется новичками). Данный пин является входом для внешнего питания платы.
И да, никто не отменял простого замыкания Vcc на GND. Это наиболее частый способ убийства Arduino Nano и Pro Mini. Встречается он в тех случаях, когда желание сделать что-либо глушит внутреннюю оценку кривизны рук.
ВНМИАНИЕ! Ты можешь лишиться возможности использовать методы из данной группы, если проверишь код и схему до того, как подашь питание.
ПЕРЕГРУЗКИ ПО ТОКУ И НАПРЯЖЕНИЮ
Перейдём к тем способам, которые мы можем использовать в случае, если работаем с внешним оборудованием (типа шаговых двигателей, светодиодов и т.п.). Возможность убить плату таким образом, как и в предыдущем пункте, даёт нам небрежное чтение инструкций по подключению.
Такие ситуации происходят потому, что микроконтроллеры проектируются на определённой компонентной базе и с определёнными стандартами. То есть то, что нельзя считывать сигнал 12 вольт - это не конструкторская недоработка, это понимание того, что есть дополнительные модули, которые позволят легко обойти это ограничение, не раздувая до неприличных размеров схему микроконтроллера.
Что мы можем тут сделать:
- Приложить напряжение больше 5.5 вольт к любому из пинов GPIO (или 3.7В в версиях плат с напряжение 3.3В).
- Подать больше 5В на пин питания Vcc (или больше 3.3В в версиях с этим напряжением). В данном случае это актуально для плат из серии Mini и Nano, так как у Mega, Uno, Leonardo - эти входы изолированы от шаловливых ручек пользователя.
- Более 13 вольт на пин RESET.
- Перегрузить выходные пины. Для этого надо просто подключить напрямую шаговый двигатель, либо побольше диодов без резисторов ко всем пинам. Контроллер будет пытаться выдать требуемый ток и, когда он в сумме превысит 200 мА, мы получим требуемый результат.
- Отсутствие диода обратной цепи при работе с индуктивными компонентами. Подключение индуктивных компонентов может вызывать обратный ток, который повредит плату.
Как ты уже мог понять, чтение даташитов, в данном случае, позволяет открыть очень многие возможности для деструктивного поведения.
НЕПРАВИЛЬНОЕ ПОДКЛЮЧЕНИЕ
Эта группа способов актуальна для тех, кто собирает схему вживую, без использования готовой платы, со всеми её стабилизаторами.
- Неправильная полярность. Самый простой из вариантов. К входу земля подключаем 5V, к входу Vin - землю. Контроллеру это смертельно не понравится.
- Запитывание одновременно от Vcc и Vin. Это приведёт к тому, что ток потечёт в обратном направлении (если будет разность потенциалов), что… ну, думаю, ты уже понял.. В случае с Mega и Uno - это запитывание от USB и чего-либо ещё.
- Запитывание от выходов 3.3V и 5V. Почему? Потому что это выходы. Нет. Правда. Это просто выходы, а не входы.
- Сборка схемы под напряжением. Это чаще всего безопасно для сборщика, а ввиду того, что собирающему схему будет приятна экономия времени на постоянное включение/отключение, то у него есть все шансы неосознанно применить этот способ.
- Подача питания на землю. Комментарии излишни, не так ли?
РАССТРЕЛ ИЗ «САЙГИ»
Последнему из способов, что мы хотим описать сегодня, было решено дать собственный раздел. Список, приведённый выше, в разных вариантах гуляет по многим сайтам. Нам же хотелось добавить что-то своё. Однако, ввиду недостатка времени и наличия «Сайги», способ, описанный тут, показался наиболее интересным.
Сперва немного о «Сайге».
Карабин «Сайга» является гражданским охотничьим оружием. Это самозарядный гладкоствольный карабин с укороченным стволом, складывающимся пластмассовым прикладом, цевье и ствольная накладка выполнены из пластмассы (высокопрочного полиамида), внешний вид приближен к автомату Калашникова.
Калибр |
.410 |
Патроны |
дробь, пули, «Магнум», с длиной гильзы 76 мм |
Масса |
3,4 кг |
Размер магазина |
10 патронов |
Для покупки карабина потребуются разрешения, справки, анализы. Мы не будем приводить алгоритм, так как он легко находится в интернетах.
Плата Arduino – подойдёт любая, по которой ты сможешь попасть.
Дальнейший процесс словами описывать просто бесполезно, мы постараемся, как-нибудь в будущем, выбрать время и снять об этом видео
ЗАКЛЮЧЕНИЕ
В итоге, можно дать следующие советы:
- Читайте даташиты. В Arduino микроконтроллер практически голый, поэтому всё, что верно для него, верно и для самой платы: ATmega 328 (используется в Nano, Mini, UNO), ATmega 2560 (используется в Arduino Mega), ATmega32u4 (Micro и Leonardo). К остальному используемому оборудованию это тоже относится.
- Внимательно читайте инструкции к схемам, которые вы собираете
- Учитывайте кривизну рук, требуемую для достижения желаемого эффекта.
- Убирайте свою «Сайгу» подальше (если она у вас есть).
Ну и в заключение, если ты хочешь попробовать применить описанные здесь способы на собственной плате Arduino или уже применил один из них и срочно ищешь замену - переходи в соответствующий раздел и покупай гарантированно рабочую плату по приятной цене!