火焰傳感器的介紹
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL6tmeOlXVU1kMRpHW3BjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4UTNxUzNyIjM4IjNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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燈不亮。