简介基于STM32F103的空气净化器硬件与软件一体化设计工程使用Altium Designer 09完成原理图与PCB布局适用于物联网设备开发、嵌入式系统学习及环境监测类项目实践。工程包含160个文件压缩包4.61MB其中c/h源码涵盖驱动与上层逻辑uvprojx为Keil工程pcbdoc与schdoc为PCB和原理图辅以hex、map等编译输出便于直接查看与二次开发。已有909人学习下载。整套资料完整覆盖ADC传感器采集、电源管理、电机控制、通信接口、安全保护等硬件关键点以及外设驱动、数据处理、控制逻辑、用户交互、异常处理与固件升级机制等软件设计要点。从原理图、PCB到程序源码形成闭环既能帮助初学者理解嵌入式项目从电路设计到代码实现的完整流程也可为开发者提供可复用的空气净化器参考方案具有不错的工程参考与学习价值。1. 基于STM32F103空气净化器从方案到产出硬件、PCB与固件先想清楚再动手空气净化器这一类以 STM32F103 为核心控制器的硬件项目交付物通常拆成三块硬件原理图、PCB 和软件程序源码。“基于STM32F103空气净化器AD设计硬件原理图PCB软件程序源码.zip” 这个名字恰好把三块并列在一起但真正动手时顺序是反过来的先定需求再画原理图然后 PCB最后写固件。这个项目要解决的核心问题很简单实时采集 PM2.5 和温湿度根据浓度自动调节风机转速并在显示屏上给出反馈。它适合做毕业设计、小家电预研或者环境物联网节点的人参考对五年以上经验的工程师也能从外设选型、电源分区和固件时序里找到可复用的边界条件。下面按“最小系统→AD 原理图→PCB→固件→调试量产”这条完整链路展开。2. STM32F103最小系统与AD原理图设计先把最小系统画对再挂外围2.1 最小系统设计电源、复位、晶振和BOOT引脚的AD原理图实现空气净化器主控我一般选 STM32F103C8T648 脚 LQFP 封装Flash 64KB、RAM 20KB采集两路模拟量、跑 20kHz PWM 和 OLED 刷新都够用成本也压得住。只有要挂彩屏和 WiFi 模块时才考虑换 RCT6 或 ZET6。所谓 stm32f103 最小系统不是把芯片放在板上就行而是把电源、复位、时钟、BOOT 和下载接口这五样画对。第一项电源DC 输入端加防反接 MOSFET 和 TVS5V 通过 AMS1117-3.3 给 MCU 供电STM32F103 的 VDDA 不能直接接 VDD要加 LC 滤波VREF 就近接 VDDA否则 ADC 采集 PM2.5 的值会随数字开关噪声漂移。第二项时钟8MHz 晶振并联一只 1MΩ 电阻两个 20pF 负载电容到地晶振下方不要走其他信号线。第三项复位NRST 对地接 100nF 电容内部上拉已经够用但我习惯再并联一个 10kΩ 到 3.3V不容易被干扰拉低。第四项 BOOTBOOT0 和 BOOT1 都要用 10kΩ 下拉到地不能悬空网上很多 stm32f103c8t6 最小系统板原理图里 BOOT0 只串了一个电阻如果电阻阻值偏大会让芯片在上电瞬间误入 ISP 模式后面 DAP 下载失败就找这个原因。第五项 SWDPA13、PA14 直接引出到排针串 33Ω 电阻到调试器能减少线缆反射。在 AD 中画原理图时我把最小系统单独放一页传感器和执行器放第二页。跨页信号全部用网络标号连接不要用 off-sheet connector生成网表时更干净。对照现成的 stm32f103最小系统模板时重点检查 VDD、VDDA、VSS、VSSA、NRST、BOOT0 是否都有网络ERC 不会报“网络只有一个引脚”这种错误但实际焊上去就是跑不起来。下面这段引脚定义头文件建议网络标号命名和它保持一致。/* stm32f103_air_purifier_pins.h * 与AD原理图网络标号对应固件和硬件共用同一套命名 */ #define PM25_ADC_PORT GPIOA #define PM25_ADC_PIN GPIO_Pin_0 // PA0: ADC1_IN0, 接GP2Y1010AO输出 #define DHT11_PORT GPIOA #define DHT11_PIN GPIO_Pin_1 // PA1: 开漏输入/输出接DHT11 DATA #define FAN_PWM_PORT GPIOA #define FAN_PWM_PIN GPIO_Pin_8 // PA8: TIM1_CH1, 20kHz低频脉冲 #define NEGATIVE_ION_PORT GPIOB #define NEGATIVE_ION_PIN GPIO_Pin_1 // PB1: 负离子发生器开关 #define BEEP_PORT GPIOB #define BEEP_PIN GPIO_Pin_10 // PB10: 蜂鸣器脉冲驱动 #define DEBUG_UART USART1 // PA9/PA10115200 8N1PA0 和 PA1 相邻我特意把 PA2 空出来让 PM2.5 的模拟输入和 DHT11 的数字信号隔一个引脚降低串扰。PA8 是 TIM1_CH1属于高级定时器输出 PWM 前要记得打开 MOE 主输出。PA9、PA10 的 USART1 挂在 APB2 总线上最大时钟 72MHz和后面 USART3 所在的 APB1 时钟不同初始化时寄存器重装值不能照抄。2.2 传感器、风机驱动和显示电路从DHT11到PM2.5的AD外围设计空气净化器常见的环境传感器包括 DHT11 或 DHT22 温湿度模块以及夏普 GP2Y1010AU0F 灰尘传感器。DHT11 的数据线是单总线协议需要 4.7kΩ 上拉到 3.3VMCU 引脚配成开漏模式。GP2Y1010 比较特殊内部有一个 LED 驱动引脚要通过一个晶体管给红外 LED 提供脉冲电流AO 输出是 0~3.5V 左右的模拟电压而 STM32F103 的 ADC 量程最大 3.3V所以 AO 到 PA0 之间要加电阻分压或运算放大器跟随。我一般用 10kΩ 和 20kΩ 分压比例约为 0.67同时并联 1nF 电容滤掉 320Hz 脉冲残留。传感器电源引脚旁边放 100nF 和 10μF 电容空气净化器里风机启停瞬间母线电压波动大这两个电容绝对不能省。风机驱动有两种做法。小功率风机用 N-MOS 管 AO3400 低边驱动由 PA8 的 PWM 直接推栅极栅极串联 10Ω 电阻、并联 10kΩ 下拉大功率风机则用 DRV8871 或 L9110S 这类电机驱动芯片。风机是感性负载无论哪种接法电机两端都要反并联一个续流二极管否则关断瞬间的感应尖峰会击穿 MOS 管。这一条在 PCB 布线规则和技巧里永远排在前面。显示和交互我用 0.96 寸 OLEDI2C 接口加两个按键加蜂鸣器OLED 的 SCL、SDA 接 PB6、PB7上拉电阻 4.7kΩ蜂鸣器用 NPN 三极管驱动PB10 输出 2kHz 脉冲比直接给高电平功耗更低、声音更大。负离子发生器的高压模块与 MCU 不能直接共地要用光耦隔离原理图里把输入侧地标 DGND输出侧标 PGND两边的地最后只在电源入口处单点相连。这样画后面的 PCB 地平面切割才有依据。下面是这块板的关键引脚分配表可以直接当成 AD 原理图的 Net Label 清单。功能MCU引脚外设/网络关键参数PM2.5 AOPA0ADC1_IN010k/20k分压并联1nFPM2.5 LEDPA2TIM2_CH2 PWM320Hz占空比2%正脉冲温湿度PA1DHT11 DATA4.7kΩ上拉开漏模式风机PWMPA8TIM1_CH120kHz驱动AO3400栅极OLED SCLPB6I2C1_SCL4.7kΩ上拉OLED SDAPB7I2C1_SDA4.7kΩ上拉蜂鸣器PB10GPIO输出2kHz脉冲NPN驱动负离子控制PB1GPIO输出光耦隔离驱动高压模块调试串口PA9/PA10USART1115200-8-N-1PM2.5 LED 的 PWM 不是用来调速而是产生传感器需要的采样脉冲占空比 2% 这个值是从 GP2Y1010 数据手册里来的不建议为省电把它改小电压会掉到测量范围下限。OLED 和蜂鸣器都属于低速外设和风机 PWM 不在同一个定时器下固件里方便错开中断优先级。2.3 AD原理图检查与元器件库对照避免页码重复和引脚悬空AD 里最容易犯的错是页面的 Page Number 没有递增多张 Schematic 都叫 1。生成网表时原理图页面互相覆盖PCB 里会出现莫名多出来的飞线。我之前遇到过一个项目两页原理图 Page Number 都设为 1编译不报错但导出网表后第二页的元器件全部没进 PCB查了一下午才发现是这个原因。正确做法是 Sheet Number 按 1、2、3 顺序编号并在工程选项里打开“Annotate Schematics Quietly”让 AD 自动标号。元器件库对照表建议自己维护一张 Excel至少包含原理图库名、封装名、PCB 位号、物料编号、是否直插。很多“AD中元器件库对照表”里没有把 AMS1117 的封装与原理图符号的脚位对应好结果画到 PCB 阶段发现三端稳压器 2 脚和 3 脚颠倒。检查方法是在原理图中选中元器件执行 Tools → Footprint Compare确认每个引脚都映射到封装焊盘。若从 DWG 文件导入 AD 做板框导入后先转换成 Keepout 层、再检查线条是否闭合不要拿它直接当 Mechanical 层用后续改板框时容易丢。画完原理图先执行 CompilerMessages 面板里的 Error 和 Warning 逐条处理。最常见的是 “Pin not connected” 和 “Net has only one pin”几乎都是连线漏了。ERC 通过后在 AD 的工程选项里导出 PDF 检查一遍连接关系重点看 DHT11 的 DATA 和 PM2.5 的 AO 是否接到了正确的 PA 口。页码重复、封装错位、引脚悬空这三类问题都解决之后才允许进入 PCB 阶段。3. AD20 PCB布局布线从板框到铜皮挖空的双面板设计3.1 板框、层叠与关键区域预划分PCB 尺寸由外壳决定。我这里按常见的 100mm×100mm 以内的双层板设计板厚 1.6mm。双层板做空气净化器足够因为系统里没有射频主控只有 20kHz 的 PWM 和模拟采样。层叠按顶层走信号、底层整面铺地来做电源网络用底层铜皮分割。先在 Mechanical 1 层画闭合的板框再用 Design → Board Shape → Define from selected objects 生成 Board Shape。板框四个角加 45° 倒角或 2mm 圆角后边手工焊和装外壳都不容易划手。布局阶段先固定连接器DC 电源座放板边风机输出端子放板边但远离天线区域OLED 插座放一侧按键放对面。真正核心的两条路径是“PM2.5 传感器到 MCU 的模拟走线”和“风机 MOS 管的大电流回路”这两条路径在布局时就要物理隔离。我的做法是在 PCB 上画一条虚拟分割线把板子划成三个区左上角数字区MCU、晶振、SWD右上角模拟区PM2.5 传感器、DHT11、分压电阻下方功率区DC 座、防反接 MOS、风机端子、负离子高压模块。模拟地和数字地用 0Ω 电阻单点相连功率地与它们之间通过铜皮和 Polygon Cutout 隔开而不是简单铺一大块地。如果未来要加 WiFi 模块建议直接按四层板规划但 AD 里的铺铜和多边形挖空思路一致。模拟区、数字区、功率区三块之间信号线只能通过 0Ω 电阻或光耦跨越避免地环路。3.2 风机大电流走线与模拟信号隔离敷铜、过孔、铜皮挖空风机 PWM 信号从 PA8 出来到 MOS 栅极走线要短粗至少 15mil 宽并就近通过 20mil 走线回到功率地。MOS 管的 S 极直接接电源输入负端D 极接风机负端风机正端接 DC 电源正这样大电流回路完全避开模拟区。如果这块板子是我在 AD20 里画会把底层铺铜分成两块一块是数字地一块是功率地之间用 Polygon Pour Cutout 挖开 1mm 的缝隙再在缝隙处放一个 0Ω 电阻做过孔桥。热词里总有人搜“ad20中pcb板铜皮挖空”指的就是选中已生成的 Polygon执行 Tools → Polygon Cutout禁止该区域覆铜不要在 Keepout 层直接画线那样只是规则限制不会真正挖掉铜皮。电源走线宽度按 1A 电流 0.5mm 经验值往上加。空气净化器风机电流通常在 0.3A~1A我用 1.5mm~2mmDC 座到防反接 MOS 一段再加宽到 2.5mm并补一个 100μF 电解电容。大电流路径要画成星型不要指望底层大面积地自己找回流路径铜皮上的电流会沿最低阻抗路径走可能正好穿过 ADC 的模拟地。信号和功率走线尽量减少平行长度若平行间距拉到 3 倍线宽以上。每个 MCU 去耦电容下方至少放一个地过孔过孔内径 0.3mm、外径 0.6mm。PM2.5 的 AO 走线只有几 mA宽度 10mil 就够但在其两侧各放一条接地走线做护屏并把护屏两端接地。负离子高压模块下面不要铺铜避免高频高压对地放电打坏 MCU做法就是在这里放一个 Polygon Cutout。3.3 DRC检查与Gerber导出钻孔文件名称和光绘层设置在 AD 中设置布线规则Line Width 最小 6mil、Vias 内径 0.3mm、外径 0.6mm、Clearance 默认 7mil。电源网络的 Clearance 我会单独设成 10mil防止板厂蚀刻偏差导致短路。执行 Tools → Design Rule Check勾选 Report 生成报告常见报错是 Via Misplaced 和 Silk Over Component。丝印和焊盘间距至少要 5mil否则打样回来丝印盖住焊盘贴片对位困难。DRC 清干净后导出 Gerber 前还要先设置钻孔文件。AD 导出的钻孔文件名称默认生成的形如“ProjectName-Drills.TXT”有些版本会简化为“Drill_File.TXT”板厂一般都能识别但最好在光绘设置里把 Drill Drawing 层也输出方便人工核对。用 AD20 导出 Gerber 时选择“File → Fabrication Outputs → Gerber Files”Format 选 2:5层选 Top Layer、Bottom Layer、Top Overlay、Bottom Overlay、Top Solder、Bottom Solder、Drill Drawing。然后单独执行“File → Fabrication Outputs → NC Drill Files”生成 NC Drill 文件。如果板厂要求把钻孔文件合并进 Gerber把“Drill Files”选项里的“Output file”改成“Drill_File.TXT”即可。收到的文件归档时按下面这张表检查是否齐全。文件项扩展名/类型备注Top Layer.GTL顶层走线Bottom Layer.GBL底层走线Top Solder.GTS顶层阻焊开窗Bottom Solder.GBS底层阻焊开窗Top Overlay.GTO顶层丝印Bottom Overlay.GBO底层丝印Drill Drawing.GDD钻孔位置图NC Drill.TXT钻孔程序认准 Drill_File收到板厂回传的文件后用 AD 的“File → Import → Gerber”把 Gerber 重新导入再和原始 PCB 对比重点看铜皮挖空位置和过孔是否丢失。这一步能避免因为 AD 版本不同导致的光绘层命名不一致也能发现板厂是否擅自删除了 Polygon Cutout。4. STM32F103固件标准外设库与HAL库的选择、传感器驱动和风机控制4.1 固件工程结构stm32f103库v3.50、启动文件与时钟树固件部分我仍然建议用 ST 标准外设库 v3.50而不是新版 HAL。这个版本的库把寄存器操作封装好了又不遮住底层看代码能直接算出来定时器溢出时间。HAL 库现在硬件抽象更完整但对这个量级的项目来说代码体积偏大而且网上大量 stm32f103 例程都基于标准库照着移植起来快。工程目录固定为Libraries/CMSIS 放内核头文件Libraries/STM32F10x_StdPeriph_Driver 放外设驱动Project/User 下放 main.c、stm32f10x_it.c。启动文件选 startup_stm32f10x_md.s这是中密度芯片的向量表C8T6 和 RBT6 都适用。如果从别的工程复制启动文件记得检查文件头的中断向量数量用错密度会导致程序死在 HardFault。时钟树方面system_stm32f10x.c 默认用 8MHz 外部晶振倍频到 72MHz。只要原理图里晶振没有画错固件里不需要改 PLL 参数。调试时可以用 RCC_GetClocksFreq() 读回 HCLK、PCLK1、PCLK2确认 APB2 是 72MHz、APB1 是 36MHz。串口 1 在 APB2串口 3 在 APB1初始化时要用同一个 PCLK 计算波特率这里最容易出现“串口1正常串口3乱码”的现象。4.2 DHT11与PM2.5传感器读取单总线时序与ADC多路采集DHT11 的时序宽度都在微秒级延时不准确就全乱。发送起始信号时主机先把数据线拉低 18ms再释放并拉高 20~40μs然后切换到输入模式。DHT11 会回应一个 80μs 低电平和 80μs 高电平之后开始输出 40 位数据。每一位的判定以高电平宽度为准26~28μs 算 070μs 算 1。下面是一个简化版的 DHT11 读字节函数uint8_t DHT11_ReadByte(void) { uint8_t i, data 0; for (i 0; i 8; i) { // 等待数据线被DHT11拉高表示开始输出一个位 while (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) RESET); delay_us(40); // 高电平持续40us之后采样 if (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) SET) { // 40us后仍为高说明是“1”等待高电平结束 data (data 1) | 0x01; while (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) SET); } else { // 40us后已经变低说明是“0” data (data 1); } } return data; }这个函数的关键在于 40μs 采样点。先等低电平结束再延时 40μs 判断高低。如果是 0高电平只有 26~28μs采样点已经掉到低如果是 1高电平持续 70μs采样点仍在高。注意整个读取过程不能被中断打断否则延时一飘一位数据就反了。建议在读取期间用 __disable_irq() 关中断读完再 __enable_irq()或者用 NVIC 的 BASEPRI 寄存器屏蔽掉除 DHT11 外所有可屏蔽中断。PM2.5 传感器用 ADC 采样GP2Y1010 的输出电压与粉尘浓度近似线性。它的红外 LED 需要 320Hz、占空比 2% 的 PWM 驱动脉冲采样点要等 LED 开启后 280μs 再触发 ADC。这个时序在固件里可以用 TIM2 的 TRGO 事件触发 ADC 注入组减少 CPU 负担。如果只写一个空循环延时去采样电机会把电源噪声耦合进测量值数据跳动能到 0.2V。ADC 初始化时采样时间设为 239.5 周期因为分压后的等效阻抗偏高短采样时间充电不足。如果项目要扩展多路捕获比如同时采集 PM2.5、光敏电阻和风扇转速脉冲可以用 ADC1 多通道扫描模式加 TIM4 输入捕获。STM32F103 的捕获通道是 16 位计数器测频率时要注意溢出处理用定时器级联或记录溢出次数可以扩到 32 位。串口调试时USART1 的波特率寄存器是基于 72MHz 时钟算的USART3 要基于 36MHz如果代码里用同一个函数初始化两个串口必须在函数入口先读 RCC_GetClocksFreq() 区分 PCLK2 和 PCLK1。4.3 风机PWM与自动控制ADC均值滤波和阈值切换实现净化逻辑风机 PWM 输出用 TIM1_CH1配置成 PWM1 模式频率 20kHz。这个频率已经超出人耳敏感范围风机也不会发出尖锐的啸叫声如果把频率降到 1kHz耳边会一直有“滋啦滋啦”的电流声。初始化代码如下void FAN_PWM_Init(void) { TIM_TimeBaseInitTypeDef TIM_BaseInitStructure; TIM_OCInitTypeDef TIM_OCInitStructure; // 使能TIM1和GPIOA时钟注意TIM1是APB2外设 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE); // PA8复用为TIM1_CH1 GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_2); // 72MHz / 72 1MHz计数时钟 TIM_BaseInitStructure.TIM_Prescaler 72 - 1; TIM_BaseInitStructure.TIM_CounterMode TIM_CounterMode_Up; TIM_BaseInitStructure.TIM_Period 50 - 1; // 1MHz / 50 20kHz TIM_TimeBaseInit(TIM1, TIM_BaseInitStructure); // PWM1模式占空比由TIM_Pulse决定这里50% TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse 25; TIM_OC1Init(TIM1, TIM_OCInitStructure); // 高级定时器必须置MOE位才有波形输出 TIM1-BDTR | TIM_BDTR_MOE; TIM_Cmd(TIM1, ENABLE); }预分频 72-1 得到 1MHz 计数频率Period 50-1 输出 20kHzTIM_Pulse 改成 10 就是 20% 占空比。TIM1-BDTR | TIM_BDTR_MOE这一行只对 TIM1、TIM8 有效如果换到 TIM2把这个寄存器操作删掉否则编译报错。控制逻辑方面PM2.5 浓度超过 35μg/m³ 时风机全速低于 15μg/m³ 时降到 20% 占空比中间按线性插值输出。ADC 采样结果先做 16 次中值滤波再进控制算法防止偶尔一颗灰尘脉冲导致风机突然加速。温湿度用来决定是否开启负离子发生器温度高于 30℃ 或湿度大于 70% 时不建议开否则会产生更多臭氧味。如果后续需要输出模拟量STM32F103 的 DAC 可以生成直流或正弦波。DAC 输出经过运放缓冲后能直接做风速传感器激励或者控制外部净化模块配合 DMA 循环搬运正弦表和定时器触发能生成任意频率的正弦波而不占 CPU。网上搜“stm32f103 dac 正玄波”基本就是这个套路。另外注意 PA11 的引脚冲突PA11 和 USB_DM 共用引脚如果这块板子不用 USB把 PA11 当普通 IO 用必须确认没有使能 USB 外设时钟否则上电瞬间 PA11 会跳到 USB 状态导致继电器误动作。4.4 串口调试与状态机把PM2.5数据可靠地发出去调试信息用 USART1 输出帧格式用简单的文本行比如“PM2.5: 32.1, RH: 45%, TEMP: 23.5”。接收端用串口助手或 Python 脚本记录。发送函数里不要同时用 printf 和中断最好自己写一个 FIFO把要发送的字符串放进环形缓冲中断里逐字节发送。否则在主循环里调用 printf 会阻塞整个控制流程传感器采样和 PWM 调节会一起卡。状态机里区分“待机、自动、手动、错误”四种状态按键切换时要做消抖和长按判断。错误状态包括 DHT11 通信超时和负离子模块过流出现错误时蜂鸣器和 OLED 同步报警风机进入强制 20% 占空比运转。5. 下载调试与量产前的检查清单从DAP下载失败到Gerber复查5.1 BOOT0与DAP下载失败的快速定位如果 DAP 下载失败先说最常见的“No target connected”第一步用万用表量 BOOT0 电压它必须稳定在 0V 附近。BOOT0 悬空或者被电容拉到 0.8V芯片可能进了 ISP 模式或随机启动。第二步量 SWDIO 和 SWCLK 的波形PA13 和 PA14 上如果并了大电容DAP 握手信号边沿被拖慢会报“Cannot access target”。把 RDDI-DAP Error 出现时的复位方式改成“HW RESET”或者用 STM32CubeProgrammer 的“Connect under reset”模式大多数情况下都能救回来。还有一类是电源电压不足目标板 VDD 低于 3.0V 时DAP 还能识别到 IDCODE但下载到一半报校验失败。检查 AMS1117 的输出电容是不是 22μF输出端到 MCU 的走线是否够宽。5.2 联调阶段的5个快速验证点第一AF 引脚功能。用 GPIO_PinAFConfig 配置后再读一下 GPIOx-AFRL 或 AFRH 寄存器确认确实写进去了防止在 AD 原理图里把复用功能引脚标错。第二PWM 波形。示波器量 PA8频率应该是 20kHz ±1%占空比随 PM2.5 浓度变化如果频率差了一倍查预分频是 71 还是 72差一就错。第三DHT11 数据。连续读 10 次如果每次的湿度值波动超过 2%检查上拉电阻和延时函数。这里补充一个细节DHT11 每次读取间隔至少 2 秒连续读太密会直接返回 00。第四ADC 地线。用万用表交流档量 PA0 对 GND 的噪声风机全速时噪声应该小于 30mV超过这个值回去检查模拟地和功率地是否单点连接。第五BOOT1。量产固件里把 BOOT1 固定为 0防止用户上电时误触发 ISP。5.3 归档前的Gerber复查技巧Gerber 回读对比用 AD 的“File → Import → Gerber”把板厂返回的 Gerber 导入再打开原始 PCB 文件把两个文档重叠。PCB 编辑器里把视图切换到“Transparent Layers”把透明度调到 80%就可以快速检查哪些走线被移除了。重点看 Polygon Cutout 是否被保留负离子高压区下方的挖空如果丢失板厂会把铜皮补回来产生高压打火风险。钻孔文件名称“Drill_File.TXT”注意后缀大写不要写成小写“drill_file.txt”某些老式光绘机对文件名大小写敏感。核对完毕再把 BOM 和 AD 的元器件库对照表一起打包交付归档就完整了。本文还有配套的精品资源点击获取