Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Программируемый карманный блок питания с OLED-дисплеем

Компоненты и расходные материалы

Arduino UNO
× 1
Arduino Nano R3
× 1
XL 6009 DC DC Boost
× 1
Кнопочный переключатель SparkFun, 12 мм
× 1
Кристалл, 16 МГц
× 1
Разъем клеммной колодки
× 1
Линейный регулятор с регулируемым выходом
× 1
Линейный регулятор (7805)
× 1
1N4007 - высоковольтный диод с высоким номинальным током
× 1
Кабель USB-A - B
× 1
Многооборотный прецизионный потенциометр - 10 кОм (25 витков)
× 1
OP07 Instrumentation OpAmp
× 1
Стандартный блок сокетов
× 1
Протоплата FR4
× 1
Перемычки (общие)
× 1
Мужской заголовок 40, позиция 1, строка (0,1 ")
× 1
Резистор 10 кОм
× 1
Резистор 22,1 кОм
× 1
Резистор 1 кОм
× 1
Блокировочное реле Arduino 5v 2A
× 1
Цифровой потенциометр SparkFun MCP 4131 10 кОм
× 1
Медная лента Arduino
× 1
Arduino LM358 Opamp
× 1
Arduino 1306 OLED
× 1

Необходимые инструменты и машины

Паяльник (универсальный)
Пистолет для горячего клея (общий)
Мини-дрель

Приложения и онлайн-сервисы

IDE Arduino

Об этом проекте

Идея

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

Он имеет следующие особенности:

  • Программируемый
  • Перезаряжаемый
  • Портативный
  • Переменная шага
  • Измеритель напряжения / тока / мощности
  • Защищенное реле
  • Настраиваемый, компактный и симпатичный
  • Классный пользовательский интерфейс OLED
  • Кнопочное пользовательское управление и навигация по меню
  • Возможность обновления прошивки для получения дополнительных функций!

И самый универсальный источник питания для проектов маломощной электроники.

Живое действие!

Посмотрите это видео, демонстрирующее работу устройства:

Технические характеристики устройства

Устройство имеет следующие технические характеристики:

  • Максимальный выходной постоянный ток нагрузки:400 мА
  • Диапазон напряжения:2,0–12,0 вольт
  • Шаг напряжения:приблизительно 0,1 В
  • Наивысшая эффективность:75%.
  • Точность измерения тока:+/- 1 мА
  • Точность измерения напряжения:+/- 0,02 вольт.

Обратите внимание, что это устройство является быстрым прототипом. Можно сделать 0–30, даже при отрицательном питании и большем выходном токе, используя батареи большой емкости, дополнительную электронику и усовершенствованный дизайн.

Принцип работы

Сама конструкция требует значительных затрат на оборудование. Здесь много чего происходит. Примерная блок-схема системы выглядит примерно так:

Источником питания является литий-полимерный аккумулятор 3,7 В, перезаряжаемый через USB. Используя модуль повышения DC-DC XL6009, сначала мы получаем 15,6 вольт от Li-Po. Для запуска MCU мы также делаем 5 Вольт с помощью регулятора 7805.

Клон Arduino UNO Atmega328P связан с 2 переключателями пользовательского ввода на основе прерываний, элегантным выходным OLED-дисплеем. Порт загрузки прошивки (эскиза) Rx / Tx / DTR через USB / последовательный порт с ПК. (модуль 1)

Сердце проекта - цифровой потенциометр MCP4131 (Digipot) + операционный усилитель LM 358 на базе генератора шагового напряжения. Это напряжение является управляющим напряжением регулируемого регулятора LM317. (модуль 2)

Digipot управляется с Arduino с помощью команды, подобной Pseudo-SPI. LM317 спроектирован таким образом, что напряжение на выходе всегда на 1,25 В выше, чем Adjust Pin Voltage при условии, что напряжение на выводе INPUT достаточно высокое (здесь 15,6 вольт). (модуль 3)

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

АЦП измеряет все напряжения, связанные с контролем и защитой; Напряжение батареи, повышенное напряжение, напряжение считывания заряда и выходное напряжение регулируются через сеть делителя напряжения для питания диапазона АЦП, которое здесь составляет 0–1,1 вольт. Я использовал ВНУТРЕННИЙ ОПОР Arduino, который создает опорное напряжение 1,1 вольт.

Для измерения тока возврат (Gnd нагрузки) от выходной нагрузки подключается последовательно с резистором измерения тока 1 Ом к Gnd системы. Когда ток протекает через внешние нагрузки, в этом чувствительном резисторе также происходит падение напряжения. Это напряжение усиливается прецизионным операционным усилителем OP07 и подается на один из выводов АЦП.

Наконец, для зарядки аккумулятора 5 В от USB подключаются последовательно с диодом 4007 и токоограничивающим резистором 5 Ом к Li-Po аккумулятору. Это грубый метод зарядки, не лучший для зарядки Li-Po.

Итоги операции: Цифровой потенциометр MCP4131 создает ступенчатые напряжения в диапазоне 0-5 В с шагом около 40 мВ (7-битный цифровой потенциометр 10K имеет 129 шагов 5 В / 128 =0,40 мВ), которые затем в 2,5 раза усиливаются LM358, что дает 0-12,5 диапазон управляющих напряжений вольт с шагом 0,1 вольт. Этот усиленный сигнал ступенчатого напряжения подается на вывод регулировки LM317. LM317 генерирует выходное напряжение V_Step + 1,25 В, которое подается на внешние нагрузки. Возврат / земля внешней нагрузки соединяется с внутренней землей через резистор измерения тока 1 Ом. Предположим: x Ток мА течет к внешней нагрузке, это создаст x Падение мВ (закон Ома V =I * R) на резисторе измерения тока 1 Ом. Этот слабый сигнал напряжения подается на операционный усилитель OP07 с низким смещением (10 мкВ), настроенный с усилением 2,5X, что дает 2,5 x мВ Выход. АЦП Arduino сконфигурирован с внутренним опорным напряжением 1,1 В, так что напряжения от 0 до 1100 мВ могут быть измерены с шагом около 1 мВ (1100/1023). Выход OP07 подключен к АЦП Arduino для измерения тока. Вот почему ограничение по току составляет 400 мА. Его можно увеличить / уменьшить, изменив усиление OP07. Аналогичным образом диапазон выходного напряжения может быть изменен путем изменения повышающего напряжения и усиления LM358. Другие напряжения измеряются с помощью ослабляющих напряжений в цепи резистивного делителя напряжения, чтобы соответствовать диапазону АЦП. Реле защелки имеет 2 катушки. Подавая мгновенное питание на любую катушку, можно переключить контакты реле. После включения он остается там, поэтому катушка немедленно отключается.

Создание проекта

Сначала мы начнем с коробки с одним переключателем и сделаем необходимые разрезы и выравнивания для размещения аккумулятора, USB-порта для зарядки, выключателя питания и т. Д.

Далее, радиатор сделан из медной ленты и монеты для модуля повышения DC-DC.

Модуль наддува находится внутри розеточной коробки:

Используя вышеуказанные детали, изготавливаются следующие 3 модуля:

  • Arduino + I / O + модуль управления
  • Модуль ступенчатого напряжения и регулируемого регулятора
  • Модуль измерения тока

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

После использования горячего клея в качестве наполнителя, наконец, у нас есть:

Разработка прошивки и процедуры работы

Прошивка (Arduino Sketch) сейчас 1.0.2 Beta. Не все функции сейчас доступны. Но самые важные функции, такие как контроль напряжения, реле включения / отключения, просмотр информации, включены. В void setup () есть несколько функций инициализации для разогрева контактов Arduino, связанных с различным внешним оборудованием.

ВВОД :Есть 2 кнопки входа на основе прерывания для увеличения / уменьшения выходного напряжения, меню доступа (недоступно в этой версии). INT0 и INT1 на выводах 2 и 3 Arduino закодированы для ПРЕРЫВАНИЯ ПЕРЕРАБОТКИ КРАЯ. Вы увидите 2 конденсатора параллельно с механическими переключателями для устранения дребезга. Код написан для запуска прерываний, когда пользователь нажимает эти переключатели для включения / выключения выхода через реле или увеличения / уменьшения напряжения (бета).

ВЫХОД :1306 OLED показывает выходную информацию, полученную от АЦП, внутреннего таймера (для времени работы устройства) и флаговых переменных, чтобы информировать пользователя о состоянии включения / выключения выхода. Основанный на библиотеке U8G, OLED печатает информацию как текстовую, так и числовую. У меня есть планы по использованию графического (аналогового) представления.

5 цифровых контактов SSD1306 (OLED от Waveshare) clk, din, cs, d / c, res подключены к 10, 9, 11, 13, 12 контактам Arduino и запрограммированы соответствующим образом. В основном цикле update_display () функция вызывается каждый раз для обновления информации на OLED.

Внутренний таймер 1 Atmega328P настроен на периодическое срабатывание каждые 1 секунду для отслеживания времени.

КОНТРОЛЬ: Цифровой потенциометр MCP 4131 - это контроллер с increment_digipot () & Decment_digipot () функции, в которых данные смещаются с правильной синхронизацией и задержкой, используя выводы 6, 7, 8 как CS, Clk, выводы данных. Это как медленный мягкий SPI. Поскольку я уже использовал контакты Hardware SPI где-то еще, тогда это было единственное решение.

Два цифровых контакта 4 и 5 используются для управления реле фиксации. Короткий импульс высокого уровня подается на управляющие транзисторы реле, чтобы возбудить 2 катушки, чтобы переключить реле. Это происходит как автоматически (при перегрузке / коротком замыкании), так и вручную пользователем.

ADC: calc_VI () функцию в основном цикле выполняет analogRead для получения 20-кратного усреднения информации о напряжении и токе и обновления переменной для получения новой информации, которая затем выводится на дисплей

Скетч написан на нескольких вкладках, чтобы упорядочить код для различных функций, связанных с разными операциями. Есть ADC, Digipot, Display_Fn Вкладки, Прерывание, Реле и Таймер, на которых расположены все функции, определяемые пользователем. Я также постараюсь добавить больше комментариев, объясняющих все функции, но вам не должно быть сложно понять, потому что эти функции основаны на нескольких функциях Arduino, выполняющих определенные задачи.

Ограничение

У этого устройства есть несколько серьезных ограничений:

  • Напряжение не может быть ниже 2,0 В
  • Выходное напряжение ступенчатое, но не непрерывное.
  • Измерение тока приводит к смещению заземления при сильном токе.
  • Измерение АЦП имеет низкое разрешение.
  • Наихудший КПД в классе при низковольтной сильноточной нагрузке.
  • Нестандартная, небезопасная зарядка Li-Po.

Вы можете узнать больше о каждом компоненте в этих руководствах:

  • Поворотный потенциометр
  • Руководство по кнопкам

Заключение &

Этот программируемый источник питания поможет мне более эффективно создавать проекты / прототипы. Измерение напряжения тока мощности без использования мультиметра.


Код

  • Программируемый портативный блок питания Arduino
  • Код версии 1.0.1, бета
  • Бета версии 1.0.2
  • Код версии 1.0.3
Программируемый портативный блок питания Arduino Arduino
Версия 1.0.1 с информацией о выводе в комментариях
 // Сброс выводов, D0 и D1 для загрузки скетча // Выводы D9, D10, D11, D12, D13 для управления OLED-дисплеем // Вывод ADC A0 для определения V_boost // Вывод ADC A2 для измерения V_batt (LiPo) // Вывод ADC A3 для измерения I_Output (нагрузка) // Вывод ADC A4 для измерения V_USB (зарядка) // Вывод ADC A5 для измерения V_Output (нагрузка) // Штифт привода 2 катушек реле фиксации D4 и D5 # define RC1 4 # define RC2 5 // Переключатели пользовательского входа, подключенные к контактам D2 и D3 # define SW1 2 # define SW2 3 // Pin D6, D7, D8 для контактов управления цифровым потенциометром # определить CS_PIN 6 # определить CLK_PIN 7 #define DATA_PIN 8volatile uint8_t Switch1 =1; volatile uint8_t Switch2 =1; float V_Out =0.0; float I_Out =0.0; float V_Bat =0.0; float V_Bst =0.0; float V_Chg =0.0; uint32_t time =0; #glinclude. h "// Выводы управления OLED-дисплеем // SSD1306 oled wavehare (clk, din, cs, d / c, res); // ЭТО ДЛЯ WAVESHAREU8GLIB_SSD1306_128X64 u8g (10, 9,11, 13,12); void setup (void) {// переворачиваем экран, если требуется analogReference (INTERNAL); u8g.setRot180 (); button_init (); relay_init (); init_timer1 (); digipot_init (); } недействительный цикл (недействительный) {update_display (); calc_VI (); если (Switch1 ==0) {rc1_latch (); Switch1 =1; increment_digipot (); } если (Switch2 ==0) {rc2_latch (); Switch2 =1; Decment_digipot (); } задержка (100); } 
Code Ver 1.0.1 Beta C / C ++
 Нет предварительного просмотра (только загрузка). 
Code Ver 1.0.2 Beta C / C ++
Исправление ошибки для выравнивания текста / поля
Исправление ошибки при перегрузке

В следующем выпуске будет исправлено еще несколько ошибок.
 Предварительная версия отсутствует (только загрузка). 
Код версии 1.0.3 C / C ++
Исправлена ​​ошибка, из-за которой выходное реле отключалось при включении питания
Исправлена ​​ошибка, автоматическая установка выходного напряжения 5,00 В после включения
 Нет предварительного просмотра (только загрузка). 

Схема

Нарисовано на доске! https://circuits.io/circuits/4762970-arduino-based-programmable-power-supply

Производственный процесс

  1. Игра Arduino Pong - OLED-дисплей
  2. Управление монетоприемником с помощью Arduino
  3. Центр управления Arduino
  4. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  5. Arduino с Bluetooth для управления светодиодом!
  6. Arduino Power
  7. Игра с дисплеем Nextion
  8. DIY вольтметр с Arduino и дисплеем Nokia 5110
  9. Учебная платформа Arduino
  10. Создайте приложение Fridgeye с дисплеем Nextion