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

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

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

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

Работа устройств основана на отражении ультразвуковых волн от препятствий. Измеряя разницу во времени между моментом генерации импульса и моментом приёма отражённого эхо-сигнала, можно определить расстояние до препятствия.

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

Ультразвуковой датчик

Для измерения расстояния до препятствия были протестированы два устройства:
  • Arduino-совместимый ультразвуковой модуль HC-SR04
  • Автомобильный парктроник HO 3800
Оба устройства работают по схожему принципу. Отличия заключаются в диаграмме направленности датчиков, максимальной дальности определения препятствий и конструктивном исполнении.
Сравнение параметров датчиков:

В ходе испытаний выяснилось, что модули HC-SR04 обладают несколько худшей способностью обнаруживать препятствия и работать в сложных климатических условиях (холод).

Оба датчика, несмотря на их различия, можно использовать в ультразвуковой насадке на трость в качестве средства измерения расстояния до препятствия, поэтому основным параметром при выборе датчика для нас стала цена. Мы остановились на более дешёвом датчике HC-SR04.

Плата управления

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

Элементы питания

Для обеспечения устройства питанием целесообразно использовать литий-ионные (Li-ion) или никель-металл-гидридные (Ni-Mh) аккумуляторные элементы.

При эксплуатации в нормальных климатических условиях имеет смысл применить Li-ion аккумуляторы, имеющие по сравнению с Ni-Mh следующие преимущества:

  • простота реализации схемы зарядки
  • наличие готовых модулей заряда
  • большее выходное напряжение
  • многообразие габаритных размеров и ёмкостей
При низких температурах предпочтительнее использовать Ni-Mh аккумуляторы.

Напряжения на выходе одного Ni-Mh аккумулятора (1,0 -1,4 В) недостаточно для работы устройства. Для получения напряжения 5 В (необходимого для работы как Arduino, так и паркторника) кроме аккумуляторов будем использовать повышающий DC-DC преобразователь.

Для работы выбранных нами DC-DC преобразователей необходимо обеспечить входное напряжение 0,9-6,0 В. Для получения требуемого выходного напряжения можно было бы воспользоваться одним Ni-Mh элементом напряжением 1,2 вольт. Однако с уменьшением входного напряжения уменьшается и нагрузочная способность преобразователя, поэтому для стабильной работы устройства желательно подавать на вход преобразователя не менее 2 В (два Ni-Mh элемента по 1,2 В или один Li-ion элемент напряжением 3,7 В). Отметим, что существуют DC-DC преобразователи, для работы которых недостаточно входного напряжения 1,2 В.

Зарядка аккумуляторов

Для Li-ion аккумуляторов существует множество готовых недорогих модулей с индикацией окончания заряда.

В случае с Ni-Mh аккумуляторами всё сложнее. Готовых встраиваемых решений на рынке в данный момент мы не нашли. Для зарядки Ni-Mh аккумуляторов можно использовать специализированные внешние зарядные устройства или же создать собственную схему зарядки.

Один из способов зарядить Ni-Mh элемент – последовательное соединение c аккумулятором двух линейных стабилизаторов LM317 (или аналогичных): первый – в режиме ограничения тока, второй – в режиме ограничения напряжения.

Входное напряжение такой схемы составляет 7,0-7,5 В. При отсутствии охлаждения стабилизаторов превышать это напряжение не рекомендуется. Напряжение на каждом Ni-Mh аккумуляторе во время зарядки должно быть около 1, 45 В (напряжение полностью заряженного Ni-Mh элемента). Во избежание перегрева и выхода из строя микросхем, ток зарядки аккумуляторов не должен превышать 100 мА и может быть увеличен до 200 мА при использовании соответствующих радиаторов.

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

Сигнализатор

В зависимости от выбора канала предупреждения (слуховой или тактильный) выбирается исполнительное устройство – зуммер или вибро-мотор. Кроме того, можно комбинировать оба способа оповещения, предоставив пользователю возможность переключения между ними.

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

Корпус

Нам не удалось подобрать удобный корпус для ультразвуковой насадки на трость среди массово выпускаемых корпусов. Для проведения испытаний устройства мы использовали напечатанный на 3D-принтере корпус из ABS-пластика. Для печати корпуса на 3D-принтере нами была разработана следующая 3D-модель:

