《白炽灯调光控制的恒温箱》由会员分享,可在线阅读,更多相关《白炽灯调光控制的恒温箱(22页珍藏版)》请在金锄头文库上搜索。
1、恒温箱设计1、设计要求 : (1)温度采集传感器采用热电阻或热电偶,或一体化数字温度传感器DS18B20 。(2)控制灯泡亮度或发热量,采用继电器开关控制或用可控硅平滑控制。(3)采用单片机或PLC作为控制器。(4)采用 LED或 LCD或 PC机的液晶显示器作为显示器,同时显示给定温度和实际温度。(5)采用自制按键或PC机的键盘作为温度给定值输入。(6)恒温箱实际温度达到给定值时(误差1)需声光提示,声音时延5 秒后停止。(7)恒温箱最高温度60。(8)系统操作流程是:1)确认系统各硬件连线就绪,无安全隐患;2)系统上电;3)设置温度给定值后,启动系统工作,系统进入温度自动控制工作状态。4)
2、系统工作完毕后,若不需系统工作,则可关闭系统电源,查看并确保系统无安全隐患后可离开。2、系统设计方案整个控制过程采用单回路负反馈控制,如图2.1 ,利用传感器测出恒温箱内温度,将测得的温度和给定值比较,若实际温度低于给定值,则通过控制器控制白炽灯调光,对恒温箱加热,直至达到给定温度。图 2.1 系统单闭环框图图 2.2 系统结构框图整个系统结构组成如图2.2 ,使用单片机作为控制器,220V 交流经变压器、 整流电路和光耦,在每个电压过零时刻产生中断信号提供单片机控制相位的时间基准;单片机通过控制光耦控制晶闸管导通,以此控制白炽灯;传感器实时获取恒温箱温度,便于单片机调节和显示;当温度达到给定
3、时,通过报警提示。3、硬件设计3.1 控制器本设计的控制器选用STC的 51 单片机,由于控制中主要用到外部中断和定时器,已足够满足控制要求。51 单片机最小系统如图3.1. 图 3.1 51 单片机最小系统3.2 温度传感变送根据控制要求,恒温箱温度60,温度误差1,故可以选择DS18B20作为本设计的温度传感器, 其测量温度范围为-55 C +125C, 在-10 +85C范围内,精度为 0.5 C。数字温度传感器DS18B20具有体积更小、精度更高、适用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。DS18B20与单片机连接如图3.2 。图 3.2 DS18B2
4、0与单片机连接图DS18B20初始化总线拉低并保持480us960us 以发出 (TX)一个复位脉冲, 然后释放总线,进入接收状态(RX),单总线由4.7K 上拉电阻拉到高电平。当DS18B20探测到 I/O 引脚上的上升沿后,等待 15-60us ,然后发出一个由60-240us 低电平信号构成的存在脉冲,控制器以此判断初始化成功。DS18B20写时序写周期最少为60 微秒,最长不超过120 微秒。写周期一开始做为主机先把总线拉低至少 1 微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60 微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平至少1 微秒后就
5、释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us 到 45us 开始对总线采样,在采样期内总线为高电平则为写1,若采样期内总线为低电平则为写0。DS18B20读时序读时隙是从主机把单总线拉低之后,在至少 1 微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。主机在一开始拉低总线至少1 微秒后释放总线,然后在包括前面的拉低总线电平1 微秒在内的15 微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0,采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要 60us 才能完成。访问 DS18B2
6、0的事件序列(流程如图3.3 )如下:图 3.3 DS18B20测温流程第一步:初始化第二步: ROM 命令(紧跟任何数据交换请求)第三步: DS18B20功能命令(紧跟任何数据交换请求)每次对 DS18B20的访问都必须遵循这样的步骤来进行,如果这些步骤中的任何一个丢失或者没有执行, 则 DS18B20将不会响应。 除了 ROM 搜索命令 F0h 和报警搜索命令ECh 之外。需要用到的ROM 命令跳过ROMCCh :主设备可以使用该命令来同时向总线上的所有从设备发送不要发送任何的 ROM 编码命令。 例如, 主设备通过向总线上所有的DS18B20发送跳过ROM 命令后再发送温度转换 44h
7、命令,则所有设备将会同时执行温度转。需要用到的功能命令温度转换 44h :该命令为初始化单次温度转换。温度转换完后,温度转换的数据存储在暂存寄存器的2 个字节长度的温度寄存器中,之后DS18B20恢复到低功耗的闲置状态。读取暂存寄存器BEh :该命令使得主设备可以读取暂存寄存器中存储的值。数据从Byte 0 的低位开始传送直到第9 个字节( Byte 8 - CRC )读取完毕。3.3 白炽灯调光电路白炽灯调光电路由两部分组成,一部分是控制白炽灯发光电路,另一部分是过零检测电路。3.3.1白炽灯发光控制电路白炽灯发光控制电路主要由晶闸管和光耦组成,晶闸管的通断控制白炽灯的亮灭,光耦将控制回路和
8、主回路隔离开,控制器通过控制光耦的通断进而控制晶闸管的导通,当单片机输出一定宽度的高电平时,光耦导通一小段时间,使晶闸管门极有驱动电流,晶闸管导通。电路图如图3.4 ,其中,晶闸管两端并联的RC电路可抑制浪涌电压,保护晶闸管。图 3.4 moc3021控制晶闸管电路图晶闸管本设计所用的白炽灯为220V/60W,可以算出其工作电流为0.27A 左右,考虑到开灯瞬间电流较大,取10 倍工作电流, 晶闸管额定电流3A足够。 又因为峰值电压为330V,取 23倍峰值电压,晶闸管电压应在660V990V 。综合考虑各种因素,本设计选择BCR5KM-14L 型双向晶闸管,额度电压700V,额定电流5A。如
9、图 3.4 ,晶闸管有3 个端子,如图, K端为阴极, A端为阳极, G端为门极。当晶闸管承受正向电压时, 仅在门极有触发电流时导通,承受反向电压时不会导通。晶闸管一旦导通,门极就是去控制作用,只有外加反向电压或电流接近零时才会关断。光耦本设计中, 白炽灯发光电路中的光耦选择moc3021。Moc3021 为三端双向可控驱动输出,图 3.5 晶闸管电气符号适合用于直流控交流的隔离场合,输出电压最大400V、电流 100mA 。驱动电流最大15mA ,5mA即可使光耦正常工作。moc3021原理图如图3.5 。图 3.6 moc3021 原理图3.3.2过零检测电路过零检测电路用于检测交流电的过
10、零点,从而可以控制导通相位,以此来控制白炽灯的亮度变化。其主要由变压器、整流电路和光耦组成,220V交流经变压器降压送入整流电路,整流电路是由四个二极管组成的桥式整流,整流后送光耦控制端,每当电压过零时,在输出端就会有变化, 以此得到交流电过零点,并将电压上升下降沿作为单片机外部中断输入。其电路图如图3.7 ,其中变压器为DB电源变压器,220VAC变双 9VAC输出。图 3.7 过零检测原理图光耦选用TP521 ,其发光二极管能承受最大电流为50mA ,输出最大电流50mA ,输出端最大电压55V。TP521原理图如图3.8 。图 3.8 TP521原理图3.4 显示与报警显示使用开发板上的
11、8 个八段数码管实现,报警电路也使用开发板上的LED实现,此处不做详述。4、软件设计软件设计主要包括DS18B20测温程序、 INT0 程序响应电压过零、T0 程序做交流电相位控制、 显示程序和报警程序。测量温度与给定比较,再根据偏差结合交流电过零点,通过定时器控制相位,同时实时显示温度信息,当达到给定时给出提示。程序总体流程图如图 4.1. 图 4.1 程序总体流程图主程序如下:void main() INT0_init(); /INT0初始化TimerInit(); /T0 初始化P11=1; EA=0; display_index = 0; for(h=0;h0;i-) EA=0; DQ
12、=0;_nop_();_nop_();_nop_();_nop_(); /4 us if(val /最低位移出,若为1,15us 内拉高Delay70us(); /70 us DQ=1; /拉高EA=1; _nop_();_nop_(); val=val/2; /右移一位 DQ=1; DS18B20读字节流程图如图4.4 ,程序如下:图 4.3 DS18B20写字节流程图u8 read_byte(void) u8 i; u8 value=0; for(i=8;i0;i-) value=1; EA=0; DQ=0;_nop_();_nop_();_nop_();_nop_(); DQ=1;_no
13、p_();_nop_();_nop_();_nop_(); /4 us if(DQ) value|=0x80; Delay70us(); /70 us EA=1; DQ=1; return(value); 图 4.4 DS18B20读字节流程图温度数值计算与显示流程图如图4.5 ,程序如下:void work_temp(u16 tem) u16 t; wendu=tem*0.0625; / 实际温度tem=wendu*10+0.5; / 需要显示一位小数LED80=tem/1000; t=tem%1000; LED81=t/100; t=t%100; LED82=t/10+32; /带小数点t
14、=t%10; LED83=t; LED86=2; / 给定温度十位LED87=5; / 给定温度个位t1=LED86*10+LED87-wendu; /温度偏差 图 4.5 温度数值计算与显示流程图定时器相控调温流程图如图4.6 ,程序如下:图 4.6 定时器相控调温流程图void E_INT0() interrupt 0 if(t15) TL0 = 0x24; /1500us , 12MHz TH0 = 0xFA; TR0=1; if(t10.5) TL0 = 0x48; /3000us , 12MHz TH0 = 0xF4; TR0=1; if(t1=0) TL0 = 0xA8; /750
15、0us , 12MHz TH0 = 0xE4; TR0=1; P17=0; if(t1 #include /_nop_();延时用typedef unsigned char u8; typedef unsigned int u16; u8 LED88; / 数码管缓存u8 display_index; / 显示位索引sbit DQ=P10; /温度输入口u16 h,temp; float wendu; / 温度转化结果float t1=1; u8 code t_display= /8段数码管标准字库/ 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71, / black - H J K L N o P U t G Q r M y 0x00,0x40,