繼電器模塊電路設(shè)計(jì)和分析
發(fā)布時(shí)間:2025-02-17作者:admin點(diǎn)擊:234
一、繼電器介紹:

繼電器模塊是一種利用電磁原理控制電路通斷的電子器件。它通過低壓信號(hào)控制高壓電路,實(shí)現(xiàn)自動(dòng)調(diào)節(jié)、隔離和安全保護(hù)。直流繼電器模塊的五個(gè)引腳中,兩個(gè)用于控制線圈,其余三個(gè)分別連接常開端、常閉端和公共端,以實(shí)現(xiàn)電路的自動(dòng)切換。簡而言之,繼電器模塊就是一個(gè)可以用低壓信號(hào)控制高壓電路的自動(dòng)開關(guān)。
二、繼電器使用說明:
(1)繼電器的工作原理:

當(dāng)?shù)蛪弘娫?控制電路)導(dǎo)通時(shí),電磁鐵產(chǎn)生磁力,吸引銜鐵,使得觸點(diǎn)閉合,從而使得高壓電源(工作電路)形成回路并導(dǎo)通。
當(dāng)?shù)蛪弘娫磾嚅_時(shí),電磁鐵失去磁力,彈簧將銜鐵拉回原位,觸點(diǎn)斷開,高壓電源的回路被切斷,工作電路斷開。
(2)繼電器的接線端子:
常閉觸點(diǎn)(NC):在繼電器未激活時(shí),這個(gè)觸點(diǎn)與公共觸點(diǎn)相連。
公共觸點(diǎn)(COM):這是繼電器的中心觸點(diǎn),它在繼電器激活時(shí)會(huì)與常開觸點(diǎn)相連。
常開觸點(diǎn)(NO):在繼電器未激活時(shí),這個(gè)觸點(diǎn)與公共觸點(diǎn)斷開,激活后與公共觸點(diǎn)相連。
(3)繼電器控制:
輸入(IN):當(dāng)控制信號(hào)從輸入端IN1發(fā)出低電平信號(hào)時(shí),這將觸發(fā)光耦合器U1的內(nèi)部LED發(fā)光(以低電平觸發(fā)為例)。
常閉(NC):在繼電器未激活的狀態(tài)下,常閉觸點(diǎn)(NC)與公共觸點(diǎn)(COM)相連,形成閉合回路。
公共(COM):公共觸點(diǎn)(COM)是繼電器內(nèi)部的一個(gè)中心連接點(diǎn),它在繼電器激活時(shí)會(huì)與常開觸點(diǎn)(NO)相連。
常開(NO):在繼電器未激活的狀態(tài)下,常開觸點(diǎn)(NO)與公共觸點(diǎn)(COM)斷開,沒有形成閉合回路。

(4)繼電器原理圖:
當(dāng)IN1接收到低電平信號(hào)時(shí),光耦合器U1導(dǎo)通,使得三極管T1導(dǎo)通,繼電器K1的線圈得電,繼電器觸點(diǎn)閉合,從而控制高壓電路的通斷。(該原理圖為低電平觸發(fā),無選擇端)

