烟雾传感器 - 从零开始认识各种传感器【第十四期】

1、 什么是烟雾传感器 

烟雾传感器是一种能够探测到环境中是否有烟雾和烟雾浓度的传感器。它通常能够监测空气中的颗粒物或气体,并在检测到异常浓度时触发警报或其他安全措施。它广泛应用于家庭安全系统,商业建筑和工业环境中。它一般可以分为气敏式烟雾传感器、离子式烟雾传感器和光电式烟雾传感器三大类。

2、传感器是如何工作的 

烟雾传感器中的烟雾敏感元件受烟雾(主要是可燃颗粒)其浓度的变化会引起电路中测量值变化,来监测烟雾的浓度。它一般是基于光学感知或离子化感知等技术。

3、常见的烟雾传感器的种类 

烟雾传感器的种类主要有离子式烟雾传感器、光电式烟雾传感器和气敏式烟雾传感器。

3.1 光电式烟雾传感器

光电烟雾报警器内通常是一个光学迷宫,安装有红外发射管和接收管,发射管发出的光线由于沿直线传播的特性。在无烟时红外接收管(light sensor)收不到红外发射管发出的红外光。

当烟尘进入光学迷宫时,通过折射、反射,接收管接收到红外光,智能报警电路判断是否超过阈值,如果超过,发出警报。

光电式烟雾传感器对稍大的烟雾粒子的感应较灵敏,对灰烟、黑烟响应差些。由于闷烧的时候,空气中稍大的烟雾粒子会多一些,因此用光电式烟雾传感器较为适合。

3.2 离子式烟雾传感器

离子式烟雾报警器的工作原理如图所示:
其两个带电的金属板之间有少量放射性物质,使得空气电离,形成带电得离子,在正常状态下,空气中的离子会使传感器内部的电流保持稳定。
然而,当烟雾进入传感器腔室时,烟雾中的微小颗粒吸附了离子,导致电流受到干扰,这个干扰会被传感器检测到,触发警报系统。

离子烟雾传感器对微小的烟雾粒子的感应要灵敏一些,对各种烟能均衡响应,适用于开放性火灾的探测,当发生熊熊大火时,空气中烟雾的微小粒子较多,这时离子式烟雾传感器就比较适合了。

3.3 气敏式烟雾传感器

气敏传感器是一种检测特定气体的传感器(例如对一氧化碳气体的检测、瓦斯气体的检测、煤气的检测),其应用最广泛的是半导体气敏传感器。

我们以一个典型的半导体气敏传感器 MQ-2 为例来看下它的工作原理,MQ2 也称为化学电阻器,它内部的传感元件有一层二氧化锡的涂层。
当二氧化锡被加热时,氧气会被吸附在表面上。这是由于在干净的空气中,二氧化锡中的电子会吸引氧气,氧气与电子结合,阻止了电流流动。

而当空气中存在还原性气体,或者说可燃气体的情况下,由于与还原性气体产生反应,氧分子的浓度降低。导致电子释放到二氧化锡中,使电流自由流过传感器,从而检测到了可燃气体。

3.4 三种烟雾传感器的比较

从对比表格可以看出,气敏式烟雾传感器侧重于燃烧过程中释放的特定气体,适用于特定的工业环境及火灾检测;光电式烟雾传感器使用光源和光敏传感器,对于慢燃烧火灾非常敏感;离子式烟雾传感器能够迅速检测快速燃烧的火灾。

4、烟雾传感器实验演示 

我们来演示使用MCU 读取显示烟雾传感器的数据。实验中使用的是气敏式烟雾传感器。
我们将其放在实验室常用的清洗电路板的溶剂上方,由于溶剂的强挥发性,传感器检测到挥发的溶剂气体,屏幕中的显示数值开始快速上升。

完整代码:

from breakout_colourlcd240x240 import BreakoutColourLCD240x240
from machine import ADC, Pin, Timer, PWM
from utime import sleep
import time, math,array
#------------------------------------------------------------------
width = BreakoutColourLCD240x240.WIDTH
height = BreakoutColourLCD240x240.HEIGHT
display_buffer = bytearray(width * height*2)
display = BreakoutColourLCD240x240(display_buffer)

timer1 = Timer() 

stemp = ADC(2)                       
current_temp = 0                   
#-------------------------------------------------------------------
def display_init():
    
    display.set_pen(0,255,0)
    display.rectangle(58,30,13,160)
    display.circle(64,190,10)
    display.set_pen(255,0,0)
  
    display.text("current", 150, 20, 194, 2)
    display.text("value", 150, 35, 194, 2)
    display.update()
  
    for i in range(6):
        display.set_pen(0,200,0)
        display.pixel_span(80,27 + i*30,10)
        display.text(str(50 - i *10), 100, 20+i*30, 194, 2)
        display.set_pen(0,0,220)
        if i < 5:
            for j in range(4):
                display.pixel_span(80,33 + j*6 + i * 30,5)
        display.update()
    
#---------------------------------------------------------------------
def display_change(temp, color):
    global current_temp
    current_temp = temp
    #print(temp)
    display.set_pen(color[0], color[1], color[2])
    display.rectangle(58,30,13,160)
    display.circle(64,190,10)
    display.set_pen(0,0,150)
    display.rectangle(58,20,13,7+int((50-temp)/2)*6)
    display.set_pen(0,0,0)
    display.rectangle(150,50,90,40)
    display.set_pen(0,255,0)
    display.text(str(temp), 150, 50, 5, 5)
    display.update()
#----------------------------------------------------------------------
def get_temp():
    
    Analogvalue=stemp.read_u16()
    voltage=100*float(Analogvalue)/65535

    return voltage
#----------------------------------------------------------------------
def main():
    
    color = [0,255,0] 
    timer1 = Timer()
    display_init()
    timer1.init(freq=5,mode=Timer.PERIODIC, callback=lambda t:display_change(round(get_temp(),1), color))

    while True:
      sleep(0.1) 
main()
  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值