Результат испытаний опытных образцов

В процессе разработки было собрано более 12 вариантов изделия. Каждое новое изделие устраняло недостатки предыдущих: в процессе разработки мы уменьшили габариты и вес изделия, подобрали ультразвуковой датчик, удовлетворяющий нас как по цене, так и по техническим характеристикам, отказались от использования аудио канала и оптимизировали алгоритм работы устройств. Совместно с незрячими (Бортников П.В., Шалинцев В. А.) были проведены испытания всех собранных изделий. В результате нами был получен конечный образец.

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

В разобранном виде ультразвуковой брелок на шею выглядят следующим образом:

Все использованные при сборке компоненты, кроме распечатанного на 3D-принтере корпуса для насадки на трость, были куплены через AliExpress:

  1. Ультразвуковой датчик HC-SR04.
  2. Плата управления Adruino Pro Mini.
  3. Аккумуляторная батарея 3.7 V 300 mAh.
  4. Преобразователь напряжения 0.9V ~ 5V to 5V 600 mA.
  5. Модуль зарядки AC/DC 220V to 5 V 1 A.
  6. Зарядное устройство LA-520W.
  7. Сигнализатор: вибро-моторчик для мобильного телефона 4x10mm DC 3V.
  8. Кнопка PB-22E60.
  9. Корпус Gainta G1906 (для брелока).
  10. Транзистор: bss138/bcr108 или оптрон CPC1230N.
Внешний вид и цены (с учётом доставки из Китая) компонентов, используемых для сборки ультразвуковой насадки на трость, приведены на рисунке:

Из используемых при сборке компонентов наибольший вклад в стоимость устройства вносит корпус, напечатанный на 3D-принтере.

Внешний вид и цены (с учётом доставки из Китая) компонентов, используемых для сборки ультразвукового брелока, приведены на рисунке:

В дальнейшем можно разработать крепление к корпусу Gainta G1906 и использовать устройство с таким корпусом в качестве насадки на трость.

Одним из способов снижения себестоимости устройств является экономия на оплате труда и стоимости доставки компонентов устройств в Россию за счёт развёртывания производства непосредственно в Китае.

Разработанные нами устройства имеет следующие характеристики:

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

Внешний вид брелока на шею:

3D-модель ультразвуковой насадки на трость и исходный код прошивки для Adruino доступны для загрузки по

Arduino PWM контроллер солнечной зарядки
Как сделать очень маленький, простой и дешевый ШИМ - контроллер солнечной зарядки с Arduino Pro Mini для 12V вне сетки установок. Размер печатной платы совпадает с размером Pro миниплаты, так что они могут быть зажаты вместе. PCB планы для универсального прототипа борту.

Подключение и использование этого Arduino контроллера солнечного заряда очень просто - есть 2 входных провода от панели солнечных батарей (+ и -) и 2 выхода приводит идти к свинцово-кислотной батарее. Основание панели солнечных батарей и батареи соединены вместе. Любой груз должен быть подключен непосредственно на клеммах аккумулятора и контроллера заряда будет автоматически обрабатывать остальное.

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


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

Схема и функции Описание:

Функция основана на N-канальный МОП - транзистор IRF3205 в высокой стороне цепи. Это требует напряжения затвора выше, чем 12 В, чтобы открыть МОП - транзистор правильно. Для того, чтобы исключить необходимость внешнего драйвера MOSFET, он приводится в движение заряда насоса, созданного с диодами, 2 конденсаторов и двух выходных выводов Arduino ШИМ (3 и 11). Pin A1 измеряет напряжение аккумуляторной батареи и пин - код 9 управляет MOSFET ON / OFF цикла. Arduino Pro Mini интегрированные светодиодные подключен к контакту 13 используется, чтобы показать текущий цикл ШИМ - сигнала.

Регулятор напряжения и все конденсаторы вокруг (C6, C5 и C4) могли бы быть исключены, поскольку есть регулятор включен в Arduino Pro Mini. Тем не менее, потому что я использовал дешевый клон доска, я не хочу, чтобы рассчитывать на его способности поддерживать более высокие напряжения, чем 12В в течение более длительных периодов времени. LP2950 очень дешево и эффективно до 30 вольт, так что стоит иметь его на борту в любом случае.


