基于STM32和电阻分压模块的电压测量

最近从我之前买的模块里拿了个电压传感器,今天来驱动一下

这个模块是真的不好用,误差感觉比较大,其实原理简单,但是可能也因为这个小蓝板不太行。


1. 模块工作原理

市面上常见的电压检测模块结构简单:在输入端串联两个电阻(如100kΩ和20kΩ)构成分压网络,分压比为5:1。被测电压 VinVin​ 经分压后变为 Vout=Vin/5Vout​=Vin​/5,再通过输出端子"S"连接到单片机的ADC引脚。模块还引出"+"、"-"端子用于给内部电路供电(通常接3.3V或5V)。

由于分压电阻存在误差,实际分压比并不严格等于5,且STM32的ADC参考电压(VDDA)也可能偏离3.3V,这是测量误差的主要来源。


2. STM32 HAL库驱动要点

使用STM32CubeMX配置工程时,需注意:

  • ADC配置:选择合适的通道(如PA0),单次转换模式,右对齐,软件触发。采样时间建议设为239.5周期,以减少输入阻抗影响。

  • 串口配置:用于打印电压值,便于调试。

  • 引脚模式:ADC引脚必须设为"模拟输入",禁止上下拉。

驱动代码的核心是读取ADC值并换算成实际电压。若忽略硬件误差,理论公式为:

Vin=ADC值4096×3.3×5Vin​=4096ADC值​×3.3×5

但实际测试中,输入3.3V时打印值只有2.85V,偏差明显。


3. 校准过程:从理论到实用

3.1 单点校准

首先通过万用表测量模块输出端(S引脚)电压,确认分压后电压与输入成比例。例如输入3.3V时,S引脚实测0.660V,但ADC读取值为729(理论应为819),说明参考电压或分压比存在偏差。

单点校准只需测量一个已知电压点 Vknown​ 和对应的ADC值 ADCknown​,计算校准系数:

实际电压:

校准后,3.3V输入显示为3.30V,但测量5V时又偏高至5.23V,说明线性度仍有问题。

3.2 两点校准

单点校准只能保证校准点附近准确,全量程的线性偏差需要通过两点校准来修正。方法如下:

  1. 测量0V点:将模块输入端短接,记录ADC值 ADC0ADC0​。

  2. 测量5V点:输入精确5V(用万用表确认实际电压 V5​),记录ADC值 ADC5​。

  3. 计算线性系数:

  4. 实际电压:


4. 空载读数的处理

模块输入端悬空时,ADC引脚处于高阻态,易受周围电磁干扰,通常会显示0.1~0.5V的虚电压。这是正常现象,一旦接入被测电压,测量值会立刻准确跟随。若需消除空载显示,可以在软件中添加阈值判断(如电压小于0.5V时强制显示0V),但这样会牺牲小电压的测量能力,需根据实际应用权衡。


5. 硬件连接与注意事项

  • 供电:模块"+"、"-"接STM32的3.3V和GND。

  • 信号:模块"S"接ADC引脚。

  • 输入:模块端子"VCC"、"GND"接被测电压(注意极性)。

  • 安全:被测电压不能超过25V(3.3V供电时上限16.5V),以免损坏模块。


6. 总结

使用电阻分压模块时,务必通过校准消除分压电阻和ADC参考电压的误差。

相关推荐
朝发如雪5 小时前
快速掌握单片机基础(3)(PWM)(通信协议基础)(串口通信时序与参数)(电气特性与电平标准)(51单片机UART寄存器配置)(串口应用层协议)
单片机
天空'之城8 小时前
单片机基础核心知识点汇总(四十)
单片机·嵌入式硬件
smartpi_ai8 小时前
离线语音模块误识别问题全面解决方案:命令词设计、防误触与灵敏度调优指南
人工智能·单片机·语音识别
LCG元8 小时前
STM32F103 驱动 HX711 称重实战:DOUT 就绪时序、增益切换陷阱与两点标定精度实测
stm32·单片机·嵌入式硬件
染予8 小时前
代码中相关C语言知识点总结
stm32
优信电子8 小时前
STM32 驱动 DHT30 测量环境温湿度(兼容SHT30):从时序解析到完整代码实战
stm32·嵌入式·传感器·sht30·温湿度·环境测量·dht30
小李不想当小白10 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
朝发如雪10 小时前
快速掌握单片机基础(6)(数据处理与传送指令)(跳转与分支指令)(栈操作与混合编程)(程序状态寄存器操作指令)(内存映射)
单片机·arm
blue_ice .10 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发
深圳市恒锐丰科技杨生11 小时前
EG4318 / EG4319 / EG4320 铅酸电池三段式充电副边管理芯片|屹晶 EGmicro
嵌入式硬件·硬件工程