Амперметр-вольтметр с записью на SD-карту
Часть 1 - устройство и режимы работы
Назначение

Прибор предназначен для одновременного измерения постоянного напряжения и тока с записью результатов на карту памяти формата microSD. Пределы измерения напряжения (0…20 В) и тока (‑5…5 A) выбраны исходя из того, что прибор используется в основном для наблюдения за процессами заряда-разряда аккумуляторов небольшой емкости, используемых в бытовой электронной аппаратуре. В первых 3-х частях этой публикации мы подробно рассмотрим схему, конструкцию и программное обеспечение этого прибора, а в 4-й части - практический пример его использования и полученные результаты.
При работе амперметра-вольтметра измеряемые значения напряжения и тока отображаются на дисплее, а запись результатов измерений в текстовый файл (log-файл) на microSD карте происходит через заданные интервалы времени, устанавливаемые в пределах от 1 до 30 минут.
Устройство прибора
Основой прибора является микроконтроллер Arduino Nano, к которому подключены следующие периферийные модули:
- модуль LCD дисплея 1602 с конвертером интерфейса I2C
- модуль АЦП на базе ADS1115
- модуль часов реального времени на базе DS1307
- модуль адаптера microSD карты
- модуль датчика тока на базе ACS712 (2 шт.)
Символьный LCD дисплей имеет 2 строки по 16 символов и используется для отображения результатов измерений, а также для вывода различной служебной информации в режиме настройки.

Четырехканальный 16-разрядный АЦП ADS1115 служит для преобразования входных аналоговых сигналов в цифровую форму для дальнейшей обработки микроконтроллером. На один из его каналов через входной делитель поступает измеряемое напряжение, на два других – выходные сигналы от модулей ACS712, пропорциональные измеряемому току. Четвертый канал АЦП не используется.
Часы реального времени необходимы для получения данных о текущей дате и времени, записываемых в лог-файл вместе с измеренными значениями тока и напряжения, они же используются для задания временных интервалов между записями. Адаптер карты памяти содержит соответствующее гнездо для установки карты формата microSD, а также микросхему преобразователя уровней входных и выходных сигналов, позволяющий привести 5-вольтовые логические сигналы Arduino к уровням 3.3 вольта, необходимым для работы карты памяти.
Модули датчиков тока включены по дифференциальной схеме, при которой один и тот же измеряемый ток проходит через два датчика в противоположных направлениях, что позволяет резко снизить влияние температурного дрейфа датчиков, нестабильности источников питания и окружающих магнитных полей на точность измерений. Подробнее о преимуществах такого включения можно прочитать далее.
Прибор подключается к измеряемым электрическим цепям при помощи двух пар гибких проводов, включаемых в соответствующие гнезда – одна пара гнезд служит для измерения напряжения и подключается параллельно к клеммам аккумулятора, процессы заряда или разряда которого необходимо наблюдать, другая пара включается последовательно с этим аккумулятором и служит для измерения силы тока его заряда/разряда. Цепь измерения тока не имеет гальванической связи с остальными цепями прибора, поэтому ток можно измерять как в положительном проводе, идущем к аккумулятору от плюса зарядного устройства и нагрузки, так и в отрицательном, идущем к аккумулятору от общего провода (массы).
Все элементы электрической схемы прибора размещены в пластмассовом корпусе. На лицевой панели корпуса размещены дисплей и кнопки управления, а на боковых стенках корпуса – разъем для подключения внешнего источника питания, гнезда для подключения измеряемых цепей напряжения и тока, а также имеется прорезь для извлечения/установки карты памяти.
Прибор питается от внешнего стабилизированного источника питания напряжением 9 В. Потребляемый от источника ток около 70 мА. Выключателя питания прибор не имеет и включается при подаче напряжения +9 В от внешнего источника.
Режимы работы
Вольтметр-амперметр работает в трех режимах:
MEASUREMENT (ИЗМЕРЕНИЕ) | Прибор измеряет значения напряжения и тока и отображает их на дисплее. Показания обновляются с интервалом примерно 0.8 секунды. |
RECORDING (ЗАПИСЬ) | Прибор измеряет значения напряжения и тока, отображает их на дисплее и записывает в файл формата CSV вместе с текущим временем и датой. Показания на дисплее обновляются с интервалом примерно 0.8 секунды, а запись в файл происходит через равные интервалы времени, устанавливаемые в режиме SETUP в пределах от 1 до 30 минут. |
SETUP (НАСТРОЙКА) | Измерение не производится. При помощи кнопок управления пользователь настраивает текущее время, дату, интервал времени для записи в файл и выполняет установку нулевых показаний. |
Функции кнопок и примеры показаний на дисплее в каждом из режимов:
Режим | Назначение кнопок | Примеры показаний |
MEASUREMENT (ИЗМЕРЕНИЕ) | SW1 (белая) – «SETUP» – переход в режим SETUP SW2 (зеленая) – «START» – создание нового лог-файла на карте памяти и переход в режим RECORDING SW3 (красная) – показ значений накопленного и израсходованного заряда в Ампер-часах (при первом нажатии и удержании кнопки), показ значений накопленной и израсходованной энергии в Ватт-часах (при втором нажатии и удержании кнопки) | ![]() U: напряжение, I: ток ![]() D: израсходованный заряд ![]() D: израсходованная энергия |
RECORDING (ЗАПИСЬ) | SW1 (белая) – не задействована SW2 (зеленая) – не задействована SW3 (красная) – «STOP» - завершение записи, закрытие лог-файла и возврат в режим MEASUREMENT | ![]() символ “R” - мигает |
SETUP (НАСТРОЙКА) | SW1 (белая) – «NEXT» – переход к следующему настраиваемому параметру, после завершения настройки всех параметров – возврат в режим MEASUREMENT. SW2 (зеленая) – «UP» – увеличение настраиваемого параметра на 1 SW3 (красная) – «DOWN» – уменьшение настраиваемого параметра на 1. Подробнее порядок работы в режиме SETUP представлен на диаграмме в следующем разделе. | ![]() ![]() ![]() ![]() |
При каждом включении прибора выполняется проверка наличия карты памяти и, если карта вставлена, прибор сразу переходит в режим MEASUREMENT. Если же карта microSD в адаптере отсутствует, на дисплей на 2-3 секунды выводится соответствующее предупреждение, а затем прибор переходит в режим MEASUREMENT, как обычно, однако перейти в режим RECORDING нажатием кнопки «START» в этом случае не получится. Для того чтобы выполнить запись результатов измерений в файл, нужно будет выключить питание прибора, вставить на место карту памяти, а затем снова включить прибор.
Кроме измерения напряжения и тока прибор выполняет подсчет накопленного в аккумуляторе или израсходованного аккумулятором электрического заряда и электрической энергии. Для этого в каждом цикле измерений (примерно каждые 0.8 секунды) в зависимости от направления протекающего через прибор тока выполняется приращение соответствующих счетчиков. При этом, если измеряемый ток имеет положительное направление (заряд аккумулятора), увеличивается значение счетчиков накопленного заряда и накопленной энергии, если отрицательное (разряд аккумулятора) – счетчиков израсходованного заряда и израсходованной энергии.
Подсчет заряда и энергии ведется во всех режимах работы прибора, однако, вывести накопленные в счетчиках значения на дисплей можно только в режиме MEASUREMENT (ИЗМЕРЕНИЕ). В этом режиме при первом нажатии и удержании в нажатом состоянии кнопки SW3 «STOP» (красная) на дисплее отображаются значения счетчиков электрического заряда в Ампер-часах (Ah), а при втором нажатии на ту же кнопку - значения счетчиков электрической энергии в Ватт-часах (Wh). Значения счетчиков заряда и энергии не сохраняются при выключении питания и при каждом включении прибора счет начинается с нуля.
Порядок работы в режиме SETUP
Из таблицы следует, что каждая из трех кнопок прибора может вызывать различные действия в зависимости от текущего режима. Так, например, кнопка SW1 (белая) в режиме MEASUREMENT вызывает переход в режим SETUP, а в режиме SETUP эта же кнопка выполняет функции перехода к следующему шагу настройки или к следующему настраиваемому параметру. Другие кнопки также меняют свои функции в зависимости от текущего состояния прибора.
На диаграмме показаны возможные действия пользователя в режиме SETUP (НАСТРОЙКА). Цветными кружками обозначены нажатия пользователя на кнопки прибора:

SW1 нажатие кнопки SETUP / NEXT

SW2 нажатие кнопки START / OK / UP

SW3 нажатие кнопки STOP / Cancel / DOWN
Возможные действия пользователя в режиме SETUP выглядят следующим образом:

Все настройки выполняются за четыре шага – настройка текущей даты, настройка текущего времени, настройка интервала для записи в лог-файл и установка нулевых показаний в каналах измерения напряжения и тока. Переход с шага на шаг выполняется при нажатии кнопки SW1 NEXT, эта же кнопка используется для перехода к следующему настраиваемому параметру внутри одного шага, например, число-месяц-год на шаге настройки даты.
Установленные в режиме SETUP значения параметров сохраняются при выключенном питании прибора – текущие дата и время поддерживаются микросхемой часов реального времени, питающейся в этом случае от встроенной батарейки напряжением 3V, а значение интервала времени для записи в лог-файл и поправочные значения для установки нуля напряжения и тока записываются в энергонезависимую память (EEPROM) микроконтроллера Arduino.
Формат лог-файла
В режиме измерения при нажатии кнопки «START» создается новый лог-файл на карте памяти и начинается запись измеренных значений в этот файл. Имя файла присваивается автоматически при создании и имеет формат MMDDHHmm.csv, где MM – две цифры текущего месяца (01...12), DD – две цифры текущего дня (01...31), HH – две цифры часа (00...23) и mm – две цифры минуты (00...59). Например, файл, созданный 1-го февраля в 15:30 будет иметь имя 02011530.csv.
Каждая строка файла содержит одну запись, включающую текущую дату, время и измеренные значения напряжения и тока, разделенные запятыми. Записи разделяются символами 0x0D и 0x0A (CR и LF) и добавляются в файл в течение всего времени, пока прибор находится в режиме RECORDING, через заданные интервалы времени. Например, если прибор находился в режиме записи в течение часа и был установлен интервал времени между записями 10 минут, то содержимое файла может выглядеть следующим образом:
2017/11/13 15:12:02, 3.3742, -0.3058 2017/11/13 15:22:02, 3.3744, -0.3076 2017/11/13 15:32:02, 3.3745, -0.3023 2017/11/13 15:42:02, 3.3745, -0.3054 2017/11/13 15:52:02, 3.3745, -0.3030 2017/11/13 16:02:02, 3.3745, -0.3035 |
При нажатии кнопки «STOP» запись прекращается, файл закрывается, после чего можно выключить питание прибора, извлечь карту памяти и перенести ее в компьютер, где данные из файла могут быть импортированы в Microsoft Excel или в другую программу для дальнейшей обработки.
ВАЖНО! Если прибор будет выключен в процессе записи файла до нажатия кнопки «STOP», например, в результате аварийного отключения питания, то файл на карте памяти закрыт не будет, его длина останется равной нулю, а все ранее записанные в него данные будут безвозвратно утеряны, поэтому завершать режим записи нажатием кнопки «STOP» обязательно!
Переходим ко второй части описания, в которой обсудим принципиальную электрическую схему и конструкцию прибора.
3 КОММЕНТАРИЙ
Подскажите в чем проблема . Пишет в SD «кракозябрами». Скрин не знаю как вставить даю ссылку на файл картинки https://postimg.cc/4Y1SZdjq
Всех с Новым годом! Проблема решена. Использовался модуль
https://postimg.cc/SYRT8SpB
Был заменен на модуль с МС преобразованием уровней
https://postimg.cc/s1g0bcZT
Все стало работать как в описании.
Здравствуйте все и прошу прощения за задержку с ответом. Длинные новогодние праздники нарушили обычный распорядок и комментарии Валерия долго оставались неотвеченными. Обязуюсь впредь отвечать оперативнее.
Я рад, что вопрос уже решился, однако, тем кто, как и Валерий, столкнется с подобными затруднениями при записи лог-файла на карту, могу дать следующие подсказки:
1. Возможно, вы устанавливаете карточку памяти такой емкости, которую плата Deek-Robot Data Logger и соответствующая библиотека не в силах переварить. Я сейчас точно не помню, но, кажется, максимальный объем карты, поддерживаемый этой платой, составляет 8 GB или даже 4GB. У меня в этот прибор воткнута довольно старая карточка емкостью 1 GB, с ней никаких проблем нет.
2. Возможно, карточка у вас отформатирована не в FAT32, а как-то иначе. Отформатируйте в FAT32.
3. Возможно, вы используете в качестве адаптера карты памяти не Deek-Robot Data Logger Board, как у меня, а какой-то другой адаптер. Вам надо убедиться, что этот адаптер поддерживается библиотекой SD library и, если это не так, то найти другую библиотеку, которая будет соответствовать вашему адаптеру и внести соответствующие изменения в скетч. (Или найти другой адаптер).
4. Возможно, тот адаптер, который вы используете, предназначен для работы с 3.3-вольтовыми микроконтроллерами и не имеет встроенных преобразователей уровня. А в нашем случае микроконтроллер Arduino Nano — 5-вольтовый. Тут не только кракозябрами может начать писать (как у Валерия, см. выше), а и вовсе карту памяти может вывести из строя. Я дописал в раздел «Возможности замены компонентов и модернизации прибора» соответствующий абзац по этому поводу.
Всех с Новым годом!