본문 바로가기
Embedded System/센서&제어

MQ 반도체식 가스센서 분석

by MachineJW 2023. 10. 10.

MQ 화학센서 / MQ 센서가 실장된 센서모듈

Arduino 플랫폼에서 가스센서로 유명한 MQ 시리즈는 반도체식 가스센서이다.

반도체식 가스센서의 특징을 되짚어 보자면 다음으로 정리 할 수 있다.

  • 빠른 응답 속도
  • 작은 크기
  • 높은 안정성
  • 저렴한 가격
  • 표적가스 이외의 다른 가스에도 반응하는 낮은 선택성과 교차 선택성 (단점)
  • 감지 한계인 낮은 가스 농도에 대한 낮은 감도 성능 (단점)

1. 표적가스에 따른 MQ 센서의 분류

MQ 센서는 표적가스에 따라 다양한 시리즈로 분류 된다.

출처: https://robu.in/mq-series-gas-sensor/

2. MQ 센서 구조

※ 센서 모듈이 아니라 센서 자체에 대한 구조를 분석해본다.

출처 : https://lastminuteengineers.com/mq2-gas-senser-arduino-tutorial/

MQ 시리즈 센서 외관은 메쉬로 구성되어 있는데, 센서를 보호하고 입자를 걸러내는 용도이다.

메쉬를 제거하면 저런형태로 되어 있는데, 6개의 선중 H라 표신 된 부분은 히터이고, 나머지 4개 (A,A,B,B)는 신호 전달용으로 사용된다.

3. MQ 센서 회로도 해석

MQ센서 데이터 시트에 명시된 센서간략 회로도

센서 소자에는 극성이 없어, DC/AC 전원을 모두 사용할 수 있다. (그냥 편하게 DC 전원을 일반적으로 사용함)

좀 더 단순화된 회로도 그림을 보면서 해석하자면

단순화한 센서 회로도

※ MQ-2 센서 기준! MQ 시리즈마다 데이터시트에 차이가 있으므로 각각의 데이터시트를 잘 참고하자.

데이터시트 상에서 VC는 센서 감지를 위한 루프 전압이며 24V(직류) 미만으로 사용하라 되어 있다.

그리고 VH는 히터를  위한 전압이며, AC/DC 모두 사용가능(그냥 DC 사용하자)하며 5V를 사용하라고 명시되어 있다. (데이터시트 상에서는 VC는 직류를 사용하고 VH는 직류 교류 모두 사용가능)

단순화된 위의 센서 회로도에서는 5V의 전원을 동일하게 사용하고 있다.

그리고 RL (부하저항) 파라메터는 VRL 출력 감도조정을 위한 저항이라 해석할 수 있겠다.

다시, 저 회로도도 이해가 되지 않는다면 VH를 제거하고 다시보자

아날로그 출력 값은 RS+RL에 의해 결정되게 된다. (또는 저항기의 전압분배/키르히호프 전압의 원리로 정의 할 수 있다. 이 부분이 이해가 잘 되지 않으면 저항의 전압분배 또는 키르히호프 전압 해석을 참고하자)

MQ-2 데이터시트에 따르면 RS는 기본적으로 2K옴에서 최대 20K옴까지 변화한다.

  • RS : 가스감지에 따른 센서의 저항값 (히터에 가스입자가 달라붙어 전기전도도가 변함)
  • RL : 출력전압(아날로그 신호) 조정을 위한 저항값
  • RS+RL 값에 따라서 출력 전압 값(VRL,아날로그 신호)이 달라짐

4. MQ 센서 측정법

MQ센서에 대한 동작원리와 회로해석이 숙지되었다.

이번에는 얻은 아날로그 신호 (VRL, 출력 전압)으로 가스 측정을 어떻게 하는지 알아보도록 하자

(1) 센서의 예열

