1. 项目背景与核心需求
去年工作室里烧坏第三块万用表的时候,我终于决定自己动手做个靠谱的测量工具。市面上的通用型万用表要么精度不够,要么价格离谱,而专业级设备又笨重得像块砖头。这个DIY电压电流表的初衷很简单:要有个能塞进工具包、测量精度达到0.1%、同时能记录数据的小家伙。
核心需求拆解下来主要是三点:
- 测量范围覆盖0-30V直流电压和0-3A电流
- 基础精度优于0.5%,理想状态冲击0.1%
- 带OLED显示和蓝牙数据传输功能
2. 硬件设计与元件选型
2.1 核心芯片的抉择战
在ADC选型上打了场硬仗。TI的ADS1115(16位)和ADI的AD7793(24位)都测试过,最终出人意料地选了相对冷门的LTC2400。这个24位ADC虽然采样率只有7.5Hz,但它的差分输入和内置振荡器特别适合慢速高精度测量。实测在3V量程下,它能稳定分辨出1μV的电压变化——这相当于能检测到普通AA电池放置一个月后的自放电量。
电流测量方案更折腾人。最初想用INA226这类集成方案,后来发现它的50mV分流电压在3A时会带来150mW的热损耗。最终方案是用0.01Ω的锰铜分流器配合LTC2057仪表放大器,热误差控制在0.05%以内。
2.2 电路板上的魔鬼细节
用四层板设计时特意做了个骚操作:把ADC的模拟地平面做成"孤岛",通过0Ω电阻单点连接到数字地。这个设计让底噪直接从180μV降到了40μV。电源部分用了TPS7A4700低噪声LDO,输出端并了个47μF的钽电容,纹波压到了惊人的2μVpp。
最烧脑的是基准电压电路。LTZ1000虽然性能逆天,但体积和功耗都超标。妥协方案是用LM399加恒温槽,配合LT1027做二级缓冲。实测温漂控制在1ppm/℃以内,开机半小时后电压波动不超过3μV。
3. 焊接与装配实战
3.1 精密器件的焊接技巧
焊24脚SSOP封装的LTC2400时,我发明了个"拖焊+吸锡"组合技:先用刀头烙铁给所有引脚上薄锡,然后用吸锡带吸走多余焊锡,最后用放大镜检查桥接。关键是要用含2%银的Sn96.5Ag3Cu0.5焊锡丝,熔点217℃比普通焊锡高,但流动性更好。
贴片电阻全部选用0805封装,不是因为它好焊,而是这个尺寸的电阻温漂系数普遍比0603的小20%。有个骚操作是用热风枪焊接时,在元件旁边放块铜块当散热器,防止热风把精密电阻吹变质。
3.2 机械结构的防变形设计
外壳用3D打印的PC材料,但发现受力后会影响测量精度。解决方案是在ADC芯片下方设计了个"悬浮"结构:先用硅胶垫缓冲,再套上铜质屏蔽罩。测试表明这个设计能把机械应力导致的误差控制在0.02%以下。
面板按键选了ALPS的SKQG系列,它的金属弹片结构比普通按键寿命长10倍。更关键的是它的接触电阻只有20mΩ,是普通按键的1/5,不会影响测量回路。
4. 固件开发中的坑与经验
4.1 ADC驱动里的玄机
LTC2400的SPI时序有点反人类:它的数据准备信号是CS拉高时触发。我花了三天才搞明白为什么读数总漂移,最后发现是GPIO速度设太快导致建立时间不足。现在驱动里故意加了3μs的延迟,采样稳定性立刻提升到99.9%。
校准算法用了三段式非线性补偿:
- 零点校准:短路输入端记录偏移量
- 增益校准:用AD584基准源输入5V
- 非线性校准:在0-30V区间取7个点做多项式拟合
4.2 蓝牙传输的优化技巧
HC-05模块的默认波特率9600根本喂不饱24位ADC数据。通过修改AT+UART=115200,0,0把速率提到最高,再用自定义协议打包数据:每帧包含4字节时间戳+3字节电压值+3字节电流值+1字节CRC。实测这个结构在115200波特率下能实现10Hz的稳定传输。
功耗优化有个绝招:把STM32的ADC时钟从14MHz降到1MHz,整机电流立即从22mA降到9mA。代价是转换时间从1μs变成14μs,但对这个慢速测量场景完全没影响。
5. 校准与测试实录
5.1 搭建基准测试系统
用吉时利2450源表作为标准器时发现个诡异现象:当源表输出10V时,我的表显示10.0023V;输出15V时却变成14.9987V。排查两天后发现是电源轨的电压跌落导致——LDO输入端的22μF电容ESR太大。换成三个10μF X7R电容并联后,问题迎刃而解。
温度测试更有意思:把整机放进恒温箱从-10℃升温到60℃,发现读数呈"S"型曲线变化。后来在代码里加了温度传感器MLX90614的补偿算法,用三阶多项式把温漂压到了0.005%/℃。
5.2 实战性能数据
经过200小时老化测试后,关键指标如下:
- 电压测量:0-30V范围,±0.05%读数±2字
- 电流测量:0-3A范围,±0.1%读数±5字
- 温度系数:<15ppm/℃
- 长期稳定性:<100ppm/年
最惊喜的是在测量18650电池放电曲线时,能清晰看到每次0.1A负载变化导致的约3mV电压波动,这个分辨率已经超越大多数3000元以下的商用仪表。
6. 那些值得记录的翻车现场
6.1 静电导致的灵异事件
第一个版本做好后,只要用手靠近ADC芯片,读数就会漂移0.1%。后来发现是PCB的guard ring设计有问题——应该用多个过孔把保护环接到地平面,而不是单点连接。改版后即使用毛衣摩擦测试,读数波动也不超过0.01%。
6.2 电源反接的血泪史
以为加了SS34二极管就万事大吉,直到某次5V电源接反,LTC2400直接冒烟。现在电路里多了个P-MOS管做理想二极管,反向耐压30V,导通压降只有0.1V。