Список деталей: Регулятор напряжения с низким энергопотреблением LP2950ACZ-5.0 Транзисторы 2N3904 2N3906 х 2 N-канальный МОП-транзистор IRF3205 Резисторы 82K (1%) 20K (1%) 220K x3 (0,4W достаточно) 4K7 (0,4W достаточно) Диоды 1N4148 х 5 P6KE33CA 90SQ035 (или любой подобный диод Шоттки 35V минимальной 9А) Конденсаторы 47N / 50V x2 керамические 220P / 100V керамические 1M / 50V (1000nF) керамические 4M7 / 10V тантал 1M / 35V тантал х 2

Схема и код этого контроллера заряда является Джулиан Илетт, он является вдохновителем этой умной вещью. Все это лишь утонченный документация и подходящая дизайн печатной платы, чтобы идеально соответствовать Arduino Pro Mini доска. Он разделяет видео более эффективного регулятора заряда Arduino MPPT, но его строительство гораздо сложнее, и проект еще не завершен. Если вы можете, улучшить код или конструкцию в любом случае, пожалуйста, поделитесь своими улучшениями в комментариях.



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


Не менее важными элементами будут катушки индуктивности, которые можно сделать своими руками. Эти простые катушки наматываются из медных проводов и называются катушками с воздушным сердечником. Создание такой обмотки для нашей цели является очень простым занятием. Найдите круглый цилиндр диаметром примерно 5 сантиметров, и намотайте провод на него так, чтобы каждый виток не накладывался на другой виток, но в то же время был как можно ближе к другому витку. Круглым цилиндром может выступать, например, трубка из ПВХ. Возможно, вам понадобится использовать клейкую ленту или скотч в 2-3 местах, чтобы сохранить стабильность конструкции.


Помимо Arduino и катушек индуктивности нам понадобятся: один NPN-транзистор типа 2N3055, один диодный мост 1А (диодная сборка, у них четыре вывода), один светодиод, один 100-омный резистор, два конденсатора емкостью 47 нФ, батарейка 9 В для питания Arduino, а также желательно две платы для прототипирования. Схема подключения компонентов для создания устройства беспроводной передачи данных показана на рисунке ниже.



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


void setup() { pinMode(13,OUTPUT); } void loop() { digitalWrite(13,HIGH); delay(0.5); digitalWrite(13,LOW); delay(0.5); }

Тем не менее, простое устройство беспроводной передачи энергии можно сделать и без Arduino. В принципе, мы можем использовать только один транзистор 2N2222. Подключите его вывод базы к первому концу катушки, а коллектор к другому концу катушки. Вывод эмиттера подключается к батарейке. В итоге такая простая конструкция может выглядеть следующим образом:




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

Arduino и добавленная к ней схема заряда могут быть использованы для мониторинга и управления зарядкой никель-металл-гидридных аккумуляторов, например, так:

Законченное устройство

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

Во-первых, важно отметить, что не существует универсального способа зарядки, который подходил бы для всех аккумуляторов. Разные типы аккумуляторов используют разные химические процессы, обеспечивающие их работу. В результате, разные типы аккумуляторов необходимо заряжать по-разному. В этой статье мы не сможем охватить все типы аккумуляторных батарей и методы зарядки. Поэтому для простоты мы сосредоточим внимание на наиболее распространенном типе аккумуляторных батарей размера AA, на никель-металл-гидридных аккумуляторах (NiMH).

Комплектующие

Список комплектующих слева направо:

  • мощный резистор 10 Ом (минимум 5 ватт);
  • резистор 1 МОм;
  • конденсатор 1 мкФ;
  • MOSFET транзистор IRF510;
  • датчик температуры TMP36;
  • источник питания 5 вольт;

Как заряжать NiMH AA аккумуляторы

Увеличение скорости заряда увеличивает риск повреждения аккумулятора.

Существует много способов зарядки NiMH аккумуляторов. Выбор используемого вами метода главным образом зависит от того, как быстро вы хотите зарядить аккумулятор. Скорость заряда измеряется по отношению к емкости батареи. Если ваша батарея обладает емкостью 2500 мАч, и вы заряжаете ее током 2500 мА, то вы заряжаете ее со скоростью 1C. Если вы заряжаете этот же аккумулятор током 250 мА, то вы заряжаете его со скоростью C/10.

