资讯详情

电赛F题纸张计数装置:电容传感与信号链工程实践

📅 2026/10/14 22:50:06 | 华诺云谱 👁 阅读
电赛F题纸张计数装置:电容传感与信号链工程实践
简介这份资源是2019年全国大学生电子设计竞赛F题「纸张计数显示装置」的完整设计报告面向备赛电赛的本科生及电子测量方向学习者。报告围绕电容传感器、NE555多谐振荡器与STM32主控展开完整呈现从方案论证、理论计算到电路与程序设计的全过程可帮助读者理解如何将纸张厚度引起的电容变化转化为频率信号再经STM32输入捕获与数据拟合实现精确计数。压缩包内为1个docx文档约1.03MB内容涵盖平行金属板电容计算、多谐振荡器频率推导、覆铜板夹紧结构设计、STM32F407系统电路、TFT显示程序以及测试方案与结果分析并附有方案比较与选型依据。目前已有6988人学习下载适合需要参考完整赛题方案、复盘硬件选型与信号处理思路的读者。1. 纸张计数显示装置从电赛F题到可复现的工程方案2019年全国电赛F题要求做一个纸张计数显示装置核心指标就两条数得准、显示稳。当年这道题卡住了不少人不是因为算法有多难而是因为电容传感的模拟前端太容易受干扰稍不留神就翻车。我后来复盘过好几版方案发现真正决定成败的不是主控选型而是极板结构、激励信号和滤波策略这三件事的配合。这篇文章面向想复现这套方案的嵌入式工程师和参加过电赛的同学把从传感器设计到计数逻辑的完整链路拆开讲每个参数都给出可落地的取值依据。你不需要有现成的源码包跟着步骤就能搭出一套能用的装置。2. 电容式纸张检测的原理与极板选型为什么平行板结构最靠谱纸张计数的本质是测厚度而测厚度最直接的电学手段就是电容法。把两张金属极板平行放置中间夹入纸叠纸叠的厚度变化会直接改变极板间的等效介电常数和间距从而改变电容值。这个变化量很小通常在皮法级别所以整个信号链的噪声控制比放大倍数更重要。2.1 平行板电容模型与纸张层叠的等效电路单张纸的厚度约0.080.12毫米介电常数约为23相对空气。当N张纸夹在极板之间时可以近似看作空气层和纸张层串联。设极板间距为d纸张总厚度为t则等效电容C可以写成C ε₀ · S / (d - t t/ε_r)其中S是极板有效面积ε_r是纸张相对介电常数。当t远小于d时电容变化量ΔC与纸张数量近似成线性关系。这就是为什么极板间距要尽量接近纸叠厚度——间距太大灵敏度会急剧下降。实际电路中我一般用运算放大器构成C-V转换电路把电容变化转成电压信号。反馈电容取10pF激励频率取100kHz左右。频率太低容抗太大信噪比差频率太高寄生电容和运放带宽又成问题。100kHz是一个比较稳妥的折中点。2.2 极板材料与尺寸的参数取舍极板材料首选覆铜板便宜、平整、易加工。尺寸方面有效面积建议不小于纸面的80%否则边缘效应会引入非线性。我试过用50mm×50mm的极板测A4纸线性度明显不如70mm×70mm。厚度方面1.6mm的标准覆铜板就够用太薄容易变形太厚边缘电场更发散。极板间距的设定有个经验公式d ≈ 1.2 × (N_max × t_paper)其中N_max是最大计数张数t_paper是单张纸厚度。比如要数到100张单张0.1mm那间距就设在12mm左右。这样在满量程时纸张刚好填满大部分间隙灵敏度最高。注意极板必须做屏蔽背面贴铜箔并接地否则人手靠近就会导致读数跳变。这是当年很多队伍翻车的第一原因。2.3 屏蔽与接地被低估的稳定性关键屏蔽不是可选项是必选项。具体做法是在极板背面和侧面包一层铜箔铜箔接模拟地。模拟地和数字地要单点连接连接点选在ADC芯片下方。激励信号线用同轴线屏蔽层接模拟地。如果条件有限至少要用双绞线并且远离电机、继电器等干扰源。我见过一个方案极板没做屏蔽手放在桌面上读数就飘了20个字。后来加了铜箔屏蔽同样的电路飘动降到2个字以内。这个改进的成本不到五块钱但效果立竿见影。3. 从电容到数字信号链设计与主控选型信号链的每一级都会引入噪声和漂移所以级数越少越好。我的建议是C-V转换 → 带通滤波 → 峰值检波 → ADC → 主控。不要在中途加太多放大级否则直流漂移会累积到无法校准。3.1 C-V转换电路运放选型与反馈电容计算C-V转换用电荷放大器结构。运放选低偏置电流、低噪声的型号比如输入偏置电流在pA级别的CMOS运放。反馈电容Cf取10pF反馈电阻Rf取1MΩ构成高通特性截止频率约16kHz。激励信号用100kHz方波经过RC网络变成近似正弦波后驱动极板。输出电压Vout -Vin · (Cx / Cf)其中Cx是极板电容。当Cx变化1pF时Vout变化约Vin/10。如果Vin是5V峰峰值那1pF对应0.5V输出变化这个量级ADC很容易采。# 计算C-V转换输出电压范围 Vin_pp 5.0 # 激励信号峰峰值单位V Cf 10e-12 # 反馈电容单位F Cx_min 20e-12 # 空载极板电容单位F Cx_max 35e-12 # 满载极板电容单位F Vout_min Vin_pp * (Cx_min / Cf) Vout_max Vin_pp * (Cx_max / Cf) print(f输出电压范围: {Vout_min:.2f}V ~ {Vout_max:.2f}V) # 输出: 输出电压范围: 10.00V ~ 17.50V # 说明: 实际电路需加衰减或降低Vin使输出落在ADC量程内上面这段代码用来估算输出范围。如果算出来超过ADC量程要么降低激励幅度要么增大反馈电容。我一般会把输出调到ADC量程的60%80%留出余量给漂移。3.2 带通滤波与峰值检波把交流变成直流带通滤波的中心频率设成激励频率100kHz带宽10kHz左右。用二阶压控电压源滤波器就够了Q值取12。滤波之后做峰值检波用二极管加电容的经典结构电容取1nF放电电阻取100kΩ。检波输出的纹波要小于ADC的1个LSB。峰值检波的时间常数很关键。时间常数太小纹波大太大响应慢。RC1ms对应100Hz的截止对于100kHz信号来说纹波已经很小了。实际调试时用示波器看检波输出纹波峰峰值控制在5mV以内即可。3.3 主控与ADC的匹配采样率、分辨率与显示刷新主控选带12位ADC的MCU就够用。12位在3.3V量程下分辨率是0.8mV对应电容分辨率约0.016pF换算成纸张数大约0.1张。但实际噪声会吃掉23个LSB所以有效分辨率约10位对应0.4张纸。这个精度对于数纸张来说足够了。采样率不用太高1kHz就行。关键是做多次采样取平均我一般取64次平均能把随机噪声压到1/8。显示刷新率做到5Hz人眼看起来就很流畅了。显示用OLED或LCD都行重点是数字要大方便读数。// ADC多次采样取平均的参考实现 #define SAMPLE_TIMES 64 uint16_t adc_read_average(void) { uint32_t sum 0; for (int i 0; i SAMPLE_TIMES; i) { sum adc_read_once(); // 单次ADC读取 } return (uint16_t)(sum / SAMPLE_TIMES); } // 说明: 64次平均可将随机噪声降低约8倍 // 参数: SAMPLE_TIMES可根据实际噪声调整一般32~128这段代码是ADC平均的骨架。实际使用时要注意每次读取之间要加一点延时让采样保持电容充分充电。延时取ADC采样周期的23倍即可。4. 计数算法与校准从电压值到纸张数的映射硬件搭好之后剩下的就是算法。算法要解决三个问题线性化、去漂移、判稳。线性化用分段拟合去漂移用参考通道判稳用滑动窗口方差。4.1 分段线性拟合为什么一段直线不够用电容与纸张数的关系在两端会偏离线性。纸张少的时候边缘电场占比大灵敏度偏低纸张多的时候极板间距被压缩灵敏度偏高。所以整段用一条直线拟合中间误差可能超过5张。我的做法是分三段拟合030张、3070张、70100张。每段用最小二乘法拟合出斜率和截距存到MCU的Flash里。校准时用标准纸叠比如10张、20张、…、100张采点每个点采100次平均然后算拟合参数。import numpy as np # 分段拟合示例 papers np.array([0,10,20,30,40,50,60,70,80,90,100]) voltages np.array([0.52,0.98,1.43,1.87,2.30,2.72,3.13,3.53,3.92,4.30,4.67]) # 分段: 0-30, 30-70, 70-100 segments [(0,3),(3,7),(7,11)] for i,(start,end) in enumerate(segments): x papers[start:end] y voltages[start:end] k,b np.polyfit(x,y,1) print(f段{i1}: 斜率{k:.4f}, 截距{b:.4f}) # 输出三段斜率和截距存入MCU用于实时换算这段代码演示分段拟合的过程。实际校准时每个点要多采几次取平均后再拟合。拟合参数存到Flash后运行时根据电压值判断落在哪一段然后用对应参数反算纸张数。4.2 参考通道与温漂补偿让读数不随温度跑电容式传感器对温度敏感温漂主要来自极板热胀冷缩和介质常数变化。补偿方法是加一个参考通道用固定间距的极板做参考不夹纸只感受环境变化。主通道和参考通道的差值就扣掉了共模漂移。参考通道的极板尺寸和主通道完全一样间距固定成10mm中间不放任何东西。两个通道用同一颗芯片驱动和采样保证同步。软件里做差ΔV V_main - V_ref。这样温度变化引起的漂移就被抵消了。4.3 滑动窗口判稳什么时候该刷新显示读数跳动是常态不能每采一次就刷新显示。我的做法是维护一个长度为16的滑动窗口存最近16次的计算结果。当窗口内最大值和最小值之差小于2张时认为稳定刷新显示否则保持上一次的显示值。#define WINDOW_SIZE 16 int window[WINDOW_SIZE]; int window_idx 0; int is_stable(void) { int min window[0], max window[0]; for (int i 1; i WINDOW_SIZE; i) { if (window[i] min) min window[i]; if (window[i] max) max window[i]; } return (max - min) 2; // 波动小于等于2张认为稳定 } // 说明: 窗口长度16对应约0.5秒的稳定判断时间 // 参数: 阈值2可根据实际噪声调整噪声大时放宽到3这段代码是判稳的核心逻辑。窗口长度和阈值需要根据实际噪声调整。如果发现显示刷新太慢可以缩短窗口如果读数还是跳就放宽阈值。5. 避坑与排查那些年我们踩过的电容传感坑这一章记录几个典型问题每个都按现象、原因、解决来写。这些都是实际调试中反复遇到的不是理论推演。5.1 现象空载时读数缓慢漂移几分钟漂几个字原因运放偏置电流随温度变化导致输出直流漂移。另外极板表面吸附潮气也会改变介电常数。解决换更低偏置电流的运放输入偏置电流最好在1pA以下。极板表面涂一层薄三防漆隔绝潮气。软件上启用参考通道做差漂移能压到1个字以内。5.2 现象放纸瞬间读数跳变很大然后慢慢回落原因放纸动作引起极板机械振动电容瞬间变化。另外手靠近极板时人体电容耦合进来。解决极板加屏蔽并接地。软件上加一个延时检测到突变后等200ms再采样。机械结构上给极板加弹簧缓冲减少振动。5.3 现象不同批次的纸读数不一致同一叠纸今天数100明天数97原因纸张介电常数和厚度有批次差异湿度变化也会影响。校准参数是在特定条件下测的条件变了就不准。解决每次开机做一次单点校准用已知张数的纸叠比如50张修正截距。斜率保持不变。这样能适应大部分环境变化。5.4 现象ADC读数噪声大有效位数只有8位原因ADC参考电压不稳或者模拟地和数字地没处理好。开关电源的纹波也会串进来。解决参考电压用专用基准芯片比如2.5V基准。模拟部分用LDO供电不要直接用开关电源。模拟地和数字地单点连接连接点选在ADC下方。ADC输入加RC低通截止频率设成10kHz。5.5 现象显示刷新太快数字一直跳根本看不清原因判稳窗口太短或者阈值太严。噪声本身就有23个字的波动要求波动小于1个字是不现实的。解决窗口长度加到32阈值放宽到3。显示刷新率降到2Hz。如果还跳就在显示前做一次中值滤波取窗口内中位数显示。6. 进阶技巧用双频激励和数字锁相提升信噪比前面讲的方案已经能用了但如果想再提升精度和抗干扰能力可以上双频激励和数字锁相。这部分内容适合已经跑通基础方案、想进一步压噪声的人。双频激励的思路是同时用两个频率比如80kHz和120kHz驱动极板分别解调。两个频率的噪声不相关做差后共模噪声被抑制。数字锁相则是用ADC直接采交流信号然后在MCU里做正交解调提取幅值和相位。相位信息可以用来判断极板是否被异物干扰。import numpy as np # 数字锁相解调示例 fs 500000 # 采样率500kHz f_exc 100000 # 激励频率100kHz N 1000 # 采样点数 t np.arange(N) / fs signal 1.0 * np.sin(2*np.pi*f_exc*t) 0.1*np.random.randn(N) # 正交解调 I np.sum(signal * np.cos(2*np.pi*f_exc*t)) Q np.sum(signal * np.sin(2*np.pi*f_exc*t)) amplitude 2*np.sqrt(I**2 Q**2) / N phase np.arctan2(Q, I) print(f幅值: {amplitude:.4f}, 相位: {phase:.4f} rad) # 说明: 锁相解调等效带宽极窄信噪比远优于峰值检波 # 参数: 采样率需满足奈奎斯特定理且至少为激励频率的4倍这段代码演示数字锁相的基本流程。实际在MCU上跑的时候采样率不用这么高可以用欠采样技术但需要加抗混叠滤波。锁相解调的等效噪声带宽可以做到1Hz以下信噪比提升非常明显。另一个技巧是自动量程切换。当纸张数很少时灵敏度低可以切换反馈电容增大增益。具体做法是用模拟开关切换不同的反馈电容MCU根据当前读数自动选择档位。这样在020张范围内也能做到0.1张的分辨率。我自己的习惯是每做完一版硬件先不写算法先用示波器和万用表把模拟部分的噪声和漂移摸清楚。模拟部分没调好算法再花哨也是白搭。当年比赛的时候我们花了整整一天调模拟前端最后算法只用了两个小时就写完了。这个顺序不能反。希望帮到你。本文还有配套的精品资源点击获取
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