DIY小功率计,简单粗暴,来看下!
总有同时测试电压与电流或者功率的需求吧,测试功率的话用万用表的话一会传入回路测电流,一会测电压麻烦的很,对于DIY玩家要是买个功率计也太贵了不是,今天推荐一个小小的芯片可以同时搞定输出电压,负载电压,负载电流以及功率的测量。某宝也有现成的模块如下
这个小模块的原理也是很简单,就是测量传入供电回路中电阻Rshunt两端的电压来换成相应的功率参数的。内部ADC采样后,通过I2C接口可查询采样参数大小。
用到I2C的话,我们采用Arduion调试看下;用杜邦线链接正负以及i2c接口到arduino,然后下载附件的arduino ina219库,放到libraries文件夹里。将模块VIN传入到供电回路中。
#include
#include
Adafruit_INA219 ina219;
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。奈斯!
加上MCU和显示屏就是这样啦。