人體感應模塊stm32驅動

熱釋電效應

在某些絕緣物質中,由於溫度的變化引起極化狀態改變的現象稱爲熱釋電效應。能實現熱釋電效應的物質被稱爲熱電體。熱電體物質有硫酸三甘肽(TGS)、鐵電鈦酸鋇、電氣石和蔗糖等。這一現象早在2300年前就被人們發現了,但對它的研究則始於18世紀。現在它成爲固體物理中最活躍的研究領域之一。因爲鐵電體的熱釋電係數比一般熱電體大得多,故成爲應用廣泛的熱電體材料,除TGS及其衍生物外,鐵電陶瓷(如PZT、PLZT等)成爲易於通過組份改變控制性能、適於批量生產、價廉的實用型熱電材料。

熱釋電效應在近10年被用於熱釋電紅外探測器中,廣泛地用於輻射和非接觸式溫度測量、紅外光譜測量、激光參數測量、工業自動控制、空間技術、紅外攝像中。我國利用ATGSAS晶體制成的紅外攝像管已開始出口國外。其溫度響應率達到4~5μA/℃,溫度分辨率小於0.2℃,信號靈敏度高,圖像清晰度和抗強光干擾能力也明顯地提高,且滯後較小。此外,由於生物體中也存在熱釋電現象,故可預期熱釋電效應將在生物,乃至生命過程中有重要的應用。在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
熱釋電紅外傳感器在結構上引入場效應管,其目的在於完成阻抗變換。由於熱電元輸出的是電荷信號,並不能直接使用,因而需要用電阻將其轉換爲電壓形式。故引入的N溝道結型場效應管應接成共漏形式來完成阻抗變換。熱釋電紅外傳感器由傳感探測元、干涉濾光片和場效應管匹配器三部分組成。設計時應將高熱電材料製成一定厚度的薄片,並在它的兩面鍍上金屬電極,然後加電對其進行極化,這樣便製成了熱釋電探測元。在這裏插入圖片描述
在這裏插入圖片描述
菲涅爾透鏡利用透鏡的特殊光學原理,在探測器前方產生一個交替變化的“盲區”和“高靈敏區”,以提高它的探測接收靈敏度。當有人從透鏡前走過時,人體發出的紅外線就不斷地交替從“盲區”進入“高靈敏區”,這樣就使接收到的紅外信號以忽強忽弱的脈衝形式輸入,從而強化其能量幅度。

人體輻射的紅外線中心波長爲910–um,而探測元件的波長靈敏度在0.220–um範圍內幾乎穩定不變。在傳感器頂端開設了一個裝有濾光鏡片的窗口,這個濾光片可通過光的波長範圍爲7~10–um,正好適合於人體紅外輻射的探測,而對其它波長的紅外線由濾光片予以吸收,這樣便形成了一種專門用作探測人體輻射的紅外線傳感器。

在這裏插入圖片描述
熱釋電人體紅外傳感器的特點是,它只在由於外界的輻射而引起本身溫度變化時,纔給出一個相應的電信號,當溫度的變化趨於穩定後,就不再有信號輸出。所以,熱釋電信號與它本身的溫度變化率成正比,即熱釋電傳感器只對運動的人體敏感。通常,敏感單元材料阻抗非常高,因此要用場效應管進行阻抗變換後才能實際使用。電路中高阻值電阻Rg 的作用是釋放柵極電荷,使場效應管正常工作;採用源極輸出時,要外接源極電阻Rs,源極電壓約爲0.4 ~ l.0V。製成敏感單元的PZT( 鋯鈦酸鉛) 是一種光譜材料,能探測各種波長輻射。爲了使傳感器對人體最敏感,而對太陽、電燈光等有抗干擾性,傳感器採用了濾光片做窗口。濾光片使人體輻射的紅外線最強的波長正好落在濾光窗相應波長的中心處,所以濾光窗能有效地讓人體所輻射的紅外線通過,而阻止太陽光、燈光等可見光中的紅外線通過,以免引起干擾。爲提高傳感器的靈敏度,可在傳感器前1 ~ 5cm處放置菲涅爾透鏡,使探測距離從一般的2m 提高到10 至20m。在實驗室試驗時,可不加菲涅爾透鏡。在實際應用中,傳感器往往需要預熱,這是由傳感器本身決定的。一般被動紅外探測器需要一分鐘左右的預熱時間。

技術參數
1.工作電壓:DC 2.7-12V;
2.靜態功耗:<0.1mA;
3.延時時間:2秒;
4.封鎖時間:2秒;
5.觸發方式:可重複;
6.感應範圍:≤100度錐角,3-5米;(需根據具體的透鏡)
7.工作溫度:-20 - +60℃
8.PCB外形尺寸:10mm*8mm
9.模塊透鏡:小透鏡

