简介面向电子设计竞赛选手与电子信息类学生的无线识别装置赛题文档聚焦阅读器、应答器和耦合线圈构成的无接触数据传输与识别系统可用于课程设计选题、赛题研读和方案对照。资料以1个doc文档收录压缩包约3.24MB内容集中便于在电脑端查阅和整理笔记目前已有127人学习下载。文档完整列出基本要求与发挥部分在至少5cm线圈间距下以80%以上正确率、5秒内完成应答器有无检测和4位编码识别并延伸到应答器从耦合线圈取能、阅读器识别功耗低于2W、断电后保持两个4位二进制数及读写操作。文中还给出设计报告应包含的总体框图、核心电路原理图、主要流程图和测试结果附评分标准并收录空军工程大学作品方案涉及MSP430超低功耗单片机、5.4MHz载波ASK传输、开关式谐振功率放大器和耦合线圈匹配。读者可据此梳理无线通信原理、低功耗电子技术、电源管理、信息存储与测试调试等知识点对照指标分析电路并规划测试。1. 无线识别装置两个空心线圈撑起的中频被动识别系统无线识别装置这个题最容易让人上头的地方在于它把捷径全堵死了不许用现成的射频识别卡也不许用识别专用芯片。剩下的路只有一条——两个直径 6.6 cm 的空心线圈对着放阅读器发一条中频载波既送能量又送指令应答器靠负载调制把数据顶回来。这套系统本质是中频被动式架构载频几兆赫兹作用距离几厘米到二十几厘米整机功耗卡在 2 W 以内应答器一侧甚至要从耦合到的信号里整流出全部电能。适合正在做电子设计类赛题、想把无源取能和负载调制这对组合吃透的读者也适合手上有一堆低功耗器件、想找个真实场景练手的人。2. 方案定型载频、调制方式与线圈参数的三角约束这套装置的所有设计自由度其实是耦合在一起的线圈尺寸和匝数被题目钉死6.6 cm 直径、密绕 10 圈、空气介质电感量就落在 10 μH 到 13 μH 这个很窄的区间里载频一旦选定谐振电容、Q 值、可用带宽、数据率跟着全部确定调制方式又反过来决定接收链的复杂度和功耗。三个变量互相牵制所以先算清楚再动手比焊完再调省太多时间。2.1 载频为什么只能停在几兆赫兹按工作频段粗分低频段在一百到几百千赫兹中频段几兆到十几兆赫兹高频段几百兆赫兹往上。高频有利于远距离传输但分布参数、寄生电容、走线电感全都开始捣乱手工搭的电路很难稳住低频段对线圈电感量要求高通常要到毫亨级而题目给定的线圈结构和尺寸实测下来只有 10~12.9 μH做不出毫亨级。真正的约束来自谐振电容。谐振频率 f 和电感 L、电容 C 的关系是标准的 LC 谐振式载频越低需要的电容越大。拿 10 μH 的线圈配 125 kHz理论电容要 162 nF这个量级的电容本身不难找但回路阻抗低、Q 值上不去次级感应出来的电压幅度太小后面检波和整形几乎没法做。反过来载频推到 13.56 MHz 甚至更高谐振电容只剩几皮法和线圈的分布电容、走线电容同一量级等于你没法用分立电容精确调谐——这是很典型的“算得出来但调不动”。几兆赫兹之所以舒服是因为谐振电容落在几十到两百皮法之间正好在可调电容的覆盖范围内能用示波器看着波形一点点拧到位。另外回路 Q 值决定了带宽BW f/Q数据率按 1~2 kbps 估算取 Q 在 50 到 100 之间带宽就有 40 到 110 kHz码元拖尾不严重选择性也还够。Q 取太高码元之间互相污染误码率反而上升Q 取太低回路选择性差接收端信噪比掉下来。这个“不高不低”的区间是调出来的不是算出来的。2.2 前向链路开关型功放和 ASK 的搭配理由题目限定阅读器单电源供电、识别状态下供电功率不超过 2 W这条指标直接把线性功放排除得差不多了。甲类效率理论上限只有 50%乙类理论 78.5% 但实际因为交越失真和静态电流也难做到丙类靠减小导通角把效率拉到 78% 以上代价是失真大、需要大信号驱动。前向传输的内容是能量加数字指令对波形保真度要求不高对效率要求很硬所以丙类和开关型都合理。开关型功率放大器的做法是让 MOS 管工作在开关状态半桥输出方波再靠后面的 LC 串联谐振回路把方波滤成正弦。理想情况下开关管本身几乎不消耗功率损耗主要在导通电阻和开关瞬间效率能明显高于丙类。我一般会先用丙类搭一版验证链路通不通等确认耦合和检波没问题再换开关型去抠效率和距离因为开关型的调试门槛高一截一上来就搞容易两头不落地。调制上用 ASK更准确说是 OOK实现方式极其朴素一个与门一端接载波一端接数据数据为高时载波照常输出数据为低时输出恒低。前向导通的路径上阅读器先把载波打出去给应答器取能需要发指令的时候再把载波按数据切一刀。这种调制对接收端最友好包络检波就能解代价是抗干扰能力弱但如果线圈距离在十几厘米量级接收到的信号幅度并不小包络检波完全够用。2.3 反向链路直接负载调制还是副载波反向传输是这套装置的技术核心。阅读器和应答器的两个线圈构成一个变压器耦合模型应答器侧的负载变化会通过互感反射到阅读器侧改变阅读器线圈两端的电压幅度。反射阻抗和 (ωM)²/Z₂ 成正比也就是说只要周期性改变应答器回路的阻抗阅读器端就能看到包络起伏检波放大之后就是数据。近场条件也要核算一下。4 MHz 对应的波长是 75 m按 d λ/(2π) 判断准静态场边界在 11.9 m实际工作距离 5 到 25 cm远在这个范围之内变压器模型成立。这就是为什么题目敢让你用两个空心线圈而不是真天线。反向调制方式实现复杂度抗干扰可用数据率适合距离直接负载调制低一个模拟开关即可一般低5~25 cm副载波负载调制ASK中要提取载频并分频较好中10~30 cm副载波 FSK高双频点振荡加判决最好中20 cm 以上直接负载调制的实现就是拿一个模拟开关并在谐振回路两端数据为 1 时开关导通回路失谐反射到阅读器侧的幅度变小数据为 0 时开关断开回路正常谐振。像 TS5A3166 这类模拟开关带宽 300 MHz、导通电阻 0.9 Ω、1 MHz 时关断衰减 64 dB拿来干这个活绰绰有余。它的好处是电路极简应答器上几乎不增加功耗坏处是抗干扰全靠阅读器端的滤波和判决。副载波方案是在应答器上把阅读器发来的载频提取出来分频后与数据相与再用这个信号去控制负载开关。这样反向数据就搬到了一个偏离载频的频点上阅读器端可以用带通滤波器把它和前向载波分开抗干扰能力明显好代价是应答器多了分频和提取电路功耗上去了。如果发挥部分要求应答器完全无源这个额外的功耗得仔细掂量。2.4 谐振电容和线圈电感的实算动手之前先跑一遍数能省掉大量的“焊完了发现调不动”。下面这段脚本把谐振电容、Q 值和线圈电感估算放在一起改几个参数就能复用。import math def resonance_cap(f_hz, l_h): 理想谐振电容由 f 1/(2*pi*sqrt(L*C)) 反解 return 1.0 / (4 * math.pi ** 2 * f_hz ** 2 * l_h) def coil_inductance(n, radius_m, length_m): 单层空心线圈 Wheeler 近似用于绕制前粗估电感量(单位 H) 形参n 匝数radius_m 线圈半径(米)length_m 绕制长度(米) l_uh (n ** 2 * radius_m ** 2) / (0.228 * radius_m 0.254 * length_m) return l_uh * 1e-6 def bandwidth(f_hz, q): 谐振回路 -3dB 带宽用于判断能否支撑目标数据率 return f_hz / q # 题目给定直径 6.6cm密绕 10 圈线径 0.8mm L coil_inductance(n10, radius_m0.033, length_m10 * 0.0008) print(f估算电感 L {L*1e6:.1f} uH) for f in (4.0e6, 5.4e6): c resonance_cap(f, L) print(ff{f/1e6:.1f} MHz - C{c*1e12:.1f} pF, fQ60 时带宽{bandwidth(f,60)/1e3:.0f} kHz)参数说明radius_m填线圈半径而不是直径6.6 cm 直径对应 0.033 mlength_m是 10 圈紧挨着绕完的总长度用线径乘以匝数估。跑出来的电感大约 11 μH和实测的 10~12.9 μH 吻合说明这个近似够用。4 MHz 下谐振电容约 122 pF5.4 MHz 下约 87 pF这两个值都是“理想值”实际绕出来的线圈有分布电容、焊点有寄生电感通常要把可调电容并在固定电容上留出 ±20% 的调整余量。提示算出来的电容只是起点不要直接按这个值买固定电容焊死。留一个 5/24 pF 的可调电容做微调扫频时看哪一侧偏比反复拆焊快得多。3. 硬件落地从绕线圈到收发前端的可复现取值理论算完真正决定成败的是几处很具体的取值线圈绕好后的实际电感、匹配电容的初值、整流后能拿到多少电流、检波电路从线圈上取信号时怎么不把 Q 值带塌。这几处每一处错了现象都是“距离上不去”或者“能识别但偶尔翻车”非常难定位。3.1 线圈绕制和电感实测题目给的做法是可以直接用 6.6 cm 左右的易拉罐当骨架绕好取下用绝缘胶带固定。操作上有几个细节值得说漆包线直径不超过 1 mm太粗绕不紧太细机械强度不够绕的时候线要紧贴骨架匝与匝之间不留缝间隙会让绕制长度变大、电感下降绕完取下之前先用胶带在几个方向固定取下时线圈会回弹直径变大会让电感掉一截。实测电感有两种办法。有 LCR 表最省事直接夹住线圈两端读数但要注意测试频率很多手持 LCR 表默认 1 kHz测出来和几兆赫兹下的有效电感有差异。没有 LCR 表就用谐振法把线圈和一个已知容量的电容并联用信号发生器串一个小电阻激励示波器看幅度最大点读出频率再反解电感。步骤操作观察点1线圈并联已知电容如 100 pF焊接尽量短2信号发生器经 1 kΩ 串入回路幅度不要太大避免非线性3频率从 1 MHz 扫到 10 MHz找幅度峰值点 f₀4反解 L 1/(4π²f₀²C)与 Wheeler 估算对照如果实测值和估算差 20% 以上先查匝数有没有数错、线圈直径回弹了多少再查焊点和引线。引线长度对这一档电感影响很大两根 5 cm 的飞线就能加进去零点几微亨。3.2 匹配网络和两端谐振方式阅读器侧一般用串联谐振因为功放输出的是电压源性质串联谐振时回路电流最大线圈上能拿到最大的交变磁场。应答器侧用并联谐振因为要的是回路两端的高电压方便整流取能。两端都调到同一个频率就是所谓的全谐振状态。实际操作中很难真的达到全谐振因为线圈间距一变互感就变反射阻抗跟着变回路的等效谐振点会漂。这是血泪经验台面上调好的参数把线圈挪远 5 cm 就失谐了。所以调谐时不要死盯着某一个距离而是在目标距离区间的两个端点各调一次取中间值让回路在整段区间内都不至于跑太偏。匹配电容的初值直接取上一节算出来的值实际装配时固定电容取计算值的 70~80%剩下 20~30% 交给可调电容。固定电容用 NP0/C0G 材质的瓷片电容温度稳定性好不要用 Y5V 或电解电容几兆赫兹下它们的等效串联电阻和容值漂移都很难看。3.3 应答器取能整流、储能和限压应答器拿到的交流电压幅度跟距离强相关5 cm 时可能有好几伏20 cm 时只剩几百毫伏整流器件的选择直接决定最远工作距离。普通硅二极管正向压降 0.6~0.7 V在信号只有几百毫伏的距离上根本整不出来肖特基压降 0.2~0.3 V能救回来一部分但反向漏电流大在整流电压还没建立起来的时候会把储能电容放掉。我一般用全桥结构配肖特基四个管子的一致性要好否则正负半周不对称输出纹波大。储能电容的取值是个折中。太小负载一拉就掉到复位门限以下太大上电建立时间变长识别响应时间指标会受影响。经验值是几百纳法到 1 μF 之间配合 3 V 左右的稳压管限压。限压这一步不能省距离很近的时候整流输出可能冲到十几伏直接灌进单片机就烧了。限压用的稳压管要选低动态电阻的否则电压一高它就吃电流白白浪费掉本来就不多的能量。整流之后的电流能力是硬指标。实测下来整流滤波加限压之后3 V 电压下大概只能提供 3 mA 左右。这个数字决定了后面所有器件的选型单片机的静态电流、上拉电阻的阻值、传感器和存储的功耗全部要在 3 mA 以内分配。3.4 阅读器接收链松耦合检波到整形阅读器要从自己的线圈上把应答器反射回来的微弱包络捡出来链路通常是包络检波 → 放大 → 低通滤波 → 施密特整形 → 解码。第一步就有一个隐蔽的坑。检波电路如果直接并在谐振回路两端它的输入阻抗会把回路的 Q 值拉低谐振状态直接跑掉。正确做法是松耦合在回路和检波电路之间串一个小电容几十皮法量级让检波电路只“看”到一小部分信号对回路的影响降到最低。代价是检波出来的信号更小后面的放大倍数要跟上。放大部分用单电源宽带运放增益取 100 倍是比较常见的取法。放大之后载波和调制包络都在需要低通把载波滤掉。这里可以用开关电容滤波器比如 8 阶巴特沃兹型的有源低通截止频率在 0.1~25 kHz 之间可设时钟频率取截止频率的 100 倍。这个 100 倍的关系是固定的配置的时候别算错否则截止频率会跑到另外一个数量级去。最后一级用比较器构成施密特触发器整形把带噪声的模拟包络变成干净的数字电平。迟滞窗口要设得合适太小了在信号边沿抖动太大了灵敏度下降、最远距离缩水。这个值我一般是在最远工作距离上一边挪线圈一边看输出波形调出来的。3.5 功耗预算表2 W 的限制不算苛刻但要留余量。下面这张表是把各段功耗拆开的样子实际取值按你选的具体器件改。环节典型电流电压功耗备注载波振荡10~20 mA5 V50~100 mW晶振或 RC 振荡前级驱动20~30 mA5 V100~150 mW与门调制加缓冲功率放大60~100 mA10~12 V0.7~1.2 W效率是关键接收链15~25 mA5 V75~125 mW运放加滤波器控制与显示10~20 mA5 V50~100 mWLED 数量影响大按这个分布整机在 1.2 W 上下是比较稳的离 2 W 还有余量。LED 显示这块容易被忽略8 位数据灯加 4 位地址灯同时点亮如果限流电阻取 330 Ω总电流能到 30 mA 以上占掉整机功耗的十分之一。把限流电阻放大到 1 kΩ亮度降下来但依然看得清这笔账很划算。4. 固件与控制帧结构、CRC 和掉电保持怎么写应答器一侧的电是从线圈里抠出来的固件的每一个阻塞等待、每一次不必要的唤醒都会变成电压跌落和识别失败。所以这一层的设计原则不是“功能实现”而是“在 3 mA 的预算内把该做的事在最短时间内做完然后立刻回去睡觉”。4.1 主控选型和电流预算应答器主控的第一要求是低功耗第二是能在 1.8~3.6 V 宽压下工作。MSP430 系列是常见选择工作模式电流可以压到 500 μA 以下待机模式 0.7 μA唤醒时间短。阅读器一侧没有功耗压力用 8051 内核的单片机就够资源够、开发快。外围电路能砍就砍。复位电路用上电复位不加按键预置 4 位二进制编码的拨码开关要加上拉电阻阻值取 300 kΩ每个电阻的电流约 3 V / 300 kΩ 10 μA四个加起来 40 μA。这个阻值不能再小了再小电流预算就吃紧也不能太大太大抗干扰能力差拨码开关的接触电阻和线路噪声会让读数飘。算一笔总账单片机工作 500 μA上拉 40 μA整流和限压电路自身消耗几十微安加起来控制在 700 μA 以内是可行的。剩下的余量留给 Flash 写入时的瞬时电流峰值这个峰值比稳态电流大一个数量级储能电容要能扛住。4.2 帧格式和 CRC-8无线链路的误码是常态而不是异常尤其在距离拉到极限、信噪比很差的时候。所以每一帧都要带校验收端校验不过就丢弃绝不允许“凑合用”。#include stdint.h #include string.h #define FRAME_HEAD0 0xAA #define FRAME_HEAD1 0x5A #define FRAME_MAX 12 /* 帧结构: AA 5A | LEN | CMD | ADDR | DATA[4] | CRC8 LEN 为 CMD..DATA 的字节数, CRC8 覆盖 LEN 到 DATA 全部字段 */ static uint8_t crc8(const uint8_t *p, uint8_t n) { uint8_t crc 0x00; while (n--) { crc ^ *p; for (uint8_t i 0; i 8; i) crc (crc 0x80) ? (uint8_t)((crc 1) ^ 0x07) : (uint8_t)(crc 1); } return crc; } /* 组帧, 返回整帧长度; buf 至少 FRAME_MAX 字节 */ uint8_t frame_build(uint8_t *buf, uint8_t cmd, uint8_t addr, const uint8_t data[4]) { uint8_t i 0; buf[i] FRAME_HEAD0; buf[i] FRAME_HEAD1; buf[i] 6; /* CMD ADDR 4 字节 DATA */ buf[i] cmd; buf[i] addr; memcpy(buf[i], data, 4); i 4; buf[i] crc8(buf[2], 6); /* 从 LEN 开始算, 不含帧头 */ return (uint8_t)(i 1); } /* 收帧校验, 返回 1 表示通过, 0 表示丢弃 */ uint8_t frame_check(const uint8_t *buf, uint8_t len) { if (len 9 || buf[0] ! FRAME_HEAD0 || buf[1] ! FRAME_HEAD1) return 0; if (buf[2] 3 ! len) /* LEN 帧头2 CRC1 */ return 0; return crc8(buf[2], (uint8_t)(len - 3)) buf[len - 1]; }逻辑说明帧头两字节用来做同步收端状态机在连续两个字节命中AA 5A之后才开始收长度字段避免把噪声误判成帧头。LEN只统计中间的有效负载长度不包含帧头和 CRC 自身这样解析时用LEN 3就能算出整帧长度少一处硬编码。CRC-8 用多项式 0x07初值 0x00覆盖范围从LEN一直到DATA最后一字节帧头不参与计算——帧头只是同步标记如果它参与了校验一旦同步错位就会陷入永远校验不过的死循环。参数说明FRAME_MAX取 12 是留了扩展空间当前帧实际 9 字节。cmd字段区分读、写、应答三种操作。addr是应答器的地址多应答器场景下用来做选择。CRC 表可以预生成放到 Flash 里换取速度但在 500 μA 的预算下逐位计算的开销其实可以接受因为一帧只有 6 字节。4.3 写—存—读流程和掉电保持应答器上电后的动作顺序很关键顺序错了会出现“每次上电都重新写一遍 Flash”这种隐性损耗。合理的流程是上电复位初始化时钟和 IO此时立刻关掉全局中断避免在电压还没稳住的时候被中断打断。从 Flash 的信息区读出上次保存的内容做一次校验校验不过就用默认值。把读出的内容加上 4 位预置编码组帧算 CRC发送。发送完毕打开接收中断进入低功耗等待。收到帧后先校验通过才写 Flash写完回读比对不通过就丢弃。写 Flash 这一步要特别注意写入之前先解锁写完立刻上锁中间不要有长延时。另外写入时的电流峰值可能是稳态的十倍以上而应答器的能量全靠整流电容撑着电容不够大的时候一写就掉电复位。解决办法是在写之前先把储能电容充满——具体做法是让阅读器在这一刻保持连续载波不调制给应答器一段“充电窗口”等电容充到限压点再开始写。这个时序上的小心思是能不能稳定实现掉电保持的分水岭。4.4 阅读器端状态机和显示映射阅读器端用 8051 内核单片机资源分配大致是这样P1 口 8 位接数据指示灯显示从应答器读回来的 8 位数据P0 口的低 4 位接地址指示灯P3.2 接一个绿灯表示通信正常P2 口接 8 位拨码开关用来置数P3.5 接一个拨码位选择读写状态蜂鸣器在首次收到数据或写入成功时短鸣一声。状态机只有三个状态空闲、读、写。空闲状态下持续发载波给应答器供电但不发指令切到读状态后按固定周期发读指令并等待应答超时就重发连续 N 次超时点亮故障灯写状态先发写指令再发数据帧等应答器回确认帧确认之后回到空闲。这个状态机不要写得太复杂越简单越不容易在电磁干扰下跑飞。显示映射上有个细节数据指示灯和地址指示灯的亮度差异要明显用不同颜色的 LED 是最省事的办法。另外识别成功时绿灯常亮、失败时闪烁比单纯的“亮/灭”更容易在现场判断状态。5. 避坑实录五个把距离和识别率吃掉的坑这套装置最折磨人的地方在于绝大多数故障的表现都是同一个——距离上不去。而能导致这个现象的原因有七八个不逐个排除就只能瞎试。下面这五条是实际调试里最容易撞上的每条都按现象、原因、解决三步写清楚照着对号入座能省不少时间。5.1 检波电路并到线圈上Q 值塌了现象单独测发射回路时线圈两端波形很漂亮谐振峰尖锐一旦把检波电路焊上去波形幅度掉一半谐振点偏移而且怎么调可调电容都调不回来。原因包络检波电路的输入阻抗在几兆赫兹下并不高直接并在谐振回路两端等效于给回路并了一个损耗电阻Q 值从几十掉到个位数。回路 Q 值一塌选择性没了谐振电压幅度也跟着掉。解决改成松耦合取样在回路和检波二极管之间串一个小电容容量在几十皮法量级具体值按“检波出来的信号还够放大”和“回路 Q 值不明显下降”两个条件折中。串了电容之后检波信号会小一个数量级放大器的增益要相应提高这时候宽带低噪声运放就比通用运放合适。5.2 上拉电阻取小了取能电压直接掉到复位门限现象应答器在近距离工作正常距离一超过 12 cm 就开始随机复位表现为识别时好时坏复位后重新上电又正常一小会儿。原因预置编码的拨码开关上拉电阻取成了 10 kΩ四个并联等效 2.5 kΩ在 3 V 下静态就要吃掉 1.2 mA而整流后的总可用电流只有 3 mA剩下的余量扛不住单片机发射时的瞬时峰值。解决上拉电阻放大到 300 kΩ四个总电流降到 40 μA。同时把储能电容加大一档给瞬时峰值留缓冲。这里有个反直觉的点上拉电阻变大之后抗干扰变差拨码开关的读数可能抖所以读拨码的时候要做多次采样取多数不要读一次就信。5.3 功放管发烫但距离不涨现象加大功放级的驱动管子明显发热电源电流上去了但最大识别距离纹丝不动甚至比之前还差一点。原因功放输出和后级谐振回路之间没有做阻抗匹配功率大部分消耗在管子自身的导通损耗上真正进到线圈里的没多少。另外回路失谐时功放看到的是纯电抗负载反射功率全部变成热。解决先断开功放单独把谐振回路调到目标频率上用信号源小信号激励确认谐振点再接回功放。匹配网络按“功放最佳负载阻抗”设计串联谐振回路的等效阻抗要和管子的输出阻抗对上。调完之后用示波器看线圈两端波形应该是干净的正弦如果顶部削平说明过驱动底部削平说明偏置不对。5.4 线圈绕完就焊电感量偏差两成现象按计算结果配的电容谐振点却怎么也调不到目标频率可调电容拧到头还是差一点。原因线圈从骨架取下之后直径回弹6.6 cm 变成 7 cm 以上电感量按半径平方成正比变化直接偏掉 10~15%。另外绕制时匝间有缝隙绕制长度变大电感进一步下降。解决绕完先用胶带在四个方向固定再取取下后实测直径偏差超过 1 mm 就重绕。焊之前先用谐振法或 LCR 表测一次实际电感按实测值重算电容不要按设计值硬套。这一步多花十分钟后面能少折腾两小时。5.5 掉电保存没做回读校验写坏一帧就再也读不出现象装置断电再上电应答器读出来的信息是乱码或者干脆读不出重新写入又正常再断电又坏。原因写 Flash 的时候电压跌落写进去的是半个字节或者全 0xFF而固件写完不做回读校验直接认为成功。下次上电读到无效数据如果又没有默认值兜底整个流程就卡死。解决写完立刻回读比对不一致就重写连续三次失败就放弃并保持原值。上电读 Flash 的时候先做合法性校验比如版本字节和 CRC不合法就用默认值初始化。另外写之前让阅读器保持连续载波给电容充电这个“充电窗口”至少留几十毫秒。6. 台面验证把“识别率不低于 80%”测成可复现的数字指标里写的“正确率不低于 80%、响应时间不超过 5 s”如果不定义测量方法测出来的数字没有意义。我一般按固定流程走把阅读器固定线圈平面平行用直尺量间距每个距离点重复 20 次记录成功次数和从接通电源到指示稳定的时间。数据拿脚本处理别手算。import statistics # 每个距离点重复 20 次1 表示识别正确0 表示失败 trials { 5: [1]*20, 10: [1]*20, 15: [1]*20, 20: [1]*19 [0], 22: [1]*17 [0]*3, 25: [1]*13 [0]*7, } times [0.9, 0.8, 0.8, 0.9, 0.7] # 秒对应 5 次响应时间测量 for d, r in trials.items(): rate sum(r) / len(r) * 100 flag 达标 if rate 80 else 不达标 print(fD{d:2}cm 识别率{rate:5.1f}% {flag}) print(f平均响应时间{statistics.mean(times):.2f}s, f最大{max(times):.2f}s)这段脚本的用处是把“感觉能识别”变成可比较的数字。trials里每个距离点至少 20 次样本太少的话 80% 这条线附近根本分不清是运气还是性能。times对应响应时间取平均之外一定要看最大值因为指标卡的是单次上限而不是平均。几个容易忽略的测量细节线圈间距要量最接近部分不是圆心距测量时人手不要停在两个线圈之间人体对几兆赫兹的场有可见影响每次改变距离后等两秒再测让储能电容的充电状态稳定下来环境里的金属台面、显示器、电源适配器都会改变场分布测试台面和最终演示台面尽量一致。真正把距离从 20 cm 推到 25 cm 的那一次靠的不是换器件而是把接收链的施密特迟滞窗口重新调了一遍再把检波取样电容从 22 pF 改到 15 pF回路 Q 值回来一点信噪比就够判决了。从那以后我每次调这类耦合系统都强制先单独测一遍空载谐振曲线确认 Q 值和中心频率再往下接任何电路——跳过这一步省下的时间后面都要加倍还回去。希望帮到你。本文还有配套的精品资源点击获取