0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将继电器与PIC微控制器PIC16F877A连接的教程

科技观察员 来源:circuitdigest 作者:苏拉夫·古普塔 2022-11-14 16:20 次阅读

在本项目中,我们将继电器与PIC微控制器PIC16F877A连接。继电器是一种机械设备,用于从较低的电压电平控制高电压、大电流电器的“ON”或“OFF”。继电器在两个电压电平之间提供隔离,通常用于控制交流电器。从机械继电器到固态继电器,电子产品中有各种类型的继电器可供选择。在这个项目中,我们将使用机械继电器。

在这个项目中,我们将做以下事情-

我们将接口一个开关,用于用户的输入。

用 5V 继电器控制220V 交流灯泡。

为了控制继电器,我们将使用 BC547 NPN 晶体管,晶体管将由PIC16F877A控制。LED 将通知继电器打开或关闭条件。

所需组件:

PIC16F877A

20兆赫晶体

2 个 33pF 陶瓷

3 个 4.7K 电阻器

1k 电阻

1 个发光二极管

BC547 晶体管

1N4007 二极管

5V 立方继电器

交流灯泡

面包板

用于连接零件的电线。

5V适配器或任何具有至少200mA电流能力的5V电源

继电器及其工作:

继电器的工作原理与典型开关相同。机械继电器使用由电磁线圈制成的临时磁铁。当我们通过这个线圈提供足够的电流时,它就会通电并拉动手臂。因此,连接在继电器上的电路可以是闭合的,也可以是断开的。输入和输出没有任何电气连接,因此它隔离输入和输出。

继电器可以在不同的电压范围内找到,如5V、6V、12V、18V等。在这个项目中,我们将使用5V 继电器,因为我们的工作电压在这里是5 伏。这款5V 立方继电器能够在240VAC时切换7A负载或110VAC时切换10A负载。然而,代替巨大的负载,我们将使用一个 220VAC 灯泡并使用继电器进行切换。

这是我们在本项目中使用的5V 继电器。额定电流明确规定了两个电压电平,120VAC 时为 10A,240VAC 时为 7A。我们需要连接小于指定额定值的继电器负载。

pYYBAGNx-mGAViJeAABDlvFHQOE920.jpg

该继电器有5 个引脚。如果我们看到引脚排列,我们可以看到-

poYBAGNx-mKAA-TyAABjTmil2oY301.jpg

L1 和L2是内部电磁线圈的引脚。我们需要控制这两个引脚来打开继电器“ON”或“OFF”。接下来的三个引脚是极点、常开和常闭。极与内部金属板连接,当继电器打开时,金属板会改变其连接。在正常情况下,极点与常闭短路。NC代表常态连接。当继电器打开时,极改变其位置并与常开连接。NO代表常开。

在我们的电路中,我们已经与晶体管和二极管进行了继电器连接。带晶体管和二极管的继电器在市场上可作为继电器模块使用,因此当您使用继电器模块时,您无需连接其驱动电路(晶体管和二极管)。

poYBAGNx-mSAOvYsAADAGX4P3QE903.jpg

继电器用于所有家庭自动化项目,以控制交流家用电器。

电路图:

下面给出了用于将继电器与PIC微控制器连接的完整电路:

poYBAGNx-diAGm-lAAG_Vy4PQhU427.png

在上面的原理图中,使用了pic16F877A,其中在端口B上连接LED和晶体管,使用RBO处的TAC开关进一步控制。R1为晶体管提供偏置电流。R2是一个下拉电阻,用于轻触开关两端。当未按下开关时,它将提供逻辑 0。1N4007是一个箝位二极管,用于继电器的电磁线圈。当继电器关闭时,可能会出现高压尖峰,二极管会抑制它。晶体管是驱动继电器所必需的,因为它需要超过50mA的电流,而微控制器无法提供。我们也可以使用ULN2003代替晶体管,如果应用需要两个或三个以上的继电器,这是一个更明智的选择,请检查继电器模块电路。端口 RB2上的LED将通知“继电器已打开”。

最后的赛道会是这样的——

pYYBAGNx-mWAWW-DAADVwf7Eq14512.jpg

代码说明:

在main.c文件的开头,我们添加了pic16F877A的配置行,并定义了跨 PORTB的引脚名称。

与往常一样,首先,我们需要在图片微控制器中设置配置位,定义一些宏,包括库和晶体频率。您可以在最后给出的完整代码中检查所有这些代码的代码。我们制作了RB0作为输入。在此引脚中,开关已连接。

#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

之后,我们调用了 system_init() 函数,在其中初始化引脚方向,并配置了引脚的默认状态。

在 system_init() 函数中,我们将看到

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;

}

