本文使用环境: 电脑:windows10 主控:W806(240MHZ) 外设采集:INA226(IIC) 外设显示:0.91 OLED(IIC) 编译环境:平头哥的CDK 原理图PCB:立创EDA,(当然完全开源,链接就在下面,可以自己拿去改)
立创EDA中的硬件设计: https://oshwhub.com/xiansenzhao/w800-gong-shuai-ji_copy
一、 项目概述
????????这个是我自己抽空做的一个小设计,感兴趣的可以试一试,就当练手,可惜的是当时下单的时候搞错了,没有下单基佬紫,原谅色有点丑,只能将就。 上图: ????????就是一个功率计、也叫库仑计、还叫什么什么计,那不重要,作用都是用来采集外部电压、电流、功耗的。本计以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/100032767 = 81.9175mV。采样电阻为0.025,最大电流为 = 81.9175/0.0025 = 3276.7mA。这就是Maximum Expected Current。 Current_LSB = Maximum Expected Current / 32767 = 0.1。 CAL = 0.005121000 / 0.025 = 2048 注意:以上公式中有的是/1000有的是*1000这里是单位的换算。
4、OLED显示 ????????就是单纯的使用OLED显示。看程序就能看懂。 5、外部中断按键 ????????主要是预留的按键,其中一个按键并未使用到,另外一个按键用于时间的清零。
2、程序流程
????????比较简单直接看图。 ????????程序不再展开了,可以直接参考源代码。
四、结束语
????????本工程只能说参考,设计中还是有很多的不合理的,大家可以在下面留言评论,后续有时间再改版。
????????有人可能会问精度,emmm。犹豫没有专业的设备,所以无法给出具体的值,我有一个买的电流计,用起来两个数值差不多的,所以感兴趣只能自己去慢慢调教。
最后再上一张图。
|