ADC电路
part 1
ADC采样点为$R_2$处的分压: + 公式1:$V_{adc}=V_{3.3V} * {R_2 \over {R_1 + R_2}}$ + 公式2:$V_{adc}=V_{DDA} * {temp \over ADC_BIT}$ + $V_{DDA}$: ADC采样电路参考电压,主控上的 + ADC_BIT:ADC采样精度,12bit采样精度时值为4096,$2^{12} = 4096$ + temp:采样值
电压采样
根据公式1和公式2可得:$V_{B+} = {{V_{adc} * (R_{200k} + R_{5.1k}) } \over {R_{5.1k}}} = {{V_{DDA} * temp * (R_{200k} + R_{5.1k}) } \over {R_{5.1k} * ADC_BIT}}$
NTC采样
上拉电阻$R_{up}$,NTC电阻$R_{NTC}$,上拉电阻供电电压为$V_{VCC}$,MCU上的ADC采样参考电压$V_{DDA}$,一般$V_{VCC}$等于$V_{DDA}$ 根据公式1:$R_{NTC} = {{V_{adc} * R_{up}} \over {V_{VCC} - V_{adc}}}$,公式3 将公式2代入公式3,得到:$R_{NTC} = {{V_{DDA} * temp * R_{up}} \over {(V_{VCC}*ADC_BIT) - (V_{DDA} *temp)} } = {{temp * R_{up}} \over {ADC_BIT - temp} }$
在ADC采样电路中,尤其是考虑低功耗的产品电池电压采样电路中,一般会选择比较大的分压电阻。这样可以减少因为分压电路带来的额外功耗。但是会出现电压采样不准的问题。
当 ADC 单端采集电压时,如果采集的电压不是强驱(电流很小)时,ADC 内部采集电容充电时间会变长(表现为有一个较长的上升时间),对于大电阻分压产生的电压采样而言,此时的电容充电效应会影响到采样电压(ADC 内部的采样电容大概在 15pF),在采样时刻会给采样电压拉低一个毛刺,如图 2-1 所示。此时很容易采到一个误差比较大的值。
这个影响会随着分压电阻阻值的增大而增大。
对分压电阻的对地分压部分增加电容,典型值 0.1uF。原理是通过增加电容,对电流起到一个缓冲作用,从而消除因为电流太小导致的电压毛刺。
https://blog.csdn.net/darin_wang/article/details/143932423
part2
$R_1, R_2$:分压电阻
$R_3, C_1$: RC 滤波
A-D 转换公式为:$U_{DC} = {V_{DD}*DigVal \over [ADC Resolution] * Gain}$
其中:
- $U_{DC}$:原始电压 (Physical Value)
- $V_{DD}$:ADC 供电电压(作为参考电压)
- DigVal:原始电压数字值(Raw Value)
- [ADC Resolution]:ADC 精度。如 8-bit ADC,取 255 ( $2^8-1$),12-bit ADC 取 4095 ($2^{12}-1$),16-bit ADC 取 65535 ($2^{16}-1$)
- Gain:电阻分压增益,其计算方法为:$Gain = {R_2 \over R_1+R_2}$
提高采样精度:
- 提高ADC供电电压的精度 $V_{DD}$
- 提高选用的ADC精度 [ADC Resolution]
- 提高分压电阻的精度 Gain
https://zhuanlan.zhihu.com/p/522945611
低功耗设备中,电池电压采样存在的问题及解决办法
最近在做一个开源项目,这个小项目由3.7V、200mAH聚合物锂电池供电。为了实现长时间待机的目的,需要尽量减小功耗。在设计电池电压采样电路的时候,发现了一些问题,于是查阅相关资料,进行了整理。
电池电压采样,最直接的办法就是采用分压电阻采样。分压电阻一般选择K欧级阻值,如果分压电压选择1K和3K进行分压,就会产生3.7V/4K=0.925mA
的电流,消耗的功率是3.7V*0.925mA=3.4mW
。
3.7V、200mAH聚合物锂电池储存的电能是3.7V*200mAH=740mWH
。如果不考虑其他电路的耗电,仅考虑分压电阻的消耗,可以连续待机740mWH/3.4mW=217H
,不到10天。这个消耗已经很大了。
如果增大采样电阻行不行呢?
stm32 ADC对外部输入阻抗是有要求的,最大不能超过50K,如下图所示,RAIN最大为50K。
为什么stm32 ADC对外部输入阻抗是有要求?
因为ADC的引脚需要有电流流入,来对$C_{ADC}$进行充电,充满后再进行采样。如果采样周期小于$C_{ADC}$通过$R_{AIN}+R_{ADC}$控制的充电时间,则ADC转换得到的数值会小于实际数值。所以当信号源阻抗增大时,需要延长采样周期。
如果按照外部输入阻抗的最大值50K,进行电路设计,是不是可以呢?
单片机ADC引脚外部输入阻抗等效于信号源内阻。信号源内阻等效于分压电路的输出电阻,即
66K*190K/(66K+190K)=50K
。
此时分压电阻消耗的功率是3.7*3.7V/(66k+190k)=0.053mW
,电流是14uA。可以连续待机740mWH/0.053mW=13962H
。基本上这个消耗就很小了。
但是由于ADC输入电阻不是无穷大,大概是几十K~几百K欧,具体数据不清。190K欧电阻两端的分压将会比理论分压要小。
所以单纯采用电阻分压具有功率消耗大、误差大的缺点。
改进方案
串联电压跟随器 在分压电阻和ADC引脚之间,串联电压跟随器,可以显著提高输入电阻、降低输出电阻。但是会增加成本和PCB面积,而且运放本身也会耗电,得不偿失。
MOS管开关采样
当不需要采样的时候,拉低I/O引脚,MOS管截止,漏电流仅有1uA。开始采样的时候,拉高I/O引脚即可,MOS管DS间电压仅为50uV(
1mA*导通电阻50毫欧
),可以忽略不计。采样结束后,断开MOS管即可。只要在采样的时候才消耗电能,耗电极少。仅需要在原来的基础上增加一个I/O口和一个MOS管即可。
用PMOS上端切断更好,下端切断ADC电压就是电池电压大于单片机电压,会有电流进单片机 adc=bat电压了,会损坏adc的
mos管成本不就上去了,直接用一个IO口当地就可以了。测的时候拉低,不测置高。 设备(CPU)进入休眠后,引脚将复位,进入高阻状态,不会变为低电平一直耗电。
https://zhuanlan.zhihu.com/p/343666145