Оглавление:

Цифровое питание от батарей: 7 шагов (с изображениями)
Цифровое питание от батарей: 7 шагов (с изображениями)

Видео: Цифровое питание от батарей: 7 шагов (с изображениями)

Видео: Цифровое питание от батарей: 7 шагов (с изображениями)
Видео: arduino подключение питания и виды сигналов урок №2. 2024, Ноябрь
Anonim
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием
Цифровой источник питания с батарейным питанием

Вы когда-нибудь хотели получить источник питания, которым можно пользоваться в дороге, даже если поблизости нет розетки? И было бы здорово, если бы он был очень точным, цифровым и управляемым через ПК?

В этой инструкции я покажу вам, как построить именно это: цифровой источник питания с батарейным питанием, который совместим с Arduino и может управляться через ПК через USB.

Некоторое время назад я построил блок питания из старого блока питания ATX, и, хотя он отлично работает, я хотел улучшить свою игру с помощью цифрового блока питания. Как уже было сказано, он питается от батарей (точнее, от 2 литиевых элементов) и может выдавать максимум 20 В при 1 А; Этого достаточно для большинства моих проектов, требующих точного источника питания.

Я покажу весь процесс проектирования, и все файлы проекта можно найти на моей странице GitHub:

Давайте начнем!

Шаг 1. Характеристики и стоимость

Особенности и стоимость
Особенности и стоимость

Функции

  • Режимы постоянного напряжения и постоянного тока
  • Использует малошумящий линейный регулятор, которому предшествует трекинг-предварительный регулятор для минимизации рассеиваемой мощности.
  • Использование компонентов, устанавливаемых вручную, чтобы проект оставался доступным
  • Работает на ATMEGA328P, запрограммирован с помощью Arduino IDE
  • Связь с ПК через приложение Java через micro USB
  • Питание от 2 защищенных литий-ионных элементов 18650
  • Разъемы типа «банан» с шагом 18 мм для совместимости с адаптерами BNC

Характеристики

  • 0 - 1A, шаг 1 мА (10-битный ЦАП)
  • 0-20 В, шаг 20 мВ (10-битный ЦАП) (истинный режим 0 В)
  • Измерение напряжения: разрешение 20 мВ (10-битный АЦП)
  • Текущее измерение:

    • <40 мА: разрешение 10 мкА (ina219)
    • <80 мА: разрешение 20 мкА (ina219)
    • <160 мА: разрешение 40 мкА (ina219)
    • <320 мА: разрешение 80 мкА (ina219)
    • > 320 мА: разрешение 1 мА (10-битный АЦП)

Расходы

Полный блок питания обошелся мне примерно в 135 долларов, со всеми одноразовыми компонентами. Батареи - самая дорогая часть (30 долларов за 2 элемента), поскольку они защищены литиевыми элементами 18650. Можно значительно снизить стоимость, если работа от батареи не требуется. Без батарей и схемы зарядки цена упадет примерно до 100 долларов. Хотя это может показаться дорогим, блоки питания с гораздо меньшей производительностью и функциями часто стоят дороже.

Если вы не против заказать компоненты на ebay или aliexpress, цена с батареями упадет до 100 долларов, а без них - до 70 долларов. Доставка деталей занимает больше времени, но это приемлемый вариант.

Шаг 2: Схема и теория работы

Схема и теория работы
Схема и теория работы

Чтобы понять работу схемы, нам нужно будет взглянуть на схему. Я разделил его на функциональные блоки, чтобы было легче понять; Таким образом, я также объясню операцию шаг за шагом. Эта часть довольно глубокая и требует хороших знаний в области электроники. Если вы просто хотите узнать, как построить схему, вы можете перейти к следующему шагу.

Главный блок

Работа основана на микросхеме LT3080: это линейный стабилизатор напряжения, который может понижать напряжение на основе управляющего сигнала. Этот управляющий сигнал будет генерироваться микроконтроллером; как это делается, будет подробно объяснено позже.

Настройка напряжения

Схема LT3080 генерирует соответствующие управляющие сигналы. Сначала посмотрим, как устанавливается напряжение. Настройка напряжения с микроконтроллера представляет собой сигнал ШИМ (PWM_Vset), который фильтруется фильтром нижних частот (C9 и R26). Это создает аналоговое напряжение - от 0 до 5 В - пропорциональное желаемому выходному напряжению. Поскольку наш выходной диапазон составляет 0–20 В, нам придется усилить этот сигнал с коэффициентом 4. Это делается с помощью неинвертирующей конфигурации операционного усилителя U3C. Коэффициент усиления установленного штифта определяется R23 // R24 // R25 и R34. Эти резисторы имеют допуск 0,1%, чтобы минимизировать ошибки. R39 и R36 здесь не имеют значения, поскольку они являются частью контура обратной связи.

