国二,使用STC32G荣获23年全国大学生电子设计竞赛B题国二
大家好,我们是西安工程大学参赛队伍,本届电赛种荣获国二,很荣幸这次能在STC官方论坛发表我的小作品。先叠个甲,作品中有许多不足之处,各位轻喷。B题要求看附件。
题中需要达到的几个目标:
(一)显示;
(二)能够测量2000cm以内的电缆长度,误差不大于1%;
(三)能够测量负载类型与负载值,误差不大于10%;
针对于这三个目标,我们逐个击破。
首先是“显示”。题目要求<=6V单电源供电,并且能够显示4行文字,使用OLED128*64刚好满足字数要求,且供电电压仅有5V。
其次是“长度测量”。这里我们把同轴电缆看作一个电容,电缆L越长,电容值C就越大。L与C之间关系可以参考公式。这里除C与S以外,均为常量。而S仅与L有关,所以可以确定C与L为线性关系(实际中由于线材并非理想,所以关系近似线性)。我们的电容测量方案采用NE555芯片构成施密特触发器。加上电缆后可看作一个多谐振荡器,使用STC32G的PWM输入捕获,采集信号高电平时间Th。根据公式Th=(R1+R2)*C*ln2可推导出电容值C。通过这种方式,可将长度误差缩小至2cm。如果能加上拟合,则精度会更高。
最后是“负载检测”。电容通交隔直。各异根据这个特性来判断负载类型,这里我通过控制继电器,选择测量通路。使用STC32G片内ADC采样,判断负载类型及电
阻值。如果是电容,则根据“测量长度”中的方法,控制继电器切换,测量电容在原值上的增加量来计算负载电容值。
图1 系统整体图电路设计以STC32G为主控芯片,NE555为信号发生器,使用IO口控制三极管通断,进而控制继电器通断,从而选择电路通路。我这里直接使用屠龙刀最小系统板。
图2 电路设计图程序流程如图3所示。上电后,按开始键,显示屏显示工作状态“正在检测”,按“长度检测”约1s,工作状态为“结果保持”且显示电缆长度,按“负载检测”按键约1s,工作状态为“结果保持”且负载类型、负载数值及单位。
图3 程序流程图由于我们的作品还没回来,所以只能展示制作过程中拍的一张照片
图4 作品展示电路板焊接完成后,测量供电大小为5.09V符合题目不大于6V的要求,测量电压跟随器输入输出电压为2V符合预期值,测量电路中电阻两端电压,与仿真中一致,电路板输入输出接入示波器,可观测到预期波形,能够起振,如下图5所示,在对电路各种测试中,均符合题目要求。
(a)激励信号输入(b)信号输出
图5输入输出波形图
将程序烧入,插入不同负载,记录屏幕显示情况,如图6所示,实验测量部分数据如图下表2所示。
图6显示屏显示结果图4所示为负载接10Ω电阻时,显示屏的显示结果,负载类型为电阻,负载参数为9.76Ω,相对误差的绝对值为2.4%,符合题中10%的误差范围。
表1实验测试表
实际值测量值误差
电缆长度(L/cm)200020050.25%
190019020.11%
18501850.70.04%
16001606.90.43%
140014030.21%
130013020.15%
12001200.20.02%
11001100.40.04%
10001002.50.25%
负载电阻/Ω109.940.60%
1616.140.87%
2020.070.35%
2424.100.41%
3030.290.96%
电容/pf102102.40.39%
145146.20.82%
180179.10.50%
210208.10.90%
305305.70.22%
如上表1所示,在1000cm-2000cm之间的电缆,依据电缆误差做折线图如图7所示,误差约在0.13%左右,符合题目在1%的要求,负载测量中,电阻误差约为0.638%左右,电容误差约在0.566%左右,负载误差均在要求范围内,因此,此装置无误。
图7 误差折线图
B题做起来不难,但是测量非常麻烦,需要测一根20m的同轴电缆。在10M以上,因为误差范围大,测起来比较方便。在10m一下就需要一点一点测,非常耗费时间。我本想用拟合的方法去实现,但我们当时仅测不同长度下电缆的电容值就花了将近一天半的时间。此外一根电缆的价格也不低,学院十几只参赛队伍,我们能报销的金额非常有限。所以只做了一次测试,没有时间和电缆去实践拟合的方法。因此可以看到程序中存在大量if与else。 pwm输入捕获部分,我是参考布丁橘长的程序,并在其基础上做修改。如果直接用布丁橘长的程序,使用信号发生器产生不同频率与占空比的方波信号,会发现测量高电平时经常会测量到低电平上。所以我在此添加的一个下降沿中断。在检测高电平时间时,先使用下降沿中断找到下降沿。以此下降沿为标志,开启上升沿下降沿中断,此时检测到的就上高电平时间,解决了高低电平检测错误的问题。 开心,STC32位8051,初露锋芒
页:
[1]