Перейти к содержимому
Самодельные электронные устройства
  • Главная
    • О сайте
    • Об авторах
    • Контакты
  • Проекты
    • Тестер ОУ
    • Модули для средств измерений
      • Предисловие
      • Модуль генератора GEN01
      • Модуль аттенюатора ATT01
      • Модуль аттенюатора ATT02
      • Модуль прециз. выпрямителя RECT01
      • Модуль усилителя AMP01
      • Модуль питания POWER01
    • Приборы на основе модулей
      • Аналоговый милливольтметр
      • Цифровой милливольтметр
      • Звуковой генератор
      • Измеритель АЧХ
    • Амперметр-вольтметр
      • Устройство и режимы работы
      • Схема и конструкция
      • ПО и настройка
      • Пример использования
    • Сигнализатор разряда батареи
    • Пассивная нагрузка
  • Обзоры
    • Модуль H-моста
    • Двухполярные конвертеры DC-to-DC
  • Вход
    • Регистрация
    • Мой аккаунт

Ампервольтметр с записью ч.3

Амперметр-вольтметр с записью на SD-карту

Часть 3 - программное обеспечение и настройка

Программное обеспечение

Исходный текст (или, как говорят поклонники Ардуино - скетч) текущей версии (верс.1.6, ноябрь 2025 г.) прошивки микроконтроллера можно скачать по ссылке в конце этой страницы.

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

  • Wire – работа с интерфейсом I2C для обмена данными между микроконтроллером и периферийными модулями.
  • SPI – работа с интерфейсом SPI для взаимодействия с адаптером карты памяти microSD.
  • EEPROM – работа с энергонезависимой памятью микроконтроллера.
  • Adafruit_ADS1015 (v.1.1) – работа с АЦП на базе ADS1015/ADS1115. Эта библиотека включает также библиотеку Adafruit_BusIO.
  • LiquidCrystal_I2C – работа с LCD дисплеем.
  • RTClib – работа с модулем часов реального времени на базе DS1307.
  • SD – работа с файловой системой FAT16/FAT32 для записи лог-файла на карту памяти.

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

Как заставить компилятор использовать эти библиотеки