在主功能中,我们不断检查开关按下,如果我们通过检测RB0上的逻辑高电平来检测开关按下;我们等待一段时间,看看开关是否仍然被按下,如果开关仍然被按下,那么我们将反转继电器和 LED 引脚的状态。

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;

}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 继电器
    +关注

    关注

    131

    文章

    5027

    浏览量

    146058
  • PIC16F877A
    +关注

    关注

    2

    文章

    43

    浏览量

    21687
  • PIC微控制器
    +关注

    关注

    0

    文章

    17

    浏览量

    7354
收藏 人收藏

    评论

    相关推荐

    如何使用PIC微控制器旋转步进电机

    在本教程中,我们将步进电机与PIC微控制器PIC16F877A连接
    发表于 11-15 17:25 1106次阅读
    如何使用<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>旋转步进电机

    将PIR与PIC16F877A连接起来的教程

    PIR(被动红外)或运动传感器用于检测移动人体或物体的运动。每当有人进入 PIR 传感器的范围内时,它的输出引脚都会发出高电平。 今天,我们将简单地将PIR与PIC微控制器PIC16F877A
    的头像 发表于 11-16 16:12 1242次阅读
    将PIR与<b class='flag-5'>PIC16F877A</b><b class='flag-5'>连接</b>起来的教程

    谁有pic16f877a中文资料?

    谁有pic16f877a中文资料? 
    发表于 07-15 13:22

    PIC16F877A

    菜鸟想问下各位,我想用PIC16F877A做个流水灯,所有端口输出高电平1S,然后输出低电平1s 。 单片机放在学习板上测试的时候是正常的,用prpteus仿真也正常,可是放到电路板上就不正常了,低电平时间很短,Led只是闪了一下。  哪位高手指点一下是什么原因,还是要怎样测试找出问题?
    发表于 07-28 14:32

    PIC16F877A在proteus中读写AT24C512

    此时把I2C DEBUGGER的SCL线连接PIC16F877A和AT24C512的SCL线上,这样PIC16F877A可以正常的写AT24C512。当PIC16F877A发送启动信
    发表于 12-30 16:09

    PIC16F877A使用宏定义读写FlashROM

    :由于程序存储是14位,因此读出的结果必须是整型,而不能为字符型读写PIC16F877A内部的FlashROM时,可以使用头文件中的宏定义 unsigned int FLASH_READ
    发表于 12-31 14:01

    PIC16F877A的中断优先级问题

    现在我需要通过串口来接收指令控制PIC16F877A的捕获脉冲行为,可以做到的是:接收到开捕获指令后,能正常开始捕获脉冲,但是再发送关闭指令却不能让它停下来,通过KIT3发现,在捕获的时候,串口不能
    发表于 06-06 21:18

    与OP连接Pic控制器被挂起

    海友,我用PIC18F420和PIC16F87A控制器控制烤箱的项目,在没有连接任何OP(继电器
    发表于 09-18 14:40

    PIC16F877A单片机相关资料下载

    PIC16F877A单片机(配置字)1 MPLAB X V5.0,编译为XC8(V2.0)2MPLAB V5.0,编译为PICC1 MPLAB X V5.0,编译为XC8(V2.
    发表于 11-24 08:22

    PIC16F877A看门狗定时实验的相关资料推荐

    //*******************PIC16F877A 看门狗定时实验*******************// //PORTA,PORTB,PORTC,PORTD,PORTE复位时为输入
    发表于 11-25 07:52

    pic16f877a中文资料pdf

    pic16f877a中文资料
    发表于 07-15 13:20 4542次下载
    <b class='flag-5'>pic16f877a</b>中文资料pdf

    基于PIC16F877A的太阳能与市电互补照明系统控制器的设

    基于PIC16F877A的太阳能与市电互补照明系统控制器的设计 介绍了一款以单片机PIC16F877A控制核心的太阳能与市电互补照明系统控制器
    发表于 04-10 22:06 1274次阅读
    基于<b class='flag-5'>PIC16F877A</b>的太阳能与市电互补照明系统<b class='flag-5'>控制器</b>的设

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图,有需要的可以瞧一瞧!
    发表于 08-22 15:16 86次下载

    使用热敏打印机连接PIC16F877A并使用轻触开关实现打印的教程

    在本教程中,我们将热敏打印机 CSN A1 与广泛使用的 PIC 微控制器 PIC16F877A 连接。在本项目中,热敏打印机连接
    的头像 发表于 11-04 15:10 1896次阅读
    使用热敏打印机<b class='flag-5'>连接</b><b class='flag-5'>PIC16F877A</b>并使用轻触开关实现打印的教程

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图免费下载。
    发表于 03-21 15:47 8次下载