基于机智云的STC单片机水温智能控制系统的设计与实现
本文设计了一种物联网的水温控制系统,包括机智云物联网平台,DS18B20水温传感器、水温主控制器和通信模块STC单片机、esp8266无线模块等。系统通过采集当前水温的状态和按键的控制状态,采用PID算法得到控制值,输出信息给加热驱动和直流电机模块,实现水温的加热,同时通过并口和通信模块连接,通信模块通过串口和ESP8266连接,ESP8266通过WiFi连接物联网平台,实现温度的远程监测和控制。
1、系统总设计
系统硬件包括STC单片机控制电路、通信电路、液晶显示电路、加热驱动电路、温度均匀搅拌装置和无线WiFi模块组成的系统硬件装置。系统硬件模块连接如图1所示。系统软件主要采用C语言编写,通过C语言和Keil搭建软件编程环境,机智云物联网平台和硬件电路开发板作为调试工具来完成系统设计。
2 关键电路设计
2.1 系统主控模块和通信模块
在智能化控制方案中,系统采用两个STC单片机搭建方案,一个STC单片机作为主控制器,负责信号的处理、显示、输出控制等。另一个STC单片机作为通信控制器和ESP8266无线WiFi连接,解决通信中通信协议数据量大和控制器RAM小的问题。其中ESP8266无线WiFi器件为核心的数据传输模块,连接机智云物联网平台,数据通过通信链路实现传输,在机智云物联网平台上或终端进行数据监测。其硬件原理图如图2所示。
2.2 系统工作电源及最小系统工作原理图
系统工作电源采用直流稳压电源,利用变压器把220V交流变直流,通过桥式镇流、滤波、稳压器件LM7805和LM1117RS-3.3分别得到5V和3.3V的工作电源。直流加热电源采用集成24V/200W的开关电源供电。5V和3.3V的电源分别为STC单片机最小系统和ESP8266无线WiFi模块供电,其中STC单片机最小系统包括电源电路、复位电路、时钟电路及下载电路。硬件原理图如图3所示。
2.3 信号采集及电机搅拌原理图
温度采集采用DS18B20传感器对水温进行采集,加热系统采用直流加热棒进行加热。在整个加热和水温采集环节,发现采集的温度点不一样,得出温度控制参数不一致,经过不断实验和发现,温度在加热过程中存在不均匀现象,会有不同温区存在。为解决水温不均匀的现象,设计一种搅拌装置,在水温加热过程中周期性对加热区的水进行搅拌,使得DS18B20能够采集到较准确的水温值,在整定PID过程中能够得到更为准确的PID参数,进而提高系统稳定性和可靠性。硬件原理图如图4所示。
2.4 信号输出驱动及液晶显示电路原理图
系统采用24V/200W直流电对加热棒进行加热,加热棒的温度直接影响水的温度,因此控制加热棒温度就能控制水的温度。设计一种PWM(脉宽调制)信号对直流加热棒的驱动电压加热时间进行控制,进而控制加热的热能,PWM信号是实际温度与设定温度的差值通过PID计算得到的一个控制值,能够精确控制温度信号。为使控制器的PWM输出能够控制24V/200W的驱动信号,用SSR单项固态继电器设计了输出驱动电路,经反复实验表明,该驱动电路能够满足系统的要求。其显示部分用带中文字库的字符液晶ST7920控制的12864显示温度数据和温度设定,并实现温度曲线的实时绘制和温度控制时间的显示。其硬件原理图如图5所示。
3 软件流程架构及算法
随着通信技术的发展,STC单片机的功能越来越强大,有代表性的编译软件有Keil、IAR、CodeWarrior等。代码语言有汇编语言、C语言、Java语言等。C语言具有良好的逻辑及功能性,本次设计选择STC单片机作为主控制器,编程语言选用C语言,编译软件选用软件Keil。
3.1 系统软件设计总体流程图
整体系统软件设计是由系统中不同功能模块整合在一起实现系统功能。系统中包括PWM输出程序设计、PID温度控制程序、按键扫描程序、液晶显示驱动程序、WiFi模块通信程序、报警电路、DS18B20温度传感驱动程序及电机驱动搅拌装置。根据软件框架图,设计程序流程图,为程序的功能实现、算法编码、软硬件调试、后期维护提供条件。程序总体流程图如图6所示。
图6 程序总体流程图
3.2 系统核心控制和通信算法理论
PID温度控制是一种成熟技术,具有结构简单、易于理解和实现的特点。在工业控制中90%以上的控制系统回路都具有PID结构。PID调节将设定值W与实际值y进行比较构成偏差,并将其比例、积分、微分通过线性组合构成控制量。采用PID控制效果的好坏很大程度上取决于PID三个控制参数的确定。PID控制主要构成如如7所示。
图7 模拟PID控制
PID控制的动态方程为:
其中,Kp为调节器的比例放大系数;Ki为积分时间常数;Kd为微分时间常数。
水温系统的智能控制采用PID增量式算法,根据实验结果和数据,采用先比例再积分,最后微分的实验凑试法进行PID参数整定。比例系数的整定取消积分和微分的作用,采用纯比例控制,将比例系数从小到大调节,观察系统的响应,直到响应速度快且有一定范围的超调,得出比例系数。
积分部分的整定,如果系统的静态差达不到系统要求,这时需加入积分,整定时积分系数由大到小逐渐递减,观察输出,直至系统静态误差减小或消除,得出积分系数。微分系数的整定,如系统通过比例和积分调节都不能达到要求,需加入微分系数,同样,整定时使微分系数从小到大逐渐增加,观察超调量和稳定性,同时微调比例系数和微分系数,观察系统的输出响应、超调量和稳定性。通过不断实验和整定,电源为200W直流加热系统,加热0.5升的纯净水,在温度变化为20℃时,超调量不超过0.1℃,得出PID的比例系数为19,积分系数为0.036,微分系数为0.8,能够使PWM输出达到系统控制要求。
智能水温控制系统,通信部分主要是STC单片机之间的通信、STC单片机和ESP8266 WiFi的通信,以及ESP8266 WiFi和机智云之间的通信。由于STC单片机模拟了PWM的定时输出,如果利用串口进行通信,会出现不稳定现象,为避免这种现象,STC单片机之间的通信采用并行口,结合P15、P16实现并口通信协议,协议内容如表1所示。STC单片机通信控制从P0端口接收到温度控制器传输的数据后,用串口连接ESP8266 WiFi模块,ESP8266 WiFi模块连接当前环境的路由器热点,与机智云服务器建立TCP连接,进行数据传输。
同时,
手机终端或WEB终端发送控制命令,通过命令数据
→机智云服务器
→ESP8266 WiFi
→STC单片机通信控制
→STC单片机控制系统的通信流程,对温度进行远程监控。
4 实验数据结果
根据软硬件测试,系统自检正常,温度显示正常,通信正常。设定STC单片机控制水温在一定范围内,对整体水温控制系统进行测试,在20~60℃范围内实现多组设定,温度控制实验效果如图8所示。
图8 温度控制实验效果
通过实验结果分析,每个测试的目标温度反映实际和误差,在相同测试环境下,将温度计和温度采集模块所测得温度进行比对,将数值记录得到表2,从而得到标度误差。
5 结束语
设计以STC单片机结合增量式PID、PWM脉宽输出、机智云物联网平台,完成了系统软硬件设计,经过综合调试和测试,验证了该远程控制系统软硬件设计结构合理,性能可靠,操作方便。由于时间和实验条件限制,该系统设计仍有一些缺点和不足,没有采用更高性能的处理器来完成硬件和软件设计,未来有待进一步完善。
「单片机项目实战」温度控制系统
本项目的主要作用是实现温度调控,通过设定一个预定的温度值,实现实时检测外界温度,当外界温度小于预定值时,电机正转,实现降温效果;当外界温度大于预定值时,电机反转,实现升温效果,从而达到一个维持一定温度范围的控制系统。
所以在实现上以一个单片机作为处理器,利用传感器DS18B20采集温度值,然后将采集到的数据传送给单片机,单片机根据程序设定的温度范围检测,通过控制电机来转动通风,实现温度调节的目的。
其实整个电路组成可以分为四个部分,分别是单片机控制主体,DS18B20温度电路,液晶显示电路和L298N电机驱动电路。
单片机控制主体
是整个温度控制系统的核心,处理中心,所有其他的模块电路都需要通过单片机控制或和单片机交换信息等。而这个过程就是通过单片机的引脚,比如它的输入输出引脚作为信号输入输出的通道以及一些特殊功能引脚等。
单片机引脚主要大类:
电源引脚: VCC和GND,供电和接地用的
复位引脚: 一般是RST,用于芯片的复位,复位系统是单片机中不可缺少的部分
输入输出引脚: 也就是I/O,用于信号输入或输出信号
振荡器引脚: OSC(振荡器),其实就是时钟信号电路,用于连接振荡器,晶振,不管现在很多芯片都有内置振荡器,在时钟要求不是很高的情况下,可以不用额外接振荡器到单片机的振荡引脚中。
特殊功能引脚: 具有特殊的功能,比如说协议传输如SPI,I2C,UART等等,还可以是LCD驱动,ADC,USB传输等等。
DS18B20温度电路
DS18B20是一款常用的数字温度传感器,具有体积小,抗干扰能力强,精度高的特点,并且有多种封装形式,比如管道式,磁铁吸附式等等。
对于这部分电路,DS18B20模块主要是三个引脚,也就是电源,GND和信号,数据传输到单片机的数据传输引脚,从而获取到温度传感器中检测到的数据。
液晶显示电路
这部分电路主要用来显示单片机想要输出的内容,比如说显示温度,提示信息等等,这部分可以通过软件编程进行设置。
L298N电机驱动电路
L298N是常用的一款步进电机驱动芯片,具有工作电压高,输出电流大,驱动能力强,发热低,抗干扰能力强的特点,在这里用来作为驱动风扇转页马达的部分。并且L298N是利用脉冲宽度调制(PWM)方式进行转速的控制的。
一般会通过控制脉宽时间(比如高电平)占总周期的时间比例,也就是占空比,比例越大,则转速越高,从而通过控制占空比来控制转速。
在硬件电路设计好之后,就是核心部分的软件实现逻辑了,这个系统需要处理好温度值与PWM调速功能的关系,从而完成整个温度控制系统的功能。
项目使用的编程语言是C语言,软体设计部分由于篇幅问题,后期会分单独一篇文章进行分享。
往期精彩内容:
PCB板由哪些元素组成?(PCB板的五脏六腑)
电阻的作用有哪些?(超全)
常说的LDO电路是啥?(简单版)
笔记本(金属外壳)电脑漏电怎么办?
相关问答
单片机 、光耦1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...
基于单片机 msp430和温度传感器ds18b20的水 温度控制系统的 c语...[最佳回答]我这是用STC做的,应该很容易移植到MPS430上的给你参考一下。#include#include#defineucharunsignedchar#defineuintunsigne...
单片机 怎么 控制 电热丝 温度 (精确 控制 )?要单片机控制温度,是完全可以的。要有温度传感器测温度,再去控制电热丝。电热丝也用5V电源吗?那电源的功率是多少,电热功率是多少?用5Ⅴ能使电热丝发热吗?这...
我现在有一个基于51 单片机控制的 温湿度检测程序,怎么将温湿...先编写51单片机的串口发送程序,在编写上位机的接收程序,用MSCOMM空间接受有用(0)回复mingmingrongrong解决了吗我可以帮你有用(0)回复dzgncfghwyhyrj...
DS18B20 温度 传感器如何与 单片机 相连接_汽配人问答[最佳回答]1、DS18B20温度传感器与单片机的一个IO口连接。2、温度传感器(temperaturetransducer)是指能感受温度并转换成可用输出信号的传感器。温度传感器...
单片机 如何让按键 控制温度 加减?要让单片机通过按键控制温度加减,首先需要连接一个温度传感器来获取当前温度值。然后,编写程序读取按键输入,并根据按键的不同操作进行相应的温度调节操作。例...
水温 控制系统 中动态误差静态误差还有怎么实现 单片机 与加热设...[最佳回答]静态误差:水温达到稳态时与设定值的误差.可以用PID控制(增量PID)——加温、制冷参数要分开调.单片机与加热器用光耦隔离驱动固态继电器或可控硅来控...
单片机 火灾报警用什么 温度 传感器?单片机火灾报警中使用的温度传感器一般是热敏电阻(thermistor)或热电偶(thermocouple)。热敏电阻是一种能够随着温度变化而改变其电阻值的传感器,其具有灵敏...
单片机温度 和热电偶的接法?热电偶加一个上拉电阻,直接接到单片机的A/D脚就行了,不需要放大了,每种热电偶都有计算公式的。测量电压的基准就用电源电压就可以了,想精度高就用专门的基准...
单片机温度 测试器怎么做?制作单片机温度测试器首先需要选择一个合适的单片机,如ATmega328P,然后将单片机与温度传感器DS18B20相连。通过单片机的GPIO口将DS18B20的数据线连接到单片机...