功能特點
a、 超小體積,靈敏度高,可靠性強,超低電壓工作模式。
b、抗干擾性增強,內部採用數字信號處理,直接高低電平輸出。
c、 全自動感應:人進入其感應範圍則輸出高電平,人離開感應範圍則自動延時關閉高電平,輸出低電平。
d、可重複觸發方式:即感應輸出高電平後,在延時時間段內,如果有人體在其感應範圍活動,其輸出將一直保持高電平,直到人離開後延時,才變爲低電平(即:感應模塊檢測到人體的每一次活動後會自動順延一個延時時間段,並且以最後一次活動的時間爲延時時間的起始點)。

模塊的VOUT腳輸出的是開關量,有人接近感應模塊時,輸出高電平,人離開後恢復成低電平。所以,可接單片機的任何一個IO腳都行,可採用查詢法,查詢所接引腳的狀態,就知道VOUT腳是高電,還是低電平,從而判是否有人接近了。在這裏插入圖片描述

程序

main函數

#include "stm32f10x.h"   // Ï൱ÓÚ51µ¥Æ¬»úÖÐµÄ  #include <reg51.h>
#include "usart.h"
#include "bsp_hc_sr501.h"
#include "bsp_led.h" 
#include "bsp_systick.h"


//¶¨ÒåÒ»¸öÈ«¾Ö±äÁ¿a£¬½«#include "stm32f10x_it.h"ÖеIJÎÊý´«Èë
extern int a;

int main(void)
{
	
	// À´µ½ÕâÀïµÄʱºò£¬ÏµÍ³µÄʱÖÓÒѾ­±»ÅäÖóÉ72M¡£
 USART_Config();		
 LED_GPIO_Config();
	EXTI_SR501_Config();
	
printf("»¶Ó­Ê¹ÓÃÈËÌå¸ÐӦģ¿é\n");	
	

while(1)
{
	
printf("³É¹¦\n");
	SysTick_Delay_ms(1000);

}

	
	
	
	
}

.c

#include "bsp_hc_sr501.h"
#include "usart.h"




static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  
  /* ÅäÖÃNVICΪÓÅÏȼ¶×é1 */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
  /* ÅäÖÃÖжÏÔ´£º°´¼ü1 */
  NVIC_InitStructure.NVIC_IRQChannel = SR501_OUT_EXTI_IRQ;
  /* ÅäÖÃÇÀÕ¼ÓÅÏȼ¶ */
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  /* ÅäÖÃ×ÓÓÅÏȼ¶ */
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  /* ʹÄÜÖжÏͨµÀ */
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
}


void EXTI_SR501_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; 
	EXTI_InitTypeDef EXTI_InitStructure;

	/*¿ªÆô°´¼üGPIO¿ÚµÄʱÖÓ*/
	RCC_APB2PeriphClockCmd(SR501_OUT_GPIO_CLK,ENABLE);
												
	/* ÅäÖà NVIC ÖжÏ*/
	NVIC_Configuration();
	
/*--------------------------GPIOÅäÖÃ-----------------------------*/
	/* Ñ¡Ôñ°´¼üÓõ½µÄGPIO */	
  GPIO_InitStructure.GPIO_Pin = SR501_OUT_GPIO_PIN;
  /* ÅäÖÃΪ¸¡¿ÕÊäÈë */	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD ;
  GPIO_Init(SR501_OUT_GPIO_PORT, &GPIO_InitStructure);

	/* Ñ¡ÔñEXTIµÄÐźÅÔ´ */
  GPIO_EXTILineConfig(SR501_OUT_EXTI_PORTSOURCE, SR501_OUT_EXTI_PINSOURCE);
  EXTI_InitStructure.EXTI_Line = SR501_OUT_EXTI_LINE;
	
	/* EXTIΪÖжÏģʽ */
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
	/* ÉÏÉýÑØÖÐ¶Ï */
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  /* ʹÄÜÖÐ¶Ï */	
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);
}


.h文件

#ifndef __BSPHC_SR501_H
#define __BSPHC_SR501_H
#include "stm32f10x.h" 


//Òý½Å¶¨Òå
#define SR501_OUT_GPIO_PORT         GPIOA
#define SR501_OUT_GPIO_CLK          (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO)
#define SR501_OUT_GPIO_PIN          GPIO_Pin_4

#define SR501_OUT_EXTI_PORTSOURCE   GPIO_PortSourceGPIOA
#define SR501_OUT_EXTI_PINSOURCE    GPIO_PinSource4
#define SR501_OUT_EXTI_LINE         EXTI_Line4
#define SR501_OUT_EXTI_IRQ          EXTI4_IRQn

#define SR501_IRQHandler            EXTI4_IRQHandler

 

void EXTI_SR501_Config(void);
void HC_SR_GPIO_Config(void); 
void HC_SR_RECEIVE(void);	
#endif /*__BSP_HC_SR501_H*/

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章