历史上的今天
今天是:2025年01月21日(星期二)
2021年01月21日 | 不拘一格小电流测量
2021-01-21 来源:elecfans
项目背景
有个项目需要测试某个芯片的工作电流,该芯片工作电流为60uA,待机不超过10uA,如果芯片有问题则电流会超过几百uA。
客户的要求就是能用简单的方法对这种芯片进行电流测试,将有问题的芯片挑出来。
微安表或万用表
要说最简单的测试方法,用指针式微安表或万用表直接测量肯定最简单,但有一个问题,需要测试的芯片数量非常之多,让测试员去看表的显示值不太适合现实应用。
你想一想,如果是让你一天到完重复看表的显示值,告诉你正常的数字应该是多少,你能保证出错的比例维持在很低数值吗?经验告诉我们,对于这种重复性的简单工作,测试员很容易进入疲劳状态,别说一整天,就是一小时,就容易出现明明看着是50,自己却当成是100的结果。最不容易出错的就是用红绿灯加声音告诉测试员测试结果是否合格,于是客户让我们给他开发一套这样的测试工具。
单片机ADC
其它要求的实现不必细表,到电流测量这个地方犯了糊涂,要测电流肯定要一个采样电阻将电流转换成电压信号,再用ADC测量电压即可。可不到100uA这样的电流实在太小,一开始我们想采样电阻也不能太大,就算是100欧,60uA的电流对应电压也才6mV,如果是5V供电的10位ADC就只有一个量化单位的大小,考虑到地线等因素,显然难以测量。
如果用1000欧的采样电阻,电压可以到60mV,不过给人第一感觉是用1000欧的采样电阻也太大了吧?这样就没细想到底能不能用1000欧的采样电阻,而是想当然定为100欧,再在后面用放大器将其上面的电压放大后进行测量,找了个运算放大器进行验证,确实能放大到很理想的幅度,但需要对放大器的输出偏置电压做一个校正,要让单片机记住输入电压为零的情况下放大器输出的电压大小,想着这小电流测量还真麻烦。
在做样机的时候,一负责硬件的同事问怎么不直接用1000欧的采样电阻+单片机的ADC口来测电流呢?这个时候我们才意识到之前的想法太过于想当然。通过计算可以得出1000欧的电阻正常工作电流状态下得到的电压是60mV,实际上这个电压对于一个5V的系统来说一般来说是可以接受的,只是之前我们想当然,认为在芯片电源脚上串联一个1000欧的电阻太大,当时我们只看到1000欧电阻的阻值大,疏忽了流过的电流小这一特性,实际上我们只要采样电阻上的电压在芯片可接受的电源压差范围之内即可。
如果这样能行那就简单多了,赶紧更改电路进行测试,实验证明这种想法是正确的。5V电压10位ADC的单片机,用1500欧电阻对芯片工作电流进行采样,只是简单的8次平均采样,就能得到非常稳定的测量结果,60uA对应的电压为90mV,ADC转换的理论结果应该是18.44,我们实测结果为20,考虑到器件误差等因素两者基本一致。
原来小电流测试并不一定要太复杂的方法,不要被自己的经验想当然而蒙蔽了双眼,实际上就是这么简单就实现了。
史海拾趣
|
用L3M ARM AD输入电压范围为0-3.3V,而ARM片内基准电压为3V,如何解决? 用L3M系列ARM的AD输入电压范围为0-3.3V,而ARM的片内基准电压为3V,有什么好方法?… 查看全部问答> |
|
近来在Inltel Atom平台N270上想搭配640x480 单6bit LVDS Panel,来实现CRT+LVDS双显功能,但发现Intel发布IGMA VGA驱动安装后,Panel不会显示,因此现想借助Intel IEGD9.1.1开发环境定制IEGD驱动,因此现想请各位好友告知哪里有IEGD9.1.1安装包,来 ...… 查看全部问答> |
|
我用的是2440,之前通过uart口与手机模块进行通信,从而可以上网和打电话,现在想将原来的手机模块换成一款只有usb接口的,但是该手机模块可以作为串口设备被识别,我想在ce上实现上网和打电话,不知道该怎么做呢?有没有高手指点下,感觉没有方向 ...… 查看全部问答> |
|
我想实现一个功能,就是用一个单片机(如:AVR的),一个flash闪存芯片(容量大的,类似U盘上的那种),我想让单片机通过I/O接口读取放在flash芯片上的命令数据(一个2进制的文件?),然后经过单片机的CPU处理,执行命令,完成指定动作。目的:( ...… 查看全部问答> |
|
原来用的小屏一切正常,触摸响应很快,现在使用了大屏,触摸响应很慢,采样次数下降了很多,这是怎么回事?? ps:大屏的触摸屏是好的,在linux下测试正常。wince下触摸优先级119… 查看全部问答> |
|
见到一个帖子中关于写管脚“~0”用1代替说不行,有见到一个帖子说“~0”用1代替说行,那究竟行还是不行,这里给出完满的答案。 ============================================================ 看看函数原型 void GPIOPinWrite(unsigned long u ...… 查看全部问答> |




