联盛德W806和INA226等于功率计

发布于 2022-04-15 17:27:25

@TOC

本文使用环境
电脑:windows10
主控:W806(240MHZ)
外设采集:INA226(IIC)
外设显示:0.91 OLED(IIC)
编译环境:平头哥的CDK
原理图PCB:立创EDA,(当然完全开源,链接就在下面,可以自己拿去改)

立创EDA中的硬件设计

程序代码

github地址

CSDN文章

一、 项目概述

    这个是我自己抽空做的一个小设计,感兴趣的可以试一试,就当练手,可惜的是当时下单的时候搞错了,没有下单基佬紫,原谅色有点丑,只能将就。
上图:
在这里插入图片描述
    就是一个功率计、也叫库仑计、还叫什么什么计,那不重要,作用都是用来采集外部电压、电流、功耗的。本计以W806单片机作为主控,INA226作为外部电压电流采集IC来做的设计。这里不讨论成本什么的,只考虑能不能行,感不感兴趣。当时这款开发板给我的最深刻的印象就是240Mhz,还有价格8.9,芯片是5.9RMB。所以毫不犹豫买回来试一试,毕竟任何一个电子爱好者都是搜集开发板,然后吃灰。

USB3.0接口。
输入电压:4.5-36。
测量电流:0-5A。PS -- 我并没有实际测过,只做过2A一小时的实际测试,5A没那条件,干不了。

主控:W806
显示:0.91OLED(IIC)
电压电流:INA226(IIC)
这两个外设其实可以使用一路IIC的,但我是分开设计的。

二、硬件设计

    关于硬件设计链接我放在了开头,有需要的可以直接拿过去修改,当然我画的板子还是存在各种的小问题,有问题的可以指出来,大家一起修改。

1、硬件方案确定

    在设计之前肯定是首先选择方案,详情见下图,当然这里的方案选择前面也说了,是我的一厢情愿,并未实际考虑成本是否最优等。完全是我自己的兴趣爱好,仅此而已,所以不再赘述。
在这里插入图片描述

说明一下:
1、下载问题
    板子设计有CH340N,所以不需要外接USB转TTL了,同时复位键我也直接接到了单片机上,应该可以实现不用按复位键就可以实现程序的下载和执行 当然这是我后面加的功能,并没有在我第一版上实现,这个功能并未实际验证,但是问题不大,因为我看到群里有老哥这样做了,正常使用,所以可以参考这个设计
2、实际焊接中的问题:
    焊接的时候,遇到过电源不接负载输出电压不正常的情况,接上负载一切正常,所以如果有参考设计的请注意一下这个问题。

三、软件设计

1、程序设计

考虑到实际的需求,软件设计分为如下几个方面:
在这里插入图片描述

1、数据保存
    这里主要用于保存充电的时间,当有功耗产生时,才进行计时,断开后数据会保存在flash中,直到手动清零,否则不会自动清理。
2、定时器计时
    每一秒钟中断一次,使用一个变量进行计时,没一秒钟加一次。我实际测过,24小时之内是没有问题的,时间不会有肉眼可见的偏差,当然因为我只做了24小时,所以并不是说最长只有24小时。
3、电压电流采集
    程序我都是参考网上的教程,所以不做过多的说明,在最后我也会把源程序附上,可以直接下载。只说我遇到的问题。INA226初始化问题:
在这里插入图片描述
        前两个函数没问题,主要是第三个函数的CAL值,存在争议。
在这里插入图片描述

    CAL是在.h文件定义的,我参考的其他设计,所以在INA226的采样电阻第一版使用R100即0.1欧姆,实际应用的时候发现最多只能测量600多mA的电流,最后采用四个0.1并联的方式,将电阻降到了0.0245才正常使用。当然0.025的采样电阻我也最多只测试过2A的电流,因为手里最多就只有2A的负载,并未低其他数值进行测试,有条件的可以试一试。讲一讲这个值是怎么算的。
首先查看ina226的datasheet:(手册15页)
在这里插入图片描述
    CAL就是写入寄存器的值,RSHUNT是采样电阻的值这里为:0.025。进一步也就是说需要算出Current_LSB的值。这就涉及到其他的公式了,我在这里也是一头雾水,现在大概看懂了一些。有兴趣的可以看一看原版英文手册。

    INA226_VAL_LSB,是电压寄存器的LSB,也就是说一个bit代表多少电压的意思,采用默认值2.5uV,寄存器的最大值位0X7FFF = 32767,所以最大的电压为 = 2.5/1000X32767 = 81.9175mV。采样电阻为0.025,最大电流为 = 81.9175/0.025 = 3276.7mA。这就是Maximum Expected Current。
Current_LSB = Maximum Expected Current / 32767 = 0.1。
CAL = 0.00512 X 1000 / (0.025 X 0.1) = 2048
注意:以上公式中有的是/1000有的是*1000这里是单位的换算。

4、OLED显示
    就是单纯的使用OLED显示。看程序就能看懂。
5、外部中断按键
    主要是预留的按键,其中一个按键并未使用到,另外一个按键用于时间的清零。

2、程序流程

    比较简单直接看图。
在这里插入图片描述
    程序不再展开了,可以直接参考源代码。

四、结束语

    本工程只能说参考,设计中还是有很多的不合理的,大家可以在下面留言评论,后续有时间再改版。

    有人可能会问精度,emmm。犹豫没有专业的设备,所以无法给出具体的值,我有一个买的电流计,用起来两个数值差不多的,所以感兴趣只能自己去慢慢调教。

最后再上一张图。
在这里插入图片描述

2 条评论

发布
问题