L0开ADC采电池电压,一直比真实值低不少
查了参考电压也换了多个板子,ADC读值就是偏低一截。ADC转换完马上取值容易不准,建议延迟下。 L0的Vref必须调校,不然ADC偏差大。 看看是不是用了内部参考电压? 建议你用VBAT脚,精度会好点。 电源分压电阻有没有老化? L0内部通道采样时间要设得足够长。 用multisample再取平均,我是这么干的。 把电压源接示波器看看是不是稳的。 用校准函数HAL_ADCEx_Calibration_Start试试看。 我也遇到过,后来加了电容稳压效果明显。 查了参考电压也换了多个板子,ADC读值就是偏低一截。 如果电池电压超过STM32L0的最大ADC输入电压,需要使用分压电阻来降低电压。要确认分压电阻阻值是否合适,外部分压电阻阻值过大可能导致带载能力不够,单片机输入阻抗相对较小,使用ADC连续转换持续对采样电容充放电,会使输入阻抗进一步降低,进而影响采样值。例如,可尝试将ADC连续转换改为单次转换,使用定时器或其他方式周期启动ADC转换,降低采样频率。同时,要检查分压电阻精度,建议使用1%精度的电阻,并测量实际分压比,在代码中进行修正。 内部参考电压值与STM32L0是否相匹配 可能是ADC模块硬件故障,可尝试更换芯片。 若信号源阻抗过高,会导致电压被分压。可在ADC输入引脚与信号源之间串联电阻,并添加对地滤波电容,或使用运放缓冲器隔离高阻抗信号源。
采样时间不足? 通过软件滤波减少噪声影响。 检查前级电路,如传感器输出等是否正常。 STM32L0的ADC需要上电后校准,否则可能出现偏移误差。
页:
[1]