不想错过我的推送,记得 点击右上角 - 查看公众号 - 设为星标!摘下星星给我⭐️!
我们是上海海事大学F题的参赛队伍,在2019年全国电赛中获得国一的成绩。复测前达尔闻做的综测解析预测视频(点这里看预测),对我们帮助很大,赛后很高兴受达尔闻邀请分享F题解题思路及思考过程。
演示及解析视频戳上方↑↑↑
在正式分享我们的方案之前,我想先回答2个大家普遍关心的问题:听说复测时最高测到了130张,而我们才测了70多张,差距在哪? 其实可以做的更高,我们考虑稳定性做了些折中。在五六十张的时候,我们通过上位机fdc2214EVM GUI 监测到的信号变化幅度足够我们分辨出一张纸的厚度,所以不用信号调理电路就可以轻松测出纸张数,但是大于70张或者某个更精确的值之后变化就不再那么明显,GUI显示曲线接近一条水平直线,所以测试结果开始不准确。如果想测量更高的纸张数量,就需要在信号输出端加一级放大电路,配上检波滤波,这样在输出端就可以看到明显的容值变化了。考虑到题目只要求大于35张,并且2214在60张以内高精度以及高稳定性,我们没有选择加放大电路,还有,加了放大电路后,系统的不稳定因素会增多。F题相对比较容易,我总结几个遇到的难点及小经验给大家:1)关于采集数据:经过对采集到的容值的简单处理之后,我们在上位机里面可以清楚的看到在测试过程中,容值会有一个微小衰减的过程,经过1s左右,趋于一个稳定值,我们的解决方案是在显示屏里面加了容值的显示,这样就实现了采集数据的可视化,我们不再是靠运气测试,而是一对一或者一个区间对应一个纸张数,使结果确保万无一失。2)关于自校准功能:这类高精确度的传感器很容易受到环境因素,时间因素,人为因素等的影响。所以在测试之前有一个很好的自校准过程是非常重要的。我们通过一个函数以及外设的两个按键实现了自校准功能。通过按键的加减可以实现对检测值的校准。3)硬件方面:考虑到纸张数量过多的时候,采样过程中会有一些不确定的人为因素,所以我们采用较厚的5mm亚克力板,5mm厚的板子质量很重,保证测试稳定,不用额外压东西。激光切割了四个通孔和一个50mm×50mm的正方形,用来固定和嵌装极板。极板采用单面敷铜加过孔的pcb板。使用玻璃胶将它平整的固定在亚克力板上,确保与纸张接触的一面光滑平整,提高测试稳定性。
解读题目之后,我们把原理总结出来,就是把导电极板和大地当作电容的两个极板,把平行极板间的70g标准规格A4纸作为电介质,纸张数量的变化即为导电介质的变化,也就是电容值的变化。这个电容和板载的电感组成振荡电路,通过在这个电路上加载一定频率的信号,来测量电容值的微小变化,经过放大电路把信号放大到易于分辨纸张数量的倍值。方案1,使用555定时器,使用两块铜箔板作为555定时器的外接电容。利用555定时器输出的方波和频率与金属板电容的数学公式可以计算出容值,通过扫频换算出纸张的数量。由于70g标准纸的计数对精度的要求很高,所以电路硬件的搭设要求会很高,增加了工作量,计数效果差,因此这种方案不作为备选方案。方案2,考虑到FDC2214与MSP430微处理器具有软件设计的自适应算法,从而实现对目标物体的感应。采用FDC2214新型电容数字转换器作为触控检测探头,将检测到的数字量通过I2C总线传送给MSP430微处理器,软件设计采用自适应算法实现对目标物体的感应。物理结构主体采用亚克力板,通过碳素杆支撑,尽量少的采用金属结构,以验证在接触面积为50*50mm时FDC2214在纸张识别时的表象,并降低可能由金属带来的容值变化。由于FDC2214的高精度和高稳定性,这个方案可以作为备选方案。方案3,只用一个FDC2214EVM板,利用板子上的四个通道中的两个,分别接两个金属薄片,通过对两个通道数据的读取,分别将其传输至Arduino中对数据进行处理分析处理得到容值与纸张数量的关系从而通过测量值计算纸张数量。考虑到Arduino的开源性能较好,编程简单,可以作为备选方案。由于题目要求要用500mm和50*50mm的金属薄片构成二线制平行极板结构,考虑到电路之中可能出现的干扰将随着导线长度的增加而增加,因而,保证测量电路的稳定性是成功并保持测量规律的先决条件。FDC2214EVM板本身拥有高灵敏度和极高的数据采集和传输速率,所以必须要有一款处理能力强且稳定的处理器。因此,我们选择使用TI公司生产的430系列MCU,以增强系统的运算能力和稳定性。最终我们选择了方案2。我们根据公式计算出了主要参数:并联传感器电容C和传感器的频率。测量过程中常遇到各种各样的干扰:不仅能造成逻辑关系的混乱,使系统测量和控制失灵,测试能力降低。在纸张计数的实验中,对干扰的检测和排除非常重要。在这次实验中,干扰源主要有极板的灵敏性、导线的寄生电容、控制器的功耗和运算精度、采集到的数据的多项式拟合误差等。我们主要采用接地、使用屏蔽线作导线、滤波算法的优化和提高多项式拟合阶数的方法来抑制干扰。数据采集产生的粗大误差:对于采集数据产生的粗大误差,再经过Excel表格作图后,对粗大误差进行第一次剔除;用算术平均值求出平均值作为测量示值,在此基础上二次剔除了粗大误差,又可以消除一定的系统误差。Excel表格剔除粗大误差的方式如图:
点击图片可放大
消除环境噪声的影响、寄生电容引起的温漂、地理位置变化引起的电容变化等误差:减小这类误差可以通过程序滤波和增加电路中的滤波电容;通过减少寄生电容同时选择屏蔽线接地;通过拟合方程的思路配合机器学习等方法来减小影响。
MSP-EXP430F5529 LaunchPad(后面简称 5529LP):主控单元采用了 TI 的MSP-EXP430F5529LP。其实也可以采用其它有串行总线的 MCU 模块。
FDC2214 传感器信号采集模块:模块的核心芯片为FDC2214,其它电路器件都是芯片的外围电路包括电感,晶振,电容等。关键器件参数:晶振 40MHz,外接的电感 18uH,电容 33pF。这 3 个参数在软件设置当中起决定性作用。
嵌装在压克力板上的金属电极板:分别嵌装在两块亚克力板上的极板 A 和极板 B 上的金属电极部分均为边长 50mm±1mm 的正方形,导线 a 和导线 b 长度均为500mm±5mm。导线使用铝箔屏蔽线,一端接在单面覆铜板的背面,一端接在FDC2214的两个通道CH0和CH1上,两块亚克力板用碳素杆固定在底座上,增强测试稳定性。整体结构如图:5529LP 通过I2C与FDC2214进行通信,通过UART与上位机软件 FDC2214 Monitor进行通信,使用定时器实现定时读取 FDC2214 寄存器数据。I2C 是整个系统中最核心部分,所有需要使用的数据均需要通过 I2C 通信从 FDC2214 获取;UART 功能仅在校准模式下使用,主要用来获取校准函数(拟合函数);定时器Timer 功能是系统能够进入低功耗模式下进行定时读取,也可以配置FDC2214 INTB 功能,以中断方式通知 5529LP用以替换定时器功能,或者若无需使系统在低功耗模式下工作使用简单延时即可替换。
I2C:功能是使用中断模式实现,启用了中断发送和中断接收,所以在I2C 的数据收发过程中使用了低功耗模式。实际整个工程启用了低功耗模式。I2C端口的功能映射:
I2C 驱动库中还实现了读写函数i2c_write_register和I2C_read_register,5529LP 与FDC2214通信时就是直接调用这两个函数。
对于50张以内的测试,正确率为100%;对于50张-100张的测试,正确率为70%;对于100张以上测试,正确率为40%。这套纸张计数显示装置对于50张以内纸张计数具有很强的实用价值,但要是对多于50张的纸张计数,则需要重新进行算法优化和电路设计。证明了我们的方案在50张以内的测试是可行的,满足赛题要求。达尔闻将每周更新电赛优秀作品方案解析,请持续关注。
如果你也想分享你的作品,欢迎投稿!
达尔闻为参加电赛的同学们准备了以下课程: