1. 项目概述与需求分析:万用表的功能定义、技术指标、系统架构选型
大家好,我是你们的硬件设计讲师。今天咱们正式开干,聊聊嵌入式万用表这个项目。
说实话,我当年刚入行时,第一个独立负责的项目就是一台手持万用表。那会儿踩了不少坑,有些坑到现在想起来还觉得肉疼。所以这一章,我会把需求分析阶段最容易忽略的点,掰开揉碎了讲给你听。
1.1 万用表到底要干什么?——功能定义
万用表,说白了就是「一表多用」。我们这次做的不是那种几十块钱的玩具表,而是一台能真正用于嵌入式调试的实用工具。
我个人习惯,在项目启动前先列一个「必须做」和「最好做」的清单。对于这个项目,核心功能有这些:
- 直流电压测量:最基础的功能,量程至少覆盖 0-30V
- 直流电流测量:用于测模块功耗,量程 0-2A 就够用
- 电阻测量:从 1Ω 到 10MΩ,覆盖常见阻值
- 通断测试:带蜂鸣器,响应要快
- 二极管压降测量:这个在维修时特别有用
嗯,这里要注意,我见过不少新手一上来就想做「全功能」,恨不得把电容、电感、频率全塞进去。结果呢?项目拖了半年,连最基本的电压档都没调准。
1.2 技术指标——精度、量程、采样率
技术指标这东西,说白了就是「你打算把表做到多好」。我当年第一次做万用表时,天真地以为「精度 0.5% 很容易」,结果被现实狠狠教育了一顿。
精度
精度是万用表的灵魂。我们这次的目标是:
| 测量项目 | 目标精度 | 说明 |
|---|---|---|
| 直流电压 | ±(0.5% + 2字) | 基本档位,够用 |
| 直流电流 | ±(1% + 3字) | 电流档精度稍低,正常 |
| 电阻 | ±(1% + 2字) | 中低阻值表现更好 |
为什么会定这个精度?因为对于嵌入式调试来说,0.5% 的电压精度已经能判断电源是否正常了。你想想看,测一个 3.3V 的 LDO 输出,误差 16.5mV,完全够用。
量程
量程设计其实是个平衡艺术。量程太少,用起来不方便;量程太多,硬件成本上去了,切换逻辑也复杂。
我个人习惯这样划分:
- 电压档:200mV、2V、20V、200V(自动量程)
- 电流档:20mA、200mA、2A(手动切换,安全第一)
- 电阻档:200Ω、2kΩ、20kΩ、200kΩ、2MΩ、10MΩ
注意电流档,我建议用手动量程。为什么?因为自动量程在电流档容易出事——如果你用 2A 档去测一个毫安级的信号,读数精度很差;反过来,用 20mA 档去测 1A 电流,保险丝直接炸。
采样率
采样率这个指标,很多人会忽略。其实它直接影响使用体验。
对于万用表来说,采样率不需要太高。我们定 10 次/秒,也就是 100ms 刷新一次。为什么?
- 人眼能分辨的刷新率大约 3-5Hz,10Hz 已经感觉很流畅了
- 采样率太高,噪声会变大,需要更多的数字滤波
- MCU 的处理能力有限,10Hz 是个性价比很高的选择
不过,通断测试的响应时间要单独优化。我要求蜂鸣器响应时间小于 1ms,这样才能在快速扫电路时「滴滴滴」地跟得上你的手速。
1.3 系统架构选型——从芯片到方案
架构选型,说白了就是「用什么芯片、怎么搭」。这一步走错了,后面全是坑。
方案一:MCU + 分立 ADC
这是最传统的方案。MCU 用 STM32F103,ADC 用 ADS1115(16位)或 ADS1256(24位)。
- 优点:灵活,想怎么调就怎么调
- 缺点:外围电路复杂,需要自己搭信号调理、保护电路
- 适合:想深入学习的同学
方案二:专用万用表芯片 + MCU
比如 FS9721、ES51922 这类芯片。它们内部集成了 ADC、量程切换、LCD 驱动等。
- 优点:外围简单,开发快
- 缺点:灵活性差,精度受限于芯片本身
- 适合:快速出产品
方案三:MCU 内置 ADC + 前端调理
用 STM32G4 系列,它内置了 12 位 ADC,配合 PGA 和外部基准。
- 优点:成本低,BOM 简单
- 缺点:精度有限,12 位 ADC 做 0.5% 精度有点吃力
- 适合:低成本方案
我个人推荐方案一。为什么?因为咱们是「从零到一」的课程,方案一能让你把每个环节都吃透。我当年就是靠这个方案,把 ADC 的采样、滤波、校准全搞明白了。
1.4 系统框图——一张图说清楚
画系统框图,我有个习惯:先画功能模块,再画信号流向,最后标接口。这样不容易漏东西。
┌─────────────────────────────────────────────────┐
│ 输入保护电路 │
│ (PTC + TVS + 压敏电阻 + 保险丝) │
└────────────────────┬────────────────────────────┘
│
┌────────────────────▼────────────────────────────┐
│ 量程切换 │
│ (继电器 + 模拟开关 CD4051) │
└────────────────────┬────────────────────────────┘
│
┌────────────────────▼────────────────────────────┐
│ 信号调理 │
│ (OPA2333 缓冲 + 分压 + I/V 转换) │
└────────────────────┬────────────────────────────┘
│
┌────────────────────▼────────────────────────────┐
│ ADC 采样 │
│ (ADS1115, 16位, I2C接口) │
└────────────────────┬────────────────────────────┘
│
┌────────────────────▼────────────────────────────┐
│ MCU 主控 (STM32F103) │
│ 数据处理 + 自动量程 + 校准 + 显示驱动 │
└──────┬─────────────────────────────┬────────────┘
│ │
┌──────▼──────┐ ┌────────▼────────┐
│ OLED 显示 │ │ 按键 + 蜂鸣器 │
│ (128x64) │ │ (3个按键) │
└─────────────┘ └─────────────────┘
这个框图看起来简单,但每个模块都有讲究。比如输入保护,我见过有人直接用电阻分压,结果一测高压,ADC 直接冒烟。嗯,保护电路不是「可有可无」,而是「必须做」。
1.5 需求分析阶段最容易犯的错
最后,我总结几个我在项目中踩过的坑,你注意避开:
- 忽略输入阻抗:电压档输入阻抗至少 10MΩ,否则测高阻信号时会把电路「拉偏」
- 忘记共模电压:差分测量时,共模电压不能超过 ADC 的供电范围
- 低估噪声:16 位 ADC 的 LSB 大约 76μV(以 5V 参考计算),电路里随便一个噪声就盖过去了
- 不做校准:没有校准的万用表,精度全靠运气
好了,这一章的内容就到这里。下一章咱们开始画原理图,从输入保护电路讲起。到时候我会把每个元件的选型思路、计算过程都讲清楚。
记住一句话:需求分析阶段多花一周,硬件调试阶段少花一个月。别急着动手画板子,先把需求想透。