基于STM32与电涡流传感器的硬币盲盒识别系统
2024-12-12吴超
关键词:硬币识别;光电开关传感器;电涡流检测法;自学习;最小系统
0 引言
随着现代社会的不断发展,硬币在生活中愈发重要,面对硬币巨大的流通使用以及银行等特殊行业需要统一高效对数量庞大的硬币进行计数、分类、包装等,传统人工处理存在着劳动量大、效率相对低下、处理精度差等问题[1-2]。一些无人售卖机也需要实现对各种硬币组合的识别清分,目前市面上大部分的无人售卖机依然只针对同一种类的货币对应一个投币渠道。针对目前硬币识别系统存在的缺陷,结合我国国情和货币特点,从精准识别、成本控制等多方面出发,本文采用STM32结合多传感器实现盲盒中硬币类别的自主识别。
1 系统构成及原理
硬币盲盒识别系统由单片机主控模块、光电开关传感模块、电涡流传感模块及OLED显示模块等部分组成,系统总体设计框如图1所示。系统由STM32主控模块完成对数据的变换、编辑和存储等处理,通过涡流传感器模块完成对检测区域中的硬币特征值感知;光电开关传感模块完成对检测区域中的盲盒进行光学判别,判断有无盲盒;OLED显示模块完成对检测区域盲盒和硬币情况的实时文字形式显示,实现人机交互。按键输入可实现在不同情景系统学习记忆新出现币种的各种特征,提高系统识别鲁棒性和实现自学习功能。
系统整体实物电路连接方式如图2所示。包括单片机开发板、电涡流传感器、光电开关传感器、OLED 显示屏,该系统具备小巧、低功耗等优势。
2 系统硬件设计
2.1 STM32最小系统
STM32F103x8其内核为ARM 32位的Cortex-M3CPU处理器,拥有最高72MHz工作频率,还有极高的运算能力和中断响应能力,具有性能高、速度快、功率小、性价比高、可调试、支持数模转换、开发方便、现场编程等特点,整个系统效率高、功耗降低、可拓展性好[3]。图3 是STM32F103x8 最小系统。与传统的STC89C52相比具有更快的运算能力,使用性能更高,功耗更小等优点。
2.2 电涡流传感器
此硬币盲盒识别系统选择电涡流传感器作为主体传感部分。目前主流的对硬币行为进行识别的有效方法有图像对比识别法、称重法和涡流传感检测法。涡流传感检测具有无须接触、结构简单、成本低、检测有效、易做到实时性连续测量、抗干扰性强。对于脏污币、造假币、非电感材质填充物等干扰因素都能做到有效且正确的检测[4]。
电涡流传感器基于电涡流效应利用磁路磁阻变化引起传感线圈电磁感应的变化来检测非电量装置。当电流通过电涡流传感器时,会产生周围的电磁场。导体通过变化的磁场时,会产生电涡流,其会产生一个新的磁场,与传感器磁场方向相反。这两者相互作用,导致电感量产生变化。不同硬币具有不同的硬度、面值、大小和密度,因此具有不同的磁导率,从而引起不同程度的电感量变化。这些信号的变化量运算放大电路之后传输给主控模块,再通过与主控模块中存储器中对币种的预设范围进行对比实现系统部分功能[5]。电涡流传感器的电路图如图4所示。
运算放大电路采用LM358的设计电路。该电路使用了常用的低功率双运算放大器LM358,其内部包含两个独立的、高增益、内部频率补偿的运算放大器,专门设计用于在宽电压范围内由单电源供电。其电源电压范围适用广泛,可在单电源模式和双电源模式下工作。在适合的工作条件下,其电源电流与电源电压无关。该器件的应用范围涵盖传感放大器、直流增益模组、工业控制、DC增益部件以及其余需要单电源供电的运算放大器应用场合。LM358有内部频率补偿、低输入偏流、低输入失调电压和失调电流、直流电压增益高(约100dB)、单位增益频带宽(约1MHz)、低功耗电流,适合于电池供电等特性[6]。LM358的引脚图及引脚功能如图5所示。内部电路原理图如图6所示。
2.3 OLED 显示模块
为实现对检测区域盲盒和硬币情况的实时文字形式显示。本系统采用了IIC 接口的OLED 显示屏。OLED在正常通电下即可实现发光。OLED液晶屏的尺寸和厚度较薄,外观结构尺寸约为LCD1602的一半,但其可以独立显示内容。通过修改显示单元寄存器上的地址,可以单独驱动部分背光点亮,从而具有更优秀的节能特性。此外,像素点颜色切换时间即灰阶响应时间极短,画面切换和变更时不会产生明显的拖影[7]。
OLED使用前须进行初始化,然后设置显示的字符串即可控制显示屏显示预期结果。此显示屏内部集成了存储器,存储器中存储了英文字母、数字以及图形等原始数据,这些数据共同构成了一个数据库,调用库中数值即可对显示屏进行编辑。但对于实现中文文字显示需要借助取模工具,通过取模工具输入文字获得字符像素位置,添加在数据库中来实现。图7为IIC接口的OLED液晶显示屏的电路原理图。
2.4 光电开关传感模块
本系统对于视觉方面需求不高,使用光电开关传感即可满足功能需求,为使降低功耗,采用 E18- D80NK光电传感器。E18-D80NK光电传感器可以发射和接收脉冲,常用于测量距离,检测物体的颜色和形状等。其通过发射光束进行信号传输,可以检测距离、色彩、形状等信息,并将该信号送至STM32内计数[8]。图8为光电传感器实物图。
3 系统软件设计
本项目借助采用C语言编程,Keil uVision5开发工具实现系统功能。硬币盲盒识别系统的具体流程为:当硬币盲盒放入待检测区域时,光电开关传感检测到盲盒的存在,此时OLED屏幕显示有盲盒字样,主控模块开始识别盲盒里的硬币,通过连续重复多次采集再变换的数值与预设值范围进行对较,辨别币种真伪,若为真币,OLED显示模块会显示待测区域内的详细硬币种类和数目。若是新币种,可通过按键操作使系统进入学习模式,学习新的预设值范围并保存于存储器中。系统程序流程如图9所示。
4 系统测试
4.1 程序调试
该程序采用软硬件结合通过KeilV5进行的方式,对各个模块进行单独测试并进行参数调试和分析。随后,整合各个模块,完成功能和性能调试。在确认各模块的供电电压是否正常的同时检测异常情况。若发现异常,需要进行原因分析。编译简单的程序进行单项功能的确认,例如验证光电传感模块是否正常工作,确认是否按预期进行盲盒识别,预设的字符是否在液晶屏幕进行正常显示等。对各个模块的功能进行逐个调试,具体可参考表1。
4.2 实验结果
基于上文原理分析和介绍,我们基于硬币盲盒识别系统设计了对1元、5角、1角硬币单独放置及其组合进行测量的测试。
测量条件:在线圈上放置一个大小适当的盲盒里面放置待测硬币,使线圈和硬币之间保持1mm间距。同时,在线圈上做好标记使得每一次放置硬币的位置相同。
测量方法:首先进入识别分析模式,每一种硬币选出8枚(每种硬币的年份不同),每枚硬币随机检测200次,再将硬币进行随机分组测试。然后通过写入的学习模式将不同硬币组合的特征值范围记录并保存下来,测试过程样图如图10所示。
首先为单个硬币的保存识别中特征值的记录表。无盲盒状态下初始特征值为4299,当放置硬币盲盒时特征值会减少,减少程度随着硬币组合的不同而不同。初步数据表如表2。其中文字组合先后顺序表示硬币的位置顺序。如1元1角为1元在上方、1角在下方。
通过数据清洗和初步处理后的数据可以看出实际操作中会出现错误数据,错误数据是由客观和硬件因素引起的小幅度变化,此数据可以忽略,下面对处理后的数据再进行深度挖掘可以得到不同组合对应的标准值的均值,方差、标准差和标准差系数,数据挖掘效果如表3所示。
通过标准差系数的计算可以看出每个硬币组合的特征值大致处于某个小范围波动,若将以这个范围作为硬币种类的识别范围,在进行硬币检测时可以得到较为准确的识别结果。接下来将这些特征范围通过学习模式写入记录并保存下来,然后对这些硬币种类若干枚硬币进行识别测试,每种硬币类型有10个样本,重复测试20次。对实验检测结果进行统计、识别结果记录以及识别正确率记录,检测结果如表4所示。
由表4可知,最终实验识别率最终都在92%以上,其中2种硬币类型识别率达95%及以上,硬币盲盒识别准确率很高。后续将不断优化精度,使性能更好发挥。根据实验得出的数据可视化折线图如图11所示。
5 结论
本硬币盲盒识别系统以STM32单片机为主控,使用E18-D80NK光电开关传感器、电涡流传感器实现硬币盲盒特征值的采集。由OLED液晶屏系统展示当前数据。该系统通过硬件与软件部分的设计与制作, 方法得当,达到实验目标。该系统可以有效地识别大多数情况下的硬币,在实际生活中具有重要意义。