当前位置: 首页 > article >正文

【STM32】使用电打火器测试火焰传感器,去掉传感器LED依然亮

项目需求:火焰传感器识别到火焰后,LED灯闪烁,然后熄灭。

现象描述:不需要火焰传感器,当使用电打火器时电路板LED灯也会闪烁。(详情看底部视频)

fire.h

#ifndef __FIRE_H
#define __FIRE_H 	
#include "sys.h"


#define FIRE_PORT	GPIOG	//定义IO接口
#define FIRE	GPIO_Pin_4	
void FIRE_Init(void);

u8 FIRE_Check (void);

#endif

fire.c

#include "fire.h"


#define time 5000000
//DO默认输出高电平,检测到火焰输出低电平
void FIRE_Init(void)
{    	 
  GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG,ENABLE);  
  //GPIOG4初始化设置
	GPIO_InitStructure.GPIO_Pin = FIRE;//FIRE对应IO口
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    
	GPIO_Init(FIRE_PORT, &GPIO_InitStructure);
}

u8 FIRE_Check (void){
	//发现火焰输出低电平
   return GPIO_ReadInputDataBit(FIRE_PORT,FIRE)==0;
}

main.c

#include "stm32f10x.h"
#include "led.h"
#include "fire.h"
#include "delay.h"
int main (void){//主程序

	RCC_Configuration(); //系统时钟初始化 
	LED_Init();
	FIRE_Init();
	while(1){
        //发现火焰LED闪烁
		if(FIRE_Check())
		{			
			LED_RED_ON();
			LED_GREEN_ON();
			delay_s(2); 
			LED_RED_OFF();
			LED_GREEN_OFF();  			
		}
    }
}

在测试火焰传感器时,使用的电打火器,最开始一切都正常。

当火焰传感器的D0线松动掉落时,发现每次打火时,LED灯依然闪烁,

继续把火焰传感器的VCC和GND都拔掉,再次打火LED依然亮,

检查电路板元器件有没有关于光敏电阻或相关的元器件有影响到LED灯的,结果是没有

最终原因很简单,就是电打火器打火时,杜邦线用于传输数字信号或对电磁干扰敏感的微弱信号,射频干扰可能会叠加在信号上,导致信号失真。当干扰强度较大时,会使接收端对信号的判断出现错误,将原本的高电平误判为低电平,或者反之。

解决办法:增加一个类似按键防抖动的延时函数,延时20微妙,再次判断引脚状态。

		if(FIRE_Check())
		{
			delay_ms(20);
			if(FIRE_Check()){
				LED_RED_ON();
				LED_GREEN_ON();
				delay_s(2); 
				LED_RED_OFF();
				LED_GREEN_OFF();  
			
			}
		}

电打火器测试火焰传感器,去掉火焰传感器,LED依然亮

去掉杜邦线的后,使用电打火器就不亮。说明点打火器影响的是杜邦线。


http://www.kler.cn/a/561335.html

相关文章:

  • 使用torch.compile进行CPU优化
  • .NET Core MVC IHttpActionResult 设置Headers
  • IDEA-插件开发踩坑记录-第五坑-没有飞机场导致无法访问GITHUB导致的讨厌问题
  • 【深度学习神经网络学习笔记(一)】深度学习介绍
  • 在vite上使用tailwindcss详细教程(不报错)
  • [C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
  • Go语言--语法基础3--下载安装--Linux基础操作命令
  • 图神经网络:拓扑数据分析的新时代
  • DeepSeek AI智能运营:重构企业效率的范式革命
  • kafka数据拉取和发送
  • BUU41 [GYCTF2020]FlaskApp1【SSTI】
  • TSMaster【第十四篇:弹指神通——自动化测试框架】
  • [ Android实战 ] selinux “域继承“的方案(通过属性机制实现)
  • 突破性能极限:DeepSeek开源FlashMLA解码内核技术解析
  • 网卡与网口全解析:从基础到Linux高级管理
  • 1分钟用DeepSeek编写一个PDF转Word软件
  • HAProxy- https、四层负载实现与 负载均衡关键技术
  • 建立稳定分析模式的模式语言03
  • C语言--文件操作
  • django:更新页面但未生效