原理圖中IN1作為控制電路的輸入端,接收外部控制信號(hào)。當(dāng)IN1為低電平時(shí),通過限流電阻R1點(diǎn)亮LED1,指示信號(hào)狀態(tài),同時(shí)激活光耦合器U1,實(shí)現(xiàn)電氣隔離并導(dǎo)通其輸出端。接著,電流通過基極電阻R2流入NPN型三極管T1的基極,使其導(dǎo)通。這導(dǎo)致繼電器K1的線圈通電,產(chǎn)生磁場,吸引銜鐵,閉合觸點(diǎn)。繼電器觸點(diǎn)P1包括常閉觸點(diǎn)(1腳)、公共觸點(diǎn)(2腳)和常開觸點(diǎn)(3腳),控制高壓電路的通斷。二極管D1用于保護(hù)電路,防止反向電動(dòng)勢損壞三極管。整個(gè)電路由電源VCC和GND供電,連接器P3用于連接外部信號(hào)和電源。
三、代碼示例:
(1)繼電器控制代碼:
#include "stm32f10x.h" // Device header
void Relay_Init(void){
// 使能GPIOB端口的時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 定義GPIO初始化結(jié)構(gòu)體
GPIO_InitTypeDef GPIO_InitStructure;
// 設(shè)置GPIOB引腳1為推挽輸出模式,速度為50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 將GPIOB的第1引腳設(shè)置為高電平,停止導(dǎo)通,繼電器設(shè)置為低電平觸發(fā)
GPIO_SetBits(GPIOB, GPIO_Pin_1);
}
void Buzzer_ON(void){
// 將GPIOB的第1引腳設(shè)置為低電平
GPIO_ResetBits(GPIOB, GPIO_Pin_1);
}
void Buzzer_OFF(void){//關(guān)閉蜂鳴器
// 將GPIOB的第1引腳設(shè)置為高電平
GPIO_SetBits(GPIOB, GPIO_Pin_1);
}
Relay_Init函數(shù)首先使能GPIOB端口的時(shí)鐘,然后配置GPIOB的第1引腳為推挽輸出模式,速度為50MHz,用于控制繼電器。初始化后,該引腳被設(shè)置為高電平,以確保繼電器在默認(rèn)狀態(tài)下不導(dǎo)通(繼電器是低電平觸發(fā))。Buzzer_ON函數(shù)通過將GPIOB的第1引腳設(shè)置為低電平來激活蜂鳴器,而Buzzer_OFF函數(shù)則通過設(shè)置引腳為高電平來關(guān)閉蜂鳴器。這樣設(shè)計(jì)允許通過改變GPIO引腳的電平狀態(tài)來控制蜂鳴器的開關(guān),實(shí)現(xiàn)聲音報(bào)警或提示功能。
(2)按鍵控制代碼:
#include "stm32f10x.h" // 包含STM32F10x系列微控制器的頭文件
#include "Delay.h" // 包含延遲函數(shù)的頭文件
// 按鍵初始化函數(shù)
void Key_Init(void)
{
// 使能GPIOB端口的時(shí)鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 定義GPIO初始化結(jié)構(gòu)體
GPIO_InitTypeDef GPIO_InitStructure;
// 設(shè)置GPIOB引腳12和13為上拉輸入模式,速度為50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 即內(nèi)部上拉輸入模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// 初始化GPIOB
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
// 獲取按鍵編號(hào)的函數(shù)
uint8_t Key_GetNum(void)
{
uint8_t KeyNum = 0; // 定義按鍵編號(hào)變量,并初始化為0
// 檢測GPIOB的第13引腳是否被按下
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 0)
{
Delay_ms(20); // 等待20毫秒以消除按鍵抖動(dòng)
// 再次檢查以確認(rèn)按鍵確實(shí)被按下
while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13) == 0);
Delay_ms(20); // 等待20毫秒以消除按鍵抖動(dòng)
KeyNum = 1; // 設(shè)置按鍵編號(hào)為1
}
// 檢測GPIOB的第12引腳是否被按下
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)
{
Delay_ms(20); // 等待20毫秒以消除按鍵抖動(dòng)
// 再次檢查以確認(rèn)按鍵確實(shí)被按下
while (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0);
Delay_ms(20); // 等待20毫秒以消除按鍵抖動(dòng)
KeyNum = 2; // 設(shè)置按鍵編號(hào)為2
}
return KeyNum; // 返回按鍵編號(hào)
}
通過Key_Init函數(shù)初始化GPIOB端口的第12和13引腳為上拉輸入模式,用于檢測按鍵狀態(tài)。在Key_GetNum函數(shù)中,程序通過檢測這兩個(gè)引腳的電平變化來判斷是否有按鍵被按下,并通過延時(shí)函數(shù)Delay_ms消除按鍵抖動(dòng)的影響。當(dāng)檢測到按鍵按下時(shí),程序會(huì)再次檢查以確認(rèn)按鍵狀態(tài),并根據(jù)按下的按鍵編號(hào)設(shè)置KeyNum變量,最后返回按鍵編號(hào)。
(3)main函數(shù):

在main函數(shù)中,程序首先調(diào)用Relay_Init來初始化蜂鳴器,設(shè)置GPIOB的第1引腳用于控制繼電器觸發(fā)。接著,調(diào)用Key_Init來初始化按鍵,配置GPIOB的第12和13引腳為上拉輸入模式,用于檢測按鍵狀態(tài)。程序進(jìn)入一個(gè)無限循環(huán),不斷檢測按鍵狀態(tài)。通過調(diào)用Key_GetNum函數(shù),程序獲取當(dāng)前被按下的按鍵編號(hào)。如果檢測到按鍵1被按下,Buzzer_ON函數(shù)被調(diào)用,使GPIOB的第1引腳輸出低電平,從而激活蜂鳴器。如果檢測到按鍵2被按下,Buzzer_OFF函數(shù)被調(diào)用,使GPIOB的第1引腳輸出高電平,關(guān)閉蜂鳴器。
(4)接線圖:
