方案解析:纸张计数精准测量出200张纸?!第1名妥妥的

网友投稿 2019-09-07 11:28

视频是实验室无干扰环境下拍摄(测到200张)

https://cdn.china-scratch.com/timg/190909/112P432M-0.jpg4天3晚,我们怎么度过的?Day1综合分析了一下, F题测纸张数量和电磁炮的工作量可能是比较小的,但是对于电磁炮,我们没有准备相应元器件,最初是打算选择做D题三极管特性测试仪,经过近2个小时的仿真验证,发现工作量太大,就放弃了D题,虽然容易获得分数,但是很难做到高分,最终破釜沉舟的确认选择F题。经过整个白天都未找到测试方案,一直在使用RLC测试仪测试不同纸张时的电容规律。在晚上,大概九点多,想到了RC分压检测电压变化,识别纸张数,在此时尝试用555搭建了RC振荡器,到大概凌晨2点多时,完成了程序编写,通过STM32的ADC抓取10kHz时“电容”或者电阻端的电压峰值,以此峰值的识别纸张数,其结果不太理想。用示波器检测被测电压波形时,纸张数的变化会造成振荡频率的明显变化。Day2验证测频的可靠性,这是第二天我们所做的事情。初步做到了60张左右,可靠性较高。Day3&4: 优化极板结构,电路稳定性及抗干扰性优化以及软件优化,最后确定作品实体,完成作品制作,然后训练操作流程,提高操作效率及稳定性。该说的就基本讲完了,比较随意的放置纸张测试时,本装置的能测的准确纸张数在120张左右,在我们规范的操作下可以做到200张(只做了200的量程),据推测,在电磁环境极好的环境下应该可以做到300到400张左右(频率的变化曲线呈现为递增型指数函数)。https://cdn.china-scratch.com/timg/190909/112P432M-0.jpg软硬件方案分享本次设计制做的纸张计数显示装置由两块平行极板(极板 A、极板B)分别通过导线 a 和导线 b 连接到测量显示电路,装置可测量并显示置于极板 A 与极板 B 之间的纸张数量。

https://cdn.china-scratch.com/timg/190909/112P439B-2.jpg

硬件部分:

1)极板加紧固定装置的论证与选择

根据题目给定说明和要求可知,极板 A与极板B是需要相互平行且夹紧的,因此初步得到以下两种方式。

方案一:采用夹子的方式将两块极板进行夹紧。这种方式结构简单,制做方便,使用灵活。但是存在诸多不足,如:极板之间受力不均匀、夹子容易松动、极板相对面不固定等因素都会影响等效电容的大小,造成测量出现误差。

方案二:用放置重物压紧,四周打定位孔用螺栓插入,使其相对面积基本保持不变。这种方式制做稍微繁琐,但两个极板之间的受力较为均匀,调试方便,稳定性较好。

上述两个方案通过实际的比较之后,发现方案一存在诸多的缺陷,如两级板之间相对面积难以保证,夹子受力不均匀,难以很好的压合极板,且夹子通过多次的夹取纸张,夹力会减弱。而方案二便没有这些问题,最后选择方案二来做本次设计。

2)测量方案的论证与选择

方案一:振荡器频率测量法。采用TI公司的NE555芯片搭建成多谐振荡电路,将原本C1起振电容用A、B两块极板代替,那么NE555的3脚输出的振荡频率将会随着极板电容容量的变换而变化,通过单片机测量该频率,经过多次数据的校验就可以完成对纸张的测量。

方案二:FDC2214电容测量芯片。使用TI公司生产的FDC2214完成本次设计。这是一块高分辨率、高速,电容-数字转换器。芯片的激励频率可从10 kHz至10 MHz,分辨率高达28位,完全可以满足本次设计所需。芯片通过I^C通讯协议与单片机完成数据交换,因而使用方便接线简单。

上述二个方案中,方案一虽然简单但是存在不足,如:分压电阻不够精密,制做的激励源产生的信号频率、幅度都难以稳定;而且发出交流信号,单片机存在采样不完整的缺陷。

方案二,虽然电路结构、原理都较为简单,但是其输出的信号是TTL信号,频率和幅度都较为稳定,反应测量极板电容量变化的特征是频率一个参数,因而便于分析和程序的编写。不足之处就是NE555的工作范围有一定的频率限制,网站查阅资料后可知该器件最高工作频率为500KHz。

方案二中FDC2X1X系列芯片因灵敏度和分辨率都较高,因而这个方案存在外界干扰和电源干扰的问题,而且激励频率过高时,在500mm长的线长都会受到较强的电磁干扰,且制做本次设计的条件有限,无法增加屏蔽罩、屏蔽网或其余的看干扰方式。

综上所述决定选择方案一。

3)主控芯片的选用

方案一:使用Arduino系列的Mage2560。

Mage2560是Arduino系列AVRATmega的8位单片机,处理核心是ATmega2560,具有54路数字输入/输出口,同时具有15路10位AD模拟输入口,4路UART接口,使用16MHz晶振作为输入工作时钟,处理速度为8MHz。

方案二:使用ST公司的STM32F103

STM32系列是一款基于Cortex-M3内核的中低端的32位ARM微控制器,最高工作频率可达72MHz。内部带有丰富的高速、高精度的定时器,将其时钟源配置为外部时钟,就可以对外部脉冲信号进行脉冲计数,还带有单周期乘法和硬件除法。

方案三:使用高精度浮点型DSP

DSP具有高速实时的数据处理能力,擅长复杂的数据处理,而电容从放电规律呈现出指数函数变化规律,由此可以推知由于电容改变而改变的振荡频率的变化规律也应该遵循这种类似的指数变化规律,浮点型DSP具有指数运算能力。(利用MATABLE数据拟合确定函数模型)

注:本人不太会使用浮点型DSP,所以舍弃了DSP这种最优的主控方案。

综上方案, Mage2560其处理速度还是定时器采样速度、精度都远低于STM32,为了保证系统的测量的精度和题目所限制的时间,决定选用方案二

https://cdn.china-scratch.com/timg/190909/112P4G15-3.jpg

硬件部分电路组成

软件部分:

本题,我们的核心是检测RC振荡频率。通过不同纸张数所对应的不同容值,RC振荡器产生不同的频率,根据频率变化规律,确定纸张数。

关键部分就是先做一个较高精度的频率计。具体实现方法就不多说,毕竟大家都是大佬!

自校准的完成:通过对每一张纸的频率进行准确记录,生成一张校验表,表的序号加1即为纸张数;

一键测量:记录当前所测纸张的频率值,再与校验表比对,通过做差求绝对值的方法来确定当前频率所对应的纸张数,按照题目要求打印输出即可;

这里就已经基本完成了程序设计,但是为了在规定的时间内测试较多的纸张数,在此基础上添加了校验数据掉电保持功能和校验数据修改功能,在测试前确认以前的校验数据是否还有效,如果有效,就将不再修改校验数据,否则,修改不正常的校验数据,具体实现——简单的内部FLASH存储读写操作,这里也就不说了。简单的流程如下:

https://cdn.china-scratch.com/timg/190909/112P54259-4.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com