教程九 INA219电压电流监测例程
来自Waveshare Wiki
各模块使用教程
- 序章 安装Arduino IDE
- 教程一 带编码器电机控制例程一
- 教程二 带编码器电机控制例程二
- 教程三 带编码器电机控制例程三
- 教程四 无编码器电机控制例程
- 教程五 ST3215总线舵机控制例程
- 教程六 PWM舵机控制例程
- 教程七 IMU数据读取例程
- 教程八 SD卡读取例程
- 教程九 INA219电压电流监测例程
- 教程十 OLED屏幕控制例程
- 教程十一 激光雷达和在ROS2中发布雷达话题
- General Driver for Robots 主页
INA219电压电流检测
General Driver for Robots板载INA219模块,该模块可检测驱动板的电源电压电流,以下提供INA219的检测程序。
例程
上传程序
点击左边第三个图标,在搜索栏中输入“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); }