在本文中,單片機開發工程師們(men) 分享了一個(ge) 使用PIC單片機開發的被動紅外(PIR)傳(chuan) 感器模塊的報警器。在這個(ge) 方案中,我們(men) 使用PIC12F635單片機進行開發,持續監控傳(chuan) 感器模塊的輸出,並在其激活時打開蜂鳴器。
一、被動紅外(PIR)報警器方案的原理
某些半導體(ti) 材料具有暴露於(yu) 熱紅外輻射時會(hui) 產(chan) 生表麵電荷的特性。這種現象稱為(wei) 熱電。被動紅外(PIR)傳(chuan) 感器模塊的工作原理相同。人體(ti) 以紅外線輻射的形式輻射熱量,最大約為(wei) 9.4微米。人體(ti) 的存在會(hui) 導致熱釋電傳(chuan) 感器感應到的周圍環境的IR輪廓發生突然變化。PIR傳(chuan) 感器模塊在板上具有儀(yi) 表電路,該儀(yi) 表電路將該信號放大到適當的電壓電平以指示運動的檢測。
PIR傳(chuan) 感器需要大約10到60秒的初始穩定時間才能正常運行。在這段時間內(nei) ,傳(chuan) 感器要熟悉周圍的環境,並應避免其視野內(nei) 的任何運動。PIR傳(chuan) 感器的典型範圍為(wei) 6米,其設計旨在適應緩慢變化的條件,例如隨著時間的流逝,周圍溫度分布的逐漸變化。但是,傳(chuan) 感器會(hui) 響應任何輪廓的突然變化(例如,人體(ti) 運動)。這就是為(wei) 什麽(me) 不應將PIR傳(chuan) 感器模塊放置在加熱器,交流電源插座或任何會(hui) 在周圍環境中產(chan) 生快速變化的地方的原因。
PIR傳(chuan) 感器模塊通常具有3針連接:Vcc,輸出和接地。引腳排列可能會(hui) 有所不同,因此我建議查看製造商的數據表以確認引腳。有時候,他們(men) 確實在板上靠近引腳的地方有標簽。我所擁有的一個(ge) 可以做到,它可以通過5-12V電源供電,因為(wei) 它具有自己的穩壓器。當檢測到運動時,輸出變高。
此外,它還有3針跳線選擇,可用於(yu) 單觸發或連續觸發輸出模式。這兩(liang) 個(ge) 位置帶有標簽H和L。當跳線位於(yu) H位置時,當反複重新觸發傳(chuan) 感器時,輸出將保持高電平。在位置L,每次觸發傳(chuan) 感器,輸出就變高和變低。因此,在此模式下,連續運動將產(chan) 生重複的高/低脈衝(chong) 。傳(chuan) 感器模塊的前部具有菲涅耳透鏡,可將紅外光聚焦到傳(chuan) 感器元件上。
二、紅外報警器方案電路圖
該紅外報警器方案的電路圖非常簡單,這裏使用4節AA電池為(wei) 電路供電,可提供6V電源。串聯使用一個(ge) 二極管將電壓降至5.4V,因為(wei) PIC單片機的工作電壓應低於(yu) 5.5V。此外,在電源極性相反的情況下,該二極管還可以為(wei) 電路提供保護。我已經使用NI-MH可充電電池(可提供4.8V)對電路進行了測試,並且可以正常工作,但是我建議使用堿性電池(每個(ge) 1.5V)以提高性能。你也可以使用9V電池,但是電路中需要LM7805穩壓器IC。
PIR傳(chuan) 感器模塊的輸出通過PIC12F635的GP5(引腳2)進行監控。當檢測到運動時,此輸出約為(wei) 3.3V(我的傳(chuan) 感器模塊的板上有3.3V穩壓器IC)。你仍然可以使用該電壓作為(wei) PIC12F635的有效邏輯高電平,但我更喜歡使用該電壓來驅動NPN晶體(ti) 管(BC547)的基極,以便在集電極處獲得邏輯電壓的完整擺幅。現在,單片機監視晶體(ti) 管的集電極上的電壓。在正常情況下,晶體(ti) 管截止,集電極輸出為(wei) 邏輯高電平(+5V)。當檢測到運動時,傳(chuan) 感器模塊的高輸出使晶體(ti) 管飽和,並且集電極處的電壓下降至邏輯低。觸發器的跳線選擇在H位置,因此隻要運動存在,傳(chuan) 感器的輸出將保持有效。注意,PIC12F635單片機使用4.0 MHz的內(nei) 部時鍾源。在本方案中,MCLR功能被禁用,WDT為(wei) OFF。
LED通過串聯的限流電阻連接到端口GP4。電源打開時,LED閃爍3次。這表示係統已啟動。端口引腳GP2驅動壓電蜂鳴器。壓電蜂鳴器在其諧振頻率處提供最大的輸出聲壓。我使用的壓電蜂鳴器是EFM-290ED,其諧振頻率為(wei) 3.4±0.5 KHz。玩了一點之後,我發現最大的輸出聲音約為(wei) 3725 Hz。盡管規範說工作電壓為(wei) 7-12V,但僅(jin) 用5V供電時會(hui) 產(chan) 生很大的聲音。
該方案用C語言編寫(xie) ,並使用MikroC Pro for PIC進行編譯。首次打開電源時,LED閃爍3次,表明係統已打開電源。然後,單片機等待60秒鍾,然後開始監視PIR傳(chuan) 感器輸出。需要注意的是,首次開啟電源時,PIR傳(chuan) 感器需要此等待一小會(hui) 時間才能穩定下來。當單片機檢測到傳(chuan) 感器被觸發時,它以3725 Hz方波驅動壓電蜂鳴器。MikroC具有用於(yu) 生成聲音的內(nei) 置庫(Sound_Play())。另一個(ge) 需要注意的問題是當感應到運動時你想要讓警報響多長時間,這取決(jue) 於(yu) 你對單片機進行編程的設置。由於(yu) 傳(chuan) 感器處於(yu) 重新觸發模式,因此隻要持續感測到運動,蜂鳴器就會(hui) 保持打開狀態。如果運動消失,並且傳(chuan) 感器輸出變為(wei) 邏輯低電平,則蜂鳴器不會(hui) 立即停止,但仍會(hui) 打開約10秒鍾,但頻率略有不同(3570 Hz)。如果再次檢測到運動,它將以其峰值諧振頻率(3725 Hz)驅動壓電蜂鳴器。
三、紅外報警器方案源代碼
sbit Sensor_IP at GP5_bit; // sensor I/P
sbit LED at GP4_bit; // LED O/P
unsigned short trigger, counter;
void Get_Delay(){
Delay_ms(300);
}
void main() {
CMCON0 = 7;
TRISIO = 0b00101000; // GP5, 5 I/P‘s, Rest O/P’s
GPIO = 0;
Sound_Init(&GPIO,2);
// Blink LED at Startup
LED = 1;
Get_Delay();
LED = 0;
Get_Delay();
LED = 1;
Get_Delay();
LED = 0;
Get_Delay();
LED = 1;
Get_Delay();
LED = 0;
Delay_ms(60000); // 45 Sec delay for PIR module stabilizaTIon
counter = 0;
trigger = 0;
do {
while (!Sensor_IP) { // Sensor I/P Low
Sound_Play(3725, 600);
Delay_ms(500);
trigger = 1;
counter = 0;
}
if (trigger) {
Sound_Play(3570, 600);
Delay_ms(500);
counter = counter+1;
if(counter == 10) trigger=0;
}
}while(1);
} // End main()