stm32f4的adc采样抖动大,阻抗匹配网络
制作家电产品时,需要采集电池电压(3.3V-4.2V ),同时希望在休眠中尽量减小待机电流。 电池电压采集电路采用2个1%的300K电阻进行分压,该电路引起的待机电路为4.2/(300 300 ) mA=7uA。 在这种情况下,是合理的(整个单元的待机电流在30uA以内)。
初始设计电路为以下:
对数据采集进行编程表明,测试电压和实际电压存在偏差,测试值始终略小于实际值。 用软件进行了修正,修正了数值。
但是,更换板子进行测试时,发现测试的电压又不准确。 这时,我发现用软件补偿的方法是行不通的。 那么只能从硬件中寻找原因。
查找datasheet时,发现AD的输入阻抗最多只有50K。
中RAIN :外部输入阻抗,STM32芯片中该值最大为50K;
RADC :采样开关电阻,最大值为1k;
CADC :内部采样和保持容量,最大值为8pF。
如果在收集ADC数据时需要电流流动,RAIN会引起电压降。 在阻止网络内的RADC和CADC中,电容器的充电由RADC控制。 随着源极电阻(RADC )的增加,对保持电容的充电时间也相应增加。
由于向CADC的充电由RAIN RADC控制,因此充电时间常数为TC=(radcrain ) CADC。 如果时间太短,ADC转换的数值将小于实际值。
以上数据表明,采集精度与采集时间和输入阻抗有关。 但是,通过计算发现,输入阻抗为300K时,充电时间约为2.4uS。 即使在软件中将采样周期设为最大(ADC_SampleTime_239_5Cycles、频率12M、时间19.9uS )时也存在误差。 说明这个时间点和周期不是主要原因。
问题是输出大于集成电路中ADC允许的最大阻抗。 充电时的电流分为2部分,从R1通过R2到达接地,通过R1流向MCU的AD连接器。 (I )不知道是否有一定的漏电流从o端口流向接地,I )在这种情况下,相当于在R2旁边加电阻接地,检测点的电压不是标准的1/2Vbat。
那么,为了更准确地检测电池电压,只能减小电阻。 如果选择两个50K的电阻,则来自这里的电流为42uA后。 所以对电路进行了调整:
原本接地的场所变更为IO端口,需要检测时输出低电平,不需要时输出高电平。 并解决了分压电阻使用2个30K的问题,电压检测误差小于0.02V,待机电流比原来小了几微米。
转载于:https://www.cn blogs.com/zjh-x/p/6617712.html