Во время быстрой зарядки аккумулятора (со скоростью выше C/10), вам необходимо тщательно контролировать напряжение на батарее и ее температуру, чтобы не перезарядить ее. Это может серьезно повредить аккумулятор. Тем не менее, когда вы заряжаете аккумулятор медленно (со скоростью ниже C/10), у вас гораздо меньше шансов повредить батарею, если случайно перезарядите ее. Поэтому медленные методы зарядки, как правило, считаются более безопасными и помогут вам увеличить срок службы батареи. Поэтому в нашем самодельном зарядном устройстве мы будем использовать скорость заряда C/10.

Цепь заряда

Для данного зарядного устройства основой является схема для управления источником питания с помощью Arduino. Схема питается от источника напряжения 5 вольт, например, от адаптера переменного тока или компьютерного блока питания. Большинство USB портов не подходит для данного проекта из-за ограничений по току. Источник 5В заряжает батарею через мощный резистор 10 Ом и мощный MOSFET транзистор. MOSFET транзистор устанавливает величину тока, протекающего через батарею. Резистор добавлен как простой способ контроля тока. Контроль величины тока выполняется подключением каждого вывода резистора к аналоговым входным выводам Arduino и измерением напряжения с каждой стороны. MOSFET транзистор управляется выходным ШИМ выводом Arduino. Импульсы сигнала широтно-импульсной модуляции сглаживаются до постоянного напряжения фильтром на резисторе 1 МОм и конденсаторе 1 мкФ. Данная схема позволяет Arduino отслеживать и управлять током, протекающим через батарею.


Датчик температуры

Датчик температуры служит для предотвращения перезаряда батареи и обеспечения безопасности.

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

Держатель AA батареи перед и после установки на макетную плату

Код


Код для данного проекта довольно прост. Переменные в начале исходного кода позволяют настроить зарядное устройство путем ввода значений емкости батареи и точного сопротивления мощного резистора. Также добавлены и переменные безопасных порогов. Максимально допустимое напряжение на батарее устанавливается в значение 1,6 вольта. Максимальная температура батареи установлена на 35 градусов по Цельсию. Максимальное время заряда установлено на 13 часов. Если какой-либо из этих порогов безопасности будет превышен, зарядное устройство выключается.

В теле программы вы можете увидеть, что система постоянно измеряет напряжения на выводах мощного резистора. Это используется для расчета значений напряжения на батарее и протекающего через нее тока. Ток сравнивается с целевым значением, которое составляет C/10. Если рассчитанный ток отличается от целевого значения более, чем на 10 мА, система автоматически подстраивает выходное значение, чтобы подкорректировать его.

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

