人體熱釋紅外傳感器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
目錄
-
GPIO輸入的應(yīng)用場景
-
人體熱釋紅外傳感器HC-SR501
-
電氣參數(shù)
-
功能特點(diǎn)
-
應(yīng)用范圍
-
硬件電路
-
代碼實(shí)例
-
成果展示
-
資料獲取
-
推薦閱讀
上一個(gè)網(wǎng)文實(shí)現(xiàn)了流水燈,《利用STM32F103C8T6最小系統(tǒng)板點(diǎn)亮流水燈 》,這個(gè)主要用到了單片機(jī)的IO可以輸出高低電平的特性,程序里置1即輸出高電平;程序里置0即輸出低電平。
當(dāng)然,GPIO除了對(duì)外可以輸出高低電平以外,單片機(jī)的IO還可以當(dāng)做輸入使用,當(dāng)與單片機(jī)的某個(gè)IO引腳相連的電壓為高電平的時(shí)候,程序中讀取該IO的值為邏輯“1”;當(dāng)輸入的電壓為低電平的時(shí)候,程序中讀取該IO的值為邏輯“0”。
注意:
因?yàn)閱纹瑱C(jī)的IO為TTL電平,所以輸入的電壓要注意電壓范圍,避免輸入電壓過高燒毀單片機(jī)IO引腳;
單片機(jī)的IO作為輸出使用時(shí),注意輸出電流的能力是有限的,即一般只使用IO作為觸發(fā)信號(hào),而不是作為功率IO使用;
補(bǔ)充:
TTL電平的電壓范圍:
輸出高電平>2.4V,輸出低電平<0.4V
輸入高電平≥2.0V,輸入低電平≤0.8V
GPIO輸入的應(yīng)用場景
-
按鍵讀取
-
熱釋紅外人體感應(yīng)傳感器
-
紅外接收頭
-
帶lm393的一些傳感器模塊,比如:熱敏傳感器、光照傳感器、聲音傳感器等模塊
這種模塊上面一般都有一個(gè)電位器,用于調(diào)節(jié)閾值。
這種模塊的輸出引腳一般標(biāo)識(shí)為DO,可以輸出TTL信號(hào),進(jìn)而單片機(jī)可以到兩種狀態(tài),感應(yīng)(達(dá)到)到目標(biāo),或者未感應(yīng)(未達(dá)到)。
個(gè)別傳感器模塊還有一個(gè)模擬量輸出引腳,一般標(biāo)識(shí)為AO,比如MQ2煙霧傳感器,通過其模擬信號(hào)輸出引腳AO與AD芯片或者單片機(jī)的ADC引腳相連,可以獲得強(qiáng)度值,這種方法可以不調(diào)節(jié)硬件的情況下,通過程序來控制響應(yīng)閾值,更靈活。
人體熱釋紅外傳感器HC-SR501
電氣參數(shù)
-
工作電壓范圍:直流電壓4.5-20V
-
電平輸出:高3.3 V /低0V
-
觸發(fā)方式:L不可重復(fù)觸發(fā)/H重復(fù)觸發(fā)(默認(rèn)重復(fù)觸發(fā))
-
延時(shí)時(shí)間:0.5-200S(可調(diào))可制作范圍零點(diǎn)幾秒-幾十分鐘
-
封鎖時(shí)間:2.5S(默認(rèn))可制作范圍零點(diǎn)幾秒-幾十秒
-
感應(yīng)角度:<100度錐角
功能特點(diǎn)
-
全自動(dòng)感應(yīng):人進(jìn)入其感應(yīng)范圍則輸出高電平,人離開感應(yīng)范圍則自動(dòng)延時(shí)關(guān)閉高電平,輸出低電平。
-
光敏控制(可自己購買了安裝,出廠時(shí)未設(shè)):模塊預(yù)留有位置,可設(shè)置光敏控制,白天或光線強(qiáng)時(shí)不感應(yīng)。
-
觸發(fā)方式跳線選擇。
-
不可重復(fù)觸發(fā)方式:即感應(yīng)輸出高電平后,延時(shí)時(shí)間段一結(jié)束,輸出將自動(dòng)從高電平變成低電平;
-
可重復(fù)觸發(fā)方式:即感應(yīng)輸出高電平后,在延時(shí)時(shí)間段內(nèi),如果有人體在其感應(yīng)范圍活動(dòng),其輸出將一直保持高電平,直到人離開后才延時(shí)將高電平變?yōu)榈碗娖剑ǜ袘?yīng)模塊檢測到人體的每一次活動(dòng)后會(huì)自動(dòng)順延一個(gè)延時(shí)時(shí)間段,并且以最后一次活動(dòng)的時(shí)間為延時(shí)時(shí)間的起始點(diǎn))。
-
具有感應(yīng)封鎖時(shí)間(默認(rèn)設(shè)置:2.5S封鎖時(shí)間):感應(yīng)模塊在每一次感應(yīng)輸出后(高電平變成低電平),可以緊跟著設(shè)置一個(gè)封鎖時(shí)間段,在此時(shí)間段內(nèi)感應(yīng)器不接受任何感應(yīng)信號(hào)。此功能可以實(shí)現(xiàn)“感應(yīng)輸出時(shí)間”和“封鎖時(shí)間”兩者的間隔工作,可應(yīng)用于間隔探測產(chǎn)品;同時(shí)此功能可有效抑制負(fù)載切換過程中產(chǎn)生的各種干擾。(此時(shí)間可設(shè)置在零點(diǎn)幾秒—幾十秒鐘)。
注意:
紅外線熱釋電傳感器根據(jù)實(shí)現(xiàn)原理,對(duì)人體的敏感程度還和人的運(yùn)動(dòng)方向關(guān)系很大。紅外線熱釋電傳感器對(duì)于徑向移動(dòng)反應(yīng)最不敏感, 而對(duì)于橫切方向 (即與半徑垂直的方向)移動(dòng)則最為敏感。
==>所以安裝不對(duì)的話,可能會(huì)出現(xiàn)不工作的情況,另外,根據(jù)模塊實(shí)現(xiàn)的原理,靜止的人,無法感應(yīng)。
傳感器只對(duì)移動(dòng)或運(yùn)動(dòng)的人體起作用。
==>所以如果用于檢測球場或者教室內(nèi)是否有人的話,理論上來說,不是很準(zhǔn)確。
應(yīng)用范圍
-
安防產(chǎn)品
-
人體感應(yīng)玩具
-
人體感應(yīng)燈具
-
工業(yè)自動(dòng)化控制等
配合外圍電路,它能自動(dòng)快速開啟各類白熾燈、熒光燈、蜂鳴器、自動(dòng)門、電風(fēng)扇、烘干機(jī)和自動(dòng)洗衣機(jī)等裝置。
特別適用于賓館、商場、庫房及家庭的過道、走廊等場所。
硬件電路
代碼實(shí)例
實(shí)現(xiàn)目標(biāo):
-
人體紅外熱釋感應(yīng)模塊OUT引腳輸出高電平(檢測出有人)時(shí),板載LED(PC13)亮,反之,LED滅。
-
我們將SR501的OUT引腳與核心板的PA5相連,并將PA5設(shè)置為輸入;詳細(xì)代碼見void SR501_Init(void)函數(shù)實(shí)現(xiàn);
-
為了控制板載LED的亮滅,需要將PC13設(shè)置為輸出;詳細(xì)代碼見void LED_Init(void)函數(shù)實(shí)現(xiàn);
main.c完整代碼如下:
//SR501_OUT初始化--PA5,設(shè)置成輸入void SR501_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //SR501_OUT GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure);} // 板載LED初始化--PC13void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能PORTA時(shí)鐘 //SR501_OUT GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); LED = 1;} int main(void){ //初始化 delay_init(); SR501_Init(); LED_Init(); while(1) { if(SR501_OUT) { LED = 0; } else { LED = 1; } delay_ms(10); }}
成果展示
當(dāng)手靠近人體熱釋紅外傳感器時(shí),綠燈亮;延時(shí)一定時(shí)間以后,綠燈滅。