在本項(xiàng)目中,我們將繼電器與PIC微控制器PIC16F877A連接。繼電器是一種機(jī)械設(shè)備,用于從較低的電壓電平控制高電壓、大電流電器的“ON”或“OFF”。繼電器在兩個(gè)電壓電平之間提供隔離,通常用于控制交流電器。從機(jī)械繼電器到固態(tài)繼電器,電子產(chǎn)品中有各種類型的繼電器可供選擇。在這個(gè)項(xiàng)目中,我們將使用機(jī)械繼電器。
在這個(gè)項(xiàng)目中,我們將做以下事情-
我們將接口一個(gè)開關(guān),用于用戶的輸入。
用 5V 繼電器控制220V 交流燈泡。
為了控制繼電器,我們將使用 BC547 NPN 晶體管,晶體管將由PIC16F877A控制。LED 將通知繼電器打開或關(guān)閉條件。
所需組件:
PIC16F877A
20兆赫晶體
2 個(gè) 33pF 陶瓷
3 個(gè) 4.7K 電阻器
1k 電阻器
1 個(gè)發(fā)光二極管
BC547 晶體管
1N4007 二極管
5V 立方繼電器
交流燈泡
面包板
用于連接零件的電線。
繼電器及其工作:
繼電器的工作原理與典型開關(guān)相同。機(jī)械繼電器使用由電磁線圈制成的臨時(shí)磁鐵。當(dāng)我們通過這個(gè)線圈提供足夠的電流時(shí),它就會(huì)通電并拉動(dòng)手臂。因此,連接在繼電器上的電路可以是閉合的,也可以是斷開的。輸入和輸出沒有任何電氣連接,因此它隔離輸入和輸出。
繼電器可以在不同的電壓范圍內(nèi)找到,如5V、6V、12V、18V等。在這個(gè)項(xiàng)目中,我們將使用5V 繼電器,因?yàn)槲覀兊墓ぷ麟妷涸谶@里是5 伏。這款5V 立方繼電器能夠在240VAC時(shí)切換7A負(fù)載或110VAC時(shí)切換10A負(fù)載。然而,代替巨大的負(fù)載,我們將使用一個(gè) 220VAC 燈泡并使用繼電器進(jìn)行切換。
這是我們?cè)诒卷?xiàng)目中使用的5V 繼電器。額定電流明確規(guī)定了兩個(gè)電壓電平,120VAC 時(shí)為 10A,240VAC 時(shí)為 7A。我們需要連接小于指定額定值的繼電器負(fù)載。
該繼電器有5 個(gè)引腳。如果我們看到引腳排列,我們可以看到-
L1 和L2是內(nèi)部電磁線圈的引腳。我們需要控制這兩個(gè)引腳來打開繼電器“ON”或“OFF”。接下來的三個(gè)引腳是極點(diǎn)、常開和常閉。極與內(nèi)部金屬板連接,當(dāng)繼電器打開時(shí),金屬板會(huì)改變其連接。在正常情況下,極點(diǎn)與常閉短路。NC代表常態(tài)連接。當(dāng)繼電器打開時(shí),極改變其位置并與常開連接。NO代表常開。
在我們的電路中,我們已經(jīng)與晶體管和二極管進(jìn)行了繼電器連接。帶晶體管和二極管的繼電器在市場(chǎng)上可作為繼電器模塊使用,因此當(dāng)您使用繼電器模塊時(shí),您無需連接其驅(qū)動(dòng)電路(晶體管和二極管)。
繼電器用于所有家庭自動(dòng)化項(xiàng)目,以控制交流家用電器。
電路圖:
下面給出了用于將繼電器與PIC微控制器連接的完整電路:
在上面的原理圖中,使用了pic16F877A,其中在端口B上連接LED和晶體管,使用RBO處的TAC開關(guān)進(jìn)一步控制。R1為晶體管提供偏置電流。R2是一個(gè)下拉電阻,用于輕觸開關(guān)兩端。當(dāng)未按下開關(guān)時(shí),它將提供邏輯 0。1N4007是一個(gè)箝位二極管,用于繼電器的電磁線圈。當(dāng)繼電器關(guān)閉時(shí),可能會(huì)出現(xiàn)高壓尖峰,二極管會(huì)抑制它。晶體管是驅(qū)動(dòng)繼電器所必需的,因?yàn)樗枰^50mA的電流,而微控制器無法提供。我們也可以使用ULN2003代替晶體管,如果應(yīng)用需要兩個(gè)或三個(gè)以上的繼電器,這是一個(gè)更明智的選擇,請(qǐng)檢查繼電器模塊電路。端口 RB2上的LED將通知“繼電器已打開”。
最后的賽道會(huì)是這樣的——
代碼說明:
在main.c文件的開頭,我們添加了pic16F877A的配置行,并定義了跨 PORTB的引腳名稱。
與往常一樣,首先,我們需要在圖片微控制器中設(shè)置配置位,定義一些宏,包括庫和晶體頻率。您可以在最后給出的完整代碼中檢查所有這些代碼的代碼。我們制作了RB0作為輸入。在此引腳中,開關(guān)已連接。
#include
/*
Hardware related definition
*/
#define _XTAL_FREQ 200000000 //Crystal Frequency, used in delay
#define SW PORTBbits.RB0
#define RELAY PORTBbits.RB1
#define LED PORTBbits.RB2
之后,我們調(diào)用了 system_init() 函數(shù),在其中初始化引腳方向,并配置了引腳的默認(rèn)狀態(tài)。
在 system_init() 函數(shù)中,我們將看到
void system_init(void){
TRISBbits.TRISB0 = 1; // Setting Sw as input
TRISBbits.TRISB1 = 0; // setting LED as output
TRISBbits.TRISB2 = 0; // setting relay pin as output
LED = 0;
RELAY = 0;
}
在主功能中,我們不斷檢查開關(guān)按下,如果我們通過檢測(cè)RB0上的邏輯高電平來檢測(cè)開關(guān)按下;我們等待一段時(shí)間,看看開關(guān)是否仍然被按下,如果開關(guān)仍然被按下,那么我們將反轉(zhuǎn)繼電器和 LED 引腳的狀態(tài)。
void main(void) {
system_init(); // System getting ready
while(1){
if(SW == 1){ //switch is pressed
__delay_ms(50); // debounce delay
if (SW == 1){ // switch is still pressed
LED = !LED; // inverting the pin status.
RELAY = !RELAY;
}
}
}
return;
}
/*
* File: main.c
* Author: Sourav Gupta
* By:- circuitdigest.com
* Created on May 30, 2018, 2:26 PM
*/
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
#include
/*
Hardware related definition
*/
#define _XTAL_FREQ 200000000 //Crystal Frequency, used in delay
#define SW PORTBbits.RB0
#define RELAY PORTBbits.RB1
#define LED PORTBbits.RB2
/*
Other Specific definition
*/
void system_init(void);
void main(void) {
system_init(); // System getting ready
while(1){
if(SW == 1){ //switch is pressed
__delay_ms(50); // debounce delay
if (SW == 1){ // switch is still pressed
LED = !LED; // inverting the pin status.
RELAY = !RELAY;
}
}
}
return;
}
/*
This Function is for system initialisations.
*/
void system_init(void){
TRISBbits.TRISB0 = 1; // Setting Sw as input
TRISBbits.TRISB1 = 0; // setting LED as output
TRISBbits.TRISB2 = 0; // setting relay pin as output
LED = 0;
RELAY = 0;
}
-
繼電器
+關(guān)注
關(guān)注
132文章
5394瀏覽量
150528 -
PIC16F877A
+關(guān)注
關(guān)注
2文章
43瀏覽量
21999 -
PIC微控制器
+關(guān)注
關(guān)注
0文章
17瀏覽量
7510
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何使用PIC微控制器旋轉(zhuǎn)步進(jìn)電機(jī)

將PIR與PIC16F877A連接起來的教程

基于PIC16F877A的太陽能與市電互補(bǔ)照明系統(tǒng)控制器的設(shè)

PIC16F877A串口發(fā)送查詢方式

PIC16F877A串口芯片電壓?jiǎn)栴}

PIC16F877A的T0定時(shí)器制作的電子鐘程序
PIC16F877A開發(fā)板 數(shù)碼管動(dòng)態(tài)掃描實(shí)驗(yàn)

PIC16F877A開發(fā)板 普通IO驅(qū)動(dòng)74595實(shí)驗(yàn)

PIC16F877A 看門狗定時(shí)器實(shí)驗(yàn)

將DHT11與PIC16F877A連接進(jìn)行溫度和濕度的測(cè)量

將MCP4921與PIC16F877A接口進(jìn)行數(shù)模轉(zhuǎn)換的方法

使用熱敏打印機(jī)連接PIC16F877A并使用輕觸開關(guān)實(shí)現(xiàn)打印的教程

如何在PIC16F877A微控制器中使用EEPROM保存數(shù)據(jù)

評(píng)論