Int batteryCapacity = 2500; // значение емкости батареи в мАч float resistance = 10.0; // измеренное сопротивление мощного резистора int cutoffVoltage = 1600; // максимальное напряжение на батарее (в мВ), которое не должно быть превышено float cutoffTemperatureC = 35; // максимальная температура батареи, которая не должна быть превышена (в градусах C) //float cutoffTemperatureF = 95; // максимальная температура батареи, которая не должна быть превышена (в градусах F) long cutoffTime = 46800000; // максимальное время заряда в 13 часов, которое не должно быть превышено int outputPin = 9; // провод выходного сигнала подключен к цифровому выводу 9 int outputValue = 150; // значение выходного ШИМ сигнала int analogPinOne = 0; // первый датчик напряжения подключен к аналоговому выводу 0 float valueProbeOne = 0; // переменная для хранения значения на analogPinOne float voltageProbeOne = 0; // рассчитанное напряжение на analogPinOne int analogPinTwo = 1; // второй датчик напряжения подключен к аналоговому выводу 1 float valueProbeTwo = 0; // переменная для хранения значения на analogPinTwo float voltageProbeTwo = 0; // рассчитанное напряжение на analogPinTwo int analogPinThree = 2; // третий датчик напряжения подключен к аналоговому выводу 2 float valueProbeThree = 0; // переменная для хранения значения на analogPinThree float tmp36Voltage = 0; // рассчитанное напряжение на analogPinThree float temperatureC = 0; // рассчитанная температура датчика в градусах C //float temperatureF = 0; // рассчитанная температура датчика в градусах F float voltageDifference = 0; // разница между напряжениями на analogPinOne и analogPinTwo float batteryVoltage = 0; // рассчитанное напряжение на батарее float current = 0; // рассчитанный ток, протекающий через нагрузку в (мА) float targetCurrent = batteryCapacity / 10; // целевой выходной ток (в мА) устанавливается в значение // C/10 или 1/10 от емкости батареи float currentError = 0; // разница между целевым и фактическим токами (в мА) void setup() { Serial.begin(9600); // настройка последовательного интерфейса pinMode(outputPin, OUTPUT); // установить вывод, как выход } void loop() { analogWrite(outputPin, outputValue); // записать выходное значение в выходной вывод Serial.print("Output: "); // показать выходные значения для контроля на компьютере Serial.println(outputValue); valueProbeOne = analogRead(analogPinOne); // считать входное значение на первом пробнике voltageProbeOne = (valueProbeOne*5000)/1023; // рассчитать напряжение на первом пробнике в милливольтах Serial.print("Voltage Probe One (mV): "); // показать напряжение на первом пробнике Serial.println(voltageProbeOne); valueProbeTwo = analogRead(analogPinTwo); // считать входное значение на втором пробнике voltageProbeTwo = (valueProbeTwo*5000)/1023; // рассчитать напряжение на втором пробнике в милливольтах Serial.print("Voltage Probe Two (mV): "); // показать напряжение на втором пробнике Serial.println(voltageProbeTwo); batteryVoltage = 5000 - voltageProbeTwo; // рассчитать напряжение на батарее Serial.print("Battery Voltage (mV): "); // показать напряжение на батарее Serial.println(batteryVoltage); current = (voltageProbeTwo - voltageProbeOne) / resistance; // рассчитать ток заряда Serial.print("Target Current (mA): "); // показать целевой ток Serial.println(targetCurrent); Serial.print("Battery Current (mA): "); // показать фактический ток Serial.println(current); currentError = targetCurrent - current; // разница между целевым и измеренным токами Serial.print("Current Error (mA): "); // показать ошибку установки тока Serial.println(currentError); valueProbeThree = analogRead(analogPinThree); // считать входное значение третьего пробника, tmp36Voltage = valueProbeThree * 5.0; // преобразуя его в напряжение tmp36Voltage /= 1024.0; temperatureC = (tmp36Voltage - 0.5) * 100 ; // преобразование, исходя из зависимости в 10 мВ на градус со сдвиком в 500 мВ // ((напряжение - 500 мВ) умножить на 100) Serial.print("Temperature (degrees C) "); // показать температуру в градусах Цельсия Serial.println(temperatureC); /* temperatureF = (temperatureC * 9.0 / 5.0) + 32.0; //преобразовать в градусы Фаренгейта Serial.print("Temperature (degrees F) "); Serial.println(temperatureF); */ Serial.println(); // дополнительные пустые строки, чтобы облегчить чтение данных при отладке Serial.println(); if(abs(currentError) > 10) // если ошибка установки тока достаточно велика, то подстроить выходное напряжение { outputValue = outputValue + currentError / 10; if(outputValue < 1) // выходное значение никогда не может быть ниже 0 { outputValue = 0; } if(outputValue > 254) // выходное значение никогда не может быть выше 255 { outputValue = 255; } analogWrite(outputPin, outputValue); // записать новое выходное значение } if(temperatureC > cutoffTemperatureC) // остановить зарядку, если температура батареи превысила безопасный порог { outputValue = 0; Serial.print("Max Temperature Exceeded"); } /* if(temperatureF > cutoffTemperatureF) // остановить зарядку, если температура батареи превысила безопасный порог { outputValue = 0; } */ if(batteryVoltage > cutoffVoltage) // остановить зарядку, если напряжение на батарее превысило безопасный порог { outputValue = 0; Serial.print("Max Voltage Exceeded"); } if(millis() > cutoffTime) // остановить зарядку, если время заряда превысило порог { outputValue = 0; Serial.print("Max Charge Time Exceeded"); } delay(10000); // задержка в 10 секунд перед следующей итерацией цикла }

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




Top