将PIR与PIC16F877A连接起来的教程

描述

PIR(被动红外)或运动传感器用于检测移动人体或物体的运动。每当有人进入 PIR 传感器的范围内时,它的输出引脚都会发出高电平。

今天,我们将简单地将PIR与PIC微控制器PIC16F877A连接。在此电路中,如果一些移动物体进入 PIR 传感器的范围内,蜂鸣器将开始发出蜂鸣声。

所需材料

图片套件 3

红外传感器。

PIC16F877A 集成电路

40 - 引脚 IC 支架

性能板

20 MHz 晶体 OSC

内螺纹和外螺纹伯格斯图销

33pf 电容器 - 2 个电容、100uf 和 10uf 电容。

680 欧姆、10K 和 560 欧姆电阻器

任何颜色的发光二极管

1 焊接套件

集成电路 7805

12V 适配器

蜂鸣器

连接线

面包板

红外传感器:

PIR 传感器价格低廉、功耗低且易于使用的运动检测 Sesnor。PIR 传感器只接收红外线,不发射,这就是为什么它被称为被动。PIR 感应热量的任何变化,如果有变化,它会在输出时给出高电平。PIR 传感器也称为热释电或红外运动传感器。

PIC16F877A

每个物体在加热时都会发出一定量的红外线,类似于人体因体温而发出红外线。由于空气和物体之间的摩擦,每个物体产生的红外线。PIR传感器的主要部件是热释电传感器。除此之外,BISS0001(“微功率PIR运动检测器IC”),一些电阻器,电容器和其他用于构建PIR传感器的组件。BISS0001 IC从传感器获取输入并进行处理,使输出引脚相应地高或低。

您还可以调整距离灵敏度和持续时间,一旦检测到运动,输出引脚将处于高电平。它有两个电位计旋钮来调整这两个参数。

电路图

PIC16F877A

PIC微控制器:

为了对PIC微控制器进行编程以连接PIR,我们将需要一个IDE(集成开发环境),用于进行编程。一个编译器,我们的程序被转换为MCU可读形式,称为HEX文件。一个IPE(集成编程环境),用于将我们的十六进制文件转储到我们的PIC MCU中。

Microchip免费提供了这三个软件。可以直接从其官方页面下载。为了您的方便,我还提供了链接。下载后,将它们安装在您的计算机上。如果您在这样做时遇到任何问题,可以查看最后给出的视频。

要将我们的代码转储或上传到 PIC,我们需要PICkit 3。PICkit 3编程器/调试器是一种简单、低成本的在线调试器,由在 Windows 平台上运行 MPLAB IDE(v8.20 或更高版本)软件的 PC 控制。PICkit 3编程器/调试器是开发工程师工具套件不可或缺的一部分。除此之外,我们还需要其他硬件,如 Perf 板、焊台、PIC IC、晶体振荡器、电容器等。但是,随着教程的进行,我们会将它们添加到我们的列表中。

我们将使用MCU中提供的ICSP选项对PIC16F877A进行编程。

要刻录代码,请执行以下步骤:

启动 MPLAB IPE。

将 PicKit 3 的一端连接到 PC,另一端连接到性能板上的 ICSP 引脚。

通过单击连接按钮连接到您的 PIC 设备。

浏览闪烁十六进制文件,然后单击程序。

代码和说明
首先,我们需要在 pic 微控制器中设置配置位,然后从 void main 函数开始。

在下面的代码中,“XC.h”是包含引脚和外设的所有友好名称的头文件。此外,我们还在下面的代码中定义了晶体振荡器频率、PIR 和蜂鸣器引脚连接。

#include
#define _XTAL_FREQ 20000000 //Specify the XTAL crystall FREQ
#define PIR RC0
#define Buzzer RB2
在空主()中,“TRISB=0X00”用于指示MCU将PORTB引脚用作输出,“TRISC=0Xff”用于指示MCU将PORTB引脚用作输入。“PORTB=0X00”用于指示MCU使RB3的所有输出为低电平。

TRISB=0X00;
TRISC=0Xff;
PORTB=0X00; //Make all output of RB3 LOW
根据下面的代码,每当 PIR 变高时,蜂鸣器就会变高,否则它就会保持关闭状态。

while(1) //Get into the Infinie While loop
{
if(PIR ==1){
Buzzer=1;
__delay_ms(1000); //Wait
}
else{
Buzzer=0;
}
}
}

带PIC微控制器的PIR传感器的工作:

该项目没有任何复杂的硬件设置,我们再次使用我们在LED闪烁教程中创建的相同PIC微控制器板(如下所示)。只需根据连接图将 PIR 传感器模块与PIC 微控制器板连接即可。完成连接后,只需按照上一教程中的说明使用 PicKit 3 编程器转储代码即可享受输出。

PIC16F877A

上传程序后,PIR 传感器已准备好提供输出。每当发射 IR 的人或物体进入 PIR 范围内时,它都会给输出提供高电平。而且,基于该输出,蜂鸣器将运行。如果 PIR 输出为高蜂鸣器输入,则输出为高电平,反之亦然。

PIC16F877A

您可以使用固定在 PIR 模块上的两个电位计来控制感应距离和时间延迟。

// '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 is digital I/O, HV on MCLR must be used for programming)

#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)


// #pragma config statements should precede project file includes.

// Use project enums instead of #define for ON and OFF.


#include


#define _XTAL_FREQ 20000000 //Specify the XTAL crystall FREQ

#define PIR RC0

#define Buzzer RB2


void main() //The main function

{

TRISB=0X00; //Instruct the MCU that the PORTB pins are used as Output.

TRISC=0Xff; //Instruct the MCU that the PORTB pins are used as Input.

PORTB=0X00; //Make all output of RB3 LOW


while(1) //Get into the Infinie While loop

{

if(PIR ==1){

Buzzer=1;

__delay_ms(1000); //Wait

}

else{

Buzzer=0;

}

}


}

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分