Вы здесь

Питание для Arduino, востанавливаем ардуино

 Тема питания для arduino очень важна, я решил ей уделить целую статью поскольку сам имел печальный опыт. Так как в основе arduino находиться микроконтроллер, то наша плата становится заложником стабильного питания, при превышении которого плата может выйти из строя и иногда дешевле приобрести новую чем ее ремонтировать. В данной статье мы обсудим как избежать "Гибели" arduino и даже продлить ей жизнь.
 Ну как обычно мы начнем с arduino uno r3, для остальных версий arduino все будет похоже.
Приведу немного характеристик arduino uno:
МикроконтроллерATmega328
Рабочее напряжение
5 В
Входное напряжение (рекомендуемое)7-12 В
Входное напряжение (предельное)
6-20 В
Постоянный ток через вход/выход
40 мА
 Под рабочим напряжением имеется в виду рабочее напряжение микроконтроллера. Данный микроконтроллер может работать с напряжением от 1,8 до 5 вольт(1.8 - 5.5V for ATmega328P - datasheet). Отсюда уже можно понять что пониженное напряжение для него не страшно, это только может сказаться на работе подключенных датчиков и серийном порте. Но превышение 5.5 вольт является очень критичным, как только напряжение превысит этот показатель то микроконтроллер(далее МК) сгорит. Так же в оригинальных ардуино или копиях оригинала для связи МК с компьютером есть еще одна МК Atmega16u2, данная микросхема отвечает за прошивку основной МК atmega328 и связи ее с компьютером(по сути она преобразует сигнал последовательного порта rs-232 ttl в параллельный usb). Для запуска atmega16u2 необходимо больше напряжение, минимальное напряжение 2.7В (Operating Voltages – 2.7 - 5.5V - datasheet).
 В arduino предусмотрено подключение питания 3-мя различными способами:
  1. Питание от USB компьютера или другого устройства
  2. Через разъем для питания
  3. Разъемы GND и Vin на плате
 Напряжение от usb поступает напрямую на плату не через стабилизатор, так как в usb стабильное напряжение 5 вольт которое нам подходит. Напряжение в остальных двух случаях проходит через стабилизатор NCP1117ST50T3G который выдает на выходе 5 вольт. Перед стабилизатором в схеме предусмотрен диод D1(M7) он защищает от не правильной полярности. Контакт Vin тоже попадает на стабилизатор.   На схеме часть со стабилизатором и входом обозначена розовым цветом VOLTAGE REGULATOR SUBSYSTEM. Так как в данных платах предусмотрено напряжение 3,3 вольта после получение со стабилизатора 5 вольт или от usb напряжение попадает на второй стабилизатор LP2985-330BVR в результате чего оно понижается до 3,3 вольт (на схеме выделено голубым MULTIPLE INPUT MANAGEMENT SUBSYSTEM). Но и это еще не все, для защиты портов usb на плате предусмотрен предохранитель F1 (500мА) - защита от больших токов. На плате предусмотрено отключение питание usb при наличии достаточного напряжения на входе Vin или разъеме питания. Принцип действия заключается в том, что напряжение Vin попадает на делитель напряжения образованный резисторами RN1A и RN1B, после этого напряжение попадает на компаратор (микросхема LMV358IDGKR) на втором входе (-) 3,3 вольт. Выход компаратора управляет затвором p-канального MOSFET транзистора FDN340P, в случае если напряжение на входе больше 6,6 вольт на затвор попадает положительное напряжение и цепь USBVCC обрывается (отключается питание usb), а если меньше то питание usb идет дальше по схеме и попадает на "шину" +5 и стабилизатор 3,3 вольт. Для примера на входе 7 вольт, после делителя получилось 3,5 вольт и это больше чем 3,3 на втором входе компаратора, а значит на выходе компаратора и затворе транзистора положительное напряжение и как следствие цепь usb отключается.
Поскольку со схемой питания мы разобрались, перейдем к неисправностям.

Неисправности и их решения

1. Нет питание от usb, плата не определяется компьютером
 
 Что делать если ваша плата перестала определяться?! Первым делом нужно проверить напряжение на микроконтроллере atmega16u2, именно она отвечает за загрузку скетча, определения платы и обеспечивает работу терминала. Отсутствие напряжение на микроконтроллере означает потерю связи компьютер-плата. Для начала нужно проверить поступает ли напряжение на плату, удобнее это сделать с обратной стороны. Для того что бы проверить входное напряжение на плате нужно подключить кабель к usb и замерить напряжение на выходах отмеченных на рисунке ниже.
 Если там напряжение около 5 вольт значит идем дальше, если нет проверяем кабель и устройство к которому подключаем. Для дальнейшей проверки мы будем пользоваться рисунком ниже.
  Поскольку напряжение поступает на плату дальше можно проверять все по цепи питания либо замерить напряжение на микроконтроллере atmega16u2 (на рисунке отмечен синим цветом). Мы будем проверять напряжение на микроконтроллере, это может иногда сэкономить время. Поскольку размеры atmega16u2 не большие мы будем замерять напряжение на контакте конденсатора C7 (отмечен красным, связан с плюсом питания микросхемы) и контакте конденсатора С9 (отмечен красным, связан с плюсом питания микросхемы). При отсутствии напряжения около 5 вольт, есть смысл проверить предохранитель F1 (на схеме рисунке отмечен коричневым цветом). При выходе из строя предохранителя нужно заменить на похожий для токов 500мА, либо запаять перемычку(небезопасно). Ну а если дело не в предохранителе берем схему и проверяем все по порядку.
 Если же напряжение atmega16u2 нормальное (около пяти вольт) то нужно смотреть в сторону контроллера и интерфейса usb, можно проверить входные сопротивления на рисунке отмечены фиолетовым цветом (должны быть номиналом 20ОМ). Если же сопротивления в порядке, следует проверить сам микроконтроллер  для это нужно подключить программатор к разъему программирования isp справа от микроконтроллера и попробовать считать с него данные. В случае успеха не стоит радоваться заранее, у микроконтроллера могут выгореть ножки подключенные к усб, но в целом он будет работать. Признаки не исправного микроконтроллера :
  • Сильно греется (за пару секунд нагревается до больших температур)
  • Возрастает энергопотребление
  • Возможно не все ноги микроконтроллера работают
 Так же есть небольшая вероятность выхода из строя кварцевого генератора (обведен на рисунке зеленым цветом), можно проверить его осциллографом. В случае неисправности atmega16u2 её необходимо заменить, но её крохотные размеры делают замену очень очень трудной. Можно работать если "жив" основной микроконтроллер atmega328p и без atmega16u2, прошивая атмегу 328-ую программатором через isp разъем, но если atmega16u2 греется то перегревом она может вывести из строя другие элементы.
На фото выпаянный микроконтроллер atmega16u2:
2. Нет питания микроконтроллера (5 Вольт)
 У вас подозрение что напряжение а микроконтроллере далеко не 5 вольт или его вовсе нет?! За напряжение 5 вольт от внешнего источника отвечает стабилизатор напряжения NCP1117ST50, при потере питания 5 вольт стоит проверить его. Причинами выхода из строя может быть несколько перегрев, превышение допустимых токов и т.д. Расположение и схема включение показана на рисунке ниже.
Для проверки напряжения на стабилизаторе нужно измерить напряжение между ногами GND(1) и Output(2), оно должно быть 5 вольт. При отсутствии или меньшем напряжении нужно проверить напряжение на входе, для этого нужно замерить напряжение на ногах GND(1)  и Input(3) оно должно быть примерно таким как источника питания. При отсутствии напряжения нужно проверить диод D1 (отмечен на рисунке ниже). При низком напряжении на выходе стоит так же проверить конденсаторы С1 и С2 которые расположены под разъемом питания.
 
 Если же конденсаторы в подряде и напряжение на входе нормальное, то следует заменить стабилизатор NCP1117ST50 (при отсутствии такого можно использовать AMS1117 5.0 - применяется в китайских копиях Arduino UNO).
Замена стабилизатора
 Для замены стабилизатора без фена (паяльником) я откусываю кусачками три ноги как на рисунке ниже.
 Металлическое основание стабилизатора откусывать не надо (оно выполняет функцию теплоотвода), после того как мы ампутировали три ноги его достаточно хорошо прогреть паяльником и снять стабилизатор пинцетом.  Я пытался откусить основание и оторвал немного дорожку под ним, это не критично но с точки зрения эстетичности так себе. Осталось выпаять оставшиеся концы ног, после чего Вуаля:
 Запаиваем новый стабилизатор и радуемся работоспособности. Таким же методом и меняем стабилизатор (откусыванием ног) 3,3 вольт.
 3. Нет напряжения 3,3 вольта
 В вашей плате исчезло напряжение 3,3 вольта?! Это пожалуй самый простой сценарий и легко поправимый. За преобразования напряжения в 3,3 вольта отвечает маленькая микросхема LP2985-33DBVR, и с связан ней только один элемент конденсатор С3 1мкф. В случае отсутствия нужного напряжения есть смысл первым делом смотреть  в ее сторону. Нам нужно проверить напряжение на её входе и выходе.
 Для проверки входного напряжение мы должны проверить напряжение на ноге Vin(1) и GND(2), как на рисунке выше. В случае наличие напряжение там около 5 вольт мы будем проверять выходное напряжение, в противном случае нужно искать по схеме где "обрыв". Для проверки напряжения на выходе стабилизатора необходимо замерить напряжение между контактами Vout(5) и Gnd(2), при нормальной работе там будет 3,3 вольта. Так же особенностью данного стабилизатора является то что у нее есть контакт включения и выключения, те для работы нужно подать на 3-ю ногу высокий уровень сигнала, но в arduino ноги Vin и ON/OFF соединены между собой и на ней будет около 5 вольт при нормальной работе. При желании наличие напряжение на ноге можно замерить между 2 и 3 ногой. Если напряжение на входах присутствует, а на выходе стабилизатора его нет, то данный стабилизатор подлежит замене.
 
Советы по продлению жизни Arduino.
  • Не стоит подключать сомнительные и не рабочие блоки питания (блок с прыгающим напряжении +-0,4 вольта сжег стабилизатор ), лучше выбирать стабилизированные блоки питания.
  • Не допускать замыкание контактов + и -.
  • Ну и хоть и предельное напряжение всегда высокое, но стоит учесть что чем выше разность входного напряжение и напряжения стабилизатора (+5 В) тем больше нагрев стабилизатора. А перегрев стабилизатора может вывести из строя другие элементы платы. Идеальное напряжение на входе будет 6,6-7,6 вольт. Можно использовать и 12 вольт и все будет работать, но если плата будет работать круглосуточно то я рекомендовал бы способ описанный ниже.
 
Для достижение этих показателей можно использовать стабилизатор между Arduino и источником питания, тем самым будет греться стабилизатор находящийся за пределами платы. В качестве токового стабилизатора я выбрал L7808CV, поскольку 6,6-7,6 вольт ничего не было пришлось брать на 8 вольт. Собрать можно хоть на макетке если не заворачиваться, схема следующая:
 Всем спасибо за внимание, надеюсь статья оказалась полезной.
Всего голосов: 469