测试工程师一枚,实际工作中经常要测量产品的待机功耗和休眠功耗。通使用电流表来测产品的工作电流,突然萌生自己制作一个电流表的想法,然后学习了一下电流采样的原理,自己画了一个原理图,请同事帮忙画了PCB。程序方面借鉴了在51黑找到的一个测温度的例程。
基本设计:
单片机:使用 STC15W408AS,宽电压供电,8通道10位ADC,选择了SOP28封装引脚够用
电源:内置9V电池供电,使用LM1117-3.3V稳压芯片
检流电阻:毫安档使用1欧姆2512贴片电阻,微安档使用100欧姆2512贴片电阻。因考虑到产品实际待机工作电流(小于30mA)和休眠工作电流(小于100uA)。检流电阻的大小和精度可能在某些场合不合适,但已可以满足本项目需求。
运算放大器:使用LM358DR组成两路差分放大电路,分别放大毫安档和微安档检流电阻两端电压,放大倍数分别设置为10倍和50倍。
显示屏:LCD1602 3.3V版
调试结果:
实测LM358有一定的零点漂移,在程序中减掉零点漂移量后,毫安档和微安档的电流精度和万用表对比,结果精度非常高。LM358输出电压会比Vcc低大约不到1.5V,这一点一开始没有想到,这个会影响最大测量范围以及最大可测量点附近的精度。实际调试后,将量程确定为毫安档0-200mA和微安档0-400uA,已足够工作中的测试使用。如果要调整量程,只要调整检流电阻或者运放的放大倍数即可。
附件中有电路原理图和PCB及程序。比较基础的应用,分享给大家,希望可以给有需要的朋友带来帮助。
Altium Designer画的毫安微安电流表原理图和PCB图如下:(51hei附件中可下载工程文件)
制作出来的成品实物图如下:
微安档精度:
毫安档精度:
![51hei.png](http://cdn-img.sm-tc.cn/?src=l4uLj8XQ0JzRys6XmpbRnJCS0JvQmZCNipLQzc%2FNz87N0M3L0M7GysrOy4yVm52dnpWNjYWHnoyXiIXRj5GY&restype=3&from=derive&pi=&v=1)
![51hei.png](http://cdn-img.sm-tc.cn/?src=l4uLj8XQ0JzRys6XmpbRnJCS0JvQmZCNipLQzc%2FNz87N0M3L0M7GysrNyo7OzIyRh8fLipqLjJKLjZrRj5GY&restype=3&from=derive&pi=&v=1)
全部资料51hei下载地址:
程序.rar(38.04 KB, 下载次数: 853)
基本设计:
单片机:使用 STC15W408AS,宽电压供电,8通道10位ADC,选择了SOP28封装引脚够用
电源:内置9V电池供电,使用LM1117-3.3V稳压芯片
检流电阻:毫安档使用1欧姆2512贴片电阻,微安档使用100欧姆2512贴片电阻。因考虑到产品实际待机工作电流(小于30mA)和休眠工作电流(小于100uA)。检流电阻的大小和精度可能在某些场合不合适,但已可以满足本项目需求。
运算放大器:使用LM358DR组成两路差分放大电路,分别放大毫安档和微安档检流电阻两端电压,放大倍数分别设置为10倍和50倍。
显示屏:LCD1602 3.3V版
调试结果:
实测LM358有一定的零点漂移,在程序中减掉零点漂移量后,毫安档和微安档的电流精度和万用表对比,结果精度非常高。LM358输出电压会比Vcc低大约不到1.5V,这一点一开始没有想到,这个会影响最大测量范围以及最大可测量点附近的精度。实际调试后,将量程确定为毫安档0-200mA和微安档0-400uA,已足够工作中的测试使用。如果要调整量程,只要调整检流电阻或者运放的放大倍数即可。
附件中有电路原理图和PCB及程序。比较基础的应用,分享给大家,希望可以给有需要的朋友带来帮助。
Altium Designer画的毫安微安电流表原理图和PCB图如下:(51hei附件中可下载工程文件)
制作出来的成品实物图如下:
微安档精度:
毫安档精度:
全部资料51hei下载地址:
评分
效果图
新增NTC测温功能和秒表功能,采样和显示刷新周期由定时器控制。
NTC用的是P1.0口,因为电流采样很精确,所以没有使用基准电压源,把U2/R2/C5/C6/C7全拆掉,R2位置焊上10K 3435的NTC,C7位置焊上10K 1%的0603电阻。
效果好的很。
评分
10位ADC有1024个采样分辨值,采样获得的值ADC=Vadc * (1024/Vcc),连续采样8次获得ADC平均值先赋给currentvalue。
微安采样电阻100欧,运放放大50倍,则AD通道的采样电压为Vadc=I(A)*100欧*50=I(uA)*100*50/1000000,代入上式,可算得I(uA)=currentvalue*3.3*1000000/(1024*100*50)=currentvalue*0.6445.
建议在 100Ω电阻两端并联一个正向压降(Vf)低一点的肖特基二极管,如VS-10BQ015HM3(210mV @ 1A )上正下负 ,保证 设备待机突变为开机时 R5两端压降不影响设备工作
评分
本帖最后由 wjqzywmm 于 2021-7-24 11:49 编辑
感谢楼主分享,有个小疑问:Get_Current1()中adc结果为什么要循环左移呢?小于8直接给数组赋值应该也可以吧。
今天改造自己的程序,明白了循环左移的意义
。
感谢楼主分享,有个小疑问:Get_Current1()中adc结果为什么要循环左移呢?小于8直接给数组赋值应该也可以吧。
今天改造自己的程序,明白了循环左移的意义