基于EDA的自动售货机设计
2018-05-28新疆石河子大学机械电气工程学院宋雨桐佘赛波
新疆石河子大学机械电气工程学院 宋雨桐 瞿 谊 佘赛波
引言
随着科学技术发展和社会进步,商业机械的自动化得到越来越广泛的应用,自动售货作为商业机械自动化的典型应用,给大众生活带来的巨大的便利,同时给商家节省了销售成本。在中国,自动售货机将成为一个潜在的巨大产业,继百货商店、超市之后掀起第三次零售业革命,其前景非常广阔[1-3]。
自动售货机功能的实现主要依靠其内部控制系统,目前国内外对自动售货机的控制主要有PLC控制程序、CPLD芯片控制、VHDL语言控制等。文献[4]采用可编程序控制器(PLC)控制自动售货机,文献[5]采用单片CPLD芯片使自动售货机实现其基本功能,文献[6]通过单片机实现了自动售货功能。文献[4-6]都实现了自动售货的功能,但所需的专业编程知识较多,对电子爱好者来说具有一定入门条件。现代自动售货机的内部控制系统大多采用VHDL描述语言,用有限状态机进行系统状态描述,通电复位后系统自动初始化,根据外界输入的信号转换成投币状态、销售状态、显示状态、找零状态[7]。
基于QuartusII模块化设计,通过逻辑电路实现自动售货机的基本功能,简化了自动售货机的设计难度,利用程序的编写,完成控制电路的设计。各电路模块互不干扰、具有良好的兼容性,且使得电路模块具有一定的可移植性。
1.性能指标及功能设计
1)商品选择电路
商品选择电路是一个双选择5-8组合优先编码器,即选择商品的种类A,B,再选择对应种类下的商品,相当于输入对应的BCD码,会出现对应的输出rst_n,再将rst_n接到分线器的reset_n,即完成了商品选择过程。
2)投币找零电路
投币找零电路是由多个状态机组成,在选择不同的商品,列出其选择商品可能性,对应不同的投币找零电路所对应的状态机,
3)计数电路
根据不同的投币找零电路的状态机,对应不同的计数电路的状态机,根据其所投币的多少,不同价位对应不同的数值找零。
2.各模块详细设计
2.1 商品选择电路
1)商品选择电路基本工作原理
实现自主选择功能,当顾客按下想要买的商品对应的按钮时,则会产生对应编号的输入,从而通过商品选择电路得到对应输出信号,这些输出将会传递给后面的投币与找零电路即状态机内,实现商品的选择。本自动售货机提供以下商品:
商品 方便面 小熊饼干 奥利奥 德芙 冰红茶 脉动 红牛 咖啡价格 2 4 6 8 3 4 5 6编号(AB) 10001 10010 10011 10100 00001 00010 00011 00100
给定输入变量AB以表示不同商品,A=1代表选择零食,A=0代表选择饮料,B则是不同商品对应的特定编号。由于后面希望不同商品即不同价位应对于不同的状态机实现不同的找零,而状态机是否功能取决于复位信号是否有效,所以当顾客选择物品后,对应的输出信号能使对应价位的状态机的复位信号为1即无效,实现选择物品后能自动对应找零的效果。
2)时序仿真
图2.1 商品选择模块的仿真波形
2.2 投币与找零电路
1)投币与找零电路基本工作原理
投币信号作为输入信号,由售货机的投币口的传感器提供,故本设计中只将其抽象为两位二进制数。售货机默认只收5元和10元纸币。售货机内的钱数只有0元、5元和10元三种状态。在这三种状态间转换的动作即是对投币、出货与找零的任务的执行。
图2.2 小于五元、等于五元、大于五元的状态转换图
驱动状态转换的信号有两个,一个是clk时钟信号,确保状态机能随时间的推移而自动运行,还有一个是现态c_st,现态c_st的改变也将作为启动状态机工作的条件之一。输入信号两位,第一位代表是否输入了纸币10元,第二位代表是否输入了纸币5元,输入信号决定了状态机状态转移的方向。每个状态对应一个三位二进制的输出,分别代表出货信号、找5元信号和找1元信号,用以驱动后续的电路实现相应功能(图2.2)。
2)部分时序仿真
图2.3 三元商品状态机仿真波形图
2.3 计数电路
1)计数电路基本工作原理
计数电路的基本工作原理就是当达到CLK的上升沿时候,并且此时EN端为高电平时,此时计数电路工作,当达到下一个CLK的上升沿的时候,判断EN是否为有限信号,有则计数,否则不工作。根据投币找零电路来设置计数电路计数的多少。
计数电路中的状态机程序编写是通过找零1元和5元的个数,分别编写其对应个数的找零,即找零几个1元就从几倒计时到0,即找零倒数到0,如果需要找零4元,其计数电路救赎从4开始倒数到0,倒数结束即找零结束。 利用if-else语句对一元的出币数进行判断,针对不同的状态机和输入,进行不同数量的计数。
2)部分时序仿真
图2.4 找四个一元的计数电路仿真波形图
2.4 分频电路
将20MHZ高频电路分频成1HZ的频率,使其便于板级验证。利用if-else语句对高频的clk进行降频,分成不同频率的clk模块,此模块无仿真,综合代码见附录4.1
3.总设计
3.1 总设计图
各个模块的连接状态,首先是商品选择电路连接的输出连接到一个8线分线器,将对应8线分线器输出分别对应接到相应的rst_n,将clk连接到分频模块,接到每个状态机的en,将投币找零电路的输出com_output分别接到3线分线器的输入,再将对应的3线分线器的输出out1接或门接到输出管脚,将对应的out2输出接到或门接到输出管脚,将每个out3输出管脚接到分别接到计数电路的en,再将clk输入到接到板上自带的clk信号,输出在分配到对应的管脚。
3.2 仿真验证
以投10元买8元商品为例,简要介绍对售货机原理的仿真过程和验证结果。
首先,设置clk的频率为50HZ,每隔0.02s自动翻转一次信号的高低电平。接着,给定状态机的输入信号的变化规律。其中,输入信号A和B组合起来共同决定选择的货物的价格,输入信号input设置投入钱数。这里A取低电平,B取1,表示选定的是价格为8元的商品,投钱信号在前10个clk周期内先清零,后给一个数值为10的信号,代表投入10元。
接下来,运行状态机仿真,根据之前的各模块的内部连接图,可知在input信号为0时,所以输出模块保持最初的零状态。但当input信号变为10时,在接下来的第一个clk到来后,商品选择电路将会输出对应的rsn信号,以推动其后模块执行售货机的下一流程。这里,只有rsn4输出低电平,激活其后的fsm8状态机,该模块立即根据输入input的10,将状态从0状态变为10状态,并使输出出货信号OUT持续一段高电平,控制找五元的输出信号OUT3继续为0,以及使找一元的输出信号置一。它会继续激活后续的change2模块,用以实现找出2元零钱的功能。
在找一元的输出信号置一后的第一个clk上升沿到来后,启动change2的状态机,使状态机的状态从2逐渐减一到0后保持0不在变化,这样模拟了实际的找零时一元一元找零时的计数倒数过程。通过以上的仿真过程分析以及仿真结果的波形图可以看出,售货机的状态流程图基本得以实现。
图2.5 投10元买8元商品
4.总结与展望
本文利用EDA实现了一种自动售货机的内部设计,针对它的各个功能进行了详细的分析和程序设计,最后封装并进行了仿真,验证了它的有效性。将这种简易的设计应用于自动售货机内,可以为人们带来生活的便捷并提高销售的速度并带来一定的社会价值。在本文中用EDA实现的自动售货机可以结合人脸识别功能、虹膜识别功能和语言识别功能,使其更加智能化,能够更加适应于现代化生活。
[1]王颖,陈小娇,柳雨婷,米思雨.基于FPGA的自动售货机控制电路设计[J].信息记录材料,2017,18(08):86-87.
[2]俞宁,梅杰,陈智.基于人因工程学的自动售货机设计改进研究[J].重庆理工大学学报(自然科学),2017,31(03):43-51.
[3]邵元浩.散装饮料自动售货机关键部分的分析与研究[D].青岛科技大学,2016.
[4]陈齐平,张文俊,王钢林,李鹤贤,阚清享.基于Multisim的简易自动售货机控制系统设计与仿真[J].华东交通大学学报,2015,32(06):88-92.
[5]徐龙飞,李永红,程秀芹,岳掌宽.自动售货机系统设计[J].电子世界,2014(02):120.
[6]林若波,廖兴展,方宋杰.基于PLC控制的自动售货机系统设计[J].齐齐哈尔大学学报(自然科学版),2011,27(01):20-23.
[7]余世明,晁岳磊,缪仁将.自动售货机研究现状及展望[J].中国工程科学,2008,10(07):51-56.