docs 09 INA219 电压电流监测例程
INA219 电压电流监测
General Driver for Robots 板载 INA219 模块,该模块可检测驱动板的电源电压电流,以下提供 INA219 的检测程序。
上传程序
-
在 Arduino IDE 左侧打开“库管理器”(第三个图标),搜索
INA219_WE,然后安装INA219_WE库。
-
点击 例程下载,解压并打开
INA219.ino。用 USB 线将多功能驱动板和计算机连接起来(此处插入的是多功能驱动板 USB 的 Type-C 接口),点击“工具”→“端口”,再点击新出现的 COM(这里新出现的 COM 为 COM26)。
-
在 Arduino IDE 中,点击“工具”→“开发板”→“ESP32”→“ESP32 Dev Module”。开发板以及端口都选择好后上传程序。上传程序后,再打开 Arduino IDE 的串口监视器即可监测电源电压电流。
程序解析
// <<<<<<<<<<=========INA219: 0x42===========>>>>>>>>>>
#define S_SDA 32 //定义 SDA 引脚
#define S_SCL 33 //定义 SCL 引脚
#include <INA219_WE.h> //引入 INA219_WE 库
#include <Wire.h> //引入 Wire 库,用于 I2C 通信
#define INA219_ADDRESS 0x42 //定义 INA219 器件的地址
INA219_WE ina219 = INA219_WE(INA219_ADDRESS);
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;
void InitINA219(){
if(!ina219.init()){
//初始化 INA219 模块
Serial.println("INA219 not connected!");
}
ina219.setADCMode(BIT_MODE_9);
ina219.setPGain(PG_320);
ina219.setBusRange(BRNG_16);
ina219.setShuntSizeInOhms(0.01); // used in INA219.
}
void InaDataUpdate(){
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();
}
void allDataUpdate(){
Serial.print("battery:");
Serial.println(loadVoltage_V);
Serial.print("current_mA:");
Serial.println(current_mA);
}
void setup() {
Wire.begin(S_SDA,S_SCL);
Serial.begin(115200); //初始化串口通信
while(!Serial){} //等待串口连接
InitINA219(); //初始化 INA219 模块
}
void loop() {
InaDataUpdate(); //更新 INA219 数据
allDataUpdate(); //输出数据
delay(1000);
}