Контакты

ATX блок питания управляемый Arduino. Создание и контроль блока питания с помощью ардуино Arduino блок питания с защитой

Тема питания для arduino очень важна, я решил ей уделить целую статью поскольку сам имел печальный опыт. Так как в основе arduino находиться микроконтроллер, то наша плата становится заложником стабильного питания, при превышении которого плата может выйти из строя и иногда дешевле приобрести новую чем ее ремонтировать. В данной статье мы обсудим как избежать "Гибели" arduino и даже продлить ей жизнь.

Ну как обычно мы начнем с arduino uno r3, для остальных версий arduino все будет похоже.

Приведу немного характеристик arduino uno:

Под рабочим напряжением имеется в виду рабочее напряжение микроконтроллера. Данный микроконтроллер может работать с напряжением от 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 и других устройств. Это рассматривается в этой и нескольких подобных статьях. Однако благодаря некоторым особенностям ATX, мы можем использовать его как "умный" блок питания, а это еще лучше.

В этой статье описано как просто при помощи микроконтроллера контролировать источник питания. Таким образом, вы можете использовать ATX блок питания в нескольких режимах: он может отдыхать, работать в экономичном режиме для слаботочных устройств и давать десятки ампер на 5В и/или 12В линии при необходимости. Общая стоимость управления блоком питания составляет несколько фунтов, вы не повредите блок питания, и сможете использовать его в дальнейшем.

Необходимые детали:

  • Удлинитель ATX кабеля для материнской платы
  • 3 провода с BLS штырьками
  • 1K резистор (номинал не критичен)
  • Термоусадочная трубка

Инструменты:

  • Паяльник и припой
  • Ножницы
  • Зажигалка для нагрева термоусадочной трубки.

Основные элементы:

  • Блок питания ATX
  • 5В микроконтроллер или Arduino
  • Мощные транзисторы для коммутации

Характеристики ATX-блока питания:

Блок питания ATX это замечательная вещь! На наклейке нового блока питания купленного за 700 руб, указаны такие параметры: 20А на 3.3В, 30А на 5В, 30А на 12В плюс ток в режиме простоя: 2А на 5В. Сейчас 5В 2A вполне достаточно для запуска практически любых микроконтроллеров 5В.

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

Изготовление разъема:

Разъем питания ATX хорошо известен, и с его распиновкой можно ознакомиться в Интернете, например, . Нам нужны: провод резервного питания 5В (фиолетовый), провод управления (зеленый) и любой провод GND (черный).

Начнем с того конца удлинителя, который показан на первой картинке. Отрежьте от него всё, что нам не нужно. Затем отрежьте фиолетовый, зеленый и черный провода ближе к другому концу. Наденьте на них термоусадочную трубку и обрежьте провода с BLS штырьками с одного конца.

Необходимо добавить резистор 1 кОм на провод управления во избежание избыточного тока. Припаяйте резистор на зеленый провод с BLS штырьком, а потом на зеленый провод удлинителя ATX. Припаяйте к фиолетовому и черному проводу соответствующие провода с BLS штырьками (в моем случае красный и черный). Наконец, прогрейте термоусадочные трубки.

Контроль и использование Arduino ATX

Чтобы использовать и контролировать ATX блок питания достаточно использовать Arduino. Подключите фиолетовый (на фото красный) ATX провод к +5 В (не используйте Vin) и черный провод ATX к GND. Подключите зеленый провод ATX к любому управляющему выводу. Я использовал A0 (D14), но общие выводы цифрового ввода-вывода работают так же. Подключите ATX, и Arduino будет получать резервный ток, и вентилятор, вероятно, будет выключен.

При необходимости полной мощности просто используйте команду:

const int ctrlPin=14; // Используйте необходимый вам pin. Я использовал D14.
digitalWrite(ctrlPin, LOW);

Для отключения полной мощности используйте:

digitalWrite(ctrlPin, HIGH);

Что эквивалентно команде:

pinMode(ctrlPin, INPUT);

т.е. выход установится в состояние с высоким сопротивлением.

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

Примечание ! Вы должны быть осторожны при питании Arduino прямо от +5 В. Если вы также подключили кабель USB, то ток может пойти в USB порт вашего ПК, так что будить осторожны.

Управление ATX в действии

Ниже приведено видео будильника со световым эффектом. Вы видите, что Arduino отображает время постоянно, но изначально вентилятор на ATX блоке питания не работает. Это потому, что мы использует резервное напряжение.

Когда я запускаю основную светодиодную лампу (около 9 Вт на данный момент), Arduino включает основное питание ATX и вентилятор начинает работать. Когда лампа погаснет, вентилятор остановится.

Для будильника это очень полезно, потому что шум вентилятора будет мешать ночью. Есть много подобных ситуаций, когда основное питание ATX нужно только время от времени.


C этой схемой также часто просматривают:
Ардуино следит за напряжением на выходе, за током, и посредством ШИМ пинает силовой транзистор так, чтобы блок питания выдавал установленные значения.
Блок питания умеет выдавать напряжение от 1 до 16 вольт, обеспечивать ток 0.1 - 8 ампер (при нормальном источнике напряжения) уходить в защиту и ограничивать ток. То есть его можно использовать для зарядки аккумуляторов, но я не рискнул, да и у меня уже есть. Еще одна особенность этого странного блока питания в том, что он питается от двух напряжений. Основное напряжение должно подкрепляться вольтодобавкой от батарейки, или второго блока питания. Это нужно для корректной работы операционного усилителя. Я использовал ноутбучный блок питания 19в 4А в качестве основного, и зарядку 5в 350мА от какого-то телефона в качестве добавочного питания.

Сборка.

Сборку я решил начать с пайки основной платы с расчетом забить болт, если не заработает, так как начитался комментов от криворуких, как все у них дымит, взрывается и не работает, да и к тому же я внес некоторые изменения в схему.
Для изготовления платы я купил новый лазерный принтер, чтобы наконец то освоить ЛУТ, ранее рисовал платы маркером (), тот еще геморрой. Плата получилась со второго раза, потому что в первый раз я зачем-то отзеркалил плату, чего делать было не нужно.

Окончательный результат:



Пробный запуск обнадежил, все работало как надо



После удачного запуска я принялся курочить корпус.
Начал с самого габаритного - системы охлаждения силового транзистора. За основу взял кулер от ноутбука, вколхозил это дело в заднюю часть.

Натыкал на переднюю панель кнопок управления и лампочек. Здоровенная крутилка это энкодер со встроенной кнопкой. Используется для управления и настройки. Зеленая кнопка переключает режимы индикации на дисплее, прорезь снизу для разъема юсб, три лампочки (слева направо) сигнализируют о наличии напряжения на клеммах, активации защиты при перегрузе, и об ограничении тока. Разъем между клеммами для подключения дополнительных устройств. Я втыкаю туда сверлилку для плат и резалку для оргстекла с нихромовой струной.

Засунул все кишки в корпус, подсоединил провода




После контрольного включения и калибровки закрыл крышкой.

Фото собранного

Отверстия проделаны под радиатором стабилизатора lm7805, который нехило греется. Подсос воздуха через них решил проблему охлаждения этой детали

Сзади выхлопная труба, красная кнопка включения и разъем под сетевой кабель.


Прибор обладает кое-какой точностью, китайский мультиметр с ним согласен. Конечно калибровать самопальную махарайку по китайскому мультиметру и говорить о точности достаточно смешно. Несмотря на это прибору найдется место на моем столе, так как для моих целей его вполне достаточно

Некоторые тесты

Взаимодействие с программой. На ней в реальном времени отображается напряжение и ток в виде графиков, так же с помощью этой программы можно управлять блоком питания.

К блоку питания подключена 12-вольтовая лампа накаливания и амперметр. Внутренний амперметр после подстройки работает сносно

Измерим напряжение на клеммах. Великолепно.

В прошивке реализована ваттосчиталка. К блоку подключена все та же лампочка на 12 вольт, на цоколе которой написано «21W». Не самый паршивый результат.


Изделием доволен на все сто, поэтому и пишу обзор. Может кому-то из читателей нехватает такого блока питания.

О магазинах:
Чип-нн порадовал скоростью доставки, но ассортимент маловат на мой взгляд. Этакий интернет магазин, аналогичный арадиомагазину в среднем городке. Цены ниже, кое на что в разы.
Чип-дип… закупил там то, чего не было в чип-нн, иначе б не сунулся. розница дороговата, но все есть.

Один из пе ворвых вопросов, который возникнет у начинающего программиста контроллеров, будет от чего же будет питаться наш проект. Когда мы подключаем контроллер к компьютеру, все необходимое питание мы получаем по USB (5 В и до 500 мА). Но мы ведь хотим, чтобыконтроллер мог работать независимо, поэтому должны позаботиться о автономности.

