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

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

В схеме использован микроконтроллер ATmega328 в DIP корпусе с тактированием от внешнего кварцевого резонатора на 16 МГц. Внешний кварц нужен для более точного измерения временных промежутков что важно при подсчёте ёмкости аккумуляторов.
В комментариях меня могут назвать ретроградом, но у меня остался определённый запас таких микросхем и их с избытком хватает для этого устройства.
Прошивку пишу в VSCode на базе библиотек Arduino с использованием PlatformIO.
Изолированный USB UART преобразователь
Изолированный USB UART преобразователь сделан в виде отдельного модуля, который я планирую использовать и в других проектах. Такой модуль исключает гальваническую связь электронной начинки измерителя с USB портом компьютера что важно в случае ошибок или неисправности.

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

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

Для измерения напряжения и тока используется микросхема INA226. Для защиты её входа от обратной полярности и перенапряжения добавлена простая схема на диоде шоттки и стабилитроне (подробности есть тут). Шунт для измерения тока установлен на 20 А и его сопротивление 0,00375 Ом.
Для коммутации нагрузки использовано электромагнитное реле на 20 А. В первоначальном варианте был MOSFET транзистор IRF3205 с драйвером TPM27524, но возникли сложности в режиме четырёхпроводного измерения напряжения. В итоге поставил теплоотвод на стабилизатор и смирился с лишними 200 мА тока на питание силового реле.
В схеме реализована поддержка измерения напряжения как в режиме четырёхпроводного подключения, так и в режиме двухпроводного подключения. Для переключения между режимами используется отдельное электромагнитное реле. Это реле добавляет ещё 100 мА к потреблению тока в случае если выбран режим измерения напряжения при двухпроводном подключении, но по моим ощущениям это будет редкая ситуация.
Звуковая индикация
В тестере ёмкости ZB2L3 мне очень не хватало звуковой индикации окончания разряда. Добавил простую «пищалку» для привлечения внимания

Пищалка потребляет «заметный» ток и поэтому подключена через транзистор.
Источник питания

Для питания схемы нужен источник постоянного напряжения от 7,5 В до 9 В и током 500 мА. От неправильной полярности защищает диод по входу, напряжение 5В берётся с выхода линейного стабилизатора L7805. Для надёжной работы стабилизатора напряжение на его входе должно быть примерно на 2 В выше напряжения стабилизации, плюс 0,7 В которые падают на защитном диоде.
Схема потребляет до 350 мА (если включены оба реле) и при питании от 9 В на стабилизаторе рассеивается около 1,2 Вт. Поскольку корпус TO-220 не может рассеять больше 1 Вт, то на линейном стабилизаторе установлен небольшой радиатор.
Кнопки управления

Используется внутренняя подтяжка (INPUT_PULLUP) к питанию в микроконтроллере. Защита от дребезга контактов программная.
LCD экран

Использовал символьный экран 20×4 с интерфейсом I2C. На плате для него есть отдельная колодка чтобы было легко разбирать корпус.
Осталось дописать прошивку и собрать все части проекта в один репозиторий.