火焰传感器详解(STM32)

目录

一、介绍

二、传感器原理

1.原理图

2.引脚描述

三、程序设计

main.c文件

IR.h文件

IR.c文件

四、实验效果 

五、资料获取

项目分享


一、介绍

        火焰传感器是一种常用于检测火焰或特定波长(760nm-1100nm)红外光的传感器。探测角度60°左右,对火焰光谱特别灵敏。灵敏度可调(图中蓝色的电位器调节)。对火焰的探测距离与灵敏度和火焰强度有关,一般在1m以内。有较强的适用性,适用于工业自动化、安全监控、消防预警、机器人技术等领域。

以下是火焰传感器的参数:

工作电压

3.3~5V

阈值调节

电位器调节

尺寸

14mm×32mm

输出方式

数字量(AO)或者模拟量(DO

检测波长

760~1100nm

哔哩哔哩视频:

火焰传感器详解(STM32)

(资料分享见文末) 

二、传感器原理

1.原理图

2.引脚描述:

引脚名称

描述

VCC

供给电压3~5V

GND

地线

DO

开关信号

AO

模拟信号

使用模块在环境火焰光谱或者光源达不到设定阈值时,D0口输出高电平,当外界环境火焰光谱或者光源超过设定阈值时,模块D0输出低电平。

三、程序设计

1.使用STM32F103C8T6读取火焰传感器采集的数据,通过串口发送至电脑

2.将读取得到的光照数据同时在OLED上显示

火焰传感器AO

PA0

火焰传感器DO

PA1

OLED_SCL

PB11

OLED_SDA

PB10

串口

串口1

main.c文件

#include "stm32f10x.h"
#include "led.h"
#include "usart.h"
#include "delay.h"
#include "oled.h"
#include "IR.h"
#include "adcx.h"

/*****************辰哥单片机设计******************
											STM32
 * 项目			:	火焰传感器实验                     
 * 版本			: V1.0
 * 日期			: 2024.8.10
 * MCU			:	STM32F103C8T6
 * 接口			:	参看IR.h							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥 

**********************BEGIN***********************/

u16 fire;

int main(void)
{ 
	
  SystemInit();//配置系统时钟为72M	
	delay_init(72);
	LED_Init();
	LED_On();
	IR_Init();
	USART1_Config();//串口初始化
	
	OLED_Init();
	printf("Start \n");
	delay_ms(1000);
	
	OLED_Clear();
	//显示“火焰强度:”
	OLED_ShowChinese(0,0,0,16,1);
	OLED_ShowChinese(16,0,1,16,1);
	OLED_ShowChinese(32,0,2,16,1);
	OLED_ShowChinese(48,0,3,16,1);
	OLED_ShowChar(64,0,':',16,1);
	
	

  while (1)
  {
		LED_Toggle();
		fire = IR_FireData();
		printf("火焰强度: %d\r\n",fire);
		OLED_ShowNum(80,0,fire,4,16,1);
		
		if(fire)
		{
			OLED_ShowChinese(48,32,6,16,1);	//火
			OLED_ShowChinese(60,32,7,16,1);	//灾
		}
		else
		{
			OLED_ShowChinese(48,32,4,16,1);	//正
			OLED_ShowChinese(60,32,5,16,1);	//常
		}

		delay_ms(200);
  }
}

IR.h文件

#ifndef __LDR_H
#define	__LDR_H
#include "stm32f10x.h"
#include "adcx.h"
#include "delay.h"
#include "math.h"

/*****************辰哥单片机设计******************
											STM32
 * 文件			:	火焰传感器h文件                   
 * 版本			: V1.0
 * 日期			: 2024.8.10
 * MCU			:	STM32F103C8T6
 * 接口			:	见代码							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥

**********************BEGIN***********************/

#define IR_READ_TIMES	10  //火焰传感器ADC循环读取次数

//模式选择	
//模拟AO:	1
//数字DO:	0
#define	MODE 	0

/***************根据自己需求更改****************/
// LDR GPIO宏定义
#if MODE
#define		IR_AO_GPIO_CLK								RCC_APB2Periph_GPIOA
#define 	IR_AO_GPIO_PORT								GPIOA
#define 	IR_AO_GPIO_PIN								GPIO_Pin_0
#define   ADC_CHANNEL               		ADC_Channel_0	// ADC 通道宏定义

#else
#define		IR_DO_GPIO_CLK								RCC_APB2Periph_GPIOA
#define 	IR_DO_GPIO_PORT								GPIOA
#define 	IR_DO_GPIO_PIN								GPIO_Pin_1			

#endif
/*********************END**********************/


void IR_Init(void);
uint16_t IR_FireData(void);

#endif /* __ADC_H */

IR.c文件

#include "IR.h"


/*****************辰哥单片机设计******************
											STM32
 * 文件			:	火焰传感器c文件                   
 * 版本			: V1.0
 * 日期			: 2024.8.10
 * MCU			:	STM32F103C8T6
 * 接口			:	见代码							
 * BILIBILI	:	辰哥单片机设计
 * CSDN			:	辰哥单片机设计
 * 作者			:	辰哥

**********************BEGIN***********************/

void IR_Init(void)
{
	#if MODE
	{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd (IR_AO_GPIO_CLK, ENABLE );	// 打开 ADC IO端口时钟
		GPIO_InitStructure.GPIO_Pin = IR_AO_GPIO_PIN;					// 配置 ADC IO 引脚模式
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		// 设置为模拟输入
		
		GPIO_Init(IR_AO_GPIO_PORT, &GPIO_InitStructure);				// 初始化 ADC IO

		ADCx_Init();
	}
	#else
	{
		GPIO_InitTypeDef GPIO_InitStructure;
		
		RCC_APB2PeriphClockCmd (IR_DO_GPIO_CLK, ENABLE );	// 打开连接 传感器DO 的单片机引脚端口时钟
		GPIO_InitStructure.GPIO_Pin = IR_DO_GPIO_PIN;			// 配置连接 传感器DO 的单片机引脚模式
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;			// 设置为上拉输入
		
		GPIO_Init(IR_DO_GPIO_PORT, &GPIO_InitStructure);				// 初始化 
		
	}
	#endif
	
}

#if MODE
uint16_t IR_ADC_Read(void)
{
	//设置指定ADC的规则组通道,采样时间
	return ADC_GetValue(ADC_CHANNEL, ADC_SampleTime_55Cycles5);
}
#endif

uint16_t IR_FireData(void)
{
	
	#if MODE
	uint32_t  tempData = 0;
	for (uint8_t i = 0; i < IR_READ_TIMES; i++)
	{
		tempData += IR_ADC_Read();
		delay_ms(5);
	}

	tempData /= IR_READ_TIMES;
	return 4095 - (uint16_t)tempData;
	
	#else
	uint16_t tempData;
	tempData = !GPIO_ReadInputDataBit(IR_DO_GPIO_PORT, IR_DO_GPIO_PIN);
	return tempData;
	#endif
}

四、实验效果 

五、资料获取

项目分享

### 回答1: 基于STM32火焰传感器原理图,我会分为三个部分进行回答。 首先,STM32是一款集成了ARM Cortex-M内核的微控制器。它具有良好的性能和丰富的外设接口,适合用于各种传感器的应用。 其次,火焰传感器是一种用于检测火焰的传感器。它能够感知到火焰电离产生的电离子,从而判断是否存在火焰。火焰传感器通常由感光元件、模拟信号处理电路和数字信号处理电路等部分组成。 在STM32火焰传感器原理图中,可能会包含以下主要部件。首先是火焰传感器感光元件,它能够接收到火焰产生的光信号,并转换为电信号。其次是模拟信号处理电路,用于将感光元件输出的电信号放大和滤波,以便对信号进行后续的处理。再次是AD转换电路,用于将模拟信号转换为数字信号,以供STM32微控制器进行数字信号处理。最后是STM32微控制器,它可以通过内置的模拟输入引脚接收数字信号,并结合程序进行处理和判断。当检测到火焰时,STM32可以输出相关信号,如蜂鸣器报警或通过通信接口发送消息。 综上所述,基于STM32火焰传感器原理图可以实现对火焰的检测和处理。通过合理的电路设计和程序编写,可以实现对火焰的精准检测以及相关应用的实现,如火灾报警系统等。 ### 回答2: 基于STM32火焰传感器原理图的设计可以实现火焰的检测功能。该原理图主要涉及以下几个模块的设计。 首先是火焰传感器模块,该模块通过火焰传感器接收到的光信号来判断周围是否有火焰。传感器通常采用光敏电阻或红外线传感器等技术,能够检测到火焰发射的辐射光。当检测到火焰时,传感器会输出一个电压信号。 其次是模拟信号处理模块,该模块用来对传感器输出的电压信号进行放大、滤波和采样等处理。这样可以提高信号的准确性和稳定性,使其适合于后续数字信号处理。 然后是模数转换模块(ADC),该模块将模拟电压信号转换为数字信号,以便于处理器进行数字信号处理。ADC采样的位数越高,转换精度越高,能够更准确地检测到火焰的存在。 最后是STM32微控制器,该控制器接收ADC模块转换得到的数字信号,并进行相应的处理。根据预设的阈值判断火焰是否存在,可以通过控制输出引脚触发报警装置或者进行其他操作。 总体而言,基于STM32火焰传感器原理图的设计实现了对火焰的检测功能,并能够通过控制器进行相应的处理和操作。这样的设计在火灾预防等领域具有重要的应用价值。 ### 回答3: STM32火焰传感器原理图是一种使用STM32微控制器和火焰传感器构建的电路图。该原理图的目的是实时检测周围环境中的火焰,并采取相应的措施来保护设备或人员的安全。 在该原理图中,STM32微控制器与火焰传感器通过GPIO引脚相连接。火焰传感器是一种能够检测光源和火焰的传感器。它使用光敏电阻或光敏二极管来感知周围环境中的火焰光源。当探测到火焰存在时,火焰传感器会产生一个信号,并将其发送到STM32微控制器。 STM32微控制器接收到火焰传感器的信号后,会相应地执行预设的程序。比如,它可以触发警报系统,以提醒人们火灾的发生,或者自动触发灭火系统以控制火焰的蔓延。同时,它也可以将火焰传感器检测到的数据存储到存储器中,以供后续分析和报告。 为了确保系统的稳定性和可靠性,原理图还可能包括一些其他的组件,如电源管理电路、信号放大器、采样电路和保护电路等。这些组件可以帮助确保火焰传感器的精确度和灵敏度,并提供稳定的电源和保护功能。 总之,STM32火焰传感器原理图是基于STM32微控制器和火焰传感器构建的电路图,用于实时检测和应对火灾威胁。它可以提供可靠的火灾监测和保护,并在检测到火焰时采取适当的措施保护设备和人员的安全。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值