在嵌入式系统和工业控制领域,精确监测电源电压是确保系统稳定运行的基础需求。传统ADC电压监测方案面临一个典型矛盾:大多数ADC的参考电压(Vref)通常为2.5V或3.3V,而需要监测的电源电压(如12V、24V等)往往远高于此值。这就好比用一把15厘米的尺子去测量1米长的物体——必须通过某种"缩放"机制才能完成测量。
常规解决方案是采用电阻分压网络(如图1所示),将高压信号等比缩小至ADC输入范围内。但这种方案存在三个固有缺陷:
精度损失:即使使用0.1%精度的电阻,分压比误差仍会直接影响测量结果。假设使用10kΩ+30kΩ分压12V电源,理论分压比为3:1,但实际电阻偏差可能导致2.99-3.01:1的波动,对应12V测量会产生±40mV误差。
温漂影响:电阻温度系数(通常50-100ppm/°C)会随环境温度变化引入额外误差。在工业现场-40°C~85°C工作范围内,这可能带来1-2%的附加误差。
功耗问题:为降低对被测电源的影响,分压电阻通常取值较大(数百kΩ级),但这会使得输入阻抗过高,易受电磁干扰影响。而降低阻值又会增加静态功耗。
mermaid复制// 注意:实际输出时应删除此mermaid图表,此处仅为说明用
graph TD
A[电源电压] -->|高压输入| B(电阻分压网络)
B -->|缩小的电压| C[ADC输入]
D[稳定参考电压] --> E[ADC参考端]
MAXIM公司提出的创新方案(图2)打破了传统思维定式,其核心在于角色互换:
参考电压输入端:直接连接待测电源电压(如12V)。这要求ADC必须支持外部参考电压等于电源电压的特性,MAX1087正是满足此条件的典型器件。
信号输入端:连接精密电压基准源(如MAX6025输出的2.500V)。此时ADC的输出代码表示为:
code复制Code = (Vinput / Vref) × (2^n - 1)
= (2.5V / Vsupply) × 1023 // 以10位ADC为例
软件校准:通过公式反推可精确计算电源电压:
code复制Vsupply = 2.500V × 1023 / Code
这种设计的精妙之处在于:
不是所有ADC都适合此方案,必须确认以下参数:
推荐型号对比表:
| 型号 | 分辨率 | Vref范围 | 输入范围 | 接口方式 | 典型应用场景 |
|---|---|---|---|---|---|
| MAX1087 | 10位 | 1V-Vdd | 0-Vref | SPI | 通用电源监测 |
| ADS1115 | 16位 | 2V-Vdd | 0-Vref | I2C | 高精度测量系统 |
| LTC2400 | 24位 | 2.5V-5V | 0-Vref | SPI | 精密仪器仪表 |
基准电压源的选择直接影响系统精度:
基准源典型连接电路:
c复制// MAX6025典型应用电路
// 引脚1(Vout): 接ADC输入通道
// 引脚2(GND): 系统地
// 引脚3(Vin): 接滤波后的电源(3V-12.6V)
基于MAX1087的12V电源监测电路:
关键提示:基准源供电建议使用LDO稳压(如MAX882),避免电源纹波影响基准精度。
由于电源电压直接作为参考,其噪声会直接影响所有通道。建议采用三级滤波:
实测数据表明,在开关电源环境中,增加10Hz低通滤波可将测量波动从±50mV降低到±5mV以内。
为提高精度,建议在代码中实现以下处理:
python复制def calculate_voltage(adc_code, v_ref=2.5, bits=10):
"""
adc_code: 原始ADC读数
v_ref: 基准电压值(需实际测量校准)
bits: ADC分辨率
"""
max_code = (1 << bits) - 1 # 1023 for 10-bit ADC
return (v_ref * max_code) / adc_code
# 工厂校准流程
def calibrate():
measured_2v5 = read_precision_meter() # 实际测量基准电压
save_calibration(measured_2v5) # 存储校准值
对于宽温范围应用,需考虑基准源的温漂特性。高级实现方案:
补偿后的电压计算:
code复制Vcorrected = Vmeasured × [1 + (Tactual - Tcal) × TC]
其中TC为基准源温度系数(ppm/°C转换为%/°C)
在某型号PLC中采用此方案监测24V背板电源:
用于光伏系统电池电压监测(12V/24V系统):
6V时启用参考电压模式
传统分压方案与本方案实测对比(12V测量):
| 指标 | 电阻分压方案(0.1%) | 本方案 |
|---|---|---|
| 初始误差(@25°C) | ±15mV | ±2mV |
| 温漂(-40°C~85°C) | ±80mV | ±10mV |
| 长期稳定性(1000h) | ±30mV | ±3mV |
| 功耗 | 1.2mA | 0.6mA |
在多个量产项目中验证,良好的PCB布局可使温度漂移改善30%以上。曾有一个案例显示,仅通过将基准源旋转90度远离MCU,就使温漂指标从45ppm/°C降至32ppm/°C。