教程九 INA219电压电流监测例程

来自Waveshare Wiki
跳转至: 导航搜索

各模块使用教程

INA219电压电流检测

General Driver for Robots板载INA219模块,该模块可检测驱动板的电源电压电流,以下提供INA219的检测程序。

例程

上传程序

点击左边第三个图标,在搜索栏中输入“INA219_WE”,找到依赖库INA219_WE并点击安装。
七1.png
下载压缩包后打开INA219.ino,用USB线将多功能驱动板和计算机连接起来(此处插入的是多功能驱动板USB的Type-C接口),点击“工具”→“端口”,再点击新出现的COM(我这里新出现的COM为COM26)。
七2.png
在Arduino IDE中,点击“工具”→“开发板”→“ESP32”→“ESP32 Dev Module”。开发板以及端口都选择好后上传程序。上传程序后,再打开Arduino IDE的串口监视器即可监测电源电压电流。
七3.png七4.png

程序解析

// <<<<<<<<<<=========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);
}

资料