Ардуино тестер литий-ионных батарей своими руками

Arduino тестер емкости батареи своими руками

Arduino тестер емкости батареи своими руками
Проект очень простой и основан на законе Ома.


Шаг 1: Элементы и необходимые инструменты3. МОП-транзистор – IRLZ444. Резисторы (4 х 10кОм, 1/4W)5. Резисторы(10кОм, 10Вт)6. Винтовые клеммы (3 NOS)8.2. Припой

Шаг 2: Схема и принцип работы

Схема:
Конструкция очень проста, который основан на Arduino Nano. OLED-дисплей используется для отображения параметров.

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

Принцип работыArduino проверяет состояние батареи, если батарея нормальная, дает команду на ВКЛЮЧЕНИЕ полевого транзистора. Это позволяет току проходить от положительной клеммы батареи, через резистор, МОП-транзистори затем завершает путь обратно к отрицательному полюсу. Это разряжает батарею в течение периода времени.

Arduino измеряет напряжение на нагрузке, а затем разделяет на сопротивление, чтобы выяснить, ток разряда. Умножаем это на время, чтобы получить значение миллиампер-час (мощности).

Шаг 3: Напряжение, ток и емкость измерения

Мы должны найти напряжение на нагрузке. Напряжения измеряются с использованием двух делителей напряжения цепи. Он состоит из двух резисторов со значениями 10кОм каждый. Он подключен к Arduino аналоговый пин A0 и A1.Ток (I) = Напряжение (V) – падение напряжения на MOSFET / сопротивления (R)

Делим на 1000, чтобы преобразовать его в миллиамперы.Таким образом, максимальный ток разряда = 4,2 / 10 = 0.42A = 420mAНакапливаемый заряд (Q) = Ток (I) X Время (T).

Шаг 4: Выбор нагрузочного резистора

Выбор нагрузки резистора зависит от величины разрядного тока. Допустим, вы хотите разрядить аккумулятор на 500 мА, то значение резистора
Сопротивление (R) = Макс напряжение батареи / ток разряда = 4,2/ 0,5 = 8,4 Ом
Резистор должен рассеивать немного мощности, так что размер действительно имеет значение в данном случае.Потери тепла = I ^ 2 х R = 0,5 ^ 2 х 8,4 = 2,1 ВтПоддерживая некоторый запас вы можете выбрать 5W. Если вы хотите больше пользы, берите 10Вт.

Шаг 5: Выбор МОП-транзистора

Когда сигнал 5В (высокий) подается на затвор полевого МОП-транзистора, что позволяет току проходить от положительной клеммы батареи, через резистор, а МОП-транзистор затем завершает путь обратно к отрицательному полюсу. Это разряжает батарею в течение определенного периода времени. Тоисть МОП-транзистор должен быть выбран таким образом, что он может обрабатывать максимальный разрядный ток без перегрева.Тут использован N-канальный MOSFET-IRLZ44. L показывает, что это логический уровень МОП-транзистор. Усилитель MOSFET логического уровня означает, что он предназначен для включения полностью от логического уровня микроконтроллера. Стандартный МОП-транзистор предназначен для работы от 10V.Если вы используете IRF сери. МОП-транзисторf, то ононе будет полностью включен путем применения 5V от Arduino. Я имею в виду МОП-транзистор не будет нести номинальный ток. Необходима настройка на этих МОП-транзисторах, дополнительная схема для повышения напряжения на затворе.Шаг 6: OLED-дисплей
Чтобы отобразить напряжение аккумуляторной батареи, ток разряда и мощность, тут использованл 0,96 “OLED display. Он имеет разрешение 128×64 и использует шину I2C для связи с Arduino. Два контакта SCL (А5), СПУ (А4) в Arduino Uno используются для связи.

Используется библиотека U8glib для отображения parameters.First вы должны загрузить библиотеку U8glib .Затем установил его.

Соединения должны быть следующимиOLED”>Arduino -> OLED
Vcc”>5V —-> Vcc
GND”>GND –> GND
SDA”>A4 —-> SDA
SCL”>A5 —-> SCL

Шаг 7: Звуковой сигнал для предупреждения

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

Для различных предупреждений:
1. Низкое напряжение батареи
2. Высокое напряжения батареи
Соединения должны быть следующими

