4.2系统电路仿真
Protues支持多种MCU的仿真,只需要提供相应的HEX文件,将电路按我们的原理图连接好后就可以开始仿真,在仿真电路中,由于Protues很模拟出PID控制算法下的温度曲线,所以之后我还将用Matlab对系统的温度曲线在进行一次仿真,我们利用Protues最主要是来仿真单片机的工作情况,仿真的主要内容是I/O口的输入输出,显示电路的,键盘电路,输出电路,以及输出占空比的工作情况,
再次仿真中将外部的加热电阻用一个发光二极管电路代替,主要是便于观察单片机对于外部电路工作和空闲的控制情况。
图4-1 继电器控制输出电路仿真
33
图4-2仿真的总电路图
当工作电路启动时,屏幕上显示的是当前温度(左边)和工作点路的占空比(右边),占空比是根据系统PID算法所得到的参数。
系统默认的设定温度是35℃,这时DS18B20获取的温度是30℃,所以单片机控制加热电路全速工作,占空比为100% 。加热电路处在持续工作状态,继电器接通,二极管持续点亮。结果见图
图 4-3 ds18b20设置
34
图 4-4 仿真结果
下面我们将对系统的设定功能进行仿真,我们通过检测键盘上的三个按键来设置我们需要的温度的大小,即设置键,增大键,减小键,我没采用矩阵键盘输入的原因是,我输入的温度是整形变量,对键盘操作的要求低,即使只用两个键控制,操作量也不多,还可以简化程序,增大系统的可靠性,减少编程的工作量。
操作的步骤是按下SET键,不放系统进入温度设置状态,然后我们就可以通过按键来调整设定温度的大小。我将温度设定在32℃,顺便观察PID算法是否起作用。结果如下图所示
图 4-5进入设置状态 系统默认35度
35
调节后的参数
图 4-6
这时我们松开设置键 ,我们可以观察到系统又进入工作状态,还可观察到继电器吸合和断开的动作,屏幕上占空比的数据也发生变化,我们再用示波器来观察输出电平的波形我们发现程序根据温度差的变化在调节占空比,控制输出电路工作时间缩短,来减小控制误差,当我们再把环境温(DS18B20温度)度升高时,温度差变小,输出占空比也随之改变,变得的更小,当环境温度与设定温度相等时 占空比为0 ,这种变化趋势与PID算法的输出公式结果是相一致的.
图 4-7 环境温度30℃ 设定32℃时的输出
36
当室温上升到31℃后
图 4-8 环境温度31℃,设定温度32℃时的输出
我们可以看出输出电路的工作占空比温度差的减小而减小,这是因为PID算法上输出的与输入误差有关,在仿真过程中我需要不断调整延时,抽样周期等参数才能到达理想效果
以上我们对电路的仿真基本完成,但是我们还需要在matlab的simulink中再对系统的的温度曲线再进行仿真。
4.3 Simulink仿真
Simulink是MATLAB的建模和仿真环境。它其中包括了输入模块、输出模块、连续模块、离散模块、函数和表模块、数学模块、非线性模块、信号模块以及子系统模块,不仅这些 ,它还囊括了了各个工具箱特有的模块,比如PID控制模块。用户可以使用这些模块搭建自己的所需要的系统并进行仿真,通过更改这些模块的参数调整系统性能得到符合自己设计要求的系统参数和输入输出。
本次设计温度变化部分的仿真都要在simulink中完成的。
37