HC-SR501人體紅外傳感器
今天分享的是HC-SR501人體紅外傳感器的使用,下面我會結(jié)合stm32以及正在做的合泰HT32這兩個(gè)型號的芯片進(jìn)行例程講解。
HC-SR501介紹
1、HC-SR501是基于紅外線HC-SR501是基于紅外線技術(shù)的自動(dòng)控制模塊 ,采用德國原裝進(jìn)口LHI778 探頭設(shè)計(jì),靈敏度高,可靠性強(qiáng),超低電壓工作模式 ,廣泛應(yīng)用于各類自動(dòng)感應(yīng)電器設(shè)備 ,尤其是干電池供電的自動(dòng)控制產(chǎn)品。
2、模塊為全自動(dòng)感應(yīng),當(dāng)人進(jìn)入其感應(yīng)范圍則輸出高電平,人離開感應(yīng)范圍則自動(dòng)延時(shí)關(guān)閉高電平,輸出低電平。傳感器有兩種觸發(fā)方式(可通過跳線進(jìn)行選擇):第一種不可重復(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)后會自動(dòng)順延一個(gè)延時(shí)時(shí)間段,并且以最后一次活動(dòng)的時(shí)間為延時(shí)時(shí)間的起始點(diǎn))
3、具有感應(yīng)封鎖時(shí)間(默認(rèn)設(shè)置:2.5S 封鎖時(shí)間):感應(yīng)模塊在每一次感應(yīng)輸出后(高電平變成低電平),可以緊跟著設(shè)置一個(gè)封鎖時(shí)間段,在此時(shí)間段內(nèi)感應(yīng)器不接受任何感應(yīng)信號。此功能可以實(shí)現(xiàn)“感應(yīng)輸出時(shí)間”和“封鎖時(shí)間”兩者的間隔工作,可應(yīng)用于間隔探測產(chǎn)品;同時(shí)此功能可有效抑制負(fù)載切換過程中產(chǎn)生的各種干擾。(此時(shí)間可設(shè)置在零點(diǎn)幾秒—幾十秒鐘)。感應(yīng)模塊通電后有一分鐘左右的初始化時(shí)間,在此期間模塊會間隔地輸出0-3 次,一分鐘后進(jìn)入待機(jī)狀態(tài)。
引腳接線
HC-SR501在使用的時(shí)候我們只需要接三根線就可以了,VCC GND OUT(輸出引腳)中間的那根是信號線也就是我們的OUT輸出引腳。我們從該模塊的背后可以看出有一端上面有H L 的跳帽,靠近這個(gè)的引腳為GND 剩下的一個(gè)就是VCC。
注意
該模塊在使用的時(shí)候我們需要接5v直流進(jìn)行驅(qū)動(dòng)
并且我們可以通過下面這兩個(gè)電位器進(jìn)行延時(shí)和
距離的調(diào)節(jié)
順時(shí)針轉(zhuǎn)動(dòng)延時(shí)調(diào)節(jié)的時(shí)候,感應(yīng)延時(shí)加長反之減短
順時(shí)針轉(zhuǎn)動(dòng)距離調(diào)節(jié)的時(shí)候,感應(yīng)距離變長反之變短
進(jìn)入正題,HC-SR501的具體使用
1.stm32驅(qū)動(dòng)HC-SR501
/*==================infrared.h===============*/
#ifndef _INFRARED_H_
#define _INFRARED_H_
#include "stm32f10x.h"
/*-----大家可以根據(jù)自己進(jìn)行引腳端口等的修改---------*/
#define PORT GPIOB
#define PIN GPIO_Pin_4
#define GPIOB_RCC RCC_APB2Periph_GPIOB
#define Read_STATE() GPIO_ReadInputDataBit(PORT,PIN)//讀取人體紅外的值
void Infrared_Init(void);
void infrared_test(void);
#endif
/*=================infrared.c=================*/
#include "infrared.h"
#include "led.h"
#include "usart.h"
//紅外引腳初始化
void Infrared_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//定義結(jié)構(gòu)體變量
RCC_APB2PeriphClockCmd(GPIOB_RCC,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Pin = PIN ;
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(PORT ,&GPIO_InitStructure);
}
//紅外人體感應(yīng)功能測試
//感應(yīng)到人體輸出高電平,離開感應(yīng)區(qū)域輸出低電平
//下面的判斷語句中根據(jù)自己的功能來進(jìn)行修改
void infrared_test(void)
{
if( Read_STATE() == RESET)
{
printf("NO People\n");
close_led();
}
else
{
printf("People\n");
open_led();
}
}
/*===================main.c==================*/
#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"
#include "led.h"
#include "infrared.h"
void Delay(unsigned int t)
{
unsigned int i,j;
for(i = 0;i < t;i++)
{
for(j = 0;j< 12000;j++);
}
}
int main(void)
{
Usart_Init();
Led_Init();
Infrared_Init();
USART_SendStr(USART1,"STM32 Infrared Test\n");
while(1)
{
infrared_test();
}
2.合泰HT32驅(qū)動(dòng)HC-SR501
文章來源:http://www.zghlxwxcb.cn/news/detail-780359.html
/*=================infrared.h================*/
#ifndef _INFRARED_H_
#define _INFRARED_H_
#include "ht32f5xxxx_ckcu.h"
#include "ht32f5xxxx_gpio.h"
#include "ht32f5xxxx_01.h"
//端口號定義
#define HT_GPIO_PORT_infrared HT_GPIOA
//引腳定義
#define infrared_GPIO_PIN GPIO_PIN_15
#define Read_STATE() GPIO_ReadInBit(HT_GPIO_PORT_infrared,infrared_GPIO_PIN)
void Infrared_Init(void);
void infrared_test(void);
#endif
/*================infrared.c=============*/
#include "infrared.h"
#include "led.h"
#include "uart.h"
void Infrared_Init(void)
{
CKCU_PeripClockConfig_TypeDef CKCUClock_infrared= {{0}};
CKCUClock_infrared.Bit.PA = 1; //開啟GPIOB時(shí)鐘
CKCU_PeripClockConfig(CKCUClock_infrared, ENABLE);
GPIO_DirectionConfig(HT_GPIO_PORT_infrared,infrared_GPIO_PIN,GPIO_DIR_IN);
GPIO_InputConfig(HT_GPIO_PORT_infrared, infrared_GPIO_PIN, ENABLE);
GPIO_PullResistorConfig(HT_GPIO_PORT_infrared, infrared_GPIO_PIN, GPIO_PR_DOWN);
}
//紅外人體感應(yīng)功能測試
//感應(yīng)到人體輸出高電平,離開感應(yīng)區(qū)域輸出低電平
void infrared_test(void)
{
if( Read_STATE() == RESET)
{
printf("NO People\n");
LED1_OFF();
}
else
{
printf("People\n");
LED1_ON();
}
}
/*==================main.c==================*/
#include "ht32.h"
#include "ht32_board.h"
#include "led.h"
#include "delay.h"
#include "uart.h"
#include "infrared.h"
/**********************TH32 紅外人體感應(yīng)**********************
Author:小殷
Date:2022-5-4
******************************************************/
int main()
{
Led_Init();
USARTx_Init();
Infrared_Init();
printf("HT32 INFRARED TEST\n");
while(1)
{
infrared_test();
delay_ms(1000);
}
}
總的來說,HC-SR501這款人體感應(yīng)測試還挺好用的,上述兩個(gè)Demo 的用法基本一致,只是相應(yīng)的函數(shù)名稱和初始化上有點(diǎn)區(qū)別。
文章來源地址http://www.zghlxwxcb.cn/news/detail-780359.html
到了這里,關(guān)于【HC-SR501人體紅外傳感器】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!