Каталог

Датчик напряжения и тока CJMCU-219 на чипе INA219

Цена:

720 р.
менее 500 шт.
Уже в корзине
Код товара: 12722
Оригинальное название:
INA219 I2C Interface Zero Drift Bi-directional current CJMCU-219

Описание товара

INA219 – это датчик напряжения, тока и мощности производства Texas Instruments. Данная микросхема позволяет с высокой точностью измерять напряжение в диапазоне 0..26 вольт и силу тока. Подключение к микроконтроллеру осуществляется по протоколу I2C. Для работы микросхемы требуется небольшая обвязка, главный компонент которой – это шунтирующий резистор. Поэтому в использовании наиболее удобны модули, построенные на базе данной микросхемы, такие, как модуль CJMCU-219.

Модуль CJMCU-219, кроме самой микросхемы INA219, содержит все необходимые компоненты обвязки: шунтирующий резистор 0.1 Ом мощностью 2 Вт, подтягивающие резисторы для линий I2C и блокировочную ёмкость. Также на плате модуля имеются перемычки, позволяющие изменить I2C адрес INA219, что может быть полезно при использовании нескольких модулей. CJMCU-219 легко подключается к Ардуино, Raspberry Pi и другим платам, а готовые библиотеки облегчают работу с ним. Всё это в совокупности с высокой точностью измерений и низким энергопотреблением делают датчик INA219 отличным выбором для систем мониторинга питания.

Характеристики CJMCU-219

  • Напряжение питания: от 3 до 5.5 В
  • Потребляемый ток: не более 1 мА
  • Диапазон измеряемых напряжений: от 0 до 26 В
  • Максимальная измеряемая сила тока: 3.2 А
  • Разрядность АЦП: 12 бит
  • Погрешность измерений: не более 1 %
  • Рабочая температура: от -25 до 85 °C
  • Протокол: I2C. Режимы Fast-mode (400 кбит/с) и High-speed (3,4 Мбит/с)
  • Фильтрация: до 128 выборок для усреднения результата

С остальными параметрами вы можете ознакомиться в даташите INA219

Схема модуля и принцип работы

Схема модуля INA219

INA219 вычисляет силу тока, измеряя падение напряжения на шунте известного номинала. Для этого используется 12-разрядный АЦП,  диапазон измеряемых им напряжений составляет ±40 мВ. Этот диапазон может быть увеличен путём деления напряжения на 2, 4 и 8, что позволит измерять напряжение на шунте в диапазонах ±80, ±160 и ±320 мВ соответственно. По умолчанию микросхема INA219 сконфигурирована на измерение напряжения на шунте в диапазоне ±320 мВ. Отсюда верхний предел измеряемого тока – 3.2 А. При необходимости этот предел может быть увеличен путём замены шунта на другой, меньшего номинала.

Одна из наиболее частых проблем при измерении силы тока – это шумы. Для минимизации их воздействия в INA219 применён сигма-дельта аналого-цифровой преобразователь. АЦП данного типа имеют хорошее шумоподавление. Кроме того, в INA219 имеется возможность усреднения результатов измерений путем выполнения серии измерений (до 128) с последующим нахождением среднего значения.

Напряжение основной цепи датчик измеряет между выводами Vin+ и GND. Подобно тому, как можно расширить диапазон измеряемых напряжений на шунте, используя делитель, можно выбрать диапазон и для основной цепи. Здесь доступны 2 диапазона: 16 и 32 В. Тем не менее, максимальное измеряемое напряжение не должно превышать 26 В.

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

INA219 позволяет изменять свой I2C адрес путём соединения адресных выводов A0 и A1 с другими выводами. Все возможные их комбинации и адреса приведены в даташите, всего их 16. Для модулей CJMCU-219 в большей степени актуальны 4 из них:

Адрес Перемычка A1 Перемычка A0
0x40 0 0
0x41 0 1
0x44 1 0
0x45 1 1

 

По умолчанию перемычки в модулях CJMCU-219 не запаяны и I2C, выводы A0 и A1 подтянуты к «земле» и адрес датчика 0x40.

Подключение CJMCU-219 к Ардуино

В качестве примера рассмотрим схему подключения CJMCU-219 к Ардуино Nano.

Подключение модуля INA219 к АрдуиноПодключение модуля INA219 к Ардуино

Выводы SCL и SDA датчика CJMCU-219 подсоединяем к соответствующим выводам Ардуино. При использовании платы Nano (а также Uno, Pro Mini и других плат на базе микроконтроллера ATmega328P) это пины A5 и A4 соответственно. Питание для датчика берём с выводов Ардуино 5V и GND. Выводы Vin+ и Vin- датчика включаем в разрыв исследуемой цепи, причем Vin+ подключается к «плюсу» питания. Нагрузка, в данном случае электромотор, подключена к отдельному источнику питания, поэтому его «минус» обязательно должен быть соединён с выводом GND Ардуино.

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

Установка библиотеки для CJMCU-219

Запустите среду разработки Ардуино и перейдите в меню: Скетч -> Подключить библиотеку -> Управлять библиотеками…

Менеджер библиотек IDE Arduino

Запустится Менеджер библиотек. Чтобы найти библиотеки для работы с нашим датчиком, введём в текстовом поле «ina219».

