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

【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依然亮

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

相关文章:

  • 粉色和紫色渐变壁纸怎么设计?
  • StepAudio:语音大模型
  • IDEA配置JSP环境
  • 汽车开放系统架构(AUTOSAR)中运行时环境(RTE)生成过程剖析
  • salesforce 实现自定义多选列表
  • 【conda环境泄露】所有环境共享了一个包?
  • 拨开顺序表的层层迷雾
  • C++ 编程基础(8)模版 | 8.4、类型萃取
  • Pytorch实现之浑浊水下图像增强
  • 10. docker nginx官方镜像使用方法
  • Mybatis的一级、二级缓存
  • win32汇编环境,加速键的应用示例
  • C++模板与STL七日斩:从工业编程到高效数据管理(工业项目)
  • 纷析云:赋能企业财务数字化转型的开源解决方案
  • React 源码揭秘 | 更新队列
  • 28.C++多态1 (多态的概念与简单使用,虚函数,final,override)
  • linux--多进程开发(5)--进程
  • C/C++ | 每日一练 (4)
  • Linux:基础IO
  • 使用 pytest-mock 进行 Python 高级单元测试与模拟
  • 南非总统承压赴美会晤特朗普,为开放星链或作种族政策妥协
  • 再现“黄肠题凑”与汉代生活,北京大堡台遗址博物馆新馆开馆
  • 商务部新闻发言人就美国企图全球禁用中国先进计算芯片发表谈话
  • 林园:茅台一直是稀缺资源,股东比较有信仰,依旧看好白酒市场
  • 音著协宣布胜诉,虎牙公司终审被判侵权
  • 澎湃思想周报|《混沌少年时》与青少年社媒禁令;自雇陷阱