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

Arduino Power

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

Adafruit PowerBoost Charger Shield
× 1
Перезаряжаемый аккумулятор Lipoly (общий)
3,7–4,2 В
× 1
Arduino UNO
× 1

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

Проекты, использующие семейство плат микроконтроллеров Arduino, обычно не нуждаются в каких-либо специальных схемах управления питанием. Вы подключаете источник питания, устройство загружается, выполняет свою работу, а затем останавливается при отключении питания. В отличие от системы Raspberry Pi, нет риска повредить карту памяти SD.

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

Рассмотрим, например, устройство дистанционного зондирования, которое регистрирует данные о температуре. Если батарея разряжается, когда она остается без присмотра, журналы просто останавливаются. Невозможно сразу сказать, что проблема была в низком заряде батареи. Это мог быть программный или аппаратный сбой.

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

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

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

Проект основан на идеях проектов LiPoPi и Pi Power, которые обеспечивают аналогичную функциональность для систем Raspberry Pi.

Обзор

В системе предусмотрено несколько функций:

  • Включение / выключение с помощью кнопки
  • Контролируйте напряжение батареи с помощью АЦП Arduino
  • Отключить систему от низкого напряжения.
  • Запишите в файл напряжение батареи и сообщение о выключении.
  • Отображение состояния батареи с помощью красного / зеленого светодиода.

Я представлю каждый из них по очереди, но их объединяет сочетание Adafruit PowerBoost и Arduino.

С каждой из них вы добавляете и настраиваете две функции: arduinoPowerSetup () и arduinoPowerMonitor ( ) , в стандартную setup () и loop () функции в вашем коде.

Щит Adafruit PowerBoost

В системе используется перезаряжаемый литий-полимерный аккумулятор и зарядное устройство Adafruit PowerBoost Charger Shield, которые могут заряжать аккумулятор и повышать его выходное напряжение до 5 В.

Adafruit выпускает три версии Power Boost - две коммутационные платы и Arduino Shield. В большинстве описанных здесь работ используется Power Shield, но об использовании коммутационных плат я расскажу позже.

Прочтите эту страницу о том, как настроить PowerBoost Shield. Чтобы подготовить комплект Shield, вам необходимо:

  • Припаяйте полоски заголовка штабелирования.
  • Но не прикрепляйте переключатель.
  • Припаяйте провод (4 дюйма, сплошной сердечник 22AWG) к контакту включения.
  • Соедините контактные площадки аналогового вывода A0 на нижней стороне экрана.

Схема включения / выключения питания

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

Когда вы нажимаете и удерживаете выключенную систему, PowerBoost включается и подает питание на Arduino, который затем загружается и запускает программу, которую вы загрузили на него.

Когда вы снова нажимаете кнопку и отпускаете ее, Arduino отключает PowerBoost и, поскольку он больше не подает питание, Arduino выключается.

Пожалуйста, прочтите эту страницу для получения подробной информации. Вот схема:

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

Контроль напряжения батареи

Arduino имеет 6 аналого-цифровых преобразователей . (АЦП) на аналоговых выводах 0-5, что упрощает измерение напряжения. Экран PowerBoost позволяет подключать напряжение аккумулятора ( Vbat ) к одному из них, замкнув соответствующие контактные площадки, как описано на странице PowerBoost Shield. В этом примере я связал его с Аналоговым контактом 0 . .

Напряжение литий-полимерных аккумуляторов составляет примерно 4,25 В . при полной зарядке примерно до 3,7 В при выписке. АЦП преобразует диапазон напряжения от 0 В до 5 В . в целочисленный диапазон от 0 до 1023 , и мы получаем доступ к этому значению, вызывая analogRead () .

В этом фрагменте кода показано, как это сделать, а также показано, как рассчитать относительное состояние батареи с использованием минимального и максимального напряжения батареи.

  float maxVoltage =4,25; float minVoltage =3,75; arduinoPowerVoltage =float (analogRead (arduinoPowerVoltagePin)) / 1024.0 * 5.0; float FractionalVoltage =(arduinoPowerVoltage - minVoltage) / (maxVoltage - minVoltage);  

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

