PWM控制加热
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PWM控制加热
目录
1 引言 (1)
2 理论分析 (1)
2.1 PWM (1)
2.2 PWM控制技术 (2)
3 系统设计 (2)
3.1 设计方案比较和论证 (3)
3.1.1 单片机系统 (3)
3.1.2 温度传感器 (3)
3.1.3 显示电路 (3)
3.1.4 PWM信号 (4)
4 系统硬件设计 (4)
4.1 复位电路 (4)
4.2 时钟电路 (5)
4.3 P0口上拉电阻电路 (5)
4.4 按键电路 (6)
4.5 LCD1602显示电路 (6)
4.6 DS18B20测温电路 (7)
4.7 电源电路 (7)
4.8 温度控制电路 (8)
5 系统软件设计 (8)
5.1 PWM控制加热软件的主程序及流程图 (9)
5.2 LCD1602显示子程序 (12)
5.3 LCD延时子程序 (17)
5.4 数字式温度传感器DS18B20子程序 (18)
5.5 PWM控制加热子程序 (20)
5.6 温度控制流程 (21)
6 系统调试 (23)
6.1 Keil软件 (23)
6.2 Proteus软件 (23)
6.3 仿真结果 (24)
6.4 调试结果 (24)
7 小结 (27)
参考文献 (27)
致谢 (28)
ABSTRACT (29)
附录 (30)
附I 整体电路图 (30)
PWM控制加热
摘要:介绍了以STC89C52单片机为核心,使用PWM技术和闭环系统实现对温度的自动或手动控制的系统。
系统通过温
度芯片DS18B20采集温度信号,并将温度信号传送给单片机。
并由单片机进行相应处理,根据目标温度与实测温度关系决
定是加热占空比高还是停止加热占空比高,从而实现对温度的闭环控制的目的。
系统还加入LCD液晶显示电路,使得整个
设计更加完整,更加灵活。
系统可通过键盘设定温度,LCD显示设定温度值及当前温度值。
关键词:STC89C52单片机;温度控制;PWM;DS18B20 ;LCD液晶显示
1 引言
温度是众多行业生产中的基础参数之一,随着社会的进步、工业的发展,温度控制技术也不断革新,但其还处于初级发展阶段,很多领域对温度控制有着更高的要求。
因此,温度控制是生产工艺流程中极为重要的一个环节,尤其在电力、航天、交通、造纸、装备制造、食品加工等行业有广泛的应用。
利用单片机来对温度进行控制,不仅能够有效地提升控制能力与生产的自动化,而且还有可能尽早实
现智能化的目标。
和传统的温度控制相比,基于单片机实现PWM的温度控制可以降低能源消耗。
因为传统
的温度控制都是通过电阻限流的方式到达的温度控制,这样虽然加热器的热量小了,但是整体的功率并没
有根本性的改变,造成了能源的浪费。
而PWM是通过占空比实现的并没有限流的损失,这样就会大大节约
能源。
本文主要研究的就是利用单片机的PWM技术而设计的温度控制系统。
2 理论分析
2.1 PWM
PWM是英文“Pulse Width Modulation”的缩写,即脉冲宽度调制,简称脉宽调制。
它是一种模拟
控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体
管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微
处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控
制与变换的许多领域中。
PWM是开关型稳压电源中的术语。
这是按稳压的控制方式分类的,除了PWM型,还有PFM型和PWM、PFM混合型。
脉宽宽度调制式(PWM)开关型稳压电路是在控制电路输出频率不变的情况下,通过电压反馈调整其占空比,从而达到稳定输出电压的目的。
其中方波高电平时间跟周期的比例叫占空比,例如1秒高电平1秒低电平的PWM波占空比是50% 。
PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换,PWM相对于模拟控制的另一个优点是增强对噪声抵抗的能力]1[。
2.2 PWM控制技术
PWM(Pulse Width Modulation)控制技术就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值);(冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同.PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦
波或其他所需要的波形。
按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。
)而控制方法有:为了克服PAM法方波电压而不能调压这个缺点发展而来的等脉宽PWM法;为了减少电机绕组的电磁噪音及谐波造成的振动而发展而来的随机PWM方法;以采样控制理论中的一个重要结论为理论基础而产生的SPWM法;把SPWM法原理直接阐释成为等面积法;为计算繁琐的缺点而提出的硬件调制法;由于用软件生成SPWM波形变得比较容易而提出的软件生成法;使所得SPWM波形最接近正弦波而提出的自然采样法;对自然采样法的改进而成为规则采样法;以消去PWM波形中某些主要的低次谐波为目的的方法而成为低次谐波消去法;为了提高直流电压利用率提出了梯形波与三角波比较法;对于像三相异步电动机这样的三相无中线对称负载提出了线电压控制PWM,其中包括马鞍形波与三角波比较法和单元脉宽调制法;以把希望输出的电流波形作为指令信号的基本思想而提出了电流控制PWM,其中包括滞环比较法、三角波比较法以及预测电流控制法;以三相波形整体生成效果为前提,以逼近电机气隙的理想圆形旋转磁场轨迹为目的而提出了空间电压矢量控制PWM(SVPWM)等等。
PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。
PWM控制技术主要应用在电力电子技术行业,包括风力发电、电机调速、直流供电等领域。
总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术]1[。
3 系统设计
硬件电路主要分为电源电路、复位电路、时钟电路、按键电路、LCD显示电路和温度采集电路六部分。
采用集成的单片机作为主控,通过温度传感器采集数据信息,将结果传送到单片机控制的主控器,数据通
过显示器显示。
通过按键改变设定温度,从而改变运行操作程序。
系统整体结构如图1所示。
图1 系统整体结构
3.1 设计方案比较和论证
3.1.1 单片机系统
单片机种类很多,刚开始想到ATMEL公司的51系列单片机,但翻阅资料后发现STC89C52单片机:处理速度快;价格低;加密性强;超强抗干扰;超低功耗;在系统可编程,无需编程器,无需仿真器。
3.1.2 温度传感器
温度传感器种类繁多,按照测量方式可以分为接触式和非接触式两大类;按照传感器材料以及电子的元件特性可分为热电阻和热电偶两类。
传统的温度检测多数情况下以热敏电阻为传感器,但热敏电阻可靠性差、测量温度准确率低,且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。
而DS18B20能够直接读出被测温度并且可以根据实际要求通过简单的编程实现9~12位的数字值读数;以其独特的一线接口方式,实现多点能力;无需连接外部元件,就可用数据总线供电,电压范围为3.0 V至5.5 V ;测量温度范围为-55°C至+125℃,其中-10°C至+85°C范围内精度为±0.5°C,最大分辨率可达0.0625℃,可实现高精度测量。
所以,在本设计中选择DS18B20温度传感器]2[。
3.1.3 显示电路
通常显示电路主要有两类:数码管(LED)显示和液晶(LCD)显示。
液晶显示屏(LCD):低压微功耗、平板型结构、显示的信息量大、无电磁辐射、使用寿命长等优点,但本设计要求显示的数据量小,不能发挥其显示内容丰富的优点,同时占用I/O口线较多。
数码管显示(LED):采用LED数码管显示,该方案具有实现容易、发光亮度大、驱动电路简单等优点,
但是显示内容单一。
所以,通过比较之后,我选择液晶显示屏来显示温度。
本设计选择LCD1602,用来满足一定的视觉要求。
3.1.4 PWM信号
脉冲宽度调制信号的形成电路有4种:(1)可用电压-脉宽变换器产生,即硬件产生脉宽调制信号;(2)由软件定时产生,由定时器定时,定时时间受软件控制,并从脉宽信号的输出口P1.0或其他口输出脉宽可调信号;(3)由单片机控制外接定时/计数器(如8253)硬件电路产生脉宽调制信号,只需用两个计数器分别工作于方式1和方式2,通过硬件连接便可以产生脉宽调制信号;(4)软件延时模拟。
其中,第一种是硬件电路实现,电路复杂。
第二种使用定时器T0,但由于系统计数器不足,必须扩展。
第三种是利用8253需要额外开销,所以我们选用软件延时非常方便,于是本系统选用了第四种方式进行PWM调制]3[。
4 系统硬件设计
硬件电路主要由八大块构成,分别是:复位电路、时钟电路、P0口上拉电阻电路、按键电路、LCD1602显示电路、DS18B20测温电路、电源电路、温度控制电路。
4.1 复位电路
复位电路是单片机系统最基本的组成部分,可靠的复位设计是保证系统可靠运行的前提。
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。
复位电路可以用很多方法来实现,但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接使单片机工作,是用电源来控制单片机的开始与停止;另外一种是按键复位,就是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位]4[。
经过比较,本设计采用电源复位,设计电路如图2所示。
图2 单片机复位电路
时钟是单片机内部电路工作的基础,也是CPU工作时序的时间基准。
时钟电路用于产生单片机工作所需的时钟信号。
单片机内部有一个高增益反相放大器,用于构成振荡器。
其输入端接至单片机的内部,即XTAL1引脚,其输出端接至单片机的外部,即XTAL2引脚。
在XTAL1和XTAL2两端跨接一个晶振,两个电容,构成一个稳定的自激式振荡电路。
电容C1、C2起稳定振荡频率、快速起振作用,容量的选择范围为5~30PF,通常选择30pF。
振荡频率的选择范围为1.2~12MHz,本设计选择12MHZ,时钟周期为(1/12)μs。
如图3所示是单片机内部时钟方式的振荡电路。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号]5[。
图3 片机内部时钟电路
4.3 P0口上拉电阻电路
STC89C52单片机P0口内无上拉电阻,单片机对端口的输出是通过控制内部的场效应管导通或截止实现的,如果没有上拉电阻,虽然单片机输出1通过锁存器反相使场效应管截止,但单片机的端口还是无法得到高电平(输出0不影响),因此P0口处需加上拉电阻。
如图4所示。
图4 P0口上拉电阻电路
按键有二个,分别是S2和S3,其中S2作为加按键,S3作为减按键。
通过两个按键,可以用来设定目标温度程序,加按按键和减按键,用来增加或者减少设定的目标温度。
如图5所示。
图5 按键电路
4.5 LCD1602显示电路
LCD1602采用标准的16脚接口,字符型LCD通常有14条引脚线(市面上也有很多16条引脚线的LCD,多出来的2条线是电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样)。
其中第3脚接一个10K的电位器可以用来调整液晶显示屏的对比度。
其内部的驱动器为HD44100和控制器HD44780,都采用低功耗CMOS技术。
采用并行8位数据线的传送方式,当然使用者也可以通过软件设计,使用四条数据线来控制液晶显示屏。
目前市面上的字符型液晶绝大多数是基于HD44780液晶芯片的,所以控制原理是完全相同的,为HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶]6[。
本系统液晶显示屏主要显示设定的目标温度和当前目标温度,如图6所示。
图6 LCD1602显示电路
4.6 DS18B20测温电路
DS18B20是美国DALLAS半导体公司生产的单总线数字温度传感器,它可以实现数字化的输出和测试。
每一个DS18B20包含一个唯一的64位长的序号,该序号值存放在DS18B20内部的ROM(只读存储器)中。
DS18B20的1管脚接地,2管脚为数字输入/输出脚需要连接上拉电阻到电源并接至单片机端口,3管脚接电源]2[。
如下图7所示。
图7 测温电路
4.7 电源电路
单片机系统电源主要运用220V的电压通过电路来实现芯片所需的+12V电源。
如图8所示,该电源电路主要通过变压器把220V电压降压,经电桥整流、电容C1滤波产生24V电压,再利用7805集成芯片稳压输出+12V直流电压。
输入电容C1是用来改善纹波和抑制过电压,C2是用来改善负载瞬态响应]7[。
图8 电源电路
4.8 温度控制电路
本设计中采用PWM来控制温度,此模块电路是为调节温度的PWM脉冲设计的。
单片机控制Q3有两种状态: 1.Q3的基极为高电平,PNP截止此时Q2由于基极有下拉电阻NPN也处于截止 ,Q1有4.7K上拉电阻Q1场效应管不导通,此时PTC不通电不加热;2.Q3基极为低电平,PNP导通,此时Q2也导通,场效应管也处于导通 PTC有电流处于加热状态。
PWM脉冲主要是数字电路的0与1的表现,当脉冲为0时,Q3的PNP型三级管导通,由Q2电路可知Q2也会跟着Q3一起导通,这样场效应管就跟着导通接入12V电源PTC开始加热;当脉冲为1时Q3截止,由于Q2有下拉电阻于是Q2也跟随截止,导致场效应管断开,即PTC停止加热。
当DB18B20所获得温度大于60度时,系统会减小加热时间使温度下降,直至低于60度时,系统会再次提高加热占空比使温度上升,使得系统维持在60度。
此时,单片机产生一定占空比的PWM脉冲,就会使PTC功率控制在一定范围内处于恒温,也就是所谓的温度控制]8[。
如图9所示。
图9 温度控制电路
5 系统软件设计
软件编写的语言一般情况下,有汇编语言和C语言两种,两种语言各有优劣。
用C语言编写程序的优点是:编写简单,容易上手,网上有许多已编写好的子程序,可以通过学习再结合自己想要实现的功能,从而编写相关的程序,因此开发程序所需时间也相对短。
而用汇编语言编写则相对要求高一些,它要求对硬件有足够的了解和认识,在此基础上,严格地对照各部件的时序图,进行程序的编写,而且读起来相对繁琐]9[。
通过两种语言的比较,C语言学起来很快,所以我选择采用C语言编写。
5.1 PWM控制加热软件的主程序及流程图
程序的最基本思路流程图如图10所示。
图10 主程序流程图
//主函数
void main()
{
uint X1,X2,CT=0,XCT=0;
Init1602(); //液晶初始化
LCDdelay(10000);
Display_T_Init();
tmpchange();
NT=tmp();
Display_T_Init();
while(1) //无限期循环
{
tmpchange(); //数字型温度传感器,温度转换,模拟信号转数字
NT=tmp();
Display_T(NT,MMT); // NT实际温度,MMT目标温度
//控制加温
X1=NT/10; // 因为温度放大了10倍,所以要除上10
X2=MMT/10;
if(X1<X2) //如果实际温度<目标温度
{
JR=0; //单片机P1.7口为低电平,开始加热
if(X2-X1>3) //目标温度-实际温度>3度
{
if(X2>80) //目标温度-实际温度>3度,目标温度大于80度
{
CT=100;
XCT=0;
}
Else //目标温度-实际温度>3度,目标温度小于80度
{
CT=50;
XCT=100;
}
}
Else //目标温度-实际温度≤3度
{
CT=50;
XCT=100;
}
LCDdelay(CT);
//通过延时长度不同,来控制恒温;CT为加热时间,CT等于多少,就加热
多少;如果CT=0,那么刚刚拉低,又拉高,等于没有加热,延时为0 JR=1; //单片机P1.7口为高电平,不加热
LCDdelay(XCT);
}
//++
if(K1==0) //按键1按下
{
LCDdelay(100); //屏幕以μs级的延迟
while(K1==0);
MMT=MMT+10; //目标温度加1度
if(MMT>=1210) //当目标温度加热到超过或等于121度时
MMT=0;
}
//--
if(K2==0) //按键2按下
{
LCDdelay(100);
while(K2==0);
MMT=MMT-10; //目标温度减1度
if(MMT>=0xff00) //目标温度≥-10度
MMT=1200; //目标温度为120度
}
}
}
5.2 LCD1602显示子程序
显示数据子程序的主要功能就是把测温后的结果经单片机处理完毕后显示在LCD液晶显示屏上。
显示数据子程序流程图如图11所示。
图11 显示数据子流程图
//写命令
void write_com(uchar com)
{
LCDRS=0; //单片机P2.7为低电平
P0=com;
LCDdelay(10);
LCDEN=1; //单片机P2.6为高电平
LCDdelay(10);
LCDEN=0; //单片机P2.6为低电平
}
//写数据
void write_data(uchar date)
{
LCDRS=1; //单片机P2.7为高电平
P0=date;
LCDdelay(10);
LCDEN=1; //单片机P2.6为高电平
LCDdelay(10);
LCDEN=0; //单片机P2.6为低电平
}
//1602初始化
void Init1602()
{
uchar i=0; //定义一个i
write_com(0x38);//屏幕初始化
write_com(0x0C);//打开显示无光标无光标闪烁
write_com(0x06);//当读或写一个字符是指针后一一位
write_com(0x01);//清屏
write_com(0x80);//设置位置
for(i=0;i<16;i++)
{
write_data(Init1[i]); //显示init1数组中的内容
}
write_com(0x80+40);//设置位置//跳到下一行
for(i=0;i<16;i++)
{
write_data(Init2[i]); //显示init2数组中的内容
}
}
void Display_T_Init()
{
uchar i=0;
write_com(0x38);//屏幕初始化
write_com(0x0C);//打开显示无光标无光标闪烁
write_com(0x06);//当读或写一个字符是指针后一一位
write_com(0x01);//清屏
write_com(0x80);//设置位置
for(i=0;i<16;i++)
{
write_data(Init3[i]); //显示init3数组中的内容}
write_com(0x80+40);//设置位置//跳到下一行
for(i=0;i<16;i++)
{
write_data(Init4[i]); //显示init4数组中的内容}
}
//温度显示
void Display_T(uint T,uint JT)
{
write_com(0x80+0x40+9);//设置位置//加9表示空9格
write_com(0x80+0x40+9);//设置位置
LCDdelay(10);
write_data('0'+T/1000); //显示千位
write_data('0'+T/100%10); //显示百位
write_data('0'+T/10%10); //显示十位
write_data('.'); //显示小数点
write_data('0'+T%10); //显示个位
write_data(0xDF); //显示°
write_data('C'); //显示“C”
write_com(0x80+0x40+1);//设置位置//加1表示空1格
write_com(0x80+0x40+1);//设置位置
LCDdelay(10);
write_data('0'+JT/1000);
write_data('0'+JT/100%10);
write_data('0'+JT/10%10);
write_data(0xDF);
write_data('C');
}
1602程序流程图如图12所示。
图121602程序流程图//read a byte date 读一个字节
uchar tmpread(void)
{
uchar i,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
//读出的数据最低位在最前面,这样刚好
//一个字节在dat 里
dat=(j<<7)|(dat>>1);
}
//将一个字节数据返回
return(dat);
}
//write a byte to ds18b20
//写一个字节到DS18B20 里
void tmpwritebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb) //write 1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0; //write 0
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
//温度显示
void Display_T(uint T,uint JT)
{
write_com(0x80+0x40+9);//设置位置//加9表示空9格write_com(0x80+0x40+9);//设置位置
LCDdelay(10);
write_data('0'+T/1000); //显示千位
write_data('0'+T/100%10); //显示百位
write_data('0'+T/10%10); //显示十位
write_data('.'); //显示小数点write_data('0'+T%10); //显示个位
write_data(0xDF); //显示°
write_data('C'); //显示“C”
write_com(0x80+0x40+1);//设置位置//加1表示空1格write_com(0x80+0x40+1);//设置位置
LCDdelay(10);
write_data('0'+JT/1000);
write_data('0'+JT/100%10);
write_data('0'+JT/10%10);
write_data(0xDF);
write_data('C');
}
5.3 LCD延时子程序
LCD延时程序流程图如图13所示。
图13 LCD延时程序流程图
//LCD延时
void LCDdelay(uint z) //定义Z
{
uint x,y;
for(x=z;x>0;x--) //延时多久,在括号里填一定的数值Z for(y=10;y>0;y--);
}
5.4 数字式温度传感器DS18B20子程序
DS18B20程序流程图如图14所示。
图14 DS18B20程序流程图
//DS18B20 begin change 发送温度转换命令
void tmpchange(void)
{
dsreset(); //初始化DS18B20
delaySS(1); //延时
tmpwritebyte(0xcc); //跳过序列号命令
tmpwritebyte(0x44); //发送温度转换命令
}
//get the temperature 获得温度
uint tmp()
{
float tt;
uchar a,b;
dsreset();
delaySS(1);
//发送读取数据命令
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
//连续读两个字节数据
a=tmpread();
b=tmpread();
//two byte compose a int variable
//两字节合成一个整型变量。
temp=b;
temp<<=8;
temp=temp|a;
if(b==0xff)
{
flag=1;
temp=~temp+1;
}
//得到真实十进制温度值,因为DS18B20
tt=temp*0.0625;
//可以精确到0.0625 度,所以读回数据的最低位代表的是//0.0625 度。
//放大十倍,这样做的目的将小数点后第一位
temp=tt*10+0.5;
//也转换为可显示数字,同时进行一个四舍五入操作。
//返回温度值
return temp;
}
5.5 PWM控制加热子程序
PWM是调节脉冲波占空比的一种方式,占空比= On-time(脉冲的High时间)/脉冲的一个周期(On-time +Off-time)。
Tsw(一周期)可以是开关周期,也可以是Fsw=1/Tsw的开关频率]10[。
占空比以及所对应的周期,是由温度传感器所测的实际温度与目标温度的差来决定的。
所以,分区间讨论,其中JR为加热管脚,X1实际温度,X2目标温度,自然冷却时间为:(1-占空比)*周期。
1.X1<X2
(1)X2-X1>3,X2>80 此时占空比为100%,周期为10000us
(2)X2-X1>3,X2<80 此时占空比为1/3,周期为15000us
(3)X2-X1<=3 此时占空比为1/3,周期为15000us
2.X1>=X2
占空比为0,周期不定,自然冷却。
PWM加热程序流程图如图15所示。
图15 PWM加热程序流程图
//控制加温
X1=NT/10; //因为温度放大了10倍,所以要除上10
X2=MMT/10;
if(X1<X2) //如果实际温度<目标温度
{
JR=0; //单片机P1.7口为低电平,开始加热
if(X2-X1>3) //目标温度-实际温度>3度
{ if(X2>80) //目标温度-实际温度>3度,目标温度大于80度 { CT=100; XCT=0;
}
Else //目标温度-实际温度>3度,目标温度小于80度 { CT=50; XCT=100; }
}
Else //目标温度-实际温度≤3度 { CT=50;
XCT=100;
}
LCDdelay(CT);
//通过延时长度不同,来控制恒温;CT 为加热时间,CT 等于多少,就加热多少;如果CT=0,那么刚刚拉低,又拉高,等于没有加热,延时为0
JR=1; //单片机P1.7口为高电平,不加热 LCDdelay(XCT);
}
5.6 温度控制流程
在设计中使用PWM 技术作为设计的核心技术,PWM 原理是以一固定直流电压经过以一定频率打开与闭合的开关K,从而控制改变PTC 上的电压。
设当PTC 接通时的最大电流为I
max 。
开关开闭周期为T ,
每次闭合时间为t ,则当占空比为D=t/T,PTC 的平均电流为:
D
I I
d
max (1)
由(1)式可知,当T 不变(即开关的开关频率固定)时,只要改变导通时间t ,就可改变PTC 两端的平均电流,从而改变PTC 的加热温度。
PTC 的发热强度基本上正比于通过PTC 器件的电流,这说明在脉冲电流的平均电流与直流电流相同的条件下,PTC 的发热效果一样。
另外,用高幅值的脉冲电流驱动PTC ,然后通过调节脉冲的占空比获得较合适的平均电流,这样可以降低功耗。
因为当PTC 工作在脉冲状态时,人会感觉到PTC 的温度会结余
高温与均值之间。
因此,脉冲电流驱动PTC 可比直接恒流驱动的PTC 温度更高一些,即获得同样的加热强度,脉冲电流驱动方式比直流驱动方式所需要的平均电流值更小
]
11[。
对于PTC ,如果采用脉冲电路驱动,其控制部分采用脉宽调制方式,与恒流控制方式相比,控制部分的控制效率会有比较大的提升,另外还可去掉限流电阻或减小其值。
因此,从节能的角度出发,采用脉冲电源驱动方式更好。
脉冲驱动方式是利用温度的惰性,采用重复向PTC 器件通断供电的方式使之点亮。
但采用这种驱动方式通常需考虑脉冲直流幅值的确定和重复频率的选择。
要获得与直流驱动方式相当的发热强度,脉冲驱动电流的平均值
I
a
应与直流驱动的电流值相同。
如图16所示,平均电流是瞬间电流i 的时间积分。
对于矩形波,有 ()⎰=≈T
a c idt I I 0
1 (2)
()T t I I
on F a
= (3)
式中,
I
c
为直流驱动电流值,
I
a
为脉冲驱动电流平均值,
I
F
为脉冲电流幅值,
T t
on
是占空比。
为了使脉冲驱动方式下的平均电流
I
a
与直流驱动电流
I
c
相同,则需使其脉冲电流幅值
I
F
满足:
()()I
t I I
c
on
a
on
F
T T
== (4)
可见脉冲驱动时,脉冲电流的幅值是直流驱动电路的电流幅值的on
T
倍。
需注意驱动器件的工作频
率,当频率超过一定范围,器件将无法正常工作,因为器件无法正常导通和关断。
PTC 的工作频率是10Hz 到几KHz 范围内
]
12[。
时间
图16 脉冲电流驱动电路
设计中PWM 信号经过Q3与Q2的基极连接到P 沟道功率MOSFET IRF9540的栅极上。
P 沟道功率MOSFET 的栅极驱动采用简单的二级放大作为驱动电路,以改善MOSFET 的导通过程,减少驱动电源的
功率]13[。
6 系统调试
6.1 Keil软件
单片机开发中不但要有必要的硬件,而且要有相应的软件与之结合,此时Keil软件发挥着举足轻重的地位。
随着单片机开发技术的不断发展,从汇编语言的普遍使用到高级语言开发的逐渐使用,单片机的开发软件也随之在发展着,与汇编语言相比,C语言在功能上、结构性、可维护性上有明显的优势,易学易用。
Keil软件是目前最流行的开发MCS-51系列单片机软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
Keil C51标准C编译器为8051微控制器的软件开发提供了C语言环境, 同时保留了汇编代码高效,快速的特点。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,功能不断增强,生成的目标代码效率非常高。
所以本设计选择Keil软件]14[。
6.2 Proteus软件
Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其特有的功能是,它的电路仿真是互动的,针对微处理器的应用,还可以直接在原理图的虚拟原型上编程,并实现软件源码级的实时调试。
由此可见,Proteus软件功能强大,集电路设计、制版以及仿真等功能于一身,不仅可以对电路进行设计与分析,还可以对微处理器进行设计和仿真,是一款电子线路设计与仿真软件。
所以Proteus软件是一个基于Pro-SPICE 混合模型仿真器、完整的嵌入式系统软硬件设计仿真平台。
Proteus软件与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。
因此在仿真和程序调试时,关心的不再是某些语句执行时,单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
对于这样的仿真,从某种意义上讲,弥补了实验和工程应用不能相结合的不足。
所以本设计采用的仿真软件是Proteus软件,通过它实现电路图的绘制,并与Keil软件进行相关的调试]15[。