
#第七届立创电赛#USB功率计与QC诱骗可调电源
简介
使用N32G430实现了usb功率监测。MAX:20V2A。可USB2.0直通。附加QC3.0诱骗模拟诱骗,DC限流保护输出。
简介:使用N32G430实现了usb功率监测。MAX:20V2A。可USB2.0直通。附加QC3.0诱骗模拟诱骗,DC限流保护输出。开源协议
:CC-BY-NC-SA 3.0
描述
1、项目功能介绍
参加立创训练营的项目。
最大输入20V3A。实现了USB功率、纹波检测。支持USB2.0直通,或者QC3.0诱骗。DC降压限流输出。
电源部分为dcdc转3.3V为系统供电.使用了MT2492,虽然标称耐压12V,但实测19V下仍能正常输出3.3V 。
电压检测为内部12位ADC,电流检测使用INA199对10毫欧电阻差模50倍放大后内部12bitADC。
2、项目属性
首次公开,原创
参考了这个的项目。
谢鸣使用了这个图形库的画线函数。
单片机图形库开源分享 32 51 oled_哔哩哔哩_bilibili
3、硬件部分
硬件结构脉络图
A.首先是单片的最小系统
这个比较常规,仿照参考资料就行。值得说一下的是,为了节约成本,未使用参考电源ic,而是直接加滤波后接入ADC参考输入。然后BOOT0启动分区选择和rst仅用0603电阻留着焊点,外接按钮,当程序调试完后可以拆调,提高外观。
B.模块电源部分
使用了MT2492虽然标定是16VMAX,但是实测19V下仍然能正常输出3.3V。原理图的15uH是根据手册计算出来的,但是焊接完并不能正常工作。换了一个10uH功率电感后工作正常。
20V则掉压至0.5V左右。可见对mcu保护非常好。充分宽的耐压,完整适配QC3.0的12V。
C.烧录与交互
烧录方面引出了uart串口烧录和SWD,这里推荐用SWD在keil里一键烧录。Uart需要下载国民技术的下载软件。此外uart无法debug 。
人机交互方面,用了4个按钮。这里有更好的方案,参考国民技术的开发板,可以按钮一端接IO一端接地就行。然后为了滤波可以按钮并联一个100nF的电容。
显示用的是0.91的spi的屏。不得不说128x32对比128x64体验真的差了挺多。绘制区小一半了,很多显示都比较凑合。驱动用的购买处的示例工程软spi,然后自己重写了中间的字符绘制等东西。再次谢鸣大佬的图形库,我复制适配了里面的一个画线函数。屏幕硬件实际是接在mcu硬件spi脚的,日后有空再搞。
D.核心采样功能
通过采集输入电压和总线上的电流便可计算功率。
电压是通过电阻分压然后接入ADC引脚。
电流则是通过INA199对10毫欧的采样电阻进行的50倍差模电压放大后进入ADC脚。然后一个设计的小点,MCU系统接入是在低端采样电阻之后,从而避免单片机系统对负载功率采样的影响。
群里挺多人问这个ADC系数。这里粗略的解释一下。
一般我们可能更多会看见左边的电路图模型,而在绘制电路时,我们更多是右边那种形式。
利用万用表的电压档,我们可以测得任意『两点的电压差』,注意是两点的电压差。比如上图,我们会说Uab电压是6.66V,Ubc=3.333V。
在Uxx中,我们把后者电压作为参考,如Uab,其实是Ua-Ub。
那Ua是什么?
其实是对0V而言,a点的电压
而0V定在哪里?一般是锚定为电源的负极。(计做题算时则可以随意设定某点电压为0v然后以此锚点,去计算)。
于是,在这样的电子学体系下,你会发现右图的表达方式是如此自然。
假如你暂时还未能理解,你可以认为,我们始终把万用表的黑笔始终压在电池负极。
而test点的电压可以通过分压计算
Utest= VCC * 5/(10+5)
,如果VCC=10那么Utest=3.33V。(这里是计算思路是串联电阻,电流一定,然后凭这点利用欧姆定律去推导计算)
反过来,如果已知Utest=1V。那么
VCC=Utest ÷[ 5/(10+5) ] =3v
单片机的ADC就是“万用表的黑笔始终压在电池负极”,ADC脚则是红表笔。
然后正式解释那个计算系数。
以我的为例。
如图,ADC实际采样值为679.
而这ADC值意味着什么?
于是这个ADC=679的来源是
ADC=Utest/3.3 *4095= 679
那么我们逆推
Utest=ADC ÷4096*3.3=0.547v
然后结合前面的电阻分压
Vcc= Utest÷[10/(10+82)]=5.03v
再深入一些:
Vcc= Utest÷[10/(10+82)]
Vcc= (ADC ÷4096*3.3) ÷[10/(10+82)]
然后我们把里面的常数化简到一起:
Vcc=ADC* (7.4121X10^-3); Vcc=ADC*0.0074121 (伏特);
如果先前接触过编程,就知道浮点计算是有误差的,于是我们把系数扩大1000倍,使得输出结果单位由伏特变为毫伏。
Vcc=ADC*7.4121;可见与例子中的十分接近了。但为什么还是不一样呢?那是因为MCU的ADC采样时有偏差的。想理解的看[数据手册]的74页(不是用户手册,有2个pdf,重点不同)
。以及善用搜索引擎。
然后是电流获取。这里利用了INA199的50倍差模电压放大。「差模」可以理解为万用表表笔是压在电阻两端测得的电压值。
那么知道电阻两端的电压值,由I=U/R,即可计算得到电流,这里不再赘述了。
为了修正偏差,我这里是使用了可调电源进系数矫正。可见是与理论计算相当接近的。(想实现这个,自行搜索excel拟合曲线)
D.QC诱骗与通道切换
左边是一颗USB2.0的模拟开关ic。利用usb3.0的公头,保证系统先进上电进行工作,默认导通USB2.0的输入输出。原理图可见我的正负与ic的对不上,这里是方便实体pcb中的走线。数据手册中写的是轨到轨。所以我才敢这样做。至于QC3.0充电协议,这个部分自行搜索。
4、软件部分
程序结构主体大体是这样:
之后应该会在B站详细讲解
演示视频:
【立创训练营USB功率计-哔哩哔哩】 https://b23.tv/eCdln06
END.作品与立创电赛logo展示
设计图

BOM


评论