解决Mind+V1.7.1 R2.0 中I2C数字功率计模块电流值严重偏差问题
本帖最后由 mutu 于 2021-10-15 22:36 编辑我们在研究电学实验时,用到了I2C数字功率计(https://www.dfrobot.com.cn/goods-1890.html),根据官网产品维库资料:I2C数字功率计(SEN0291)是一款可测量26V 8A以内各类电子模块、用电设备的电压、电流和功率,最大相对误差不超过±0.2%的高分辨、高精度、大量程测量模块(使用前需进行一次简单的手动校准)。可用于太阳能系统、电池库仑计、电机、主控板或电子模块的功耗测量、电池续航评估与实时电源参数在线监控。模块采用TI INA219零温漂电流/功率监控芯片和2W大功率低温漂10mΩ合金采样电阻,电压和电流分辨率分别可达4mV与1mA,在满量程测量条件下,电压与电流的最大测量相对误差不超过±0.2%,并提供4个可通过拨码开关配置的I2C地址。模块可对双向高侧电流(流经电源或电池正极的电流)进行准确测量,这在太阳能或库仑计应用,电池既需要充电,也需要放电的场合尤为有用,用户可通过电流的正负读数了解电池的充放电状态,也可以了解电池的充放电的实时电压、电流与功率。在电机应用场景,可通过实时监控电机电流是否由于堵转或负载过大导致电流过大,从而及时采取保护措施。此外,也可以使用该模块测量各类电子模块或整个项目的实时功耗,从而评估电池的续航时间。实物如图:
图1
图2
接口说明:
标号 名称 功能描述
1 VCC电源正极(3.3~5.5V)
2 GND 电源负极
3 SCLI2C时钟线
4 SDAI2C数据线
5 ADDR I2C地址选择拨码开关
6 3PTERMINAL电压与电流测量接线柱3P
我们在实验时的电路连接如下图:
图3
图4
把用ArduinoIDE编写的样例代码上传DFRuino Uno板测量的电流、电压、功率数据都没有问题,如下图。
图5
但应用mind+自带功率计程序积木编程后就出现了问题,不但串口显示的电流数据差的离谱(约4倍),而且只适用于Arduino开发板。实验截图如下:
图6
图7
分析原因应该是mind+自带功率计程序积木块的问题,找到库文件发现与Arduino IDE示例用的DFRobot_INA219-master库有所区别。故等待mind+升级,可是到V1.7.1 R2.0后,问题依然没有解决。故决定按用户库开发教程自制积木,完善I2C数字功率计的用户库。通过学习教程和反复实践,终于大功告成。不但电流误差达到了要求,而且在Arduino Uno、Microbit、掌控板上都能正常使用了。见下图:
1.Arduino Uno开发板实验截图
图8
图9
2.Micro Bit开发板实验截图
图10
图11
3.掌控板 实验截图
图12
图13
由于小型电机的转动不稳定,实验数据波动是正常的,如果负载为纯电阻电路电流的波动和误差就很小了,如下图所示:
图14
图15
现实中的实验误差是不可避免的,但力求越小越好。
I2C数字功率计用户库加载地址:
https://gitee.com/mu_tu/ext-ina219-pui.git
上传模式下选择主控板,选择用户库,将上述地址复制粘贴到用户库搜索框中,回车即可找到如下图标,点击它即可使用了。
图16
图17
图18
I2C数字功率计模块,可以实时反馈电压、电流、功率和采样电阻的分压,为电学测量带来了方便,应用它我们做了两个电学实验,都很成功,验证了本模块和开发的用户库可用,大家不妨一试。
厉害,收到问题,将在后面版本修复内置库这个问题{:5_190:} RC2.0应该已经修复了这个问题,可能是校准这个积木使用错误了,例如当实际电流是100时,然后使用此block校准为1000,读取出来的数据就是错误的。
谢谢指教 本帖最后由 mutu 于 2021-10-15 21:33 编辑
我们用试验数据说话:按版主设置实验,140mA校对,功率计测量值1604mA,相差11.45倍,相对误差1045%.实验见图(删掉了两个错图,留的图点击放大可见选择的是电流)。 mutu 发表于 2021-10-13 13:36
我们用试验数据说话:按版主设置实验,140mA校对,功率计测量值1761mA,相差12.5倍,相对误差1150%.实验见 ...
程序里面读取选的是电压
页:
[1]