MQ센서를 사용하기 위해서는 24시간 이상 전원을 공급하여 센서 내부에 있는 수증기를 증발시키고 혹시 존재할 가능성이 있는 가스도 제거해준다.

오랫동안 센서를 사용하지 않았을 경우에도 같은 방식을 통해 센서 내부의 가스를 제거해 주는 것 좋다.

(2) 센서의 측정범위를 확인

MQ센서 데이터시트에는 타겟가스와 측정가능한 범위가 명시되어 있다.

MQ-2 센서는 가연성 가스를 300~10000ppm 까지 측정가능하다.

※ 즉, 300ppm 이하의 가스는 감지를 할 수 없다는 것!

(3) 감도 특성 그래프

MQ 센서는 가스 변화에 따른 해당 센서의 감도 특성 그래프를 제공한다.

감도 특성은 가스센서의 저항비(RS/R0)에 따른 가스 농도를 ppm으로 나타낸다.

여기서 새로운 파라메터가 등장하는데, 바로 R0이다.

R0는 다른 가스가 없고 깨끗한 공기 중에서 측정한 가스 센서의 저항값이다.

여기서 한가지 의문이 드는데

"그래서 깨끗한 공기라는 기준이 뭐냐"라는 것이다.

MQ-4 데이터시트에서 명시된 Ro: 깨끗한 공기 중 CH4 1000ppm에서의 센서 저항.

이는 달리 해석해보면 위의 감도 그래프에서 RS/R0가 1이 되는 지점인데,

가스가 포함되지 않은 완전한 깨끗한 공기일 때 RS/R0의 값이 4.4로 값이 일정하게 유지된다는 것으로도 해석될 수 있다. (실제로 아두이노 라이브러리에서는 이 원리로 ppm을 도출한다.)

즉, 깨끗한 공기의 기준은 타겟 가스가 "완전히" 없는 환경으로 볼 수 있겠다.

하지만 타겟 가스가 완전히 없다는 것은 불가능하다.

그래서 최소한 R0의 값을 도출할 때는 타겟가스의 최소 측정범위 ppm 이하의 환경에서 도출해야만 한다.

위의 그래프를 보면 MQ-4 센서는 200 ppm이상 부터 반응하는 것으로 나오므로, 타겟 가스들이 적어도 200ppm 미만인 환경에서 도출한다.

MQ-4 센서의 최소 RS

또 하나의 방법을 생각해 보았는데, R0는 결국 아무런 가스가 없는 (히터에 의한 전기전도도의 방해가 없는) 상태의 RS를 의미하니깐 RS의 최소 저항값으로 R0를 상수 처리 할 수 있지 않을까 싶기도 하다. (단지 나의 생각일 뿐이다. 잘 못될수도 있으니 참고만 바란다.)

(4) ppm 계산

위의 해당 그래프는 로그 스케일 함수 그래프로써, 감도 특성 그래프의 선이 선형인 것처럼 취급하여

저항비와 농도를 선형적으로 표현 할 수 있는 공식을 도출할 수 있다.

https://www.arduino.cc/reference/en/libraries/mqunifiedsensor/

 

MQUnifiedsensor - Arduino Reference

Reference > Libraries > Mqunifiedsensor MQUnifiedsensor Sensors This library allows you to read the MQ sensors very easily. This library allows an Arduino/Genuino/ESP8266 board to read MQ Sensors (AIr quality meter) references: MQ2, MQ3, MQ4, MQ5, MQ6, MQ7

www.arduino.cc

아두이노 MQU센서 라이브러리에서는 MQ센서의 ppm 도출을 편리하게 할 수 있도록 함수를 제공한다.

지수 회귀 방식으로 가스 농도를 측정하며, setA(),setB() 함수를 통해 관련 상수 값을 처리한다.

(우리가 힘들게 계산을 하며 방정식을 만들 필요가 없다는 것)

setRL()함수를 통해 센서 모듈의 부하저항을 설정할 수 있고 디폴트 값은 10K옴이다.