总有同时测试电压与电流或者功率的需求吧,测试功率的话用万用表的话一会传入回路测电流,一会测电压麻烦的很,对于DIY玩家要是买个功率计也太贵了不是,今天推荐一个小小的芯片可以同时搞定输出电压,负载电压,负载电流以及功率的测量。某宝也有现成的模块如下

forum.jpg

INA219功率计模块

这个小模块的原理也是很简单,就是测量传入供电回路中电阻Rshunt两端的电压来换成相应的功率参数的。内部ADC采样后,通过I2C接口可查询采样参数大小。

forum.jpg

INA219内部功能框图

用到I2C的话,我们采用Arduion调试看下;用杜邦线链接正负以及i2c接口到arduino,然后下载附件的arduino ina219库,放到libraries文件夹里。将模块VIN传入到供电回路中。

#include
#includeAdafruit_INA219ina219;

void setup(void)
{Serial.begin(115200);while(!Serial) {
      delay(1);
  }

  uint32_t currentFrequency;Serial.println("Hello!");// 初始化会默认使用最大测量范围(32V, 2A),你也可以使用setCalibration指令更改,以获取更高的精度ina219.begin();// 用 32V, 1A 范围来测量会获取更高的电流测量精度,如果想使用这个选项就删除下面那行的注释//ina219.setCalibration_32V_1A();// 用16V, 400mA 范围来测量会获取更高的电流和电压测量精度,如果想使用这个选项就删除下面那行的注释//ina219.setCalibration_16V_400mA();Serial.println("Measuring voltage and current with INA219 ...");//打印‘正在使用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);
}

看下打印的日志,可以看到输出电压和负载电压均4.93V,电流13mA,功率68mW。奈斯!

forum.jpg



加上MCU和显示屏就是这样啦。

forum.jpg

功率计