【武汉理工大学-艺嘉敬】2019年F题复现:基于NE555与FPGA的纸张计数显示装置设计与实现

发布时间:2026/7/18 0:43:02

【武汉理工大学-艺嘉敬】2019年F题复现:基于NE555与FPGA的纸张计数显示装置设计与实现 【武汉理工大学-艺嘉敬】2019年F题复现基于NE555与FPGA的纸张计数显示装置设计与实现最近有不少同学在准备电赛或者想做一些有趣的传感器项目经常问我怎么测量一些微小的物理量变化比如压力、厚度或者湿度。今天咱们就来拆解一个非常经典的案例——2019年全国大学生电子设计竞赛的F题“纸张计数显示装置”。这个项目由武汉理工大学的“艺嘉敬”团队完成并获得了国家一等奖。它巧妙地用了一个几毛钱的NE555芯片和一个FPGA就实现了对纸张数量的非接触式高精度测量思路非常值得学习。我会带你一步步理解他们的设计思路从“纸张怎么变成电信号”开始到“FPGA如何精确测量”最后“怎么算出纸张数”。即使你是嵌入式新手跟着这篇文章你也能掌握这套从模拟信号到数字处理的完整链路。1. 项目任务与核心思路把纸张数量“算”出来首先我们得搞清楚题目要我们干什么。简单说就是做一个装置把一叠A4纸放进去它能自动告诉你里面有多少张。核心难点在于纸张本身不是导体你不能直接用电学方法去“数”它。那怎么办呢“艺嘉敬”团队用了一个非常聪明的间接方法我把它总结为“三级转换”第一级转换物理量→电参数把两张金属板极板A和B平行相对中间放入纸张。这其实构成了一个平行板电容器。纸张作为绝缘介质填充在极板之间。纸张数量越多整体的介电常数就越大根据平行板电容公式电容值也就越大。这样纸张数量就转换成了电容值。第二级转换电参数→频率电容值很小直接测量很困难且容易受干扰。他们使用NE555芯片搭建了一个振荡电路这个电路的输出频率由外接的电阻和电容决定。当我们把上面那个“纸张电容”接入这个振荡电路时电容值的变化就会引起输出方波频率的变化。电容越大频率越低。第三级转换频率→数量FPGA非常擅长处理数字信号和精确计时。我们用FPGA来测量NE555输出的频率。知道了频率再通过事先标定好的“频率-纸张数”对应关系就能反推出中间的纸张数量。整个信号链就是纸张数量 → 电容值 → 振荡频率 → 数字测量值 → 纸张数量。思路清晰实现起来模块化是工程思维的完美体现。2. 硬件电路设计让NE555“唱出”电容的歌硬件部分的核心就是让NE555根据电容的变化产生不同频率的方波。咱们来看看他们是怎么设计的。2.1 核心振荡电路NE555的经典用法这个项目用的就是NE555最经典的无稳态振荡模式。在这个模式下555芯片不需要外部触发自己就能不停地输出方波就像一个自由奔跑的时钟。输出频率的公式是f 1.44 / ((R1 2*R2) * C)其中R1和R2是外接的电阻C就是我们要测量的、由纸张构成的电容。原理图里J1和J2就是连接两块金属极板的接口。它们之间的电容C_paper由纸张产生会并联到振荡电路的定时电容上。当放入的纸张增多C_paper增大总电容C增大根据公式输出频率f就会降低。注意公式里的R1和R2在电路中对应的是R4或R5。原理图分析里提到“通过切换不同的R4或者R5可以将频率信号进行调节”这非常关键因为纸张引起的电容变化量是微小的直接测量频率变化可能不够明显。通过切换一个电阻可以改变振荡电路的基准频率相当于把测量“量程”调整到最敏感的区域从而拉大不同纸张数对应的频率间隔提高测量分辨率和准确性。2.2 电源电路为系统提供稳定能量任何电路都离不开一个干净、稳定的电源。项目的电源电路设计得很规整主要完成以下转换和滤波电压转换很可能将外部输入的电压比如12V通过稳压芯片如LM7805转换为稳定的5V为NE555等芯片供电。滤波去耦在电源入口和每个芯片的电源引脚附近都会放置电容比如原理图中的C1,C2等。这些电容的作用是“水库”和“过滤器”大容值的电解电容像水库储存能量应对电流的瞬间大需求小容值的陶瓷电容紧挨芯片负责过滤掉高频噪声保证芯片工作稳定。为FPGA供电FPGA通常需要核心电压如1.2V和IO电压如3.3V因此可能还有额外的低压差稳压器LDO来产生这些电压。稳定的电源是精确测量的基础尤其在处理微弱信号时电源上的任何纹波都可能被当作信号导致测量错误。3. FPGA测量与系统逻辑高精度频率计硬件电路产生了频率信号接下来就轮到FPGA大显身手了。FPGA在这里充当了一个超高精度的频率计和大脑。3.1 频率测量原理等精度测频法直接数一秒内有多少个脉冲这种方法在低频时误差很大。项目中很可能会采用“等精度测频法”这是FPGA做高精度频率测量的常用手段我来通俗地解释一下假设我们有一个非常准的基准时钟比如FPGA的50MHz晶振还有一个待测信号NE555输出的F_in。我们设定一个固定的“闸门时间”比如0.1秒。但这个闸门的开启和关闭不是由我们的基准时钟决定而是由待测信号F_in的上升沿来“同步”控制。在闸门开启期间我们用基准时钟去数待测信号F_in的脉冲个数假设数为Nx。同时我们也用这个基准时钟数它自己在这段闸门时间内有多少个周期假设数为Ns。由于闸门的开闭与F_in同步所以对F_in的计数Nx没有误差±1个脉冲的误差。那么待测频率F_in就可以精确计算F_in (Nx / Ns) * F_standard其中F_standard是基准时钟频率50MHz。因为Ns通常是一个很大的数所以这个方法在整个测量范围内都有很高的精度。3.2 系统工作流程结合题目要求整个FPGA内部的逻辑流程应该是这样的上电/复位系统初始化显示模块清零。自校准模式在正式测试前操作人员放入已知张数的纸张比如1张、5张、10张、20张…每放一次按一下测量键。FPGA会测量并记录下此时对应的频率值在内部建立一张“纸张数-频率”的查找表。这个过程就是利用已知数据拟合出关系曲线。短路自检在测量前FPGA可以控制一个IO口输出高电平到一块极板然后另一块极板通过一个电阻接地并连接到FPGA的输入检测口。如果两块极板短路输入检测口会读到高电平从而触发短路报警。正式测量用户放入未知纸张按下“测量启动键”。FPGA控制NE555电路上电开始振荡同时启动等精度频率测量模块。在不超过5秒的时间内FPGA完成频率测量。核心算法将测量得到的频率值与自校准阶段建立的“查找表”进行比较。通过查表或插值算法找到最匹配的纸张数量。输出结果FPGA将计算出的纸张数发送到数码管或LCD显示屏上锁定显示同时驱动蜂鸣器发出“嘀”的一声提示音表示测量完成。4. 机械结构与调试心得4.1 机械结构的关键作用题目要求极板必须能压紧或夹紧纸张。这绝不是可有可无的要求因为排除空气间隙如果纸张和极板之间有空气间隙空气的介电常数和纸张不同会引入巨大的测量误差。压紧是为了确保纸张与极板紧密接触使电容结构稳定、可重复。结构稳定测量时极板相对位置、纸张的平整度都必须固定。一个好的夹持结构比如用螺丝调节压力的亚克力板框架能保证每次测量的物理条件一致这是获得稳定、准确数据的前提。4.2 调试中的“坑”与技巧虽然原文没有详细写调试过程但根据我的经验做这类项目一定会遇到以下几个坑NE555振荡不稳定现象频率跳动读数不稳。排查首先检查电源用示波器看NE555的电源引脚上是否有毛刺。确保滤波电容104瓷片电容紧挨芯片电源引脚焊接。其次检查反馈电阻R4/R5和电容的取值是否合理确保振荡频率在合适范围比如几百Hz到几KHz太低则测量慢太高则对FPGA计数要求高。测量重复性差现象同一叠纸两次测量结果差一两张。排查几乎肯定是机械结构问题。确保每次纸张放入的位置、被压紧的力度完全相同。极板表面的清洁度也会有影响。自校准数据“跑偏”现象校准的时候很准但过一会儿或换一叠纸就不准了。排查环境温湿度变化会影响纸张的含水量从而影响其介电常数。这不是电路问题是物理特性。高级的解决方案可以加入温湿度传感器进行补偿。对于比赛可以在测试前用现场提供的纸张快速重新校准。FPGA测量误差大现象明明频率稳定但FPGA读出来的数波动大。排查检查等精度测频法的闸门时间是否足够长。闸门时间越长基准时钟计数值Ns越大相对误差越小。但时间太长会超过题目要求的5秒。需要在精度和速度间权衡。另外确保待测信号F_in已经通过FPGA的IO缓冲器并做好了时钟域同步避免亚稳态。这个项目是一个非常好的教学案例它把模拟电路NE555、数字逻辑FPGA、传感器原理电容式传感和机械结构紧密结合在一起。它告诉我们解决一个工程问题往往需要跨领域的知识。希望这篇拆解能帮你打开思路下次当你需要测量一个微小变化时不妨想想能不能把它先变成一个电容或电阻再用一个简单的电路转换成频率或电压最后用单片机或FPGA去解读呢

相关新闻