先上成品图。这次只是验证方案的可行性,所以只是简单的搭了一个电路,也比较丑,大家凑合看吧
USB测试仪我相信很多坛友都早已购买,它的确是一个非常实用的工具。我打算自己做一个,并且增加一些使用的功能,比如,增加一个模拟QC3.0协议的功能,这样搭配支持QC3.0的充电头或者充电宝就可以变成一个电压可调的电源。做这样一个东西的核心是用于检测电压和电流的电路。因为市面上已经有了具有此类功能的芯片,就没必要再用运放去放大,用ADC去测量了,一个芯片搞定。芯片我找到了两款集成度比较高的,分别是INA219和INA226。这两款的特点都是数字输出,不需要计算很复杂的参数。这两款芯片的价格都比较便宜,考虑到INA226增加的一些功能比较鸡肋,这次暂时先用INA219,如果觉得效果不好,可以再换成INA226。电路图比较简单了,单片机、芯片、取样电阻、USB接口再加一个OLED屏。
OLED屏是SPI接口的,但是引脚的标注倒像是I2C。这里我比较节省IO口,比如OLED屏的复位引脚我直接连接到了单片机的复位引脚NRST,又因为只有一个SPI设备,所以片选引脚CS就直接接地了。INA219我买到的是SOIC8封装的。这个芯片有一点比较奇怪,那就是两种封装的引脚定义竟然是镜像的,如果看错的话后果还是很严重的,右边才是SOIC8封装的引脚定义。
A0和A1是地址选择引脚,可能考虑到这个芯片可能会同时使用多个,所以这个芯片可以利用这两个引脚得到16个不同的I2C地址 为了省事,我选择了直接接到GND,也就是第一个地址0x40。但是实际上这个可能并不是最好的选择。在焊电路时,我因为疏忽把GND连接到了VCC线上,这时,GND和VCC是短路的,芯片应该不通电。但是实际上,由于A0和A1接到了GND,所以A0和A1与GND之间存在负的电势差,通电之后芯片直接冒烟了。这样看来,可能接在VCC更保险 一点。INA219的取样电阻我用了两个0.1Ω电阻并联,电阻一共是50mΩ。其实这个阻值对于测电流来说已经算比较大的了,会消耗不少功率,最终制作的话会进一步降低阻值。当然这样做的代价就是牺牲精度了。INA219的编程我主要参考了这篇https://blog.csdn.net/jgagdwp/article/details/79470158写的还是比较详细的,如何计算那些数也讲得比较明白单片机我选择了STM32F030F4P6,这时一款小封装的单片机,只有20个引脚,但是已经完全够用了。而且这个型号很便宜,也容易买到,比TI同样封装的MSP430系列划算很多。至于最小系统板,我买的这个是个坑,这个板子设计的太随意了,建议大家不要购买,有的大神说这个芯片直接用转接板就行,不需要最小系统板。因为这两排插针之间的距离不是2.54mm的整数倍,所以如果用排母直接插在洞洞板上会很别扭,干脆飞线吧。插杜邦线的话容易接触不良,还是建议飞线,焊在背面,这样不会影响插针的使用,拆下来也很方便。如果插针上粘上了焊锡,那就不好用了。这个板子单独引出的UART口用的是I2C的引脚,其实这个封装推荐使用的UART是PA2和PA3。另外这个板子的USB供电口质量也不是很好,用了几次就出现了接触不良的问题。讲一下引脚的定义一共就用了这几个GPIO,包括SWD调试接口,I2C和SPI。因为OLED不需要读取数据,所以可以把PA6定义为普通GPIO,用于连接OLED的D/C引脚。背面没啥东西
USB用的带转接板的模块,MicroUSB口输入,A口接负载。因为单片机的板子用的是AMS1117的LDO,这颗芯片不能承受太高的输入电压,所以我没有连接D+和D-,不让快充触发。如果后面自己制作的话,LDO会选用HT7533或者ME6203,这两种都可以接受比较高的输入电压,可以在测量快充的场合使用。接下来的打算:
画个板子,减小线路的长度减小采样电阻的阻值如果INA219精度不够,后面可能还会试试INA226的效果 [ 此帖被小茅在2018-07-28 08:52重新编辑 ]