深圳鼎盛合科技系芯海一级代理商,代理芯海高精度AD代理芯海商C芯片,SOC芯片,wifi及蓝牙模块
基于Arduino UNO的USB电量计
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~功能简介 可以用来测试手机、充电宝等USB设备的充放电电压、电流、电量,以及充放电时间,并记录显示代理芯海商~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~。
硬件原理使用的硬件 Arduino UNO开发板,IIC接口的SSD1306 OLED显示屏,按键等整机电路 如下图,USB电源输入直接用Arduino UNO开发板的USB接口OLED代理芯海商显示屏插在开发板任意4个数字接口上,自制的USB电压电流检测模块插在电源接口和模拟接口上,两个按键用两个数字接口。
USB电压电流检测模块 如下图,原理很简单,5V的电源用两个100K的电阻分压到一半送A0口检测,负极串了一个0.39欧姆的采样电阻,接到A1口检测用洞洞板做代理芯海商的模块,USB座输出5V电源 PS:别问我为什么用0.39的电阻,我是不会告诉你我只有0.39电阻的。
测试用的放电模块 二十多个510的电阻并联组成,大约200mA的放电电流。通过跳线可切换100mA和200mA两档。
~~~~~~~~~~~~~~~~代理芯海商~~~~~~~~~~~~~~~~~~~~~~~~~~~开发环境 Arduino IDE 1.8.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~工作原理 这次用的是Arduino平台,软硬件开发都很简单OLED SSD1306 OLED显示屏为代理芯海商IIC接口,Arduino UNO开发板有硬件IIC,但是为固定的接口,为了方便接口的分配,我使用了软件模拟IIC,这样OLED屏就可以使用开发板上的任意接口了。
KEY 用了两个按键接到Arduino UNO开发板的数字接口,软件中配置相应接口为上拉输入模式在主循环中读取按键状态两个代理芯海商按键实际只用了一个,用来清除测量数据ADC 用了两路A0和A1,A0用于检测输出电压,A1检测采样电阻电压,计算电流。
EEPROM 使用Arduino UNO开发板上MCU芯片MEGA328P内部的EEPROM,共1024个字节,用来存储两个参数,用了12个字节UART 向电脑代理芯海商发送测试信息LED 用Arduino UNO开发板上的一个LED来表示电量测量状态,测量时每秒闪一次。
软件流程 软件的流程比较简单,就不画流程图了:复位后完成各种初始化(串口、按键、显示屏等),读取保存的参数,然后进入主循环,主循环中检测按键和秒时间标志SecondFlag,有按键按下时清零测量数据代理芯海商,有秒时间标志SecondFlag时更新显示并保存数据。
秒时间标志SecondFlag由定时器中断产生,定时器定时100ms,每次中断读取ADC的值,到达10次(1秒)时计算ADC的平均值,计算电压、电流和电量,设置秒时间标志SecondFlag自动测量电量。
深圳鼎盛合科技系芯海一级代理商,代理芯海代理芯海商高精度ADC芯片,SOC芯片,wifi及蓝牙模块
当检测到的电流特别小时(小于10mA),认为没有进行电量测量,此时不计时,只有电量大于1mA时才开始计时并计算电量数据保存 每秒数据更新后都会保存电量和时间两个参数,防止测量中断时再复位后可以读出参数继续测量。
比如在测试充电宝放电电量时,当充电宝电放完代理芯海商之后系统就会断电,这样的话重新上电时就能看到充电宝放电的电量和放电时间~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~测试
1、开机 上电开机,OLED显示屏会显示开机欢迎画面,然后显示电压、电流、电量和时间 如果开发板的电源输入口接电脑的话,同时会从串口向电脑输代理芯海商出开机信息然后每秒显示一次检测到的电压、电流、电量和时间
2、电压检测 如下图所示,检测到的电压为4.98V,和用万用表测得值4.99V相比还算可以,误差不算太大。
3、电流检测 测得0.187A时万用表读数202.4mA,0.083A时万用表读数108.8mA,小电流时误差比较大,但还可以接受。。。 代理芯海商我的采样电阻是普通电阻,换成高精度低温漂的电阻会更精确。
4、断电数据保存 在测试中如果MCU复位,或者电路断开,重新上电时会读取保存的已测试时间和电量的数据。 如下图中显示Hello表示MCU复位,Read Data表示读取到了保存的参数。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~代理芯海商~~~~~~~~~~~~~演示视频 动图比较大,请耐心等待图片加载。。。
1、开机 开机先显示开机欢迎画面,然后显示电压、电流、电量和时间。
2、开始测量 没有插入USB接口时,显示电流为0,时间不走。 当插入USB充电宝时,检测到了电流,开始计时。
3、按键 按键前显示已充电两分钟,电量7mAh,按键后代理芯海商电量和时间都清零,重新开始计量。
4、断电 当断电重新上电时,会读取已保存的数据,继续计算电量,而不是从零开始。
深圳鼎盛合科技系芯海一级代理商,代理芯海高精度ADC芯片,SOC芯片,wifi及蓝牙模块