STM32
直播中

欲望都市

9年用户 902经验值
擅长:可编程逻辑
私信 关注
[问答]

请教大神基于stm32的火焰传感器该怎样去使用呢

请教大神基于STM32的火焰传感器该怎样去使用呢?

回帖(1)

徐凤

2021-11-25 15:29:15
一、简介

可以检测火焰或者波长在 760 纳米~1100 纳米范围内的光源
二、规格参数:

1.工作电压:DC 3.3V-5V
2.灵敏度可调(可调电位器)
3.工作温度:-10℃—+50℃
4.设有固定螺铨孔,方便安装
5.探测角度 60 度左右,对火焰光谱特别灵敏
6.输出形式数字开关量输出(0 和 1) 检测到火焰或光源引脚输出1,否则输出0
三、连接

将VCC和GND连接在开发板对应的引脚上(此处选择普中STM32F103开发板),信号输出线接在PC4上

  给我少发了火焰传感器,所以此处无图!
四、代码

在frame.h 文件中,我们先进行宏定义,方便移植

#include "system.h"
#define Frame_STATE() GPIO_ReadInputDataBit(frame_PORT,frame_PIN)//读火焰传感器的状态


#define frame_PORT GPIOD
#define frame_PIN GPIO_Pin_1
#define frame_RCC RCC_APB2Periph_GPIOD


定义完了之后,再对frame.c文件中的PC4接收引脚进行初始化


#include "frame.h"
//对火焰传感器端口进行初始化
void infrared_INIT(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
       
        RCC_APB2PeriphClockCmd(frame_RCC,ENABLE);       
        GPIO_InitStructure.GPIO_Pin=frame_PIN;  //选择你要设置的IO口
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;         //设置浮空输入
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;          //设置传输速率
        GPIO_Init(frame_PORT,&GPIO_InitStructure);            /* 初始化GPIO */
}


最后,在main.c函数里面进行情况选择


只是为了熟悉传感器,使用函数写的很简陋


int main()
{
        SysTick_Init(72);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
        LED_Init();
        USART1_Init(115200);
        frame_INIT();
        while(1)
        {


        if(GPIO_ReadInputDataBit(frame_PORT,frame_PIN)==1)  
                {
                         LED1=0;                                                        
                         LED2=1;
                   printf("有火焰!rn");
                }
                else if(GPIO_ReadInputDataBit(frame_PORT,frame_PIN)==0)  
                {
                         LED2=0;                                                  
                         LED1=1;                                                        
                         printf("没有火焰人!rn");
                }
        }
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分