PIR(被動紅外)或運動傳感器用于檢測移動人體或物體的運動。每當有人進入 PIR 傳感器的范圍內(nèi)時,它的輸出引腳都會發(fā)出高電平。
今天,我們將簡單地將PIR與PIC微控制器PIC16F877A連接。在此電路中,如果一些移動物體進入 PIR 傳感器的范圍內(nèi),蜂鳴器將開始發(fā)出蜂鳴聲。
所需材料
圖片套件 3
紅外傳感器。
PIC16F877A 集成電路
40 - 引腳 IC 支架
性能板
20 MHz 晶體 OSC
內(nèi)螺紋和外螺紋伯格斯圖銷
33pf 電容器 - 2 個電容、100uf 和 10uf 電容。
680 歐姆、10K 和 560 歐姆電阻器
任何顏色的發(fā)光二極管
1 焊接套件
集成電路 7805
12V 適配器
蜂鳴器
連接線
面包板
紅外傳感器:
PIR 傳感器價格低廉、功耗低且易于使用的運動檢測 Sesnor。PIR 傳感器只接收紅外線,不發(fā)射,這就是為什么它被稱為被動。PIR 感應(yīng)熱量的任何變化,如果有變化,它會在輸出時給出高電平。PIR 傳感器也稱為熱釋電或紅外運動傳感器。
每個物體在加熱時都會發(fā)出一定量的紅外線,類似于人體因體溫而發(fā)出紅外線。由于空氣和物體之間的摩擦,每個物體產(chǎn)生的紅外線。PIR傳感器的主要部件是熱釋電傳感器。除此之外,BISS0001(“微功率PIR運動檢測器IC”),一些電阻器,電容器和其他用于構(gòu)建PIR傳感器的組件。BISS0001 IC從傳感器獲取輸入并進行處理,使輸出引腳相應(yīng)地高或低。
您還可以調(diào)整距離靈敏度和持續(xù)時間,一旦檢測到運動,輸出引腳將處于高電平。它有兩個電位計旋鈕來調(diào)整這兩個參數(shù)。
電路圖
PIC微控制器:
為了對PIC微控制器進行編程以連接PIR,我們將需要一個IDE(集成開發(fā)環(huán)境),用于進行編程。一個編譯器,我們的程序被轉(zhuǎn)換為MCU可讀形式,稱為HEX文件。一個IPE(集成編程環(huán)境),用于將我們的十六進制文件轉(zhuǎn)儲到我們的PIC MCU中。
Microchip免費提供了這三個軟件。可以直接從其官方頁面下載。為了您的方便,我還提供了鏈接。下載后,將它們安裝在您的計算機上。如果您在這樣做時遇到任何問題,可以查看最后給出的視頻。
要將我們的代碼轉(zhuǎn)儲或上傳到 PIC,我們需要PICkit 3。PICkit 3編程器/調(diào)試器是一種簡單、低成本的在線調(diào)試器,由在 Windows 平臺上運行 MPLAB IDE(v8.20 或更高版本)軟件的 PC 控制。PICkit 3編程器/調(diào)試器是開發(fā)工程師工具套件不可或缺的一部分。除此之外,我們還需要其他硬件,如 Perf 板、焊臺、PIC IC、晶體振蕩器、電容器等。但是,隨著教程的進行,我們會將它們添加到我們的列表中。
我們將使用MCU中提供的ICSP選項對PIC16F877A進行編程。
要刻錄代碼,請執(zhí)行以下步驟:
啟動 MPLAB IPE。
將 PicKit 3 的一端連接到 PC,另一端連接到性能板上的 ICSP 引腳。
通過單擊連接按鈕連接到您的 PIC 設(shè)備。
瀏覽閃爍十六進制文件,然后單擊程序。
代碼和說明
首先,我們需要在 pic 微控制器中設(shè)置配置位,然后從 void main 函數(shù)開始。
在下面的代碼中,“XC.h”是包含引腳和外設(shè)的所有友好名稱的頭文件。此外,我們還在下面的代碼中定義了晶體振蕩器頻率、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
根據(jù)下面的代碼,每當 PIR 變高時,蜂鳴器就會變高,否則它就會保持關(guān)閉狀態(tài)。
while(1) //Get into the Infinie While loop
{
if(PIR ==1){
Buzzer=1;
__delay_ms(1000); //Wait
}
else{
Buzzer=0;
}
}
}
帶PIC微控制器的PIR傳感器的工作:
該項目沒有任何復(fù)雜的硬件設(shè)置,我們再次使用我們在LED閃爍教程中創(chuàng)建的相同PIC微控制器板(如下所示)。只需根據(jù)連接圖將 PIR 傳感器模塊與PIC 微控制器板連接即可。完成連接后,只需按照上一教程中的說明使用 PicKit 3 編程器轉(zhuǎn)儲代碼即可享受輸出。
上傳程序后,PIR 傳感器已準備好提供輸出。每當發(fā)射 IR 的人或物體進入 PIR 范圍內(nèi)時,它都會給輸出提供高電平。而且,基于該輸出,蜂鳴器將運行。如果 PIR 輸出為高蜂鳴器輸入,則輸出為高電平,反之亦然。
您可以使用固定在 PIR 模塊上的兩個電位計來控制感應(yīng)距離和時間延遲。
// '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;
}
}
}
-
微控制器
+關(guān)注
關(guān)注
48文章
7571瀏覽量
151632 -
PIC16F877A
+關(guān)注
關(guān)注
2文章
43瀏覽量
21838 -
PIR
+關(guān)注
關(guān)注
0文章
74瀏覽量
17888
發(fā)布評論請先 登錄
相關(guān)推薦
評論