资讯中心

基于STM32的四合一便携仪表设计:从模拟前端到固件实现

📅 2026/8/27 4:08:07
基于STM32的四合一便携仪表设计:从模拟前端到固件实现
蹲在机柜前那会儿我左手举着万用表笔右手拧着可调电源的旋钮还得用余光去看信号发生器的频率显示。客户那边设备已经装箱上柜操作空间窄得可怜我包里那三台台式仪器倒是一应俱全可惜一台都放不稳。那天晚上回酒店我就在本子上写了七个字Portable Electronics Lab Mini。目标很直白把数字万用表、可调电源、函数信号发生器、简易示波器四样日常调板最常用的功能塞进一台移动电源大小的盒子里。整机最终控制在 100×70×25mm 左右内部电池供电USB-C 充电平时丢在工具包里不占地方掏出来就是一套小台面。这个项目从方案论证到第三版稳定运行前后跨度三个多月中间推翻过两次 PCB 布局也踩了不少仪器类设计特有的坑。这篇文章把完整的设计思路拆开聊场景与指标怎么定、芯片怎么选、模拟前端和电源链路怎么搭、固件里的量程和滤波怎么写、最后怎么校准和验证。想给自己做一台随身仪表的朋友可以直接拿来当参考。1. 为什么做四合一场景拆解与指标设定1.1 现场调试真正的痛点是多而散先说实话我不是为了炫技才把四样仪器塞进一个小盒子。纯粹是调板子的时候发现绝大多数现场场景用到的功能就那几样看电压对不对、测通断和电阻、给负载供个电顺便看电流、偶尔要一个正弦波或者方波、再就是看关键节点的波形有没有异常。每一件事单拎出来都不难但组合在一起就很麻烦。台式万用表、台式电源、信号发生器、示波器四台设备加起来小二十斤桌面不够摊不说很多现场根本没有 220V 插座。所以我做这个设备的第一原则是它不是为了替代实验室里的高端仪表而是为了覆盖那些有它就很方便的移动场景。这套思路和很多做成口袋万用表的产品类似但四合一的不同之处在于它不是把四个独立模块简单焊在一起而是共享电源、共用屏幕、统一交互。省掉四台设备各自的按键、显示、电池和外壳体积自然就下来了。1.2 从需求反推规格这些指标是怎么定的定指标的时候我给自己划了一道线不做实验室级的性能竞赛只做能帮你快速判断电路状态的仪表。后来总结成一张表每个功能模块都明确写清楚底线参数和使用场景。功能模块核心指标立项时的依据数字万用表电压 0~60V精度 0.5%3mV电流 1μA~1A电阻 0.1Ω~10MΩ日常调板主要看 3.3V/5V/12V 轨偶尔碰 24V 传感器60V 已经覆盖绝大多数弱电场景可调电源0~12V 连续可调最大 1A纹波 10mVpp给运放、传感器、MCU 板供电12V 够用1A 能带多数小负载信号发生器1Hz~5MHz 正弦/方波/三角波最大 3Vpp音频电路、传感器激励、逻辑信号模拟基本都覆盖了再高频率靠示波器看也费劲简易示波器带宽 1MHz采样率 5MSPS输入 ±25V主要是看电源纹波、I2C/SPI 数字波形、PWM 信号不需要高速存储深度为什么不做 100MHz 示波器、20V 电源一个是体积和功耗撑不住另一个是这些功能在便携设备上使用率非常低。做工具先想清楚够用在哪里然后心甘情愿在边界处做减法这是整个项目能落地的前提。1.3 设计红线安全、精度、体积指标之外我还定了三条红线保护功能必须可靠、直流测量精度必须有量化依据、整机体积必须单手可握。安全这条尤其重要。仪表要测电压就要允许用户在 60V 直流下操作输入端如果没保护一接错就烧芯片那这工具还不如不带。输入端口必须有过压钳位、限流元件和熔断器模拟前端后级的 MCU 和 ADC 不能在异常输入下直接报废。体积上我给自己定的是 100×70×25mm 以下。这个尺寸比一台手机稍大一点跟一个 10000mAh 移动电源差不多装进工具包侧袋完全没心理负担。后续所有器件选型、PCB 布局都先问一句这板子能塞进这个盒子吗2. 主控与核心芯片选型把台式仪表的活儿拆到模块上2.1 主控为什么选了 STM32F407一开始试过 ESP32毕竟平时玩物联网都用它Wi-Fi 调试也方便。但做仪器类产品ESP32 有几个硬伤内置 ADC 线性度一般采样时钟抖动大做电压表勉强凑合做示波器采集基本没戏。最终选了STM32F407VET6168MHz 主频内置 12bit ADC 最高 2.4MSPS带 DSP 指令。选它的理由有三条ADC 采样时序可控。定时器可以精确触发 ADC配合 DMA 直接搬运示波器模式采样率 5MSPS 的实现就靠这套外设链。高级定时器功能强。做信号源频率测量、脉冲输出、PWM 捕获都方便。接口多。SPI 带 TFT 屏幕、SPI 带 DDS 芯片、I2C 带 ADC 和电流检测芯片、再加上编码器和按键输入外设数量刚好够用不用担心冲突。任务划分在架构阶段就定下来ADS1115 负责直流精密测量万用表内部 ADC 负责示波器波形采集AD9833 负责信号发生器INA226 负责电流和功率监测。这样模拟链路和数字链路分离干扰最少。2.2 模拟链路芯片16位ADC、DDS与电流检测直流万用表的精度要求比示波器高不少。STM32 内置 ADC 虽然快到 2.4MSPS但只有 12bit而且线性度到不了 0.1%。万用表的电压、电阻、电流档全是缓慢变化的直流信号用高分辨率慢速 ADC 更合理。这里选了ADS111516bit、860SPSI2C 接口内部自带 PGA可编程增益放大器。关键是它的 PGA 可以设 ±0.256V 到 ±6.144V 多个量程配合外部电阻分压网络能把每个档位的分辨率做到很细。信号发生器选的是AD9833这颗 DDS 芯片在便携仪表里用得很多SPI 三线就能控制最高输出 12.5MHz 正弦波内部集成相位累加器和 SIN ROM频率分辨率 28bit1Hz 级别的步进毫无压力。电流检测没有用采样电阻运放的经典方案而是直接用INA226。这颗芯片内部集成了 16bit ADC 和放大电路I2C 输出电流和电压数据。它最大的好处是把很多模拟调零、放大、滤波的活儿都省了只需要一个低温漂采样电阻接在芯片的差分输入端。代价就是 INA226 本身是个数字芯片布局时要特别注意和模拟小信号保持距离。2.3 显示与交互方案显示方案在 OLED 和 TFT 之间犹豫了一段时间。OLED 对比度高、功耗低但尺寸普遍偏小画波形的时候细节太少。最后选了1.54 寸 IPS TFT分辨率 240×240驱动芯片 ST7789SPI 接口。IPS 屏的可视角度好在户外强光下比普通 TFT 清楚。唯一要注意的是 ST7789 SPI 刷新率问题240×240 全屏刷新大概需要 16ms如果每秒刷新 30 帧就占掉一半帧周期。所以波形绘制用的是整屏局部刷新策略只更新波形区域菜单区域保持不动实测帧率 30~40fps肉眼看起来已经非常流畅。交互用了一颗旋转编码器加两个独立按键。菜单逻辑是旋转选择、按下确认、长按返回所有功能都在同一个逻辑框架里切换。编码器自带按键开关两个独立按键一个做功能切换快捷键一个做背光开关。这几个实体按键在户外戴手套操作时比触摸屏靠谱得多。3. 模拟前端设计精度从分压网络就开始3.1 电压测量分压电阻网络与输入保护万用表电压档的输入端第一件要考虑的事不是精度而是安全性。电压测量经常插到带电电路上瞬时过压、反接都有可能。在输入端口并联 TVS 二极管做钳位串联 PTC 自恢复保险丝做限流后面再怼一个 1kΩ 电阻限流这样大部分错误操作都不会直接烧到后级。分压网络是电压测量的核心。ADS1115 的输入范围是 ±6.144VPGA 设为 ±6.144V但我要测到 60V所以必须先把电压衰减到 ADC 能接受的范围。这里选的是 1MΩ 输入阻抗的分压链阻值按 1:10:100:1000 的比例扩展通过模拟开关切换不同档位。以 60V 档为例分压比约 1/20实际用的是 900kΩ 和 47.5kΩ 的组合900/(90047.5)≈0.95V 输出对应 19V 输入这里要重新算清楚60V 输入希望 ADC 端压降在 3V 左右取 1MΩ 总输入电阻底端电阻取 47.5kΩ分压比 47.5/(90047.5) ≈ 0.0560V × 0.05 3.0V正好落在 ±6.144V PGA 范围内。分压电阻选0.1% 精度、25ppm/℃ 温漂的金属膜电阻。这个精度在项目成本里占比不大但它决定了整机最基本的测量误差不能省。所有分压电阻在打样前都要实测标定把实际阻值写进校准表里而不是只依赖标称值。3.2 电流测量低边采样 INA226 的心得电流测量我一开始想走传统方案低边采样电阻 仪表放大器。这个方案需要多级运放还要处理失调电压、温漂、增益误差每个环节都要调零小体积 PCB 上很难做好。后来换成 INA226 后电路简洁了很多。INA226 是低边或高边都能测的双向电流检测芯片内部集成了放大器和 16bit ADC外部只需要一个采样电阻。我选了0.1Ω、0.5%、2W 的金属箔采样电阻配合 INA226 内部 PGA电流分辨率能做到 1μA 级别量程覆盖 1μA~1A。这里有个关键坑要提醒INA226 的差分输入端只有在共模电压接近电源轨时才准确。如果采用高端采样采样电阻在电源正端共模电压可能高达 20V远超 INA226 的共模范围必须额外搭配电平转换电路。我做的是低边采样采样电阻在负载和地之间共模电压接近 0VINA226 工作非常稳定。代价是负载的地会和系统地之间多出一个 0.1Ω×电流 的压降。对绝大多数 3.3V/5V 低压电路来说1A 时也只有 0.1V 压降在可接受范围内。3.3 信号发生器输出级AD9833 的缓冲与增益控制AD9833 输出的是正弦波内部 DAC 的原始信号幅度约 0.6Vpp驱动能力也很弱必须加后级放大和缓冲。我的输出级分两级第一级用OPA340 运放做跟随器把 DDS 输出和后续负载隔离第二级用可编程增益放大器把 0.6Vpp 放大到最大 3Vpp增益用数字电位器 MCP4131 控制。数字电位器的一个问题是分辨率有限MCP4131 只有 7bit128 个步进在低增益区间步进太粗。后来我在固件里做了一张增益校准表把每个数字电位器位置的输出电压实测记录在软件里做线性插值。这样虽然硬件分辨率有限但用户看到的设置值和实际输出值之间误差能控制在 2% 以内。4. 电源链路电池、升降压与纹波控制4.1 电池选择与充电管理便携设备绕不开电池。我考虑过两节 18650 串联的方案电压范围高但体积和重量都上去了还要额外处理均衡充电问题。最终选了单节 18650 电池标称 3.7V容量 2600mAh充电管理用 IP5306带电量显示和充放电保护。IP5306 本身集成了升压电路可以用 USB-C 5V 给电池充电最大充电电流 1A。它还有 4 颗 LED 电量指示省掉了额外的电量计电路。虽然这颗芯片的开关升压效率普通但整个设备不是长期满载运行待机时大多数模块都在低功耗状态实测满电连续做信号源屏幕常亮大概能撑 5 小时正常调板一天够用。4.2 多路电源轨设计电池出来之后整机要生成好几路电源5VUSB 通信和逻辑电平、±5V模拟前端和运放供电、3.3VMCU 和传感器。电源拓扑直接决定整个设备的底噪水平这里花了不少时间调。5V 由 IP5306 内置升压直接输出3.3V 用了一颗低功耗 LDOAMS1117-3.3从 5V 降压得到。比较麻烦的是 ±5V模拟前端的分压缓冲运放、DDS 输出级的运放都需要正负电源轨才能处理 0V 附近的信号。负压我用了一颗电荷泵反压芯片ICL7660把 5V 转成 -5V。电荷泵方案省电感、体积小但它的输出阻抗偏高带载能力弱而且输出纹波比较大。实测下来负压轨纹波约 5mVpp用在低带宽的精密测量前端可以接受但要做高速信号处理就不够了。对于 1MHz 带宽的简易示波器来说这个底噪还行如果打算做更高速的采集建议换成 DC-DC 负压方案或者加一级 LDO 后级滤波。电源布局上最重要的经验是模拟电路的电源轨一定要单独走线并且用 π 型滤波磁珠电容和数字部分隔离。第一次打样时模拟运放的电源直接从 MCU 电源轨上取示波器通道底噪飙到 80mVpp后来加了一颗 600Ω 磁珠和 10μF 电容组成的 π 型滤波器底噪立刻降到 15mVpp 以下。4.3 可调电源模块0~12V/1A 输出怎么做到低纹波可调电源是所有模块里最难做的。如果用一个 DC-DC 升压加到 12V 以上然后线性稳压到目标电压方案简单但在压差大的时候效率低到离谱如果直接 PWM 调电压输出纹波又难看。我采用的方案是两级结构第一级 DC-DC 升压到 12.5V第二级用LT3080 线性稳压器做 0~12V 连续可调输出。LT3080 是一颗可以用外部 DAC 电压直接控制输出电压的线性稳压器内部基准只有 500mV输出电压跟随控制引脚电压变化。我在控制引脚接一个由 MCU DAC 输出的 0~1.25V 信号再通过运放放大实现 0~12V 调节。线性稳压的优点是电源纹波极低噪声不会叠加到被测电路上。输出纹波实测空载和 0.5A 负载时约 3mVpp满载 1A 时爬到 5mVpp比立项时的 10mVpp 目标要好。但这颗稳压器压差 0.5V 到 7V 不等压差大时热耗很明显1A 满载输出 1.5V 时整机外壳局部温度能到 55℃所以后来我把可调电源的 12.5V 前级升压做成了可关断的切到万用表模式时整组电路断电既能省电又能避免热量传递。5. 固件架构采集、滤波、触发与交互5.1 自动量程怎么避免跳档万用表自动量程是个看起来简单但做好不容易的活。最简单粗暴的做法是先读到 ADC 原始值根据数值大小切换量程。但这样在量程边界附近会频繁跳档信号在 59mV 和 61mV 之间抖一下屏幕就在 60mV 档和 600mV 档之间来回切用户体验极差。我的做法是引入滞回区间。假设 60mV 档的满量程是 59.99mV那么当读数超过 55mV 时才升档回到 45mV 以下时才降档。中间 45mV~55mV 这段区间保持当前档位不变。这样信号在量程边界抖动时档位不会跟着抖。类似地电流档、电阻档也用同样的策略。还有一个细节是换档后第一次读取的 ADC 值要丢弃。因为模拟开关切换后分压网络需要一段时间稳定虽然 ADS1115 自带输入稳定时间但实测 20μs 内读数仍然有跳变。固件里在每次切档后先延时 1ms再连续采样三次取中间值才作为最终读数。5.2 数字滤波组合滑动中值 均值直流电压测量的噪声来源很多被测电路本身的纹波、分压网络的热噪声、ADS1115 的量化噪声。实测下来单纯用均值滤波会把随机噪声压得很好但对脉冲干扰无能为力——比如旁边有人开关空调电源瞬间抖动 50mV均值会把这次干扰平均进结果里读数跳一下。我采用的是滑动中值 滑动均值的组合滤波先取 5 个连续样本做中值滤波把脉冲干扰剔除再把中值序列做 40 个样本的均值。这样既有抗脉冲能力又有足够的平滑度。代价是响应变慢信号变化后读数要 50ms 左右才稳定。对万用表来说这个延迟完全可接受还能避免屏幕数字乱跳。核心滤波代码结构大概是uint16_t median_filter(uint16_t *buf, uint8_t len) { uint16_t tmp[5]; memcpy(tmp, buf, len * sizeof(uint16_t)); // 简单冒泡排序取中间值 for (uint8_t i 0; i len - 1; i) for (uint8_t j 0; j len - i - 1; j) if (tmp[j] tmp[j 1]) swap(tmp[j], tmp[j 1]); return tmp[len / 2]; } // 主循环里 raw ads1115_read(); buf[0]buf[1]; buf[1]buf[2]; buf[2]buf[3]; buf[3]raw; mid median_filter(buf, 4); sum mid; count; if (count 40) { result sum / count; sum 0; count 0; }这个滤波组合在调试万用表档的时候帮了大忙。之前用纯均值滤波显示偶发 1~2mV 的跳动换成中值均值后5V 稳定输入时读数稳定在 4.999~5.001V 之间基本不跳。5.3 示波器模式的定时器与 DMA 采集链示波器模式是固件里最复杂的部分。整体数据流是TIM3 的更新事件触发 ADC1 采样 → ADC1 转换完成后触发 DMA 搬运 → DMA 把数据写进环形缓冲区 → CPU 读取缓冲区绘制波形。我用 STM32 的 ADC1 在 5MSPS 下采样DMA 设置为循环模式缓冲区大小 2048 点。生成波形时用 DMA 的半传输和全传输中断半中断代表前半段缓冲填满全中断代表后半段填满CPU 可以在 DMA 搬运的同时绘制另一半数据这样屏幕刷新和采样互不阻塞。触发功能用的是软件边沿检测在环形缓冲区里扫描找到第一个超过预设触发电平且满足上升沿条件的点从那个点开始往后画一屏波形。这个方法实现简单代价是触发点会有一两个采样周期的抖动。对 1MHz 带宽的简易示波器来说这个精度足够看清波形频率和大致幅值但测精确相位差是做不到的。5.4 菜单交互与状态存储界面设计遵循一眼看到关键数据的原则默认屏是万用表模式大字号显示当前电压/电流/电阻下方一行符号显示档位和单位按快捷键切换到示波器、信号源、可调电源模式。所有设置通过旋转编码器操作编码器每格对应一个步进值。在信号源模式下单击编码器在频率和幅度之间切换旋转调整数值双击编码器切换波形类型正弦/方波/三角长按返回主界面。菜单状态机单独写了一个模块每个模式有两个状态设置项选择状态和数值调节状态状态迁移表放到一个数组里读代码的时候一目了然。用户设置信号源频率、电源输出电压、示波器触发电平在关机时写入 STM32 内部 Flash 的最后一个扇区开机时读取。如果 Flash 里的数据校验失败就恢复默认值。这个细节做了之后再也不用每次开机重新设置参数了体验感提升很明显。6. 校准与实测把误差压进0.5%以内6.1 为什么要做分段校准任何仪表类设备硬件设计完了只算完成一半剩下的一半是校准。分压电阻有 0.1% 的容差ADS1115 的增益误差典型值 0.1%INA226 的失调也客观存在这些误差叠加起来不校准直接用的万用表能偏出 1% 以上做电源调试勉强能用但要确认电压带载精度就差口气。校准的核心思路是用已知标准值修正 ADC 读数和真实值之间的增益/偏移误差。在校准模式下对每个量程记录若干个标定点计算线性校准系数存到 Flash。ADC 读数和实际电压之间的关系近似一条直线真实值 增益系数 × ADC 读数 偏移量。对每个量程分别校准生成一条校准线。6.2 校准流程没有六位半也有土办法实验室有六位半台式万用表当然最好用 Fluke 或 Keysight 输出标准电压、电流、电阻对每个量程取 3~5 个点记录。没有这个条件也别急我第二版校准用的是自己手里一台四位半二手万用表加一个基准电压源照样能把误差压进 0.5%。具体做法把可调电源设为校准源输出 0V、1V、5V、10V、30V、60V 六个电平用四位半万用表精确测量实际输出电压然后把这个值和设备 ADC 读数一起记录计算校准系数。电流档用恒流电子负载或者精密电阻箱比如 100Ω 1% 电阻加可调电源测 1mA、10mA、100mA、1A 四个点。校准表存在 Flash 里格式很简单量程编号、标定点数、标定电压数组、ADC 原始值数组、增益系数、偏移量。软件启动时读取这张表每次测量都走一遍校准插值。6.3 实测数据汇总第三版样机校准完成后的实测数据如下。电压档单位 V外部标准值设备显示值绝对误差相对误差0.0000.0010.001-1.0001.0010.0010.10%5.0004.9980.0020.04%12.00012.0120.0120.10%30.00030.1030.1030.34%60.00059.8410.1590.27%电流档单位 mA采样电阻 0.1Ω INA226外部标准值设备显示值绝对误差1.0000.9970.00310.0010.030.03100.099.80.2100010066整体精度都在 0.5% 以内电压档低量程表现最好高量程误差来源主要是分压电阻比例和 ADC 的非线性。作为便携调板工具这个精度完全可以接受。可调电源负载调整率实测设定电压空载实测0.5A 负载实测1A 负载实测3.3V3.302V3.291V3.275V5.0V5.004V4.992V4.976V12.0V12.012V11.986V11.952V1A 满载时最大电压跌落约 48mV也就是 0.4% 的调整率对调板场景完全够用。需要更好负载调整率的话得用更低 LDO 压差的方案但体积和成本都会增加。信号发生器输出幅度平坦度设定 1Vpp负载 1MΩ频率实测幅度1kHz1.002Vpp100kHz0.998Vpp1MHz0.971Vpp5MHz0.882Vpp1MHz 以内平坦度好于 3%5MHz 处跌到 88%主要是后级 OPA340 的增益带宽积不够。如果对高频输出幅度有要求输出运放可以换成增益带宽积更高的型号比如 AD8051。7. 外壳、组装与踩坑复盘7.1 外壳与结构设计PCB 空板尺寸约 85×55mm四层板三块堆叠安装主板在上电源板在中电池在底部三层之间用 3mm 铜柱支撑总高度控制在 25mm 以内。外壳是 3D 打印的选的是 PETG 材料兼顾韧性和耐热性PLA 在夏天车里暴晒容易变形不建议用。外壳设计时留了几个关键开口正面是 1.54 寸 TFT 屏幕和编码器顶部是万用表输入端子两个 4mm 香蕉头母座、信号发生器 BNC 座、可调电源输出端子两个防反插接线柱侧面是 USB-C 充电口和电源开关。布局原则是测量/输出端子朝上操作集中在正面不常用的接口放侧面。这样放在桌面上使用时表笔从上方插入不会被正面屏幕挡住。散热问题前面提过可调电源满载时 LT3080 和电感会热。外壳在电源板位置开了一条长散热格栅配合铜柱把热量导到外壳底面。实测满载连续运行 30 分钟后外壳底面最高温度约 52℃握持区侧面约 40℃勉强能接受。7.2 踩坑记录调试中遇到的五个问题第一版和第二版样机调试过程中踩了不少坑挑最典型的五个记录一下省得后来者重走弯路。坑一模拟开关导通电阻造成零点漂移。量程切换用的是 ADG729 双通道模拟开关它的导通电阻标称 1Ω但实际随温度变化有 20%~30% 的波动。在精密电阻分压网络后面串一个变化的电阻直接影响分压比。解决办法是把模拟开关从分压网络的主通路挪到档位选择位置让测量电流尽量只流过精密电阻模拟开关只负责把目标节点的电压引到 ADC 输入端这样导通电阻不在信号主通路上影响可以忽略。坑二INA226 低边采样造成的地弹。INA226 的采样电阻串在负载的回路里当负载电流瞬间跳变时采样电阻两端压降变化 0.1V这个变化会直接反映在模拟电路的地电位上。第一次调试时发现可调电源输出 0.5A 时万用表电压档的读数会莫名跳 20mV查了半天发现是电源回路的电流流过 INA226 采样电阻在地线上产生了压降干扰。解决办法是把模拟前端的地线在 PCB 上单独布一小块模拟地平面只在单点通过磁珠连接到电源地避免大电流回路流经测量地。坑三示波器通道串扰。信号发生器输出和示波器输入在 PCB 上走线相距太近信号源输出 5MHz 方波时示波器输入端能看到明显的高频串扰。后来把两条走线分开中间加了一根 0V 地包围隔离串扰幅度从 50mV 降到 5mV 以下。这个教训在所有多模块混合电路里都适用高频信号线必须包地或者至少和敏感模拟走线拉开 3 倍线宽以上的距离。坑四IP5306 发热。IP5306 最大充电电流 1A充电时芯片温度能到 65℃贴着电池盒时间长了有隐患。我在充电回路里加了一颗热敏电阻贴在电池附近温度超过 45℃ 就自动把充电电流降到 0.5A温度回落后再恢复。这个保护逻辑很便宜但要尽早加电池安全是底线。坑五屏幕 SPI 干扰。ST7789 SPI 时钟频率设到 40MHz 时屏幕刷新是流畅了但 SPI 的信号线会向整个 PCB 辐射高频噪声导致 ADS1115 在 860SPS 下的读数噪声从 2μV 涨到 15μV。最后把 SPI 时钟降到 20MHz刷新率少了 10fps但模拟测量噪声恢复到了正常水平。对混合信号设备来说数字总线的速率不是越高越好要给模拟电路留出干净的工作环境。7.3 成本清单与后续改进方向整机物料成本大概列一下方便想复刻的朋友评估预算器件型号/规格大约成本MCUSTM32F407VET628 元ADCADS111512 元DDSAD983318 元电流检测INA2269 元屏幕1.54寸 IPS ST778918 元可调稳压器LT308012 元电荷泵ICL76603 元电池18650 2600mAh15 元充放电管理IP53068 元PCB 阻容元件四层板 全板60 元外壳PETG 3D打印15 元其他端子、按键、编码器-25 元合计约 223 元量产压到 200 元内不成问题。相比同功能的四台入门级台式仪器成本优势非常明显。后续如果要继续做我手头有四个方向一是给可调电源加恒流CC模式这样从可调电压源升级成可编程电源能直接带 LED 驱动和电池充电场景二是把示波器触发改成硬件比较器触发触发抖动会好很多三是加一个 USB 转虚拟串口把采集数据传到电脑上做长时间记录四是换一个支持低功耗待机的 MCU让设备在闲置 10 分钟后自动睡过去把待机电流从 15mA 压到 1mA 以下。最后分享一个我反复体会到的经验做这种小型化设备真正难的从来不是把四个功能做出来而是让它们在一个小空间里稳定共存。电源的纹波、数字总线的噪声、模拟电路的精度每一项都在互相影响。第一批样机跑起来各有各的问题调到最后你会发现所有问题都指向同一个根源布局和隔离没做好。所以如果你想做类似的东西第一版 PCB 布局千万别省事模拟、数字、电源三块区域的隔离和滤波规划得越早后面调试的时间就越少。