Buzzer”>Arduino -> Зуммер
Positive terminal”>D9 -> Положительный полюс
Negative terminal”>GND -> Отрицательный полюс

Шаг 8: Монтаж стоек
После пайки и монтажа, монтировать распорки на 4 угла. Это обеспечит достаточный зазор для пайки и проводов от земли.

Шаг 9: Программное обеспечение
Программное обеспечение делает следующие задачи1. Измеряет напряжение
2. Проверяет состояние батареи, чтобы дать сигнал тревоги или начать цикл разряда
3. Отображение параметров на OLED
4. Запись данных на монитор последовательного порта

Код программы Скачать файл: battery_capacity_tester-v1.0.ino.zip [1,76 Kb] (cкачиваний: 947)

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

Источник

Источник: https://ngin.pro/arduino/154-arduino-tester-emkosti-batarei-svoimi-rukami.html

Измеритель емкости Li-Ion аккумуляторов

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

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

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

Что понадобится для устройства:

Arduino Uno или любой другой совместимый.16Х2 ЖК-дисплей, в котором используется драйвер Hitachi HD44780Твердотельное реле OPTO 22Резистор 10 МОм на 0.25 ВтДержатель для аккумуляторов 18650Резистор 4 Ом 6ВтОдна кнопка и блок питания от 6 до 10В на 600 мА

Теория и эксплуатация

Напряжение ,на полностью заряженной, Li-Ion батарее при отсутствии нагрузки равно 4.2В. При подключении нагрузки, напряжение быстро снижается до 3.9В, и далее медленно снижается по мере работы батареи. Ячейка считается разряженной при падении напряжения на ней ниже 3В.В данном устройстве аккумулятор подсоединяется к одному из аналоговых выводов Arduino.

Измеряется напряжение на аккумуляторе без нагрузки и контроллер ожидает нажатие кнопки “Пуск”. Если напряжение на аккумуляторе выше 3В. , при нажатии кнопки начнется тест. Для этого через твердотельное реле к аккумулятору, подключается резистор 4Ом, который будет исполнять роль нагрузки. Напряжение считывается контроллером каждые пол секунды.

Используя закон Ома можно узнать ток, отдаваемый в нагрузку. I=U/R, U-считывается аналоговым входом контроллера, R=4 Ом. Так как измерения проводятся каждые пол секунды, в каждом часе получается 7200 измерений. Автор просто умножает 1/7200 часа на значение тока, и складывает получившиеся числа, пока аккумулятор не разрядится ниже 3В.

В этот момент реле переключается и на дисплей выводится результат измерений в мАч

Распиновка ЖК-дисплея

ПИН Назначение

1 GND2 +5V3 GND4 Digital PIN 25 Digital PIN 36,7,8,9,10 No connected11 Digital PIN 512 Digital PIN 613 Digital PIN 714 Digital PIN 815 +5V16 GND
Автор не использовал потенциометр для регулировки яркости дисплея, вместо этого он подсоединил вывод 3 к земле. Держатель аккумулятора подсоединяется минусом на землю, а плюсом к аналоговому входу 0. Между плюсом держателя и аналоговым входом включен резистор 10 МОм, выполняющий функцию подтягивающего. Твердотельное реле включается минусом к земле, а плюсом к цифровому выходу 1. Один из контактных выводов реле соединяется с плюсом держателя, между вторым выводом и землей ставится резистор 4 Ом, выполняющий роль нагрузки при разряде аккумулятора. Имейте в виду, что он будет довольно сильно греться. Кнопка и включатель подключаются согласно схеме на фото.Так как в схеме задействуются PIN 0 и PIN 1, надо отключить их перед загрузкой программы в контроллер. После того, как вы все соедините, зальете прошивку, прикрепленную ниже, можно попробовать протестировать аккумулятор.
На фото видно значение напряжения, которое считал контроллер. Напряжение на нем должно быть обязательно выше 3ВНаследующем фото результат измерении в процессе теста. Сверху, время теста в секундах (83), напряжение на аккумуляторе во время теста (3.64В) и сколько тока было отдано в нагрузку за это время в миллиампер часах (21.06 Mah).На фото ниже видны показания после завершения теста. Сразу ясно, что этот аккумулятор, судя по показаниям, можно отправить в утиль.

fw.rar [951 b] (скачиваний: 1022)

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

Идея

Описание

Исполнение

Итоговая оценка: 5.67

Источник: https://USamodelkina.ru/7099-izmeritel-emkosti-li-ion-akkumulyatorov.html

Тестер ёмкости литиевых аккумуляторов

  • Ebay
  • Аккумуляторы и Батарейки

Всем привет. Сегодняшний обзор будет посвящен тестеру ёмкости литиевых аккумуляторов, приобретенному мною на просторах eBay. Есть у меня в домашнем хозяйстве несколько литиевых аккумуляторов разных типоразмеров, некоторые работают все еще отлично, другие — не так, как долго раньше.

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

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

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

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

Итак, обозреваемый набор для определения емкости поставляется в обычном полиэтиленовом пакете. Говорить об оригинальной заводской упаковке не приходится.В пакете находится непосредственно тестер емкости, батарейный отсек, кабель USB-microUSB для подключения питания, а так же небольшая черно-белая инструкция на китайском языке.Самое интересное тут — плата тестера.

Она снабжена трехзначным ЖК-дисплеем, четырьмя кнопками, использующимися для его настройки и запуска/остановки процесса измерения емкости, шестью информационными диодами и кулером 🙂 Кнопки «Up» и «Down» используются для изменения задаваемых параметров (ток разряда, напряжение при котором процесс останавливается, переключение полученных данных), «Set» — для ввода установленных значений, а «On/Off» — для запуска/остановки процесса измерения емкости и сброса полученных данных (долгое нажатие).Щелкают они довольно таки громко, кроме того, каждое нажатие сопровождается писком динамика-пищалки, спрятанного под радиатор. С обратной стороны плата выглядит следующим образом:Батарейный отсек с подпружиненной ножкой, так что его можно использовать для аккумуляторов разных размеров.В целом, к качеству изготовления особых претензий у меня нет, сделано все неплохо, серьезных огрехов во внешнем виде найти удалось. Постороннего запаха у пластиковых изделий так же нет, что не может не радовать. Как я уже говорил, питается тестер посредством USB кабеля, т.е. от 5 вольт. При подключения его к сети из динамика раздается протяжный писк, а на ЖК-дисплее загораются красные нолики.Но перед тем, как перейти к практическим испытаниям, думаю, будет не лишним ознакомить вас с характеристиками данного устройства.

Особенности: — Тест литиевых аккумуляторов в диапазоне от 0.01V ~ 8.99V; — Цифровой дисплей отображает емкость/время и напряжение постоянного тока (V); — Оснащен вентилятором охлаждения, который начинают работать при температуре выше 60 градусов Цельсия; — Работает от Micro USB DC 5V, что удобно для использования; — Длительное нажатие ON / OFF в течение 3 секунд для очистки данных. Обратите внимание: 1. Не устанавливайте напряжение разряда батареи 0.00V, во избежание ее повреждения. 2. Максимальное поддерживаемое напряжение 8.99V. 3. Во время тестирования длительное нажатие кнопки ON/OFF может его остановить. Характеристики: — Напряжение: Micro USB DC 5V; — Подходят для тестирования: аккумуляторы 0.01V ~ 8.99V; — Диапазон тока разряда: макс. 3A; — Тестируемая ёмкость: 0.00AH ~ 99.9AH; — Время разряда: 0.00H ~ 9.59H; — Размер батарейного отсека: 10,5 * 4см;

Читайте также:  Raspberry pi 3: микроконтроллер с большим количество модулей

— Общий вес: 135g.

Теперь, зная все это, можно взять какой-нибудь аккумулятор и узнать что от него осталось. Первый выбор пал на Samsung 26-F, которому уже год-полтора, но несмотря на это он до сих пор показывает отличное время работы. Итак, вставляем его в батарейный отсек. На ЖК-дисплее сразу отображается его напряжение в 4,20В.

Аккумулятор полностью заряжен, но на всякий случай перепроверим напряжение при помощи мультиметра.Как видно, полученные данные полностью совпадают. Следующий этап — выбор напряжения, при достижении которого процесс будет остановлен. Вообще, минимально допустимое напряжение для литиевых аккумуляторов, в среднем, составляет 2,4В.

Ниже этого уровня разряжать их не рекомендуется. Но для нашего 26F полно официальной документации со всеми необходимыми данными. Открываем — смотрим:Напряжение разряда — 2,75В, емкость — 2600 мАч. Задаем нужные параметры:Следующий шаг — выбор тока разряда. Здесь возможно четыре значения — 0,5А, 1А, 2А и 3А.

Шкала тока разряда находится справа от кнопок и подсвечивается зелеными диодами. Выставляем значение в 1А. Можно начинать. После нажатия кнопки On/Off из пищалки снова раздается очередной противный звук и начинает светиться диод около параметра «Work» — процесс пошел.

Во время работы тестера на ЖК-дисплее отображается текущее напряжение аккумулятора. Кулер, кстати, рабочий — спустя минут 5-10 после начала процесса он начал крутиться и не остановливался до тех пор, пока все не закончилось.При достижении заданного напряжения разряда тестер снова начинает пищать. Можно узнать полученные результаты.

Итак, при разряде с 4,2В до 2,75В аккумулятор показал емкость в 2,43Ач. С учетом того, что первоначальная емкость его составляет 2,6Ач, и в хозяйстве он у меня пару лет — очень даже неплохо.Так же можно узнать время, потраченное на тест. В нашем случае это 2,25 часа.Следующий тест был проведен забавы ради.

Нашел в шуфлядке китайский аккумулятор 18650 GTL с гордой надписью 5300 мАч. Напряжение на старте — 4,15В.Оставив значения с прежнего теста, запускаем процесс. Все проходит очень быстро — минут за 10. Результат измерения емкости — 0,09 Ач 🙂 Выдающийся результат, что тут еще можно сказать.

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

Что немаловажно, данный тестер умеет измерять «остаточную» емкость аккумуляторов. То есть даже если аккумулятор будет заряжен на 50% — он высчитает сколько Ач в нем осталось. В целом, покупкой остался доволен. Свои функции тестер выполняет без каких-либо проблем.

На этом, пожалуй, все. Спасибо за внимание и потраченное время.

Планирую купить +15 Добавить в избранное Обзор понравился +16 +38

Источник: https://mysku.ru/blog/ebay/51223.html

Мультитестер на Arduino своими руками | Каталог самоделок

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

Для работы мультитестера нужен микроконтроллер минимум с 8 кБ флеш-памяти, такой как ATmega8, ATmega168, ATmega328.

Электрическая схема мультитестера на Arduino

Характеристики тестера электроэлементов на Arduino:

  1. Сопротивление: 0…50 МОм, точность до 0.01 Ом (на ATmega8 точность 0.1 Ом).
  2. Ёмкость: 25 пФ…100 мФ, точность 0,1 пФ.
  3. ЭПС (эквивалентное последовательное сопротивление) определяется для емкостей 90нФ…100 мФ.
  4. Биполярные транзисторы: нахождение базы, коллектора, эммитера (BCE) при проводимости NPN, PNP.
  5. Полевые транзисторы: N-канальные, P-канальные.
  6. Диоды, диодные сборки: кремниевые, германиевые, Шотки, определение анода катода.
  7. Стабилитроны: обратное напряжение пробоя менее 4,5 В.
  8. Тиристоры, семисторы: только маломощные.

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

Список комплектующих

  1. Плата Arduino nano V 3.0, можно Pro mini.
  2. LCD дисплей графический WH1602A на контроллере HD44780. Используйте только дисплей, поддерживающий кириллицу (сообщения на русском языке на экране). Прошивки на английском языке для примененной схемы подключения и задействованных функций не существует.
  3. Стабилизатор (на схеме IC1) — прецизионный LM336-Z2.5, MCP1702-5002, можно обычный 7805L.
  4. Кнопка с фиксацией SW1.
  5. Кнопка без фиксации SW2.
  6. Резистор переменный R7 — 10 кОм, 0.5 Вт.
  7. Резисторы R1, R3, R5 — 680 Ом, 0.25 Вт.
  8. Резисторы R2, R4, R6 — 470 кОм, 0.125 Вт.
  9. Резистор R8 — 100 Ом, 0.25 Вт.
  10. Резистор R9 — 22 кОм, 0.125 Вт.
  11. Резистор R10 — 10 кОм, 0.125 Вт.
  12. Резистор R11 — 3.3 кОм, 0.125 Вт.

Подключение питания

Для точности измерений тестера рекомендуется, но не обязательно, запитать его от прецизионного стабилизатора напряжения 5.00 В, например от MCP1702-5002.

При невыполнении этого условия, в случае использования менее точного стабилизатора типа 7805, настоятельно советуем подключить источник опорного напряжения (ИОН).

Стабилизированный ИОН на 2.5 В надо подсоединять к выводу А4 микроконтроллера. На приведенной электрической схеме это подключение не показано. Благодаря подключенному ИОН, мультиметр будет более точно измерять напряжение на батарейках VBAT, наибольший положительный потенциал на полупроводниках VСС.

В программе самодиагностики микроконтроллера ATmega заложено определение отсутствия ИОН. Эта функция самодиагностики активна только при подключении ножки А4 к напряжению 5 В через резистор 47 кОм.

Можно таки случайно закоротить ножки микросхемы А4 и А5. После этого начнутся проблемы с точностью измерения VBAT и VСС. Поэтому удаляйте несанкционированные мостики между выводами, смывайте сгоревший флюс с платы.

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

При организации питания прибора от сетевого адаптера 220/9–12 В, следует позаботиться об экранировании микроконтроллера, устранить пульсации на входе с помощью конденсатора. Нельзя близко располагать, как в одной плоскости, так и сверху снизу, входные цепи питания к плате Arduino.

Сборка измерительной схемы

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

Встроенный светодиод на выходе D13 обязательно выпаять! Этот выход будет использоваться как источник образцового напряжения при прозвонке диодов, транзисторов, тиристоров, и нагрузка, садящая на нем напряжение, не нужна.

Подключение к аналоговым выходам Arduino:

  • A0 — «минусовой» черный щуп.
  • A1 — «плюсовой» красный щуп.
  • A2 — «прозвоночный» желтый щуп.

Подключение к цифровым выходам Arduino:

  • D0 — получение RX на Arduino nano или mini.
  • D1 — передача TX на Arduino nano или mini.

Прошивка микроконтроллера

Загрузить прошивку в Arduino можно как с помощью программатора USB, так и применив другой Arduino nano для перепрограммирования. Мы же воспользуемся программатором USBasp и приложением SinaProg, о чем расскажем подробно.

  • Скачиваем и устанавливаем на ПК приложение SinaProg 2.1.
  • В поле Programmer находим свой программатор USBasp и нажимаем кнопку Search для поиска подключенного контроллера. 
  • После определения контроллера, скачиваем Aрхив с прошивкой для мультитестера на Arduino и распаковываем. 
  • В архиве две прошивки: TransistorTester.eep для работы памяти EEPROM микроконтроллера, TransistorTester.hex непосредственно для микроконтроллера. Сначала загружаем TransistorTester.eep в память EEPROM микроконтроллера.

Иконка выбора пути к прошивке

  • Загружаем аналогично TransistorTester.hex в микроконтроллер и запускаем Program.

Об успешном завершении прошивки дается сообщение в описании процесса установки

  • Загружаем TransistorTester.hex в микроконтроллер, аналогично как делали ранее.
  • После удачно осуществленной прошивки, отключаем программатор.

Дабы не было проблем с полным отсутствием отображения на дисплее, заливать в память EEPROM следует файл с расширением HEX, а не BIN.

Начинать работу с тестером надо после сброса на кнопке SW2 Reset.

Есть куча приборов, куда можно поместить собираемый универсальный пробник: старые мультиметры, токовые клещи, большие калькуляторы, даже ночные часы.

Как пример свой мультитестер на Arduino можно засунуть в корпус испорченного модема.

Источник: https://volt-index.ru/high-tech/multitester-na-arduino-svoimi-rukami.html

Измеритель ёмкости аккумуляторов на Arduino

Измерительная техника

Главная  Радиолюбителю  Измерительная техника

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

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

Предлагаемое устройство, собранное на основе микроконтроллерной платы Arduino Uno, позволяет провести диагностику аккумуляторов и аккумуляторных батарей – измерить их ёмкость и внутреннее сопротивление.

Это устройство предназначено для измерения электрической ёмкости аккумуляторов и аккумуляторных батарей (далее – аккумуляторов) напряжением от 1 до 15 В и ёмкостью до 20…30 А·ч. Стабильный ток разрядки можно установить переменными резисторами в интервале 0…3 А, напряжение отключения – 0…15 В.

Применён двухстрочный шестнадцатисимвольный ЖКИ, на который выводится информация о четырёх параметрах аккумулятора: текущем напряжении, напряжении отключения (пороговом), разрядном токе и ёмкости. Причём ёмкость измеряется постоянно, и в любой момент можно посмотреть её текущее значение.

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

Кроме того, если в процессе разрядки нажать на кнопку, на ЖКИ дополнительно выводится информация о внутреннем сопротивлении аккумулятора и его напряжении без нагрузки.

Схема устройства показана на рис. 1. Его основа – плата Arduino Uno, управляющая всеми узлами и выполняющая основные операции. На ОУ DA1.1, полевом транзисторе VT2 и датчике тока – резисторах R9 и R10 собран стабилизатор разрядного тока, значение которого устанавливают переменными резисторами R3 “Грубо” и R4 “Точно”.

Это позволило задавать желаемый ток разрядки в широком интервале, кроме того, упростить программу и, в итоге, просто измерять время разрядки. Пороговое напряжение, до которого следует разряжать аккумулятор, устанавливают переменными резисторами R5 “Грубо” и R6 “Точно”. Напряжение аккумулятора, пороговое, а также на датчике тока измеряет Arduino (входы А0, А1 и А2 соответственно).

Значения первых двух напряжений выводятся на ЖКИ HG1. Ток разрядки вычисляется как отношение напряжения на датчике тока к его сопротивлению, а ёмкость аккумулятора (С) – как произведение разрядного тока на прошедшее время. Ток и ёмкость также отображаются на экране ЖКИ.

Читайте также:  Никола тесла: великий серб, который открыл электричество - arduino+

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

Рис. 1. Схема устройства

Для повышения точности измерений весь интервал входного напряжения разбит на два, граница между ними – 4,9 В. Интервалы переключаются автоматически с помощью управляемого аттенюатора на элементах R1, R8 и VT1.

В первом интервале транзистор VT1 закрыт, и всё напряжение аккумулятора поступает на вход А0.

Во втором интервале высокий уровень с выхода А4 открывает транзистор VT1, и на вход А0 поступает примерно втрое меньшее напряжение.

О режиме разрядки сигнализирует светодиод HL2, который включается низким логическим уровнем с выхода 7 платы Arduino. В этом случае транзистор VT3 закрыт, светодиод HL1 обесточен и управляющее напряжение с выхода ОУ DA1.1 беспрепятственно поступает на затвор транзистора VT2.

По окончании разрядки на выводе 7 появляется высокий уровень, светодиод HL2 гаснет, а транзистор VT3 открывается. Включается светодиод HL1 (ток через него ограничивает резистор R7), напряжение на затворе транзистора VT2 уменьшается до 1,8.2 В, в результате чего он закрывается и разрядка аккумулятора прекращается. Одновременно это сопровождается троекратным звуковым сигналом.

Диоды VD2 и VD3 защищают вход А0 платы Arduino от превышения или неправильной полярности входного напряжения.

Если рассеиваемая на транзисторе VT2 мощность превышает несколько ватт, необходимо с помощью выключателя SA1 включить вентилятор.

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

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

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

Если нажать на кнопку SB2 “R” во время разрядки, устройство периодически станет кратковременно отключать ток разрядки и измерять напряжение аккумулятора под нагрузкой и без неё. В этом случае на ЖКИ выводится информация о напряжении аккумулятора без нагрузки и о его внутреннем сопротивлении.

После подачи питающего напряжения движки переменных резисторов R3 и R5 устанавливают в нижнее, а R4 и R6 – в верхнее по схеме положение и подключают разряжаемый аккумулятор. Кратковременно нажимают на кнопку SB1 “Сброс/Старт”.

В результате происходит перезагрузка Arduino и включается светодиод HL2 “Разрядка” зелёного свечения. В верхнем левом углу ЖКИ появится информация о напряжении аккумулятора – Ub (в вольтах).

С этого момента начинается отсчёт времени разрядки, текущая ёмкость С (в А·ч) выводится в правом верхнем углу ЖКИ. Переменными резисторами R5 и R6 устанавливают порог выключения Ut (в вольтах), при достижении которого разрядка прекращается.

Этот параметр выводится в левом нижнем углу ЖКИ. Резисторами R3 и R4 устанавливают разрядный ток Ib (в амперах), он индицируется в правом нижнем углу.

Подключая аккумулятор, будьте очень внимательны! Не перепутайте полярность! Дело в том, что транзистор VT2 содержит встроенный защитный диод, подключённый анодом к истоку, катодом – к стоку.

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

В результате некоторые элементы устройства могут выйти из строя.

Большинство деталей размещены на печатной плате из фольгированного с одной стороны стеклотекстолита, которая выполнена в виде платы расширения (shield). Для подключения к модулю Arduino Uno на плате устройства смонтированы штыревые разъёмы (вилки XP2 и XP3).

Это позволяет в случае необходимости быстро устанавливать и снимать Arduino Uno, используя её в других проектах. Чертёж платы показан на рис. 2, её размеры соответствуют плате компьютерного блока питания, в корпусе которого и смонтировано устройство. Размещение элементов на плате показано на рис.

3, а внешний вид смонтированной платы – на рис. 4.

Рис. 2. Чертёж платы

Рис. 3. Размещение элементов на плате

Рис.4. Внешний вид смонтированной платы

В устройстве применены постоянные резисторы Р1-4, С2-23 (кроме R9 и R10), переменные – СП4-1, СП3-4 или импортные, подстроечные – импортные или СП3-19. В датчике тока использованы два последовательно соединённых резистора серии RWR (R9 и R10) сопротивлением по 0,24 Ом и допустимой мощностью рассеяния по 5 Вт.

Сделано это по двум причинам. Во-первых, они были в наличии, а во-вторых, при токе до 3 А на них будет выделяться мощность не более 4,5 Вт, поэтому разогреваться они станут не очень сильно, что повысит точность измерения. Светодиоды – любые маломощные соответствующих цветов свечения с диаметром корпуса 3 или 5 мм.

Транзистор 2N7002 (установлен на плате со стороны печатных проводников) можно заменить транзистором 2N7000, КП505, BSS88. Правда, в этом случае придётся подкорректировать рисунок печатных проводников.

Взамен транзистора КТ315Б подойдёт любой из серий КТ315, КТ312, КТ3102. Разъёмы XP2, XP3 – однорядные вилки PLS-10. Кнопки – любые с самовозвратом, например КМ-2. Можно применить и тактовые кнопки ТС-0409 или аналогичные, закрепив их на панели с помощью клея.

Гнездо для подключения источника питания может быть любым.

Как уже сказано выше, устройство собрано в корпусе компьютерного блока питания размерами 150x125x85 мм. Для подключения проверяемого аккумулятора использованы штатные сетевое гнездо и вилка (XP1). Поскольку в корпусе уже установлен вентилятор, он применён для охлаждения теплоотвода, на котором закреплён транзистор VT2.

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

Кроме выключателя, на верхней панели устройства размещены все переменные резисторы, светодиоды, жКи и кнопка SB2, а гнездо XS1 и кнопка SB1 – на задней. Для них сделаны отверстия соответствующих форм и размеров. К – HL2 ЖКИ и светодиоды закреплены клеем.

Для подключения разряжаемого аккумулятора использован штатный сетевой кабель от блока питания, но укороченный до 0,5 м. Поскольку кабель содержит три провода, два из них соединены параллельно. На концах проводов распаяны зажимы “крокодил”, но можно применить и другие.

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

Рис. 5. Внешний вид устройства

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

В первую очередь, подстроечным резистором R13 устанавливают требуемую контрастность изображения ЖКИ. Движки переменных резисторов R5 и R6 устанавливают в нижнее по схеме положение.

Образцовым вольтметром измеряют напряжение питания Vcc микроконтроллера на плате Arduino Uno и заносят его в скетч, после чего загружают его в Arduino Uno.

Вход устройства подключают через образцовый амперметр к регулируемому лабораторному блоку питания с выходным напряжением 0…15 В и током до 3…4 А.

Устанавливают напряжение около 4 В и переменным резистором R3 устанавливают разрядный ток 0,5…1 А. Сравнивают показания амперметра Ia и ЖКИ Ib.

В случае отличий изменяют в скетче численное значение сопротивления датчика тока RI и загружают его в Arduino Uno до получения точного совпадения показаний.

Затем вход устройства напрямую подключают к лабораторному блоку питания. К нему же подключают и образцовый вольтметр. Движки переменных резисторов R3-R6 устанавливают в нижнее по схеме положение.

Устанавливают напряжение около 2,5 В и сравнивают показания вольтметра ив и Ub на ЖКИ.

Изменением поправочного коэффициента K1 (в скетче), по аналогии с предыдущим случаем, добиваются равенства показаний.

Устанавливают на выходе лабораторного блока питания напряжение около 7 В и нажимают на кнопку SB1 “Сброс/Старт”. После перезагрузки подстроечным резистором R8 приближённо уравнивают показания вольтметра ив и Ub на ЖКИ. Подборкой поправочного коэффициента K2 (в скетче) добиваются более точного равенства показаний.

В заключение определяют сопротивление соединительных проводов. Во время проведения этих работ желательно включить вентилятор. На выходе лабораторного блока питания устанавливают напряжение 8.9 В, при этом показания вольтметра ив и Ub на ЖКИ должны совпадать. Затем резистором R3 устанавливают разрядный ток Ib = 2,5…

3 А, записывают значения Ib, Uв и Ub на ЖКИ и вычисляют R = (Uв – Ub)/Ib. Это значение заносят в скетч. После такой коррекции при изменении тока разрядки от минимума до максимума показания вольтметра и Ub на ЖКИ должны практически совпадать.

При нажатии на кнопку SB2 “R” на ЖКИ должны выводиться значения напряжения аккумулятора без нагрузки U0 и его внутреннего сопротивления R. Для проверки этого режима на выходе лабораторного блока питания последовательно с входными проводами устанавливают резистор сопротивлением 0,5…1 Ом и устанавливают ток разрядки 1…2 А.

После нажатия на кнопку SB2 на экране ЖКИ должно индицироваться сопротивление этого резистора.

В заключение следует отметить, что для повышения точности измерения тока разрядки Iр, сопротивление резисторов R9 и R10, образующих датчик тока, выбрано сравнительно большим (суммарное сопротивление RI = 0,48 Ом). На этих резисторах падает напряжение Uд = Ip – RI.

Например, при токе 3 А Uд = 1,44 В, это означает, что ниже этого напряжения аккумулятор при таком токе разрядить не получится.

Но обычно отдельные малогабаритные аккумуляторы таким током и не разряжают, а батарею Ni-Cd, Ni-Mh аккумуляторов или Li-Ion аккумулятор разряжают до большего напряжения.

Но если необходимо уменьшить падение напряжения на датчике тока, в нём следует применить резистор сопротивлением, например, 0,1 Ом. Но в этом случае напряжение на нём уменьшится, а погрешность измерения возрастёт.

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

После этого придётся установить в скетче соответствующее численное значение датчика тока, умноженное на коэффициент усиления УПТ.

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

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

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

15 В и током разрядки до 5 А, второй – с маломощными батареями и аккумуляторами напряжением до 5 В и разрядным током до 1 А. И наконец, добавив узел зарядки, можно сделать автоматическое зарядно-разрядное устройство с измерением полученного и отданного аккумулятором заряда.

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

Читайте также:  Сервопривод ардуино:

Скетч можно найти здесь.

Источник: http://www.radioradar.net/radiofan/measuring_technics/meter_battery_capacity_arduino.html

Создание зарядного устройства, управляемого Arduino

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

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

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

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

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

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

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

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

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

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

Как заряжать 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 секунд перед следующей итерацией цикла }

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

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

Оригинал статьи:

  • Jason Poel Smith. Create an Arduino Controlled Battery Charger

Arduino Uno

Отладочная плата Arduino Uno построена на микроконтроллере Atmega328P.

Она имеет 14 цифровых входных/выходных выводов (6 из которых могут использоваться в качестве ШИМ выходов), 6 аналоговых входов, кварцевый резонатор 16 МГц, подключение USB, разъем питания, разъем ICSP и кнопку перезагрузки. Она содержит всё необходимое для работы с микроконтроллером; для того, чтобы начать работу с ней, просто подключите…

Батарейный отсек 1xAA

Батарейный отсек на один элемент AA.

Источник: https://radioprog.ru/post/112

Ссылка на основную публикацию
Adblock
detector