猛禽洛的程式筆記庫

[MicroPython] 在Raspberry PI PICO上使用MQ7 一氧化碳感測器

感測器規格:

用於家庭、環境的一氧化碳探測裝置。適宜於一氧化碳、煤氣等的探測。

  1. 加熱電壓:5±0.2V(AC·DC)
  2. 工作電流:140mA
  3. 回路電壓:10V(最大DC 15V)
  4. 負載電阻:10K(可調)
  5. 檢測濃度範圍:10-1000ppm
  6. 清潔空氣中電壓:≤1.5V
  7. 靈敏度:≥3%
  8. 回應時間:≤1S(預熱3-5分鐘)
  9. 回復時間:≤30S
  10. 元件功耗:≤0.7W
  11. 工作溫度:-10~50℃(標稱溫度20℃)
  12. 工作濕度:95(標稱濕度65)
  13. 使用壽命:5年
  14. 尺寸大小:35mm×22mm×18mm
  15. 重量大小:6g

此感測器使用方式很簡單,電源使用5v,然後讀取AO腳位的ADC值即可,或是讀取DO腳位的狀態判過是否超標(使用上面的可變電阻調整閥值),但如果有讀取ADC值,那就沒必要使用DO了。

Raspberry PI PICOMQ7
ADC (2)AO
GNDGND
5VVCC

以下是讀取MQ7 ADC值的方法,並轉為ppm。

注意:ppm僅供參考,要準確還是需要校正,並不容易。

import math
from machine import Timer, ADC

# MQ7感測器
mq_adc = ADC(2)  # 設定ADC腳位
conversion_factor = 3.3 / 65535  # 電壓比
mq_timer = Timer()
# 是否進入測量氣體
tag_measure_mq = False


# MQ7氣體感測器計算
def measure_mq_sensor():
    # 參考https://github.com/swatish17/MQ7-Library/tree/master
    # MQ7 PPM 預設換算,未經過校正
    coefficient_a = 19.32 #校正參數1
    coefficient_b = -0.64 #校正參數2
    v_in = 5.0 #感測器輸入電壓

    adc_value = mq_adc.read_u16()
    v_current = adc_value * conversion_factor

    ratio = (v_in - v_current) / v_current
    ppm = coefficient_a * math.pow(ratio, coefficient_b)

    print("MQ7 一氧化碳濃度= " + str(ppm) + " ppm")


# 開始更新螢幕資訊
def start_measure_mq(t):
    global tag_measure_mq
    tag_measure_mq = True


def main():
    global tag_measure_mq

    # 每秒量測一次
    mq_timer.init(mode=Timer.PERIODIC, period=1000, callback=start_measure_mq)

    # 不斷檢查Tag是否被觸發,觸發後才去執行耗時處理,避免程式卡死
    while True:
        if tag_measure_mq:
            measure_mq_sensor()
            tag_measure_mq = False


# 開始執行
main()

輸出結果:

MQ7 一氧化碳濃度= 9.511034 ppm
MQ7 一氧化碳濃度= 9.479193 ppm
MQ7 一氧化碳濃度= 9.500527 ppm
MQ7 一氧化碳濃度= 9.511034 ppm

-END-

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *