Вольтметр-амперметр на базе Arduino с записью на microSD-карту

Вольтметр-амперметр на базе Arduino с записью на microSD-карту

Прибор предназначен для одновременного измере-ния постоянного напряжения и тока с записью результатов на карту памяти формата microSD. Пределы измерения напряжения (0…20V) и тока (‑5A…5A) выбраны исходя из того, что прибор используется в основном для наблюдения за процессами заряда-разряда 12-вольтовых свинцово-кислотных аккумуляторов небольшой емкости в источниках бесперебойного питания. Текущие значения напряжения и тока отображаются на дисплее, а запись результатов измерений в файл формата CSV (лог-файл) происходит через заданные интервалы времени, устанавливаемые в пределах от 1 до 30 минут.

УСТРОЙСТВО

· модуль LCD дисплея 1602 с конвертером интерфейса I2C

· модуль АЦП на базе ADS1115

· модуль часов реального времени на базе DS1307

· модуль адаптера microSD карты

· модуль датчика тока на базе ACS712 (2 шт.)

Символьный LCD дисплей имеет 2 строки по 16 символов и используется для отображения результатов измерений, а также для вывода различной служебной информации в режиме настройки. Четырехканальный 16-разрядный АЦП ADS1115 служит для преобразования входных аналоговых сигналов в цифровую форму для дальнейшей обработки микроконтроллером. На один из его каналов через входной делитель поступает измеряемое напряжение, на два других – выходные сигналы от модулей ACS712, пропорциональные измеряемому току. Четвертый канал АЦП не используется. Часы реального времени необходимы для получения данных о текущей дате и времени, записываемых в лог-файл вместе с измеренными значениями тока и напряжения, они же используются для задания временных интервалов между записями. Адаптер карты памяти содержит соответствующее гнездо для установки карты формата microSD, а также микросхему преобразователя уровней входных и выходных сигналов, позволяющий привести 5-вольтовые логические сигналы Arduino к уровням 3.3 вольта, необходимым для работы карты памяти. Модули датчиков тока включены по дифференциальной схеме, при которой один и тот же измеряемый ток проходит через два датчика в противоположных направлениях, что позволяет резко снизить влияние температурного дрейфа датчиков, нестабильности источников питания и окружающих магнитных полей на точность измерений. Подробнее о преимуществах такого включения можно прочитать далее. Прибор подключается к измеряемым электрическим цепям при помощи двух пар гибких проводов, включаемых в соответствующие гнезда – одна пара гнезд служит для измерения напряжения и подключается параллельно к клеммам аккумулятора, процессы заряда или разряда которого необходимо наблюдать, другая пара включается последовательно с этим аккумулятором и служит для измерения силы тока его заряда/разряда. Цепь измерения тока не имеет гальванической связи с остальными цепями прибора, поэтому ток можно измерять как в положительном проводе, идущем к аккумулятору от плюса зарядного устройства и нагрузки, так и в отрицательном, идущем к аккумулятору от общего провода (массы). Все элементы электрической схемы прибора размещены в пластмассовом корпусе. На лицевой панели корпуса размещены дисплей и кнопки управления, а на боковых стенках корпуса – разъем для подключения внешнего источника питания, гнезда для подключения измеряемых цепей напряжения и тока, а также имеется прорезь для извлечения/установки карты памяти. Прибор питается от внешнего стабилизированного источника питания напряжением 9V. Потребляемый от источника ток около 70 мА. Выключателя питания прибор не имеет и включается при подаче питания от внешнего источника.

РЕЖИМЫ РАБОТЫ

Вольтметр-амперметр работает в трех режимах

MEASUREMENT (ИЗМЕРЕНИЕ)

RECORDING (ЗАПИСЬ)

SETUP (НАСТРОЙКА)

При каждом включении прибора выполняется проверка наличия карты памяти и, если карта вставлена в соответствующее гнездо, прибор сразу переходит в режим MEASUREMENT. Если же карта microSD в адаптере отсутствует, на дисплей на 2-3 секунды выводится соответствующее предупреждение, а затем прибор переходит в режим MEASUREMENT, как обычно, однако перейти в режим RECORDING нажатием кнопки «START» в этом случае не получится. Для того чтобы выполнить запись результатов измерений в файл, нужно будет выключить питание прибора, вставить на место карту памяти, а затем снова включить прибор.

Таблица 1. Функции кнопок и примеры показаний на дисплее в каждом из режимов.

Назначение кнопок

Примеры показаний на дисплее

SW1 (белая) – «SETUP» – переход в режим настройки SW2 (зеленая) – «START» – создание нового лог-файла на карте памяти и переход в режим записи

SW3 (красная) – не задействована

SW1 (белая) – не задействована SW2 (зеленая) – не задействована

SW3 (красная) – «STOP» - завершение записи, закрытие лог-файла и возврат в режим измерения

SW1 (белая) – «NEXT» – переход к следующему настраиваемому параметру, после завершения настройки всех параметров – возврат в режим измерения. SW2 (зеленая) – «UP» – увеличение настраиваемого параметра на 1

SW3 (красная) – «DOWN» – уменьшение настраиваемого параметра на 1

ФОРМАТ ЛОГ-ФАЙЛА

В режиме измерения при нажатии кнопки «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 или в другую программу для дальнейшей обработки.

ЭЛЕКТРИЧЕСКАЯ СХЕМА

Принципиальная электрическая схема прибора показана на рисунке:

Измеряемое напряжение поступает на вход VOLTAGE INPUT и через делитель R1, R2, понижающий напряжение в 5 раз, поступает на вход A0 модуля АЦП U3. Благодаря делителю на вход прибора можно подавать напряжения в диапазоне 0…20 V. Диод D1 защищает вход АЦП от случайной подачи напряжения отрицательной полярности, которое может вывести микросхему АЦП из строя. Измеряемый ток со входа CURRENT INPUT поступает на входы IN0 и IN1 микросхем ACS712 модулей U5 и U6. Эти микросхемы содержат датчики Холла, преобразующие магнитное поле, возникающее в проводнике от протекания по нему измеряемого тока, в пропорциональное ему выходное напряжение. Главным достоинством микросхем ACS712 является полная изоляция цепи измеряемого тока от остальных цепей микросхемы и, соответственно, от всей электрической схемы прибора, что дает возможность подключать вход CURRENT INPUT в любую точку схемы исследуемого устройства, например, как в положительный, так и в отрицательный провод аккумулятора, не опасаясь короткого замыкания с цепью измеряемого напряжения. Этим модули на базе ACS712 выгодно отличаются от более распространенных датчиков тока, измеряющих падение напряжения на шунте, включенном в измеряемую цепь. Еще одним полезным свойством микросхем ACS712 является возможность измерения тока любой полярности, что очень удобно при исследовании процессов в аккумуляторах, у которых, как известно, ток при зарядке течет в одну сторону, а при разрядке – в другую. К сожалению, кроме отмеченных достоинств, микросхемы ACS712 имеют и некоторые недостатки, заключающиеся в значительном дрейфе выходного напряжения от окружающей температуры, от напряжения источника питания и, особенно, от силы и направления окружающих магнитных полей, включая магнитное поле Земли. Это затрудняет измерение малых токов на уровне единиц или даже десятков миллиампер. Для устранения этого недостатка в схеме использованы два одинаковых модуля, выходные сигналы которых подаются на входы A1 и A2 модуля АЦП U3, где преобразуются в цифровую форму, а затем программно вычитаются друг из друга микроконтроллером. При этом все погрешности, имеющие у двух модулей одинаковый знак и близкую величину, значительно уменьшаются (в идеале, вообще, становятся равными нулю), а полезный сигнал, наоборот, удваивается из-за встречного включения датчиков тока. Обратите внимание, что входы IN0 и IN1 двух модулей соединены таким образом, что измеряемый ток протекает через них в противоположных направлениях. Такое включение датчиков и дальнейшее вычитание их выходных напряжений образует дифференциальную схему, позволяющую значительно повысить точность измерений, что особенно заметно при малых величинах измеряемых токов. Еще одним недостатком модулей на базе ACS712 является высокий уровень собственных шумов на выходах, который достигает десятков милливольт, что также отрицательно сказывается на точности измерений малых токов. Для подавления этих шумов выходы модулей U5 и U6 соединены со входами A1 и A2 модуля АЦП U3 через простейшие RC-фильтры нижних частот R3C1 и R4C2. Модули часов реального времени, АЦП и дисплея подключаются к микроконтроллеру по шине I2C, таким образом, для обмена данными с этими модулями задействовано всего 2 входа-выхода Arduino (A4, A5), а microSD карта подключается при помощи интерфейса SPI (входы-выходы D10, D11, D12, D13). Кроме того, в приборе имеются три кнопки управления, подключенные ко входам D2, D3 и D4 микроконтроллера и необходимые для переключения режимов работы и настройки параметров. Питающее напряжение 9V поступает на микроконтроллер U1 от внешнего источника питания, а все остальные модули питаются напряжением 5V от встроенного стабилизатора напряжения Arduino Nano (цепь VCC).

КОМПОНЕНТЫ

Основные компоненты, необходимые для сборки прибора, показаны на рисунке:

1. Микроконтроллер Arduino Nano, вернее, его аналог, изготовленный безымянным китайским производителем, но работающий при этом не хуже настоящего.

2. Комбинированная плата Data Logging Board фирмы Deek-Robot, объединяющая в себе модуль часов реального времени и модуль адаптера карты microSD.

3. Модуль АЦП на базе 4-канальной 16-разрядной микросхемы ADS1115 фирмы Texas Instruments

4. Модуль датчика тока на базе микросхемы ACS712 фирмы Allegro (таких модулей нужно 2 штуки). Максимальный измеряемый модулем ток 5А.

5. Три кнопки без фиксации 12x12 мм с цветными колпачками

6. Модуль символьного LCD дисплея 1602 (16 символов, 2 строки) с припаянным к нему конвертером интерфейса I2C

7. Разъем для подключения внешнего источника питания 9V

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

КОНСТРУКЦИЯ И МОНТАЖ

Прибор смонтирован в пластмассовом корпусе размерами 112х82х40 мм. Корпус состоит из двух половинок, соединяемых по углам саморезами. В верхней половине размещен дисплейный модуль и кнопки управления, в нижней половине – все остальные модули и разъемы.

Для того чтобы половинки корпуса можно было при необходимости разъединить, соединения между ними сделаны с помощью двух 4-контактных разъемов – один для подключения дисплея, другой для подключения кнопок управления. В связи с простотой схемы и малым количеством соединений между модулями печатная плата не разрабатывалась. Модули и дискретные элементы размещены на куске перфорированной односторонней макетной платы, их выводы соединены на нижней стороне платы навесными проводниками. На другом куске той же макетной платы смонтированы кнопки управления. Модули датчиков тока U5 и U6 должны размещаться параллельно друг другу, и, желательно, как можно ближе, при этом внешние магнитные поля будут одинаково влиять на их выходные сигналы, что позволит полностью скомпенсировать их в программе. В конструкции, показанной на фото, модули U5 и U6 размещены «этажеркой», то есть один под другим. Рекомендуется перед установкой этих модулей в прибор выпаять находящиеся на них SMD-светодиоды. Эти светодиоды индицируют подачу напряжения питания на модули, что не имеет большого смысла, когда они расположены в корпусе прибора и не видны снаружи, однако, они довольно сильно нагреваются в процессе работы и нагревают находящуюся рядом микросхему ACS712, вызывая заметный дрейф нуля прибора в первые минуты после его включения.

ВОЗМОЖНОСТИ МОДЕРНИЗАЦИИ ПРИБОРА И ЗАМЕНЫ КОМПОНЕНТОВ

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

НАСТРОЙКА ПРИБОРА

Этап 1 – установка нуля

ВАЖНО! Перед тем как подбирать константу voltageZeroCorrection необходимо:

1. Замкнуть перемычкой входные гнезда VOLTAGE INPUT.

2. Дать прибору прогреться во включенном состоянии не менее 15-20 минут для того, чтобы в его корпусе установился тепловой режим.

В канале измерения тока начальное смещение нуля возникает из-за разброса параметров микросхем датчиков тока. Хотя в документации микросхем ACS712 указано, что их выходное напряжение при отсутствии измеряемого тока равно половине напряжения питания, на практике микросхемы имеют определенный разброс параметров. В результате этого при вычитании их выходных напряжений в программе не всегда получается нулевое значение. Для компенсации этой разницы нулевых точек необходимо подобрать значение константы currentZeroCorrection. При этом замыкать перемычкой входные гнезда CURRENT INPUT не нужно, а вот прогреть прибор в течение 15-20 минут очень рекомендуется. К сожалению, даже при самом тщательном подборе константы currentZeroCorrection добиться стабильных нулевых значений в канале измерения тока скорее всего не удастся – показания на дисплее при неизменной температуре воздуха будут плавать в пределах 2-3мА вверх и вниз от нуля, а при изменении температуры могут уползти и до 10-15мА, однако, следует иметь в виду, что эти колебания составляют всего лишь десятые доли процента от верхнего предела измерений прибора. Вряд ли стоит ожидать от несложной конструкции, собранной из весьма дешевых комплектующих, точности измерений, сопоставимой с профессиональным лабораторным оборудованием, поэтому в большинстве случаев можно считать такие незначительные отклонения допустимыми. Тем не менее, если даже небольшие колебания нулевой точки нежелательны, то в программе предусмотрена возможность избавиться от них, включив шумоподавление. Для этого нужно убрать символы комментария в начале следующей строки: //#define NOISE_SUPPRESSOR 1 Если константа NOISE_SUPPRESSOR определена, то все результаты измерений менее 3mV в канале измерения напряжения и менее 3mA в канале измерения тока будут показываться на дисплее как 0. При этом независимо от того, определена эта константа или нет, в лог-файл всегда будут записываться исходные значения без шумоподавления.

Этап 2 – калибровка чувствительности

· Регулируемый источник питания, способный вырабатывать постоянное напряжение до 20V при токе до 5 ампер

· Мощный резистор сопротивлением несколько ом, используемый в качестве нагрузки

· Лабораторный цифровой амперметр с пределом измерений до 5А максимально возможного класса точности

· Лабораторный цифровой вольтметр с пределом измерений до 20V максимально возможного класса точности

От качества эталонных лабораторных приборов, применяемых для калибровки чувствительности, зависит точность, которую удастся достигнуть. Не следует в качестве эталонных приборов использовать недорогие мультиметры, приобретенные в соседнем хозяйственном магазине, их точность совершенно недостаточна для успешной калибровки. Процесс калибровки состоит в подборе значений константы voltageSensitivity для канала измерения напряжения и константы currentSensitivity для канала измерения тока. Для этого нужно собрать цепь из регулируемого источника питания и резистора нагрузки, подключить последовательно с нагрузкой вход CURRENT INPUT прибора и эталонный амперметр, а параллельно нагрузке – вход VOLTAGE INPUT прибора и эталонный вольтметр. Далее показания эталонных приборов нужно сравнить с результатами на дисплее и подобрать значения констант так, чтобы результаты измерений совпали.

ССЫЛКИ НА ИНТЕРНЕТ-РЕСУРСЫ

Электронные компоненты, используемые в проекте:

· Плата Data Logging Board фирмы Deek-Robot - http://draeger-it.blog/arduino-lektion-27-datenloggen-mit-dem-logging-shield/ (нем.) (Сайт производителя платы на дату написания статьи находится в нерабочем состоянии, поэтому приведена ссылка на сторонний ресурс). Документация микросхемы часов реального времени DS1307 фирмы Dallas Semiconductor - https://www.sparkfun.com/datasheets/Components/DS1307.pdf (англ.).

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

Библиотеки, используемые в проекте:

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

📎📎📎📎📎📎📎📎📎📎