前面简单介绍过INA219芯片的一些知识,本次直接使用从网上购得的INA219模块做实验。

其工作原理图:

采样电阻使用的是0.1欧姆的电阻。使用时要注意,采样电路中一定要加上限流电阻,否则会烧坏采样电阻的。
老规矩,拿到手的模块一定要测试一下,依旧使用ESP8266。
测试方案使用以下方案:
1、采样电路在开路状态下,相当于采样电流0A。
2、加入LED电路,测量mA级的测量数据。
3、搭建1A级电路,确认测量结果。
其实第一个测量方案主要是为了验证买到手的模块有没问题。
Arduino程序如下:
/**
* 测试INA219
* 接线方式
* INA219 ESP8266
* ---------------------------
* VCC 3.3V
* GND GND
* SCL D1(GPIO5)
* SDA D2(GPIO4)
* --------------------------------测试方式1:Vin悬空,不接入采样电路
* Vin+ 悬空
* Vin- 悬空
* --------------------------------测试方式2:采样电路使用LED,mA级别
* Vin+
* Vin-
* --------------------------------测试方式1:采样电路1A级别
* Vin+
* Vin-
* ---------------------------
*/
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
void setup(void) {
Serial.begin(115200);
while (!Serial) {
delay(1);
}
// 初始化INA219.
// 缺省参数:32V, 2A,可以通过setCalibration函数改变
if (! ina219.begin()) {
Serial.println("没有找到INA219!");
while (1) {
delay(10);
}
}
// 改变参数的例子:
// To use a slightly lower 32V, 1A range (higher precision on amps):
//ina219.setCalibration_32V_1A();
// Or to use a lower 16V, 400mA range (higher precision on volts and amps):
//ina219.setCalibration_16V_400mA();
Serial.println("找到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);
}测量结果如下,结果有波动,与预想的有一点点出入,能接受。

我要赚赏金
