吴建清,羊大立,张铁民,严世胜
(海南师范大学 物理与电子工程学院,海南 海口 571158)
酿造米酒在中国有着悠久的历史,在中国南方的农村,米酒是常见的传统地方风味食品,多是自家酿制食用,生产米酒的小作坊也以自产自销为多。酒酿和米酒历来受到人们的喜爱,不仅是因为其本身具有果香味、酒香味等独特风味和口感的缘故,更重要的是它营养十分丰富、酒精度数低、酸甜可口且富含多种氨基酸、葡萄糖、麦芽糖以及适量的有机酸、维生素和各种矿物质。酒酿中的低糖成分人体极易吸收,具有健脾、健胃,快速补充能量的功效,适量的有机酸和各种维生素矿物质亦能被人体快速地消化和吸收,达到均衡营养和保健的作用[1]。
米酒的酿造步骤为:洗米、浸米、蒸煮、冷却、配曲、糖化和发酵。制作好米酒的关键除了在全部制作过程中要做好人手、工具和容器的清洁卫生外,还要控制好酵母菌生长过程中发酵的温度[2]。通常酵母菌所处的环境温度如果低于0 ℃或者高于47 ℃,那么它就不能正常生长,米酒就不能正常发酵。最适合酵母菌生长的温度范围是25~30 ℃,所以在酿造米酒的时候最好能保持在这个温度范围之内。
在现代生活中,恒温箱广泛应用于各行各业,特别是实验室、物流、医药、酿酒和工业生产方面,为了得到精确的实验数据和保持精确的恒定温度,这些领域对恒温箱有非常严格的要求。在当今市场上,已存在很多种恒温箱,但大多数温度精度不高、波动范围较大,制热制冷效率不高、体积不可变、适应性差。本文设计的酿酒恒温箱,具有精度高、实时性好、控制器和箱体可分离等特点,可用于家庭一年四季的糯米酒等的酿造中。
如图1 所示为系统总体结构框图,主控芯片采用STM32F103C8T6,接收温度传感器DS18B20 发送过来的温度值[3],并显示在0.96″的OLED显示屏上,独立按键模块可以设定目标温度和PID 3个参数。根据设定好的3个参数,通过驱动芯片SI4336加热或制冷用泡沫做成的恒温箱,并运行PID算法,使恒温箱内部的温度慢慢稳定于设定温度。用C#语言在Visual Studio 2019上编写了上位机软件,通过串口实时描绘温度曲线并存储这些温度值。最后用SolidWorks软件设计了酿酒恒温箱控制器的外壳,并3D打印。如果恒温箱温度超过警示温度值,系统会超温报警[4-5]。
图1 系统总体结构框图Figure 1 Overall structure block diagram of the system
系统硬件电路主要包括了主控电路、显示电路、加热模块电路、制冷模块电路、电源模块电路、温度数据采集电路和按键电路,下面主要介绍前4个模块。
根据酿酒恒温箱系统的功能要求,需要一个运算速度快、通信接口多、成本相对低廉的嵌入式芯片。本设计采用了意法半导体公司的STM32F103C8T6作为系统的核心芯片。它基于超低功耗的ARM Cortex-M3处理器核心、64 KB的FLASH存储器和20KB的SRAM,采用LQFP48的封装方式,具有37个通用I/O口,工作电压为2.0~3.6 V,4个16位定时器,1个CAN接口,2个12位ADC,2个I2C接口,3个USART接口,2个SPI接口,支持串口调试(SWD)和JTAG调试,其内部时钟振荡器频率为8 MHz,具有可灵活配置的PLL[6-8],最小系统原理图如图2所示。
图2 STM32F103C8T6最小系统图Figure 2 Minimum system diagram of STM32F103C8T6
显示屏模块采用0.96″的OLED液晶屏幕,分辨率为128×64,4线的I2C接口方式,屏幕所用的驱动IC为SSD1306,其具有内部升压功能,所以在设计的时候不需要再专门设计升压电路,模块电路图如图3所示。
图3 0.96”OLED屏幕电路图Figure 3 Circuit diagram of 0.96"OLED screen
加热模块的功能是对酿酒恒温箱进行加热,输入的电源是12V/10A,STM32 发出脉冲宽度调制(Pulse Width Modulation,PWM)信号,MOS管功率芯片SI4336接收PWM信号,然后输出大功率的信号给电热丝对恒温箱进行加热。芯片SI4336是N型管,最大耐压30V,最大通过电流22A,导通电阻4.2MΩ。对加热模块设置了一个开关K1,如图4所示,当按下K1时,加热电路模块接通,如果DS18B20检测到的环境温度低于设定温度,就开始加热,还设计了一个用于检测加热模块是否通电的电路,如果通电了,红色的发光二极管LEDR1就会亮,如果电热丝开始工作,LEDRED会亮,电热丝功率越大,LEDRED会越亮。
图4 加热电路图Figure 4 Heating circuit diagram
制冷模块的功能是对酿酒恒温箱进行制冷,输入电源是12V/10A,STM32发出PWM信号,MOS管功率芯片SI4336接收PWM信号,然后输出大功率的信号给半导体制冷片TEC1-12706进行制冷,在制冷片的制冷面和散热面都装有散热片和风扇,使冷气和热气快速散开,2个散热风扇的风速可以通过滑动变阻器进行调节。对制冷模块设置了一个开关K2,如图5所示,当按下K2时,制冷电路模块接通,如果DS18B20检测到的环境温度高于设定温度,就开始制冷,还设计了用于检测制冷模块是否通电的电路,如果通电了,绿色的发光二极管LEDRB2就会亮,如果制冷半导体片开始工作,LEDBLUE会亮,制冷半导体片功率越大,LEDBLUE会越亮。
图5 制冷电路图Figure 5 Refrigeration circuit diagram
在酿酒恒温箱系统中,系统的主要功能是通过软件来实现的,软件设计的好坏决定着系统的性能,所以软件设计是一个重要环节。系统要实现的功能是首先测量恒温箱内的温度,然后与设定温度值相比较,通过PID算法,用STM32的PWM去控制MOS管功率芯片SI4336,使电热丝加热或半导体制冷片制冷[9-10]。
整个控制板的软件采用模块化设计思路,控制板上的软件由多个模块组成,每个模块实现不同的功能。主要由主程序模块、PID算法模块、加热模块和制冷模块等组成。
为了方便酿酒恒温箱的PID参数整定、温度设定、系统调试和查看,使用C#在Visual Studio 2019环境下编写了上位机程序,还设计并制作了控制器的外壳。
恒温酿酒箱主程序流程图如图6所示,主程序首先对系统进行初始化,当系统上电后,主程序对STM32、DS18B20、串口和OLED等进行初始化操作,然后通过3个独立的按键,设定系统将要稳定在的目标温度和3个PID参数,当设定温度高于酿酒恒温箱内的环境温度时,系统需要加热才能达到设定的温度,所以要按加热按键;当设定温度低于酿酒恒温箱的环境温度时,系统需要制冷才能达到设定的温度,所以要按制冷按键。要是加热和制冷按键同时按下,加热优先。
图6 主程序流程图Figure 6 Main program flow chart
PID控制算法是最经典、最简单、最成熟而又应用最广泛的控制方法,它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点。虽已被提出有几十年之久,但仍然广泛应用在工程领域。
PID 算法的执行流程是非常简单的,即利用反馈来检测偏差信号,PID 算法将控制偏差e(t)的比例、积分、微分进行线性组合构成控制量,对被控对象进行控制。PID控制系统框图如图7所示。控制量u(t)可以由式(1)表示,
图7 PID算法框图Figure 7 PID algorithm block diagram
其中,KP为比例系数,TI为积分时间常数,TD为微分时间常数。
在嵌入式系统中,实现PID算法需要用数字PID算法,本设计采用位置式算法,将实际温度与设定温度之差经比例积分微分运算后拟合成PWM占空比数值,输出给MOS管功率芯片SI4336去驱动加热或制冷电路,对式(1)进行离散化处理可得:
通常把式(2)称为位置式PID算法[11]。
PID算法模块主要功能是实现位置式PID控制,先将偏差值e(k)的初值置零,然后读取设定温度的值和恒温箱内的实测温度值,算出温度偏差值e(k),接着根据位置式PID算法计算出增量u(k),最后用增量去控制STM32输出的PWM占空比。
STM32依据PID算法输出的控制信号来确定要输出的PWM占空比,当设定温度高于恒温箱内部环境温度并按下加热键,系统通过调节STM32输出的PWM 占空比来控制加热丝的功率,PWM 占空比越大表示加热丝在一个周期内工作的时间越长,平均功率也大,发热增多;反之,平均功率小,发热少。
系统的上位机软件采用Microsoft Visual Studio2019开发环境作为开发平台,用C#语言编写上位机程序,首先设置好串口相关参数,接着打开串口,发送设定温度、PID参数和PWM最大值给控制器,在上位机软件上就实时显示恒温箱内的温度,同时也用曲线实时显示温度,并将这些数据保存到.txt文本中,图8~9就是正在运行中的上位机界面[12]。
图8 目标温度为31℃时的温度数据曲线Figure 8 Temperature data curve when the target temperature is 31 ℃
在目前市场上所见到的三维CAD解决方案中,SolidWorks是设计过程比较简便的软件之一,功能强大、易学易用,能够提供不同的设计方案,减少设计过程中的错误以及提高产品质量。由于SolidWorks软件是在Windows环境下重新开发的,因此能够充分利用Windows的优秀界面资源,为设计师提供友好、简便的工作界面。采用SolidWorks 2014版进行酿酒恒温箱控制器的外壳设计,并用爱能特(Anet)ET43D打印机打印的酿酒恒温箱控制器的外壳和按钮。
采用54.0 cm×39.0 cm×17.5 cm大小的泡沫箱作为系统的箱体,系统上电后,对各个模块进行初始化,控制器的右下面有3个,左边第一个是“设置”功能切换键,每按一下切换一种功能,功能依次是:温度设定、P设定、I设定和D设定。当系统处于上面任何一种功能时,第二个键按下时参数值加1,第三个键按下时参数值减1,控制电路板运行的实物图如图10所示。
图10 酿酒恒温箱控制器实物图Figure 10 Physical drawing of brewing incubator controller
对酿酒恒温箱系统的加热功能进行测试,上位机软件采集恒温箱的温度数据并实时显示在软件上,测试时恒温箱所处环境的温度为26.6 ℃,目标温度为31.0 ℃,PID的参数为400、8、380,采集到的温度数据曲线如图8所示。
对系统进行制冷测试时,测试时恒温箱所处环境的温度为26.6 ℃,目标温度为19.0 ℃,PID 的参数为400、30、100,采集到的温度数据曲线如图9所示。
图9 目标温度为19℃时的温度数据曲线Figure 9 Temperature data curve when the target temperature is 19 ℃
从图8~9中可以看出,酿酒恒温箱系统的加热和制冷都正常运转,系统经过2个振荡后箱体内的温度稳定在目标值附近,系统运行30 min后,恒温箱内的温度都稳定于目标温度。
对酿酒恒温箱系统内的温度控制精度进行测试,测试时恒温箱所处环境的温度28.6 ℃,目标温度为40、35、30、25、20 ℃,系统运行1 h后,对恒温箱内温度进行测量,测量的结果如表1所示。由表1得到的数据可知,当系统运行1 h后,系统温度控制的最大偏差为0.1 ℃,所以系统的温度控制精度可以达到0.1 ℃。
表1 温度控制精度测量数据与超调量测量数据Table 1 Temperature control accuracy measurement data and overshoot measurement data
超调量是指输出量的最大值减去稳态值的差与稳态值之比的百分数,对系统内的超调量进行测试,测试时所处环境的温度为28.8 ℃,目标温度为40、35、30、25、20 ℃,系统运行1 h后,记录下恒温箱内温度的最大偏差,然后计算出系统的超调量,由表1的数据可知系统的超调量在2%以内,超调量是比较小的[13]。
用相同的酿酒恒温箱控制器、加热丝和制冷模块,分别接尺寸为29 cm×26.5 cm×16.5 cm、54 cm×39 cm×17.5 cm、59 cm×35 cm×32.5 cm的小、中和大3个泡沫箱,整定的PID参数分别为360、6、100,360、10、100,360、14、100。图11为3个不同体积箱子的初始温度28.6 ℃,系统经过1 h运行后,3条曲线都慢慢恒温于25 ℃,即3个不同体积的恒温箱经过1 h的运行后箱内温度都恒温于系统设定温度25 ℃。
图11 3个不同体积的恒温箱恒温到25℃Figure 11 Constant temperature of three thermostats with different volumes to 25℃
用上面做好的酿酒恒温箱来发酵米酒。将3 kg糯米浸泡1d,上蒸锅蒸0.5 h,完全熟透后,冷却到室温,放酒曲和凉开水,拌均匀,再把糯米放于盆中,中间掏一个洞,最后把盆放在尺寸为54 cm×39 cm×17.5 cm的恒温箱里,恒温在25 ℃发酵3 d,图12是发酵3 d的甜糯米酒。如果要酒味浓烈些,用薄膜盖住盆保持厌氧发酵,发酵越久甜味越少,酒味越浓,最长1个月即可。
图12 酿酒恒温箱酿糯米酒Figure 12 Brewing glutinous rice wine in a brewing incubator
酿酒恒温箱以STM32F103C8T6单片机作为系统的核心芯片,使用加热丝加热和半导体制冷片制冷,系统具有加热、制冷和恒温功能,通过按键或上位机都可以进行温度和PID参数的设定与温度显示,系统温控范围为19~40 ℃,温度精度达0.1 ℃,超调量2%,箱体体积可变,运行0.5 h后系统趋于稳定,满足人们一年四季任意时刻酿米酒的需求。