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 传感器也称为热释电或红外运动传感器。
每个物体在加热时都会发出一定量的红外线,类似于人体因体温而发出红外线。由于空气和物体之间的摩擦,每个物体产生的红外线。PIR传感器的主要部件是热释电传感器。除此之外,BISS0001(“微功率PIR运动检测器IC”),一些电阻器,电容器和其他用于构建PIR传感器的组件。BISS0001 IC从传感器获取输入并进行处理,使输出引脚相应地高或低。
您还可以调整距离灵敏度和持续时间,一旦检测到运动,输出引脚将处于高电平。它有两个电位计旋钮来调整这两个参数。
电路图
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 编程器转储代码即可享受输出。
上传程序后,PIR 传感器已准备好提供输出。每当发射 IR 的人或物体进入 PIR 范围内时,它都会给输出提供高电平。而且,基于该输出,蜂鸣器将运行。如果 PIR 输出为高蜂鸣器输入,则输出为高电平,反之亦然。
您可以使用固定在 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;
}
}
}
-
微控制器
+关注
关注
48文章
7482浏览量
151012 -
PIC16F877A
+关注
关注
2文章
43浏览量
21777 -
PIR
+关注
关注
0文章
74浏览量
17863
发布评论请先 登录
相关推荐
评论