基于msp430的温控系统
学习笔记
for
redesigned
2012-09-16
versions:v1.2
All
电信实训报告
指导老师:
2012
温度的测量和控制
1、设计思路描述:(含设计思路、原理框图等)
根据题目的基本要求,要实现的功能是对加热丝进行温度测量(本来题目要求对空心瓷电阻加热,但由于空心瓷电阻买不到合适的规格故用加热丝代替),显示温度,然后再利用测量得到的温度与设置温度来进行恒温加热控制。我们采用pt100作温度传感器,将加热丝直接绑在pt100上面,再将pt100接入惠斯顿电桥,将电桥两端的电压差送入仪表放大器放大后,AD采样送入MSP430单片机。然后单片机通过公式转换计算出温度,实现温度测量,并用12864液晶显示出来。在加热控制部分,我们首先通过人机接口,以中断的方式用键盘输入预设温度。然后通过PID算法输出PWM波驱动功率场效应管实现对加热丝的加热控制。
对于提高要求部分,在基础部分已可实现第一小问将电热元件温度稳定地控制在30℃~80℃之间的任一指定温度值的要求。对于第二问,我们在恒温加热的基础上对温度进行细分,并与设定时间内的某个时间点相对应。使得在一定的时间区间内只加热到一定的温度,从而能保证在一个较为恒定的时间内正好加热到预设温度,也保证了匀速升温。
其原理框图如下图1:
图1
2、硬件电路图:(贴入设计的硬件电路)
1.
2:
图2
2.电源电路原理图
作桥电路和AD参考电压
图2.2
3.控制电路原理图
图3
4
图4
3、算法数学描述:(含算法的数学表达式、符号说明等)
本文主要采用两种算法实现题目要求:
第一个是PID算法的改进,由于温度控制是一个只能加热不能制冷的控制,所以我们只用了PI。首先通过P让温度加到一个离设定温度较近的温度,然后利用I逼近设定温度。
程序如下:
void
{
e1=set_t-now_t;
uk=kp*e1+ki*e2+kd*e3;
//
e2=e1+e2;
e3=e1-e4;
e4=e1;
if(uk>speed)
uk=speed;
if(uk<0)
uk=0;
control_value=1-uk;
}
第二个是时间控制的线性算法
在时间控制中要求温度从40°均匀加热到60°,并且时间任意可设。
本程序实现的方法是:设定时间set_time是以s为单位,把40°到60°的这20°温差平均分成set_time份。然后在控制周期中,每一个周期让时间段time_m自加1,然后根据平均的公式算出该时间段应该达到的温度,公式如下:
因为控制时间输入set_time是以s为单位,而控制周期是100ms,所以上面要除以10。
具体的实现代码如下:
control_m_value=(float)time_m/set_time;
control_m_value=control_m_value/10;
control_m_value=40+20*control_m_value;
set_t=control_m_value;
pid();
CCR1=control_value*12000;
4、软件流程图:(贴入各程序流程图)
(1)传感器信号的采集、处理
(2)加热丝的PWM输出
(3)加热的温度和速度控制
(4)温控系统运行流程控制:程序初始化、温控的启动与结束、液晶显示模块控制
(5)温控信息显示与参数设定:状态显示、控制算法参数设定等
上面的几个能中,除了程序的初始化在主函数中执行,其他的各个部分都是在中断函数中执行的,其中键盘检测和数据输入是在键盘中断中执行,其他的数据采集、处理、控制等都是在定时器5ms中断中执行的。单片机平时处于低功耗模式,降低功耗。
程序的流程图如下:
图5
5、测试方法描述:(含模块与系统测试方法)
msp430温控系 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)