Главная » Arduino » GY-219 — Ардуино в качестве амперметра

GY-219 — Ардуино в качестве амперметра

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

Измерение силы тока тоже возможно, но «чистая» Ардуино с такой задачей не справится. Здесь нужен соответствующий модуль. Одним из самых популярных модулей является GY‑219. Эта небольшая конструкция может сделать из Ардуино настоящий амперметр.

Модуль построен на чипе INA219 и имеет два типа контактов — классические золотые контакты и дополнительный разъем ARC. Напряжение питания модуля находиться в диапазоне от 3 В до 5 В . Обмен данными с Ардуино происходит по I2C шине. Контакты VIN- и VIN+ используются для подключения модуля к тестируемой схеме. Эти контакты также выведены на разъем ARC.

GY-219 - Ардуино в качестве амперметра

На плате модуля GY-219 имеются две перемычки — А0 и А1. Они позволяют выбрать конкретный адрес, по которому будет идентифицироваться модуль. Можно выбрать один из 16 адресов, как показано в следующей таблице:

Можно выбрать один из 16 адресов

Как работает модуль GY-219?

Модуль GY-219 построен на чипе INA219, который может быть в корпусе двух типов — SO8 и SOT23-8. Чип представляет собой двунаправленный датчик тока и мощности, работающий совместно с шунтирующим резистором.

Система проверяет падение напряжения на этом элементе и значение напряжения питания, и на основе этого определяет значение текущего тока. Внутренний АЦП имеет 12-битное разрешение, что допускает погрешность измерения около ±1%.

Диапазон тока, измеряемый модулем, зависит от сопротивления шунтирующего резистора. Обычно на плату устанавливается резистор сопротивлением 0,1 Ом и мощностью 2-3 Вт. При таких значениях сопротивления резистора модуль может измерять ток максимум до 3,5 А при напряжении в диапазоне от 0 В до 26 В.

Однако ничто не мешает нам увеличить диапазон измеряемого тока. Установив шунтирующий резистор сопротивлением 0,01 Ом, диапазон измерения можно повысить до 35 А при том же напряжении. Но помните, что, уменьшая сопротивление, мы теряем точность.

Поддержка GY-219

Датчик GY-219 хорошо работает совместно с Ардуино. Разумеется, для этого его необходимо правильно подключить и использовать соответствующую библиотеку.

Подключение

Сначала необходимо подключить питание, выводы +5 В и GND Ардуино подключаем к выводам Vcc и GND GY-219, далее подключаем интерфейс I2C, выводы A4 и A5 Ардуино подключаем к выводам SDA и SCL GY-219. Выводы VIN- и VIN+ подключаем в разрыв цепи нагрузки.

Библиотека

Для GY-219 идеально подойдет библиотека Adafruit INA219. Если вы не знаете как установить новую библиотеку, то читайте здесь.

Скетч

#include <Ардуино.h>
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;

void setup(void)
{
Serial.begin(9600);
uint32_t currentFrequency;
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
Serial.println("Measuring voltage and current with INA219 ...");
}

void loop(void)
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(2000);
}

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

В цикле setup() мы инициализируем последовательный порт и сам модуль GY-219. Данные датчик обрабатываются циклом loop(). Изначально мы создаем пять переменных, в формате float в которые будем помещать данные, считанные модулем. С каждой переменной связана соответствующая функция из библиотеки Adafruit_INA219:

  • shuntvoltage = ina219.getShuntVoltage_mV(); — падение напряжения на шунтирующем резисторе (мВ).
  • busvoltage = ina219.getBusVoltage_V(); — значение напряжения на шунтирующем резисторе (В).
  • current_mA = ina219.getCurrent_mA(); — значение протекающего тока (мА).
  • power_mW = ina219.getPower_mW(); — мощность (мВт).
  • loadvoltage = busvoltage + (shuntvoltage / 1000); — значение представляет собой сумму напряжения, подаваемого на резистор, и значения падения, деленную на 1000.

В последней части кода с помощью команды Serial.print мы отправляем значения, считанные модулем, в последовательный порт.

На картинке выше вы можете видеть значения, считанные модулем GY-219 из схемы, питающей несколько светодиодов.

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






Добавить комментарий