Arduino IDE при компиляции ищет библиотеки в разных папках на вашем жестком диске. Как минимум, это:

  • папки установки IDE - что-то вроде C:\Program Files (x86)\Arduino\libraries,
  • папки, где IDE хранит свои данные - C:\Users\<ваше имя>\AppData\Local\Arduino15\libraries,
  • папки, относящиеся к конкретным аппаратным платформам, например, c:\Users\<ваше имя>\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\libraries,
  • папка, где находятся проекты пользователя (под папкой, которая в настройках IDE указана вами в качестве "Sketchbook location" (или, если в IDE включен русский язык - "Путь к альбому со скетчами"), чаще всего это Мои Документы\Arduino\libraries или C:\Users\<ваше имя>\Documents\Arduino\libraries.

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

Теперь, когда мы разобрались с библиотеками, посмотрим на исходный текст прошивки. Непосредственно измерением и записью результатов в лог-файл занимаются всего две функции – measureSingleEnded и measure. Весь остальной объем текста программы составляют процедуры взаимодействия с пользователем – отображение на дисплее результатов измерений (в режимах MEASUREMENT и RECORDING) и различных сообщений (в режиме SETUP), обработка нажатий на кнопки управления.

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

Настройка прибора

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

Если прибор не работает

Если при исправных компонентах и правильно выполненном монтаже прибор все-таки не работает, то вероятной причиной этого может являться то, что ваши периферийные модули имеют адреса на шине I2C, отличающиеся от тех, что указаны на принципиальной схеме прибора и использованы автором в скетче. Дело в том, что разные производители клонов модулей для Arduino по каким-то причинам нередко используют не те адреса портов, которые были использованы в оригинале, а какие-то другие, что, разумеется, приводит к неработоспособности всей конструкции. Вы можете выяснить экспериментально, какие именно адреса портов задействованы в ваших модулях, загрузив в микроконтроллер программу i2c_scanner, которую можно легко отыскать на официальном сайте Arduino. Программа просканирует все существующие на шине I2C адреса портов и отметит те из них, на которых "откликаются" ваши периферийные модули. Если адреса портов ваших модулей отличаются от указанных на схеме, вам следует исправить соответствующие константы в скетче.

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

Почему прибор показывает ненулевые значения тока и напряжения?

Причина появления таких ненулевых показаний различна для каналов напряжения и тока. В канале измерения напряжения смещение нуля возникает от протекания входного тока АЦП ADS1115 через резисторы входного делителя напряжения. В результате на входе АЦП возникает некоторое небольшое (в пределах 10-15mV) начальное смещение. В канале измерения тока начальное смещение нуля возникает из-за разброса параметров микросхем датчиков тока. Хотя в документации микросхем ACS712 указано, что их выходное напряжение при отсутствии измеряемого тока равно половине напряжения питания, на практике микросхемы имеют определенный разброс параметров. В результате этого при вычитании их выходных напряжений в программе не всегда получается нулевое значение.

Для установки нулевых показаний в режиме SETUP (НАСТРОЙКА) предусмотрен шаг 4, при выполнении которого прибор измеряет величины напряжений смещения в каналах напряжения и тока при отсутствии входных сигналов, запоминает их в EEPROM микроконтроллера, а затем использует для коррекции показаний прибора при измерениях.

ВАЖНО! Перед тем как выполнить установку нуля необходимо:
1. Замкнуть перемычкой входные гнезда VOLTAGE INPUT.
2. Дать прибору прогреться во включенном состоянии несколько минут для того, чтобы в его корпусе установился тепловой режим.

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

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

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

//#define NOISE_SUPPRESSOR 1

Если константа NOISE_SUPPRESSOR определена, то все результаты измерений менее 3 мВ в канале измерения напряжения и менее 3 мА в канале измерения тока будут показываться на дисплее как 0. При этом независимо от того, определена эта константа или нет, в лог-файл всегда будут записываться измеренные значения без шумоподавления.

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

Для этого понадобится следующее оборудование:

  • Регулируемый источник питания, способный вырабатывать постоянное напряжение до 20 В при токе до 5 А
  • Мощный резистор сопротивлением несколько ом, используемый в качестве нагрузки
  • Лабораторный цифровой амперметр с пределом измерений до 5 А максимально возможного класса точности
  • Лабораторный цифровой вольтметр с пределом измерений до 20 В максимально возможного класса точности

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

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

Файлы для загрузки

  • Исходный текст программы: Logger.ino Загрузить файл
  • Архив со всеми используемыми в проекте библиотеками: Logger_libraries.zip Загрузить файл

Ссылки на сторонние интернет-ресурсы

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

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

  • Микроконтроллер Arduino Nano открыть в новом окне (англ.)
  • Плата Data Logging Board фирмы Deek-Robot открыть в новом окне  (нем.) 
    На сайте производителя платы - компании Deek-Robot - на дату написания этой публикации отсутствует какая-либо информация об этой плате, судя по всему, компания сняла ее с производства. Именно поэтому выше приведена ссылка на ресурс, не имеющий отношения к производителю платы, да еще и на немецком языке (google-переводчик вам в помощь), но, к сожалению, это вся информация, которую автору удалось разыскать на просторах интернета. Тем не менее, множество безымянных фирм в Китае продолжает производить клоны этих плат, так что их по-прежнему легко найти и приобрести на сайтах всем известных интернет-магазинов.
    • Документация микросхемы часов реального времени DS1307 открыть в новом окне (англ.).
  • Модуль АЦП ADS1115 открыть в новом окне (англ.).
    • Документация микросхемы ADS1115 открыть в новом окне (англ.).
  • Модуль датчика тока на базе микросхемы ACS712 открыть в новом окне (англ.).
    • Описание принципа работы микросхемы ACS712 открыть в новом окне (англ.).
    • Документация микросхемы ACS712 скачать (англ.).
  • LCD дисплей 1602 открыть в новом окне (англ.).

Теперь, когда прибор изготовлен и настроен, познакомимся с тем, как его можно применить на практике.

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

Вы находитесь в проекте:


Амперметр-вольтметр с записью на SD-карту

  • Часть 1 - устройство и режимы работы
    • Назначение
    • Устройство прибора
    • Режимы работы
    • Порядок работы в режиме SETUP
    • Формат лог-файла
  • Часть 2 - схема и конструкция прибора
    • Электрическая схема
    • Компоненты
    • Конструкция и монтаж
    • Возможности замены компонентов и модернизации прибора
  • Часть 3 - программное обеспечение и настройка
    • Программное обеспечение
    • Настройка прибора
    • Файлы для загрузки
    • Ссылки на сторонние интернет-ресурсы
  • Часть 4 - пример использования прибора
    • Постановка задачи
    • Подключение к объекту измерений
    • Результаты измерений

Все материалы сайта доступны
на условиях лицензии CC BY-NC
Хостинг сайта осуществляет
компания BEGET, С-Петербург

О сайте

Контакты

Вход

Регистрация

©2025  Авторы сайта

Тема от Colorlib на платформе WordPress
Вернуться наверх
wpDiscuz
0
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x