Установка библиотеки в IDE Arduino для работы с INA219

Как видите, нам доступно несколько библиотек для работы с INA219. Я предлагаю установить библиотеку INA219_WE by Wolfgang Ewald, т.к. она достаточно прозрачна и предоставляет доступ ко всем возможностям датчика. Выберите её в списке и нажмите кнопку «Установка». На всякий случай вот ссылка на репозиторий библиотеки: https://github.com/wollewald/INA219_WE

Откройте пример Continuous, идущий вместе с данной библиотекой:

Пример скетча для INA219

Залейте скетч в Ардуино и подключите к ней модуль INA219 в соответствии с приведённой ранее схемой. Результат работы скетча можно увидеть в мониторе порта:

Результаты измерений модулем INA219

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

Настройка INA219

Датчик INA219 готов к использованию без выполнения каких-либо настроек. По умолчанию он сконфигурирован на непрерывное измерение, диапазон напряжений 0…26 В, ток до 3.2 А и разрешение АЦП 12 бит. Если нам не нужны такие широкие диапазоны измерений и разрешение, то мы можем их изменить. И в функции setup рассматриваемого скетча уже показано, как это сделать. Нужно лишь раскомментировать соответствующие функции и подставить в них интересующие параметры. Рассмотрим их.

setADCMode – настройка разрешения АЦП и усреднение результата

АЦП INA219 имеет разрешение 12 бит и по умолчанию при каждом измерении делает единственную выборку. Функция setADCMode позволяет изменить разрядность (возможны варианты: 9, 10, 11 и 12 бит) и количество выборок (1, 2, 4, 8, 16, 32, 64, 128). Оба параметра влияют на время измерения. В скетче приведены все возможные значения, с которыми может быть вызвана данная функция, а так же соответствующие им длительности измерений. Например, чтобы настроить датчик на выполнение 128 выборок, необходимо раскомментировать строку:

ina219.setADCMode(SAMPLE_MODE_128); // choose mode and uncomment for change of default

setMeasureMode – выбор режима работы

Данная функция задаёт режим работы датчика:

  • POWER_DOWN – переход в режим энергосбережения.
  • TRIGGERED – измерение по запросу.
  • ADC_OFF – отключение АЦП. Приостанавливает все измерения.
  • CONTINUOUS – непрерывное измерение (по умолчанию)

setPGain – выбор верхней границы по току

Функция setPGain позволяет установить диапазон измеряемых напряжений на шунте и как следствие максимальный измеряемый ток.

setBusRange – выбор верхней границы по напряжению

Функция setBusRange позволяет выбрать диапазон измеряемых напряжений основной цепи.

 

Воспользуемся этими функциями, чтобы настроить INA219 на выполнение 128 выборок, измерение тока до 400 мА и напряжения до 16 В. Изменённый скетч и результаты измерений приведены ниже.

#include "Wire.h"
#include "INA219_WE.h"
#define I2C_ADDRESS 0x40 // I2C адрес модуля

INA219_WE ina219(I2C_ADDRESS);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  if (!ina219.init()) {
    Serial.println("INA219 not connected!");
  }

  ina219.setADCMode(SAMPLE_MODE_128); // 128 выборок для усреднения измерений по току
  ina219.setPGain(PG_40); // измеряем ток в пределах 400 мА
  ina219.setBusRange(BRNG_16); // напряжение до 16 В

  Serial.println("INA219 Current Sensor Example Sketch - Continuous");
}

void loop() {
  float shuntVoltage_mV = 0.0;
  float loadVoltage_V = 0.0;
  float busVoltage_V = 0.0;
  float current_mA = 0.0;
  float power_mW = 0.0;
  bool ina219_overflow = false;

  shuntVoltage_mV = ina219.getShuntVoltage_mV();
  busVoltage_V = ina219.getBusVoltage_V();
  current_mA = ina219.getCurrent_mA();
  power_mW = ina219.getBusPower();
  loadVoltage_V  = busVoltage_V + (shuntVoltage_mV / 1000);
  ina219_overflow = ina219.getOverflow();

  Serial.print("Shunt Voltage [mV]: "); Serial.println(shuntVoltage_mV);
  Serial.print("Bus Voltage [V]: "); Serial.println(busVoltage_V);
  Serial.print("Load Voltage [V]: "); Serial.println(loadVoltage_V);
  Serial.print("Current[mA]: "); Serial.println(current_mA);
  Serial.print("Bus Power [mW]: "); Serial.println(power_mW);
  if (!ina219_overflow) {
    Serial.println("Values OK - no overflow");
  }
  else {
    Serial.println("Overflow! Choose higher PGAIN");
  }
  Serial.println();

  delay(3000);
}

Результат измерений INA219 с фильтрацией

Проверка измерений INA219 мультиметром

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

Таким образом, CJMCU-219 – весьма точный и простой в использовании датчик, которому можно найти немало применений. 

footer shadow
Контакты

г. Москва, Пятницкое ш. д. 18, пав. 566

zakaz@compacttool.ru

8-495-752-55-22

compacttool logoadaptive site

accepted payment systems

Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !

© Все права защищены 2015 - 2024г https://compacttool.ru