Текущая настройка

Этот установочный штифт также может использоваться для второй настройки: текущего режима. Мы хотим измерить потребляемый ток и выключить выход, когда он превысит требуемый ток. Поэтому мы снова начинаем с сигнала ШИМ (PWM_Iset), генерируемого микроконтроллером, который теперь подвергается фильтрации нижних частот и ослабляется для перехода от диапазона 0-5 В к диапазону 0-2 В. Это напряжение теперь сравнивается с падением напряжения на резисторе считывания тока (ADC_Iout, см. Ниже) конфигурацией компаратора операционного усилителя U3D. Если ток слишком велик, это включит светодиод, а также потянет установленную линию LT3080 на землю (через Q2), тем самым отключив выход. Измерение тока и генерация сигнала ADC_Iout выполняется следующим образом. Выходной ток протекает через резисторы R7 - R16. Это всего 1 Ом; Причина отказа от использования 1R в первую очередь двоякая: 1 резистор должен иметь более высокую номинальную мощность (он должен рассеивать не менее 1 Вт), а при параллельном подключении 10 резисторов 1% мы получаем более высокую точность, чем с одним резистором 1%. Хорошее видео о том, почему это работает, можно найти здесь: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Когда через эти резисторы протекает ток, он создает падение напряжения, которое мы можем измерить, и это размещен перед LT3080, поскольку падение напряжения на нем не должно влиять на выходное напряжение. Падение напряжения измеряется с помощью дифференциального усилителя (U3B) с коэффициентом усиления 2. Это дает диапазон напряжения 0–2 В (подробнее об этом позже), следовательно, делитель напряжения на ШИМ-сигнале тока. Буфер (U3A) нужен для того, чтобы ток, протекающий через резисторы R21, R32 и R33, не проходил через резистор считывания тока, что могло бы повлиять на его показания. Также обратите внимание, что это должен быть операционный усилитель с питанием от шины питания к сети, поскольку входное напряжение на положительном входе равно напряжению питания. Неинвертирующий усилитель предназначен только для измерения курса, хотя для очень точных измерений у нас есть микросхема INA219 на борту. Этот чип позволяет нам измерять очень малые токи и адресуется через I2C.

Дополнительные вещи

На выходе LT3080 есть еще кое-что. Во-первых, есть сток тока (LM334). Он потребляет постоянный ток 677 мкА (устанавливается резистором R41) для стабилизации LT3080. Однако он подключен не к земле, а к VEE, отрицательному напряжению. Это необходимо для того, чтобы LT3080 мог работать при понижении напряжения до 0 В. При подключении к земле минимальное напряжение будет около 0,7 В. Это кажется достаточно низким, но имейте в виду, что это не позволяет нам полностью отключить источник питания. Стабилитрон D3 используется для ограничения выходного напряжения, если оно превышает 22 В, а резисторный делитель понижает диапазон выходного напряжения с 0-20 В до 0-2 В (ADC_Vout). К сожалению, эти схемы находятся на выходе LT3080, а это означает, что их ток будет влиять на выходной ток, который мы хотим измерить. К счастью, эти токи постоянны, если напряжение остается постоянным; так что мы можем откалибровать ток при отключении нагрузки в первую очередь.

Зарядный насос

Отрицательное напряжение, о котором мы упоминали ранее, генерируется любопытной маленькой схемой: накачкой заряда. Для его работы я бы сослался здесь: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Он питается от 50% PWM микроконтроллера (PWM).

Повышающий преобразователь

Давайте теперь посмотрим на входное напряжение нашего основного блока: Vboost. Мы видим, что это 8 - 24 В, но подождите, 2 литиевых элемента последовательно дают максимум 8,4 В? В самом деле, именно поэтому нам нужно повысить напряжение с помощью так называемого повышающего преобразователя. Мы всегда можем поднять напряжение до 24 В независимо от того, какой выход мы хотим; однако это привело бы к потере энергии LT3080, и все стало бы очень жарко! Поэтому вместо этого мы повысим напряжение немного больше, чем выходное напряжение. Примерно на 2,5 В выше подходит, чтобы учесть падение напряжения на резисторе считывания тока и падение напряжения LT3080. Напряжение устанавливается резисторами на выходном сигнале повышающего преобразователя. Чтобы изменить это напряжение на лету, мы используем цифровой потенциометр MCP41010, который управляется через SPI.

Зарядка батареи

Это приводит нас к реальному входному напряжению: батареям! Поскольку мы используем защищенные ячейки, нам просто нужно соединить их последовательно, и все готово! Здесь важно использовать защищенные элементы, чтобы избежать перегрузки по току или переразряда и, следовательно, повреждения элементов. Опять же, мы используем делитель напряжения для измерения напряжения батареи и снижения его до приемлемого диапазона. А теперь самое интересное: схема зарядки. Для этой цели мы используем микросхему BQ2057WSN: в сочетании с TIP32CG она, по сути, сама образует линейный источник питания. Этот чип заряжает клетки по соответствующей траектории CV CC. Поскольку в моих батареях нет датчика температуры, этот вход должен быть привязан к половине напряжения батареи. На этом завершается часть регулирования напряжения источника питания.

Регулятор 5В

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

2,048 В опорное напряжение

Эта маленькая микросхема обеспечивает очень точное опорное напряжение 2,048 В. Он используется в качестве эталона для аналоговых сигналов ADC_Vout, ADC_Iout, ADC_Vbatt. Вот почему нам потребовались делители напряжения, чтобы снизить эти сигналы до 2 В. Микроконтроллер Мозгом этого проекта является ATMEGA328P, это тот же самый чип, который используется в Arduino Uno. Мы уже рассмотрели большинство сигналов управления, но, тем не менее, есть некоторые интересные дополнения. Поворотные энкодеры подключены только к двум внешним контактам прерывания Arduino: PD2 и PD3. Это необходимо для надежной программной реализации. В переключателях внизу используется внутренний подтягивающий резистор. Затем есть этот странный делитель напряжения на линии выбора микросхемы потенциометра (Pot). Делитель напряжения на выходе, для чего он нужен; Вы могли бы сказать. Как упоминалось ранее, напряжение питания 5 В не очень точное. Таким образом, было бы хорошо измерить это точно и соответствующим образом отрегулировать рабочий цикл сигнала ШИМ. Но так как у меня больше не было свободных входов, мне пришлось сделать двойную функцию вытаскивания булавки. Когда источник питания загружается, этот штифт сначала устанавливается как вход: он измеряет шину питания и калибруется. Затем он устанавливается как выход и может управлять строкой выбора микросхемы.

Драйвер дисплея

Для дисплея я хотел широко доступный и дешевый жк-экран Hitachi. Они приводятся в движение с помощью 6 штифтов, но, поскольку у меня не осталось штифтов, мне потребовалось другое решение. На помощь приходит сдвиговый регистр! 74HC595 позволяет мне использовать линию SPI для управления дисплеем, поэтому требуется только одна дополнительная линия выбора микросхемы.

FTDI

Последняя часть этого источника энергии - связь с жестоким внешним миром. Для этого нам нужно преобразовать последовательные сигналы в сигналы USB. Это делается с помощью микросхемы FTDI, которая подключается к порту micro USB для облегчения подключения.

Вот и все!

Шаг 3: печатная плата и электроника

Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника
Печатные платы и электроника

Теперь, когда мы понимаем, как работает схема, мы можем приступить к ее созданию! Вы можете просто заказать печатную плату онлайн у вашего любимого производителя (моя стоит около 10 долларов), файлы gerber можно найти на моем GitHub вместе со списком материалов. Сборка печатной платы в основном сводится к пайке компонентов на месте в соответствии с шелкографией и спецификацией материалов.

Первый шаг - это пайка SMD-компонентов. Большинство из них легко сделать вручную, за исключением микросхемы FTDI и разъема micro USB. Таким образом, вы можете не паять эти 2 компонента самостоятельно, а вместо этого использовать коммутационную плату FTDI. Я предоставил штыри разъема, где это можно припаять.

Когда SMD-работа будет завершена, можно переходить ко всем компонентам со сквозными отверстиями. Это очень просто. Для микросхем вы можете использовать разъемы вместо того, чтобы паять их непосредственно на плату. Предпочтительно использовать ATMEGA328P с загрузчиком Arduino, в противном случае вам придется загружать его с помощью заголовка ICSP (показано здесь).

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

