继电器介绍

  继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。

  按继电器的工作原理和接口特点主要可分为如下几种:

  1. 电磁继电器 ,一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点, 可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。
  2. 固体继电器 ,一种两个接线端为输入端,另两个接线端为输出端的四端器件,中间采用隔离器件实现输入输出的电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可分为常开型和常闭型。按隔离型式可分为混合型、变压器隔离型和光电隔离型,以光电隔离型为最多。
  3. 热敏干簧继电器 ,一种利用热敏磁性材料检测和控制温度的新型热敏开关。它由感温磁环、恒磁环、干簧管、导热安装片、塑料衬底及其他一些附件组成。热敏干簧继电器不用线圈励磁,而由恒磁环产生的磁力驱动开关动作。恒磁环能否向干簧管提供磁力是由感温磁环的温控特性决定的。

  实际应用中使用频率高的是电磁式继电器

硬件设计

继电器模块电路

  从上图中可以看出,该电路是独立的,继电器的5、6脚为线圈,1、2脚是常闭端即初始状态是导通的,3、4脚是常开端即初始状态是断开的。继电器线圈控制管脚并未直接连接到51单片机的IO上,而是连接到J15端子上。通过电阻 R01 和 PNP 三极管Q8 进行电流放大,从而驱动继电器。DD1为反相二极管,用于消除继电器吸合时产生的瞬间反相电动势,保护三极管及单片机。继电器的输出端由P1端子引出,1、2脚初始是常闭,2、3脚初始是常开,所以也用符号NC 和NO表示。在继电器控制电路中,为了能够让用户直观的看出继电器的开合状态,在三极管的集电极管脚处并联一个DK1指示灯。当RELAY引脚输出低电平时,PNP三极管导通,DK1指示灯亮,继电器线圈得电,常闭端断开,常开端导通;当RELAY引脚输出高电平时,PNP 三极管截止,DK1指示灯灭,继电器线圈不得电,常闭端导通,常开端断开。

  其实继电器就相当于一个开关,大家可以把所要控制的线路一端接到COM,另一端接到NO(初始和COM断开)或NC(初始和COM连接),比如控制风扇的开启和停止,就可以在风扇的电源和输入的电源间通过这个继电器来实现开和关功能。

  如果要想51单片机控制继电器,就必须将单片机管脚通过导线连接到J15端子上。

软件设计

  本实验所要实现的功能时:控制继电器吸合5S后再断开

实物接线图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/**************************************************************************************
实验名称:继电器实验
接线说明:
实验现象:下载程序后,继电器吸合5s后断开
注意事项:
***************************************************************************************/
#include "reg52.h"

// 对系统默认数据类型进行重定义
typedef unsigned int u16;
typedef unsigned char u8;

// 定义继电器控制管脚
sbit Relay = P1^4;

// 定义继电器吸合时间为5000ms
#define RELAT_OEPN_TIME 5000

/*******************************************************************************
* 函 数 名 : delay_ms
* 函数功能 : ms延时函数,ms=1时,大约延时1ms
* 输 入 : ms:ms延时时间
* 输 出 : 无
*******************************************************************************/
void delay_ms(u16 ms)
{
u16 i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}

/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main()
{
Relay = 0; // 继电器吸合
delay_ms(RELAT_OEPN_TIME);
Relay = 1; // 继电器断开
while(1)
{

}
}