Таким образом, мы можем получить напряжение батареи и оценить оставшийся срок службы, но нам нужен способ сообщить об этом пользователю. Мы могли бы использовать буквенно-цифровой дисплей, и в следующем разделе я покажу, как записать это в файл на SD-карте. Но для многих проектов это может оказаться излишним.

Более простой подход - использовать RGB и изменить цвет, чтобы отразить срок службы батареи. Например:

  • Зеленый - более 50%
  • Желтый - от 20% до 50%.
  • Красный - менее 20% - время зарядки

Чтобы реализовать это, вы просто добавляете в схему светодиод RGB и два резистора 1K и добавляете немного кода в arduinoPowerMonitor () .

В светодиодах RGB обычно используется общий анод . так что эта схема работает с этим:

ПРИМЕЧАНИЕ. На практике я использую источник питания 3,3 В для своих светодиодов.

ПРИМЕЧАНИЕ. Как я покажу позже, в измеряемом напряжении могут быть значительные «колебания» по причинам, которых я не понимаю. Если батарея близка к одному из значений, при котором цвет светодиода меняется, вы можете увидеть, как он переключается между двумя состояниями, что очень раздражает. Быстрое решение - установить конденсатор 0,1 мкФ . между аналоговым выводом A0 и Земля .

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

ПРИМЕЧАНИЕ. Вы можете проверить измеренные напряжения и / или отладить, раскомментируя вызовы Serial . в коде и запустив Serial Monitor в IDE. Вы увидите фактическое и дробное напряжение батареи. По какой-то причине первый звонок неверен.

Запись напряжения батареи на SD-карту

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

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

В этой части проекта я использую Adafruit Data Logging Shield, который может записывать данные в CSV . форматируйте файл на прикрепленной SD-карте вместе с отметками времени. Руководство Adafruit объясняет, как SD и RTC библиотеки работают, и вы должны это понимать, прежде чем работать над этой частью проекта.

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

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

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

Эскиз для этого находится в arduino_3_voltage_logging. Это включает в себя несколько служебных программ для создания правильно отформатированной строки отметки времени и т. Д., А также включает в себя хитрость для мигания красного светодиода, если вы забываете вставить SD-карту, что я делаю постоянно.

Весь стек Arduino Uno, Data Logging Shield, PowerBoost Shield и макетной платы выглядит так:

Данные о напряжении

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

Как я упоминал ранее, действительно полезно добавить конденсатор 0,1 мкФ между аналоговым выводом A0 . и Земля . В этом примере фиолетовая линия показывает влияние конденсатора по сравнению с исходным синим цветом.

Запись экологических данных на SD-карту

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

Я установлю Arduino и т. Д. В герметичную коробку, которую какое-то время оставят без присмотра. Помимо того, что батарея разряжена, я хочу убедиться, что внутрь корпуса не попадает влага и что он не испытывает экстремальных температур, которые могут повредить систему. Дешевый и простой способ измерить температуру и влажность - датчик DHT22. Подробности см. В Руководстве Adafruit.

В моем примере кода я использую цифровой контакт 5 . вместо вывода 2, поскольку я уже использую его для прерывания кнопки выключения питания.

Код для этого находится в arduino_4_voltage_temp_humidity_logging. После того, как это работало на макетной плате, я подключил это к Adafruit Proto Shield. Датчик DHT22 довольно громоздкий, но дешевый. Взгляните на другие форумы от Adafruit, Sparkfun и т. Д., Чтобы узнать о других альтернативах.

Энергосбережение в проектах Arduino

Следующим этапом моего проекта является снижение энергопотребления и продление срока службы батареи.

Моей отправной точкой для этого является отличный учебник Adafruit по регистрации данных с низким энергопотреблением от Тони ДиКолы.

Код

Github
https://github.com/craic/arduino_powerhttps://github.com/craic/arduino_power
Github
https://github.com/NeonHorizon/lipopihttps://github.com/NeonHorizon/lipopi
Github
https://github.com/craic/pi_powerhttps://github.com/craic/pi_power

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

  1. Рассеивание мощности
  2. Источники энергии
  3. Бульдозер
  4. Батарея
  5. Arduino Spybot
  6. FlickMote
  7. Самодельный телевизор B-Gone
  8. Основные часы
  9. Сила ветра
  10. Как сокращение субсидий влияет на отрасль аккумуляторных батарей