图4-7 继电器工作原理图
4.3.3 继电器的选择
因为要用单片机控制制冷箱内的温度,而制冷片是12V直流电供电的,而单片机是5V的,所以选用了一款5VDC的继电器(如图4-8)。
图4-8 5VDC继电器
4.3.4 继电器驱动电路图
图4-9 继电器驱动原理图
继电器的驱动电路使用9013型号的三极管,考虑到三极管电流太小,就在基极加了一个4.7K的上拉电阻。考虑到继电器里面有线圈,容易产生感应电压,因此在继电器上并联了一个续流二极管,它在电路中用来保护继电器不被感应电压击穿或烧坏,并与其形成回路,使其产生的高电动势在回路以续电流方式消耗,从而起到保护电路中的元件不被损坏的作用。
4.4 单片机
因为要实现向内温度的智能化自动控制,设计中选用了C51单片机,用来实现读取DS18B20温度传感器的感应温度,使两位数码管显示箱内温度,驱动继电器控制电源电路通断。考虑到单片机环节不是本课题的研究重点,为了节省时间和经历用在实物制作上,我选择了买现成了一整套C51单片机板子,电路板基本情况图4-9,单片机内部电路见图4-10,串行口通行电平转换如图4-11。
图4-10 单片机板块
图4-10 单片机各模块电路图
图4-11 串行口通信电平转换
图4-12 单片机各引脚
在这块板子上我加入了三个模块,加入了一快可以显示温度的数码管,一个DS18B20温度传感器和一枚DC5V的继电器。
4.5 程序编写调试
整个单片机要实现的功能是,当箱内温度超过20℃时,继电器闭合导通电源,制冷片开始工作,当箱内温度低于18℃时,继电器断开,电源停止通电,制冷片停止工作。部分原程序如下:
#include <reg52.H>
#define UP_MAX 20
#define DOWN_MIN 18
extern GetTemp();
extern unsigned int idata Temperature;
void delay(unsigned int i);
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit RELAY=P2^7;
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned long LedOut[5],LedNumVal;
void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xD8; //10
TL1 = 0xF0;
IE = 0x8A;
TR1 = 1;
}
main()
{ unsigned char i;
system_Ini();
while(1)
{
GetTemp();
LedNumVal=Temperature;
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100];
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];
for(i=0; i<4; i++)
{
P0 = LedOut[i] ;
switch(i)
{ //138译码
case 0:LS138A=0; LS138B=0; LS138C=0; break;
case 1:LS138A=1; LS138B=0; LS138C=0; break;
case 2:LS138A=0; LS138B=1; LS138C=0; break; 51单片机太阳能供电与半导体制冷箱的设计+电路图(13):http://www.youerw.com/zidonghua/lunwen_349.html