Цена:
INA219 – это датчик напряжения, тока и мощности производства Texas Instruments. Данная микросхема позволяет с высокой точностью измерять напряжение в диапазоне 0..26 вольт и силу тока. Подключение к микроконтроллеру осуществляется по протоколу I2C. Для работы микросхемы требуется небольшая обвязка, главный компонент которой – это шунтирующий резистор. Поэтому в использовании наиболее удобны модули, построенные на базе данной микросхемы, такие, как модуль CJMCU-219.
Модуль CJMCU-219, кроме самой микросхемы INA219, содержит все необходимые компоненты обвязки: шунтирующий резистор 0.1 Ом мощностью 2 Вт, подтягивающие резисторы для линий I2C и блокировочную ёмкость. Также на плате модуля имеются перемычки, позволяющие изменить I2C адрес INA219, что может быть полезно при использовании нескольких модулей. CJMCU-219 легко подключается к Ардуино, Raspberry Pi и другим платам, а готовые библиотеки облегчают работу с ним. Всё это в совокупности с высокой точностью измерений и низким энергопотреблением делают датчик 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 к Ардуино Nano.
Выводы SCL и SDA датчика CJMCU-219 подсоединяем к соответствующим выводам Ардуино. При использовании платы Nano (а также Uno, Pro Mini и других плат на базе микроконтроллера ATmega328P) это пины A5 и A4 соответственно. Питание для датчика берём с выводов Ардуино 5V и GND. Выводы Vin+ и Vin- датчика включаем в разрыв исследуемой цепи, причем Vin+ подключается к «плюсу» питания. Нагрузка, в данном случае электромотор, подключена к отдельному источнику питания, поэтому его «минус» обязательно должен быть соединён с выводом GND Ардуино.
Как уже было отмечено, для работы с INA219 существуют готовые библиотеки. Они избавляют от необходимости работать напрямую с регистрами микросхемы, облегчают операции калибровки, выбора режима работы, чтения результатов измерений. Поэтому следующим этапом будет добавление одной из таких библиотек в среду разработки Ардуино.
Запустите среду разработки Ардуино и перейдите в меню: Скетч -> Подключить библиотеку -> Управлять библиотеками…
Запустится Менеджер библиотек. Чтобы найти библиотеки для работы с нашим датчиком, введём в текстовом поле «ina219».
Как видите, нам доступно несколько библиотек для работы с INA219. Я предлагаю установить библиотеку INA219_WE by Wolfgang Ewald, т.к. она достаточно прозрачна и предоставляет доступ ко всем возможностям датчика. Выберите её в списке и нажмите кнопку «Установка». На всякий случай вот ссылка на репозиторий библиотеки: https://github.com/wollewald/INA219_WE
Откройте пример Continuous, идущий вместе с данной библиотекой:
Залейте скетч в Ардуино и подключите к ней модуль INA219 в соответствии с приведённой ранее схемой. Результат работы скетча можно увидеть в мониторе порта:
Как видно из скриншота, сила тока в моей цепи немного скачет. Это потому, что коллекторный двигатель создаёт помехи, и, по-хорошему, параллельно ему нужно было подключить неполярный конденсатор. Но зато это позволит показать возможности INA219 в борьбе с помехами. Для этого давайте вернёмся к скетчу и разберёмся с функциями библиотеки.
Датчик INA219 готов к использованию без выполнения каких-либо настроек. По умолчанию он сконфигурирован на непрерывное измерение, диапазон напряжений 0…26 В, ток до 3.2 А и разрешение АЦП 12 бит. Если нам не нужны такие широкие диапазоны измерений и разрешение, то мы можем их изменить. И в функции setup рассматриваемого скетча уже показано, как это сделать. Нужно лишь раскомментировать соответствующие функции и подставить в них интересующие параметры. Рассмотрим их.
АЦП 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
Данная функция задаёт режим работы датчика:
Функция setPGain позволяет установить диапазон измеряемых напряжений на шунте и как следствие максимальный измеряемый ток.
Функция 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);
}
Теперь датчик выдаёт стабильные значения. Их легко проверить, добавив в цепь точный мультиметр, что я и сделал. Результаты измерений практически совпадают.
Таким образом, CJMCU-219 – весьма точный и простой в использовании датчик, которому можно найти немало применений.
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru