联盛德W806+INA226 = 功率计
这里目录
- 一、 项目概述
- 二、硬件设计
- 1、硬件方案确定
- 三、软件设计
- 1、程序设计
- 2、程序流程
- 四、结束语
本文使用环境:
电脑:windows10
主控:W806(240MHZ)
外设采集:INA226(IIC)
外设显示:0.91 OLED(IIC)
编译环境:平头哥的CDK
原理图PCB:立创EDA,(当然完全开源,链接就在下面,可以自己拿去改)
立创EDA中的硬件设计
程序代码
github地址
一、 项目概述
这个是我自己抽空做的一个小设计,感兴趣的可以试一试,就当练手,可惜的是当时下单的时候搞错了,没有下单基佬紫,原谅色有点丑,只能将就。
上图:
就是一个功率计、也叫库仑计、还叫什么什么计,那不重要,作用都是用来采集外部电压、电流、功耗的。本计以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。犹豫没有专业的设备,所以无法给出具体的值,我有一个买的电流计,用起来两个数值差不多的,所以感兴趣只能自己去慢慢调教。
最后再上一张图。
联盛德W806+INA226 = 功率计相关推荐
- 【联盛德W806上手笔记】七、I2C
目录 WM_SDK_W806_v0.6.0的库函数 函数 参数 宏 应用示例 初始化 使用 测试 I2C 控制器 功能概述 主要特性 功能描述 传输速率选择 中断及启动停止可控 快速输出及检测信号 寄 ...
- 【联盛德W806上手笔记】一、开发环境和烧录程序
目录 简介 芯片外观 MCU 特性 安全特性 低功耗模式 芯片结构 管脚定义 极限参数 开发环境 SDK的获取 从官网获取 从Q群获取 iosetting大佬 维护的wm-sdk-w806 打开工程 ...
- 联盛德W806最小系统开发板第一次上手准备工作
W806 芯片 是一款安全 IoT MCU 芯片.芯片集成 32 位 CPU 处理器,内置 UART.GPIO.SPI.SDIO.I2C.I2S.PSRAM.7816.ADC.LCD.TouchSen ...
- 【联盛德W806上手笔记】五、TIM定时器
目录 定时器 库函数 函数 参数 宏 Demo中的测试程序 main.c wm_hal_msp.c wm_it.c 实验现象 Windows 10 20H2 HLK-W806-V1.0-KIT WM_ ...
- 【联盛德W806上手笔记】三、MCU系统与时钟结构
目录 总线结构 AHB-1 总线 AHB-2 总线 时钟与复位 主要特性 时钟结构 功能描述 时钟门控 时钟自适应关断 功能复位 时钟分频 寄存器描述 寄存器列表 软件时钟门控使能寄存器 软件时钟掩码 ...
- 【联盛德W806上手笔记】二、GPIO
目录 GPIO 控制器 库函数 函数 参数 宏 极限翻转速度 寄存器操作 库函数操作 测试 main.c wm_it.c Windows 10 20H2 HLK-W806-V1.0-KIT WM_SD ...
- 【联盛德W806上手笔记】八、SPI及其DMA
目录 高速 SPI 设备控制器 库函数 函数 参数 宏 应用示例 初始化 引脚复用 中断相关 使用 注意事项 DataAlignment Direction 测试 main.c wm_hal_msp. ...
- 联盛德W806入门教程-CDK安装教程及代码下烧录
笔者使用的系统板如下图所示: 首先安装代码编译软件CDK: 硬件:⚫ W805/W806 开发板 ⚫ USB 转串口线 软件: Windows 端编译工具:CDK 安装包 链接:[https://pa ...
- 联盛德W806,W801刷固件步骤
本文针对无基础玩家参考,如有不对的欢迎指正 1)需要准备物料 1.开发板801或806 2.CH340驱动 (USB转串口驱动) 3.烧入工具(官方首页-芯片-W800-开发工具- 4.PC端固件烧录 ...
- 联盛德W806-KIT开发板试用评测系列之二:ADC 功能使用与测试
联盛德W806-KIT开发板试用评测系列 之二:ADC 功能使用与测试 作者:大信<QQ8125036> 今天着手对W806开发板ADC功能做测试,都知道ADC在物联网应用场景中常需要用到 ...
最新文章
- 通信 / 各种协议默认端口汇总
- java.net.SocketException: Permission denied解决
- warning C4828问题的处理
- c++ so 反射_c++如何实现反射功能?
- 【Java】浅谈JavaDoc文档注释
- 推荐10个优秀GitHub仓库
- 解析docker中的环境变量使用和常见问题解决
- cPanel附加域名出现Error from park wrapper: 使用带以下 IP 的命名服务器:
- 【渝粤教育】国家开放大学2018年春季 0579-21T电路及磁路(2)(一) 参考试题
- win7纯净版64位系统下载
- 支付宝授权登陆php,php实现支付宝授权登录
- 基于 Vue3 的颜色选择器
- 安装wget 、 wget命令
- atv320说明书_ATV320U30N4B 施耐德 ATV320通用变频器 说明书
- windows10虚拟桌面快捷键
- 温度补偿计算公式_基于温度压力补偿计算的燃气表计量方法与流程
- java sencha_Sencha学习入门
- 4G工业路由器DTU的扩展功能
- 完全二叉树 满二叉树
- Angular7入门辅助教程(一)——Angular模块