ADC监测电压时,检测值偏低的原因分析。

今天同事在调试ADC时,发现检测值比实际值偏低。下图是电压采集的示意图。这个bug的现象是当采集VCC和GND时,ADC的采样数值是正确的,但是在采集中间点的电压时,ADC所得到的电压值远远小于实际的电压值。经过一番调试后,我们认为是分压电阻太大了,导致采样的精度被影响了。然后我们将阻值换为10K和3K的,继续调试,发现ADC的采样数值变正确了。深入研究了ADC的原理,发现问题的关键。

ADC根据原理不同分为并联比较型,双积分型和逐次比较型。按照我的理解,我们的采样电压是一个输入的信号,也需要驱动ADC内部的部分电路,比如运放和一些分压电阻。当我们的采样电压所对应的电流值不足以驱动内部的输入电路时,就会出现上述的这种情况。

### STM32 ADC 参考电压过高解决方案 当STM32ADC参考电压设置得较高,可能会导致测量精度下降或无法准确反映输入信号的变化。对于12位ADC而言,其分辨率为3.3V/4096 ≈ 0.8mV每步[^1]。如果实际应用中的信号幅度远小于这个范围,则会遇到量化误差增大的情况。 为了应对STM32 ADC标准源偏高的问题,可以采取以下几种方法: #### 方法一:降低外部参考电压 通过使用更低的外部参考电压来提高相对分辨率。例如,可以选择一个更合适的低电平参考电压模块连接到STM32的VREF+引脚上。这将使得每一个LSB代表的实际电压变得更小,从而提高了对微弱信号检测的能力。 #### 方法二:调整模拟前端电路设计 优化传感器或其他前置放大器的设计参数,使待测信号尽可能接近满量程而不溢出。这样可以在不改变硬件配置的情况下充分利用现有的动态范围。 #### 方法三:软件校准与补偿算法实现 即使物理上的改进有限,在数据处理阶段也可以引入一些技巧性的措施。比如采用平均滤波、过采样技术等手段增强信噪比;或者编写特定的应用程序逻辑来进行线性化修正和温度漂移补偿等工作。 ```c // 过采样示例代码片段 uint32_t oversample_adc(uint8_t channel, uint16_t samples){ uint32_t sum = 0; for(int i=0; i<samples; ++i){ sum += HAL_ADC_GetValue(&hadc1); } return (sum / samples); // 返回均作为最终读数 } ```
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值