天天看點

傳感器的使用(一)-火焰傳感器

火焰傳感器的介紹

傳感器的使用(一)-火焰傳感器

1.工作電壓:DC 3.3V-5V

2.靈敏度可調(可調電位器)

3.工作溫度:-10℃—+50℃

4.設有固定螺铨孔,友善安裝

5.探測角度 60 度左右,對火焰光譜特别靈敏

6.輸出形式數字開關量輸出(0 和 1) 檢測到火焰或光源引腳輸出1,否則輸出0

本例程是使用的是普通的火焰傳感器。當檢測到火焰的時候,火焰傳感器的IO口輸出一個高電平,通過檢測PF5口的電平判斷是否檢測到的火焰,檢測到火焰之後,PF9亮,蜂鳴器響。

硬體介紹

探索者STM32F407+蜂鳴器+LED蜂鳴器。VCC和GND分别接在開發闆的電源和地上。傳感器的輸出口D0接到PF5。這裡配置蜂鳴器為PF8,LED燈為PF9。

軟體代碼

#include "led.h" 
//	 
//本程式隻供學習使用,未經作者許可,不得用于其它任何用途
//ALIENTEK STM32F407開發闆
//LED驅動代碼	   
//正點原子@ALIENTEK

//初始化PF9和PF10為輸出口.并使能這兩個口的時鐘		    
//LED IO初始化
void LED_Init(void)
{    	 
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時鐘

  //GPIOF9,F10初始化設定
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1對應IO口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
	
	GPIO_SetBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);//GPIOF9,F10設定高,燈滅

}


void FIRE_Init(void)
{    	 
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時鐘
  //GPIOF9,F10初始化設定
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED0和LED1對應IO口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//輸入模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);
  GPIO_SetBits(GPIOF,GPIO_Pin_5);
}

void BEEP_Init(void)
{   
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時鐘
  //初始化蜂鳴器對應引腳GPIOF8
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
  GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鳴器對應引腳GPIOF8拉低, 
}
           

初始化代碼

在main函數中添加代碼如下所示。

int main(void)
{ 
	LED_Init();		        //初始化LED端口
	FIRE_Init();					//初始化火焰傳感器端口
	BEEP_Init();					//初始化蜂鳴器端口
  /**下面是通過直接操作庫函數的方式實作IO控制**/	
	
	while(1)
	{

		if(GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_5)==1)
		{
			GPIO_ResetBits(GPIOF,GPIO_Pin_8);
			GPIO_SetBits(GPIOF,GPIO_Pin_9);
		}
		else
		{
			GPIO_SetBits(GPIOF,GPIO_Pin_8);
			GPIO_ResetBits(GPIOF,GPIO_Pin_9);
		}
		
	}
}

           

測試現象

現象如圖所示,打火機打開時候,LED等亮,蜂鳴器響。

傳感器的使用(一)-火焰傳感器

沒有檢測到火焰的時候,傳感器的燈不亮,并且PF9的LED燈不亮。

傳感器的使用(一)-火焰傳感器

繼續閱讀