孙雪非,张 涛,2
(1.中南大学 信息科学与工程学院,长沙 410083;2.湖南省长沙市矿山研究院,长沙 410083)
电饭煲、豆浆机、榨汁机等自动化厨房设备的相继面世以来,极大的便利了人们的生活。自动炒菜机也成为人们越来越期望的自动化设备。总结市面上现有的自动炒菜机和研究学者提出的理想方案,主要分为以下三种:第一种是以九阳J7全自动智能炒菜机为例的小型炒菜机,带有一个普通炒锅,使用手机APP或电脑控制点菜,加入食材自动焖煮、最后手工调味。第二种是以德国宝ISF-622多功能智能炒菜机为例的带滚筒的较大型炒菜机,带有控制面板,加入食材之后,可模拟人工翻炒,最后手工调味。第三种是Morishita等人提出的包含多个监控烹饪动作的传感器、完成厨房烹饪流水线厨房控制系统[1]。
第一种方案操作灵活,但由于炊具的限制,只能实现焖煮的操作,可以烹饪的菜肴有限;第二种方案可以实现食材的充分混合,烹饪方式有所增加,但与第一种方案均需要人工加入调料、端菜和洗锅;第三种方案基本可以满足要求,但目前还停留在概念阶段。本文旨在设计出能代替人的大部分甚至是全部的工作,设计出能够烹饪多种复杂的菜式且口味有一定的保证;能够端出烹饪完成的菜肴并实现传菜功能;能够循环烹饪、自动洗锅刷锅的智能炒菜机。
本文在设计时希望可以省去人工添加调料,端菜和洗锅的工作,人工只需要在已经分好类(肉类1、肉类2、蔬菜1、蔬菜2、蔬菜3、主食、盐、醋、糖、酱油和料酒等)的盒子中加入相应原料,等待菜肴烹制完成出锅即可。因此将该智能炒菜机设计成为一个流水系统,又参考了小型自动炒菜机的手机和PC终端点菜控制功能,设计了一个由一台上位机下发控制指令,多台下位机接收指令并执行的系统,整体结构图如图1所示。其中,上位机人机交互界面由QT编写[2],具有点菜、预约和取消等功能,与数据库相连,可从数据库中调取厨师的经典菜单。下位机包含检测模块和执行模块两个主要部分,执行部分包括电源模块、炒菜过程中需要使用的炒锅、电磁炉模块及洗锅、投放物料和端菜传菜过程需使用的直流电机、步进电机及步进电机驱动器模块。检测部分包括检测炒锅和电磁炉内液面高度的液位浮球开关、检测炒锅和电磁炉内物料温度的PT100测温元件和检测电机运转状态的接近开关等模块。本文的主要研究对象是智能炒菜机的下位机部分。
图1 智能炒菜机系统结构框图
本次设计需要下位机实现以下功能:对6台步进电机、8台直流电机、1台变频电机的控制;对炒锅和电磁炉的温度控制;对16个接近开关和8个浮球液位开关的状态的检测;对温度和电流的检测。考虑到可以使用轮询访问方式减少接近开关及浮球液位开关所使用的IO口总数,增加IO口的利用率,在设计因此在设计硬件原题图时,引入了片选芯片74HC4051、7CHC4067,整个系统共计需要40余个开关量和模拟量的输入输出,系统的原理设计图如图2所示。
图2 系统硬件设计原理框图
其中主控制器为Microchip公司生产的PIC18F87K22芯片[3],PIC18F87K22有RA至RG共7组IO口,每一组IO口有八个子IO口,共计56个IO口,该芯片还带有12位AD转换器、1MB增强型闪存器、具有80引脚的高性能单片机,可以提供3路PWM输出,可满足本次设计的所有要求[4]。
智能炒菜机在炒菜、端菜、传菜和洗锅过程中需要使用到直流电机、步进电机和变频电机。对于直流电机的控制,本文利用继电器的开关特性既可以实现无驱动器控制的直流电机控制方式,同时也支持有驱动器环境下的直流电机的控制。图3为一组直流电机控制的电路原理图。无驱动器控制时,利用继电器使直流电机两端电压分别为+12V和AGND,实现直流电机正转或反转;当直流电机两端电压相同时,电机停转。有驱动器控制时,可通过控制“使能端”和“方向端”的电压值为+12V或AGND,与直流电机驱动器相连,控制同理。
图3 直流电机控制电路
对于步进电机的控制,本系统采用了MOONS'公司的SR2驱动器,共阴极接法。PIC单片机输出两路开关量“EN”和“DIR”分别控制步进电机的转停和转向,输出一路脉冲“STEP”控制步进电机的转速。步进电机驱动示意图如图4所示。
图4 步进电机驱动示意图
对于变频电机的控制,PIC18F87K22单片机具有PWM输出功能,为了保证这一路输出经过光电耦合器只被隔离而不影响原有的占空比,本文采用输入输出成线性关系的HCNR200线性光耦,调整电路参数[5],使输入输出保持线性关系。
PIC单片机输出的PWM脉冲,即为HCNR的输入端,其电压为Vin;连接变频器的端口为HCNR的输出端,电压为Vout,HCNR的输入端和输出端存在如下线性关系:
图5 PT100测温前置放大电路
其中,K为比例系数,R1和R2分别如输入端和输出端的电阻。因此,可以驱动PIC单片机输出占空比不同的PWM方波,再通过HCNR200线性光耦驱动变频电机以不同速率工作。
智能炒菜机系统在制作菜肴时需要实时监控锅内物料的温度,因此选取合适的温度传感器及设计相应放大电路来获取准确的温度值是本系统硬件设计的一个重点。本文使用的温度传感器是PT100,是一种稳定性和线性都比较好的铂丝热电阻传感器,工作范围为-200℃至 650℃[6]。考虑到炒菜环境中的物料温度,本系统中选择其工作在0℃~500℃范围。PT100测温电路分为两部分:传感器前置放大电路和单片机A/D转换电路。前置放大部分原理图如图5所示。从图中可以看出传感器的两端接入一个二级放大电路,放大倍数分别为。按照PT100的参数,其在0℃~500℃的区间内,电阻值为100~280.9Ω,根据放大电路的工作原理,PT100放大电路的输出端电压Up与PT100阻值有如下关系:
其中,Vcc为参考电压,RPT100为PT100传感器的实时电阻,根据式(2)可求得RPT100,又因为在-200℃~650℃范围内,温度T与阻值RPT100间存在较好的线性关系,则有:
其中RPT100为PT100在环境温度为0℃时的阻值。连列式(2)和式(3)可以计算出不同输出电压对应的检测温度[6]。
图6 PIC单片机主程序流程框图
完成了系统的硬件部分的实物设计后,需要根据本次设计需要,在PIC单片机机中烧录相应程序。下位机的程序决定了与上位机之间的通信方式,及收到上位机指令后将如何动作,程序主要分为主程序和中断两个部分,主程序的流程框图如图6所示。由图中可以看出,主程序中为一个大循环,在每一次循环中下位机判断上位机是否有发给该下位机节点的指令,若有,则存储指令,更新相应的标志位和时间点,并根据已经获得的接近开关和浮球液位开关的实时检测结果Flagi(i=1,2,…,24)来控制执行机构的执行相应的动作;若没有上位机的新指令,根据原有的标志位和时间节点,结合实时检测结果Flagi(i=1,2,…,24)执行相应动作。
中断程序分为三个部分,T0中断用于检测接近开关和浮球液位开关的动作变换及获得对应序号,T2中断用于指令动作时间的定时,AD中断用于检测外部的输入,流程框图如图7所示。
图7 PIC单片机中断程序流程框图
T0中断设为50ms,即每50ms进入一次T0中断,在该中断中,T0定时器重新赋初值,控制片选芯片,一次访问片选芯片的各个输出端的端口电压,则可获得各个接近开关和浮球液位开关的状态,刷新实时检测结果Flagi(i=1,2,…,24)。
T2中断设为100ms,通过累加获得系统时间的秒、分和时,用于下位机的定时,与指令中各执行机构的开始动作时间和结束动作时间结合判断,控制执行机构的动作。系统进入AD中断后,开始将外部系统输入的模拟量转化为数字量,再由PIC单片机做后续处理。
本系统PC端的人机交互界面实现点菜、预约等功能,本文在设计界面时选择了QT作为开发平台,C++作为编程语言,利用QT自带的串口库程序,实现与下位机的通讯。本文设计的指令发送界面如图8所示,此界面分为三个区域,串口设置区域、发送区域和接收区域。接收区域可以选择通讯端口及传输速率,发送区域为指令列表,接收区域为下位机发送来的各外围设备运行状态的检测数据[5]。
图8 上位机指令发送界面
由于菜谱数据复杂多变,且需要在云端更新,我们引入了MySQL数据库,将菜谱中的每一道菜存为一组长为28个字节的指令数据,存储于数据库中的一个表中,接收到的检测数据存储了数据库的另一个表中,需要时我们可以直接查阅并调用数据库。
由于在使用过程中,主控制器需要不断地将检测模块的实时检测数据和当前执行模块的运行状态传送给上位机,上位机通过计算判断需要不断给主控制器发送指令,因此上位机与下位机的通讯需要高速且稳定,由于智能炒菜机系统需要多个主控器及其外围设备配合,因此通讯时还需要考虑多个节点之间的干扰和对总线的占用问题。本文针对上述要求,选择工业级别的Modbus总线协议,使用RS485通讯接口,实现上位机与多个下位机之间的通讯。为了精简系统结构,增加系统的通讯灵活性,本系统没有使用Modbus芯片,而采用了软件编写代码的方式实现Modbus协议[6],上位机Modubus模块的流程框图如图9所示。
图9 Modbus协议代码实现流程图
本文基于PIC18F87K22单片机,实现了AD转换,实现了PWM输出,实现了对多节点、多路输出的控制,实现了对多路接近开关和浮球液位开关的轮询访问,设计完成了一个集点菜、烹饪、传菜和刷锅功能于一体的智能炒菜机系统。在整个烹饪过程中,人工只需从菜谱中选择烹饪的菜肴并投入相应物料即可,极大的解放了繁杂的烹饪工作,在智能厨房等项目中有良好的应用前景。
此外,本系统也存在一些可以改进的地方,在人机交互方面,可以考虑与手机app结合,实现移动化控制;在产品功能方面,可以增加物料的分类洗涤,如对肉类原料和蔬菜类原料进行不同程度的清洗等。