先赞↓后看,养成习惯!
一、选择放大器方案
1. 背景
事情是这样的,由于有时候需要同时测两个地方电流,而我只有一个万用表,因此我想做一个精度1mA的电流表,采样范围就1mA~3A。
2. 寻找方案
由于要测的电流范围比较广,因此直接用一个采样电阻的方案不太现实,计算如下,如果最大电流3A对应ADC最大采样值3V的话,那么1mA对应的ADC值应该是1mV,一般MCU的精度是12位,3V /(2^12)= 0.7mV,很接近1mA电流对应的电压1mV,精度上不够。 因此在网上找方案,找到了B站一个叫《优雅的电流表》的开源项目,能做到1uA的采样精度,以下介绍一下这个方案为框架改出来的电路。
3. 方案框架
方案的关键在于在不同电流值时用MOS管切换不同的采样电阻,QP1~QP3是功率NMOS,走电流,QS1~QS3是采样NMOS,将不同采样电阻的Vsense采样电压切换到同一个通道的ADC引脚。
4. 放大电路设计
原放大电路方案是采用同相放大,我这里加了个电阻改为差分放大,由于负端接的是GND,其实是同一个作用,去掉R24就是同相放大电路了。 至于放大倍数这个和用的采样电阻有关,电阻越大则放大电路倍数可以越小。放大电路也不适合太大,太大会将运放的输入失调电压也放大。
5. 采样电阻设计
采样电阻分三个档位,分别用10mΩ、100mΩ、1Ω,理想的电流采集范围分别为100mA~3A,10mA~300mA,1mA~30mA,各放大100倍后电压范围均为:100mV~3V,ADC采样精度前面算过是0.7mV,精度足够了1mA了。
6. 存在的问题
① 功率NMOS需要用低导通压降MOS,以免采样时影响原电路电压。
② 运放要用低输入失调电压的运放,目前采用的是MAX4239,价格很贵,输入失调电压标称最大只有2uV,但是实际调出来输入失调电压都有几个mV,不知道是不是因为输入共模电压接近0V的缘故?
③ 由于是将I_OUT作为采样电路的GND,因此无法再采集电流线上的电压
④ 只能采集一个方向的电流,反向后无法采集。
⑤ 为了采集稳定,还需要加一级有源低通滤波。
⑥ 如果档位切换的慢,3A电流加载1Ω的采样电阻上时其功耗为9W,小型的电阻功率不够,因此要么选用大电阻,要么只能再加一级比较器,输出过压时触发中断及时切换档位。
二、更优的方案
1. 专业的电流放大器
TI的INA226是专业的电流放大器,拥有16位精度,最大差模输入电压±81.92mV,因此其输入分辨率是81.92mV*2 / (2^16) = 2.5uV。电流值直接通过I2C读取,无需进行MCU的ADC进行处理,软件上更好处理。
2. 采样电阻选择
选用20mΩ的采样电阻,则在±1mA~±3A范围内对应的差模输入电压为:±20uV~±60mV,分辨率以及差模输入范围都足够。
3. 本方案的好处
① INA226还支持采集电流BUS上的电压,采集范围0~36V,采集精度1.25mV、13位。
③ 本方案的GND直接与待采电路的GND相连,不存在电压参考不一致的问题。
④ 输入电压仅需2.7V~5.5V就可采集36V共模电压下的电流。
4. 存在的问题
① INA226最大输入失调电压可能达到正负10uV,可能对mA级的采样造成误差。如果要更高的精度,采用INA228,价格超高,大约20元/PCS。当然不想用INA228也可以对采样结果进行校准,因为输入失调电压针对一个已有的运放来说是固定的。
② INA226共模输入电压范围最小只有0V,因此如果有负电流可能造成INA226损坏。
5. 注意事项
ADC转换时间与采样噪声有关,转换时间越长噪声越小,转换时间可以通过I2C配置
三、总结
第一种方案实际打样试过,采集精度倒是可以满足要求,就是电路、软件复杂问题多,第二种电路简单试过了,采样时间1ms时,电流精度基本在±0.2mA以下,很准。
欢迎评论区讨论,别忘了点赞!!!