基于STM32和FreeRTOS的嵌入式太阳能干燥实时监测和
数数据结果后8位。
AM2301温湿度部分读取程序如下:
2.3 继电器控制电路设计
当监测到干燥室内湿度超过上位机设定的上限值时,STM32单片机将继电器控制引脚电平拉高,继电器触点吸合控制排气扇开启;当监测到干燥室内湿度降低至上限值以下时,STM32单片机将继电器控制引脚电平拉低,继电器触点分离控制排气扇关闭,完成过湿废气的排空工作。继电器控制电路如图3所示。
2.4 RS 485通信电路设计
太阳能干燥设备需要长时间工作在露天环境下,对通信电路的距离和抗干扰要求较高。针对此项要求,实时嵌入式太阳能干燥监测和控制系统采用SP485R芯片组建RS 485通信控制电路实现与PC上位机的通信。SP485R应用电路如图4所示。
3 嵌入式太阳能干燥监测和控制系统软件设计
3.1 FreeRTOS在STM32上的移植
太阳能干燥设备进行干燥作业时对干燥室内的温湿度要求较高:温度过高会影响干燥物料的品质,温度过低或湿度过高又会降低干燥效率。这要求监测和控制系统应具有高实时性和可靠的稳定性,能够快速反应并准确动作,使干燥室内温度能够维持恒定且保证湿度在限定范围之内。基于此,将FreeRTOS实时操作系统移植到STM32嵌入式处理器以满足设计需求。
FreeRTOS的实现主要由list.c、queue.c、croutine.c和tasks.c4个文件组成。list.c是一个链表的实现,主要供内核调度器使用;queue.c是一个队列的实现,支持中断环境与信号量控制;croutine.c和task.c是两种任务的组织实现。对于croutine,各个任务共享同一个堆栈,使RAM的需求进一步缩小,也正因如此,他的使用受到相对严格的限制。而task则是传统的实现,各个任务使用各自的堆栈,支持完全的抢占式调度。FreeRTOS在STM32的移植大致由3个文件实现,一个.h文件定义编译器相关的数据类型和中断处理的宏定义;一个.c文件实现任务的堆栈初始化、系统心跳的管理以及任务切换的请求;一个.s文件实现具体的任务切换,具体如图5所示。
FreeRTOS下可实现创建任务、删除任务、挂起任务、恢复任务、设定任务优先级、获得任务相关信息等功能,在嵌入式太阳能干燥实时监测和控制系统的程序设计中调用xTaskCreate()函数创建监测、通信、控制三个任务,程序任务按设定优先级顺序执行实现既定功能。
监测任务(vmonitorTask)实现对干燥室内温湿度以及鼓风机转速的实时监测。嵌入式处理器将通过参数传感器获得的实时参数进行保存。
通信任务(vcommunicateTask)实现上位机与嵌入式处理器的实时通信。嵌入式处理器接收PC上位机发送的干燥温度和湿度上限值,并将收集到的温湿度以及鼓风机转速参数发送至PC上位机进行实时显示。
控制任务(vcontrolTask)实现干燥室内的温湿度控制。PC上位机设定的干燥温度作为系统控制目标量,参数传感器测得的实时温度作为输入量调用PID算法,输出量作为变频器工作频率调节鼓风机转速实现干燥室的恒温控制。当干燥室内湿度超过PC上位机设定的湿度上限时,继电器控制排气扇动作完成过湿废气的排空作业。
程序任务执行框图如图6所示。
3.2 PID控制的应用
太阳能干燥设备运行时的系统参数无法通过有效的测量手段来获得,从而无法建立精确的数学模型。因此,系统控制器的结构和参数必须依靠工程经验和现场调试来确定。在综合考虑多种控制理论可行性并参照工程实践的基础上,嵌入式太阳能干燥实时监测和控制系统选用数字PID控制技术来实现干燥室的恒温控制。
嵌入式处理器以上位机设定干燥温度作为系统控制目标量,以干燥室内实时温度作为输入量调用PID算法。PID输出量作为变频器工作频率对鼓风机转速进行实时调节,从而实时增减送入热风量以完成对于燥室的恒温控制。
考虑到温度调节的特性要求,本系统采用PI控制。即先根据被控对象的特性和一般惯例确定比例系数和积分系数的整定范围,再通过手动调节鼓风机转速记录干燥室内温度变化曲线并进行分析,最终确定PID算法中比例系数为0.4,积分系数为6。
PID数字控制部分程序如下:
3.3 上位机软件设计
本系统采用北京亚控公司的组态王软件完成对上位机监测和控制界面的设计。上位机软件实现对干燥室内温湿度等参数的实时显示以及恒温干燥温度、湿度上限的设定,设计选用Access2010数据库作为记录的数据库,便于数据的保存与分析。
应用组态王软件新建一个太阳能干燥监测和控制系统,选用单片机通信协议并通过RS 485接口实现与嵌入式处理器的通信。上位机软件界面采取分区设计,界面由显示区和操作区构成。显示区包括温湿度、转速、排气扇状态的实时显示以及温湿度变化趋势图。操作区可实现对恒温干燥温度和湿度上
STM32 FreeRTOS 嵌入式 PID控制 太阳能干燥 相关文章:
- STM32学习笔记:在IAR中建立FWlib 3.0项目(08-13)
- 基于STM32单片机的火控系统信号采集测试(11-14)
- 基于LabVIEW的STM32调试平台设计(11-17)
- 基于STM32的LF RFID识别系统设计(11-25)
- STM32中断与嵌套NVIC快速入门(01-25)
- 基于TLC5947的旋转LED屏显示控制器设计(01-25)