Самый простой вариант – подвести питание 5В к контроллеру напрямую (для этого есть соотвтетствующий пины «5.5В»). Но если это напряжение случайно повысится, есть риск спалить контроллер, ведь это питание подведено напрямую.Кроме того на плате есть встроенный стабилизатор напряжения, который защитит контоллер от скачков. Он подключен к пину “VIN” и к отдельному разъему питания на плате. Какое-же напряжение можно на него подать?

Разъем 5.5/2.1, который используется в Arduino- это штырьковый разъем питания, с диаметром цилиндрической части вилки 5.5 мм и внутренним диаметров отверстия в ней 2,1мм. В продаже можно найти стандартные зарядные устройства как этого типоразмера, тк и близкого к нему 5.5/2.4 – они также нам подходят, поскольку разница в три десятых миллиметра особой роли не сыграет

Смотрим в параметры нашей платы, и видим:

Рабочее напряжение 5В

Напряжение питания (предельное) 6-20В

Рабочее напряжение – это то, что наш контроллер может подать на выводы или прочитать с входа. То есть, если к какому-то контакту подключено напряжение 5В, контроллер будет чситать, что это логическая 1, или в понятиях программной оболочки Arduino значение HIGH (это для цифрового входа, аналоговый вход будет интерпретировать напряжение как число от 0 до 1023, т.е 5 вольт на аналоговом входе для контроллера соответствуют значанию 1023)

Рекомендуемое и предельное питание – это то, что мы можем подать на плату от блока питания или батареек. На плате имеется преобразователь питания, который понижает подводимое напряжение до нужного контроллеру 5В. Поскольку он тоже имеет не 100% КПД, то чтобы получить нужные нам 5В нужно подвести не меньше 6, а лучше 7 вольт. А вот с предельным напряжением нужно быть осторожным. Теоретически преобразователь потянет и 20В. Но чем больше напряжение, тем больше он будет греться. Фактически эта мощность, которая не расходуется ни на что полезное. И если питание от батареек/аккумуляторов, то мы с их помощью просто будем греть воздух. К тому же чем выше напряжение и, соответственно, температура, тем больше вероятность, что наш контроллер рано или поздно накроется. И если в оригинальной плате используются качественные компоненты, то в китайских репликах уже после 14-15 вольт можно распрощаться с контроллером. Вывод - если не уверен в качестве контроллера, не превышай рекомендуемые 12В. И даже если уверен, без крайней необходимости не превышай этот предел.

Кроме того, нужно следить за тем, какой ток нам нужен для нашей периферии. Если потребление в какой-то момент времени превысит предел контроллера, то он начнет работать неустойчиво или вообще перезагрузится. Контроллер имеет ограничение на максимальный ток с одного выхода (для наиболее распространенной модели Arduino Uno это 50 мА) Чтобы зажечь светодиод или включить реле этого тока достаточно. А вот в случае двигателей и сервоприводов нам понадобится питать их отдельно. Для двигателей постоянного тока и шаговых двигателей используются специальные драйверы моторов, которые имют возможность независимого питания. Небольшие сервоприводы можно запитывать напрямую от контроллера, но если их много или они имею большую мощность, то их линии питания тоже рекомендуется запитывать отдельно.

Если наш проект является стационарным и рядом есть обычная розетка, то можно использовать обычный блок питания на 7 вольт. Они могут быть расчитаны как на ток в 1А, так и на больший – зависит от потребителей. Правило простое – посчитать максимальную потребляемую мощность, прибавить для безопасности 20%. Например, если мы используем двигатели постоянного тока с пусковым током до 500мА, то с учетом потребления самой платы около 40мА нам потребуется (500+500+40)*1,2=1248 мА. Т.е нас устроит блок питания на 1,5А. Если же у нас мобильный робот, то наиболее простой вариант – использовать обычные пальчиковые элементы питания. Если использовать батарейки АА (1,5 В), то нам понадобится их не меньше четырех (6В), а лучше пять-шесть (7,5-9 Вольт). Если использовать аккумуляторы того-же типоразмера, то понадобится для того-же напряжения батарейный отсек на 5 (6В) или на 6-7 аккумуляторов (7,2-8,4 В). Здесь описан наиболее распространенный вариант, когда все наши комплектующие рассчитаны на напряжение около 6 В.

Понравилась статья? Поделитесь ей