Осталось только добавить 2 провода, которые будут подключаться к клеммам типа «банан» на передней панели.

Шаг 4: Корпус и сборка

Корпус и сборка
Корпус и сборка
Корпус и сборка
Корпус и сборка
Корпус и сборка
Корпус и сборка

Когда печатная плата сделана, мы можем перейти к корпусу. Я специально разработал печатную плату для этого корпуса hammond, поэтому использовать другой корпус не рекомендуется. Однако вы всегда можете напечатать корпус с такими же размерами на 3D-принтере.

Первым делом нужно подготовить торцевую панель. Нам нужно будет просверлить несколько отверстий для винтов, переключателей и т. Д. Я сделал это вручную, но если у вас есть доступ к ЧПУ, это будет более точный вариант. Я проделал отверстия согласно схеме и нарезал отверстия для винтов.

Теперь неплохо добавить несколько шелковых подушечек и удерживать их на месте с помощью небольшой капли суперклея. Они изолируют LT3080 и TIP32 от задней панели, сохраняя при этом теплопередачу. Не забывайте о них! При прикручивании чипов к задней панели используйте слюдяную шайбу, чтобы обеспечить изоляцию!

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

Теперь, когда обе панели на месте, мы можем вставить сборку в корпус, добавить батареи и закрыть все это. Убедитесь, что вы используете защищенные батареи, вы не хотите, чтобы они взорвались!

На данный момент оборудование готово, теперь все, что осталось, это вдохнуть в него немного жизни с помощью программного обеспечения!

Шаг 5: Код Arduino

Код Arduino
Код Arduino

Мозгом этого проекта является ATMEGA328P, который мы будем программировать с помощью Arduino IDE. В этом разделе я рассмотрю основные операции кода, подробности можно найти в комментариях внутри кода.

Код в основном выполняет следующие шаги:

  1. Чтение последовательных данных из Java
  2. Кнопки опроса
  3. Измерьте напряжение
  4. Измерьте ток
  5. Измерьте ток с помощью INA219
  6. Отправить последовательные данные в Java
  7. Настроить бустконвертер
  8. Зарядить аккумулятор
  9. Экран обновления

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

Теперь код можно загрузить на плату через порт micro USB (если в чипе есть загрузчик). Плата: Arduino pro или pro mini Программатор: AVR ISP / AVRISP MKII

Теперь мы можем взглянуть на взаимодействие между Arduino и ПК.

Шаг 6: код Java

Код Java
Код Java

Для регистрации данных и управления питанием через ПК я сделал приложение на Java. Это позволяет нам легко управлять доской через графический интерфейс. Как и в случае с кодом Arduino, я не буду вдаваться в подробности, а сделаю обзор.

Начнем с создания окна с кнопками, текстовыми полями и т. Д.; базовый графический интерфейс.

Теперь самое интересное: добавление USB-портов, для которых я использовал библиотеку jSerialComm. После выбора порта java будет прослушивать любые входящие данные. Мы также можем отправлять данные на устройство.

Кроме того, все входящие данные сохраняются в файл csv для последующей обработки данных.

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

Хотя программа довольно проста, она может быть очень полезна для управления ею с помощью ПК и регистрации данных.

Шаг 7: Успех

Успех!
Успех!
Успех!
Успех!
Успех!
Успех!

После всей этой работы у нас теперь есть полностью функциональный источник питания!

Я также должен поблагодарить некоторых людей за их поддержку:

  • Проект был основан на проекте uSupply EEVBLOG и его схеме Rev C. Так что особая благодарность Дэвиду Л. Джонсу за то, что он выпустил свои схемы под лицензией с открытым исходным кодом и поделился всеми своими знаниями.
  • Огромное спасибо Йохану Паттину за изготовление прототипов этого проекта.
  • Также Седрик Буссхотс и Ханс Ингельбертс заслуживают похвалы за помощь в устранении неполадок.

Теперь мы можем наслаждаться нашим собственным самодельным источником питания, который пригодится при работе над другими замечательными проектами! И самое главное: мы многому научились на своем пути.

Если вам понравился этот проект, проголосуйте за меня в конкурсе PowerSupply, я буду очень признателен!

Конкурс электропитания
Конкурс электропитания
Конкурс электропитания
Конкурс электропитания

Вторая премия в конкурсе источников питания

Рекомендуемые: