APP下载

基于STM32F407单片机的控温投喂系统宠物窝

2020-03-11王艳

科学与财富 2020年35期
关键词:热敏电阻

王艳

摘 要:本设计是以STM32F407单片机为核心控制单元,触摸屏模块的显示,对温度的参数进行调节控制和显示的温度控制并且具有定时投喂功能的系统。本系统使用单片机的定时功能对舵机进行控制,实现投喂功能;通过热敏电阻采集水泥电阻的温度,将反馈的温度值与设定的温度值进行比较,使用增量式PID算法,调节输出电压的PWM,以实现控制温度的功能。该温度控制器可以通过调节控制电压输出来调节被加热物体的加热速率,从而达到目标温度,同时具有维持温度稳定和实时显示当前温度的功能。

关键词:STM32F407;热敏电阻;控制温度;定时投喂

1 引言

随着经济的快速发展和物质生活水平的提高,人们的精神和物质文化需求日益增长,当今社会喂养宠物的家庭越来越多。为了解决很多人没有时间照看宠物导致宠物无法得到良好照料的问题,我们团队设计了能够对宠物进行日常生活照料的智能宠物窝。本次设计通过单片机对直流电机、舵机、温度传感器等模块的控制,进而实现对宠物日常生活的照看和监管。

2.1 整体介绍

用温度传感器实时检测宠物窝内环境的温度,并设置一个窝内温度阈值。只要窝内环境温度大于或等于设置的温度阈值,单片机驱动水泥电阻调节窝内的温度,给宠物营造一个良好的生活环境。

喂食器模块内部结构所示,主要是单片机控制直流电机工作带动齿轮旋转从而促使阀门翻转,放出食物。

本方案分为六个模块:电源模块、显示模块、信号处理模块(包含ADC采集功能)、单片机控制模块、功率输出模块,舵机输出投喂模块。下图是整个方案的介绍:

系统通过驱动电路对水泥电阻进行加热,在加热过程中,温度传感器DS18B20感知水泥电阻的实时温度,并输出自身的电压值,根据电源模块提供的电压,得到热敏电阻的电流值,进而由电阻值使用二分法查表计算出水泥电阻的温度。将采集到的温度与目标温度进行比较,如果目标温度高于采集温度,则对驱动电路继续输出PWM;如果目标温度低于采集温度,则停止加热。同时本系统使用了PID算法对PWM输出进行精确的控制,从而可以调节温度的加热速率,维持目标温度稳定。

3.1嵌入式微控制器(ZGT632F407)

在本方案中,STM32F407单片机是实现温度控制和自动投喂的核心部分。它能够方便对温度传感器采集回来的数字信号进行处理,同时使用它的定时器实现定时投喂。它还可以进行低功耗、低电压的操作,并且具有高效性、实时性,同时拥有一个完全集成和易于编程的开发环境。经过比对,发现F407的处理速度明显比F103快,所以最终选取了STM32F407单片机。

3.2显示模块

本方案使用了48寸电阻显示屏显示当前温度。

3.3温度采集模块

在本次设计的温度控制系统中,使用了热敏电阻,它是常用的数字式温度传感器,它的输出是数字信号,方便单片机的读取。这种温度传感器不仅具有体积小,硬件开销低的优势,还具有抗干扰能力强,精度高的特点。

其中,P6通过ADC采集的是温度传感器DS18B20两端的电压值,经放大器跟随输出,用VCC减去ADC1采集的电压,使用欧姆定律计算得到P8两端的电流值,进而求得P1的阻值。在这里我们用到了一种特殊的ADC采集的接头,以尽可能的减小误差,提高测量精度。

3.4舵机控制模块

通过ZGT6STM32F407单片机控制LCD显示屏显示正常时钟,并设置宠物喂食的时间及其喂食量。当正常时间和喂食时间相等时,单片机驱动直流电机带动机械齿轮打开阀门放出食物,直到放出食物量和设定的投喂时间相等,直流电机停止转动,关闭投食阀门,从而实现定时定时喂食。

3.5电机控制电路

当达到30摄氏度时,启动电机井陉降温。

3.6电源部分

本方案在电源部分,使用了单片机上的3.3v供电,另外5v用了学生电源进行供电。学生电源是一种在实验室,与电网连接,把高电压转换成低电压,改变频率的一种设备,我国家庭用电的电压为220V,频率为50-60赫兹,对于实验不适用。学生电源把它降到2V,4V等,最高能达到20V,并且能把交流电变成直流电。实验室电源分为电池,学生电源两种。电池电量小,不适于大功率,长时间工作。学生电源有经济,环保,功率可大可小的特点.一般用与电解实验。

3.7加热电路

加热电路采用5V供电,利用二极管的单向导通特点,IRF630场效应管的开关作用对水泥电阻进行可调PWM输出加热控制。

4.1程序流程图

4.2 温度加热PID算法

在溫度控制方面主要应用了增量式PID算法,PID调节规律对连续系统动态品质的校正非常有效。它的参数整定方式简便,结构改变灵活。在过程控制中,按偏差的比例P、积分I和微分D进行控制:

其中P的作用是比例控制,单纯使用比例控制                                  时,在不存在稳态误差的前提下,单P是可以达到我们所需要的目标的。在此温度控制系统中,如果PWM输出为0,温度就会降低,即产生了我们上述所说的稳态误差,这时就需要积分I来同步调节:

由于加了积分项,输入变大,稳态误差就会减小。微分项的值是一个负数,它的主要作用是减少控制过程中发生的震荡。

4.3二分查表法

在使用ADC采集函数对温度传感器的电阻值进行温度换算时采用了二分法查找,查找温度精准快速,提高了程序的运行效率。二分法查找数据快速,不需要一一比对数据,节省时间,使温度控制系统显示实际温度误差减小,可以做到实时显示。

5.1软件部分总结

本系统使用KeiluVision5开发环境对单片机进行程序的编写。

初始化部分,在程序初始化的部分,需要把用到的功能及引脚初始化,初始化定时器部分,需要算好定时的时间,本次所用的时间是0.5s,溢出时间的计算方法为Tout=((arr+1)*(psc+1))/Ft us.电机部分的初始化全部放在一个函数里,这样便于更改程序。在初始化之前,需要将这里用到的变量声明好。

主循环部分,在主循环里,数据的显示部分,可以直接调用库函数。在主循环里还进行了标志位的判断,在散热标志位为1时,调用启动电机函数,在这里使用了数组,将每一个引脚的输出做了排序,使电机正常工作。

其次还有投喂标志的判断,这里直接给舵机的信号线一个高电平使舵机打开,延时后给舵机一个低电平信号将舵机关闭。

测温部分,在测温部分,首先使用了ad转换函数,采集到对应引脚的电压值,对十次采集到的电压值求平均得到当前电压值,将电压值除以电流得到采样电阻的阻值,通过查表函数,从表中得到此时电阻值对应的温度值,并返回此时的温度值。查表方式在4.3给出

加热部分,本次的重点部分就是加热部分,得到当前温度时,先对温度进行判断,当温度低于15度时就进行加热,首先对需要用到的定时器进行初始化,以便于输出一个pwm,为了得到满意的pwm在温度控制中引入了pid控制,详细的控制方法在4.3给出,得到了一个动态的pid参数后,将设定温度值与当前温度值做差,得到的值进行计算后输出pwm用于对水泥电阻进行加热,但是在冬季需要更快的加热速度和更高的温度,所以提高了温度设定值和p值,这样温度从0度上升到20度只需要十几分钟。

散热部分使用电机进行控制,本次使用的电极驱动芯片为uln2003,所以不适用pwm输出进行控制,所以采用了对引脚依次输出电平的方式进行控制,这种方法比较简单,缺点是无法对电机的转速进行控制。

定时喂食部分主要使用了定时器中断,中断溢出时间为0.5s,这样比较适于计时,采用的方法也很简单,当秒加到60时,就向分进1,当分加到60时,向小时进1,当小时加到24时,则全部清零,开始下一轮定时。

在写程序时,遇到了很多问题,同时也有很多收获。在调用不同文件夹中的函数时,需要将用到的c文件及h文件包含进来,在外部使用自定义的函数时,需要将函數在使用之前进行声明,也可以将函数在对应的h文件中进行声明,这样比较方便在其他c文件中调用。

5.2硬件部分总结

从最开始,在确定了设计方案以后,我们开始画板子,板子我们做了两版,第一版由于元器件IRF630S MOS场效应管的尺寸问题,导致第一版无法使用。修改以后第二版也有一点问题,电机控制部分使用的芯片尺寸略微有差别,但是可以使用。另外在PCB布线时由于线宽的限制,电源只能使用5V供电才不会发生开路现象。

参考文献:

[1]杨海清,周安栋,罗勇,陈牧,嵌入式系统实时网络通信中的LCD显示设计方法:计算机与数学工程,2010。

[2]姜波,单片机原理及C51应用设计:高等教育出版社,2017

[3]周林,刘嘉敏,C语言程序设计:机械工程出版社,2013

[4]王桔,洪梅.基于STM32单片机的恒温箱系统设计[J].长春大学报,2015

[5]廖泽鑫.温度传感器的设计与研究[D].复旦大学,2012

[6]唐杉林.温度传感器与温度的测量[J].电子测试,2016

面向服务机器人的人机交互系统研究与应用项目编号 : 2019JZZY010128

(潍坊理工学院  山东  潍坊  262500)

猜你喜欢

热敏电阻
基于惠斯通电桥探究热敏电阻与温度之间的关系
共晶焊后热敏电阻的应力分析及优化
热敏电阻接入惠斯顿电桥的装置改进
微安表内阻值对热敏电阻温度计设计的影响
复合NTC热敏电阻材料的制备与电性能研究
热敏电阻特性的线性化方法
基于神经网络的高分子PTC热敏电阻测温准确性的研究
热敏电阻温度计的线性化设计
热敏电阻在电动机保护中的应用
较大量程热敏电阻温度计的设计