[아두이노] GAS Sensor

IOT/아두이노|2019. 3. 2. 09:00

[아두이노] GAS Sensor



이제 다시 쉬운 주제로 Gas Sensor를 다루는 것을 배워 보도록 하겠습니다. 가상시뮬레이터에서 GAS Sensor는 좀 회로도 연결해야하는 핀이 많아서 불편할 수 있을꺼에요. 만약 실제로 MQ-2 같은 센서를 사용하면 핀 연결이 쉬울 수 있는데 가상시뮬레이터에서 실험해야하기 때문에 약간은 불편함을 감수해야 할 듯요. 암튼 회로도 구성만 좀 어려울뿐 나머지는 코딩은 쉬우니깐 간단히 원리만 이해하시고 넘어가시면 됩니다.

1. GAS Sensor



어느방향이든 상관없이 한쪽 방향이 Vcc이면 반대편 방향이 Gnd 쪽으로 연결하고 한개만 GAS 측정값을 출력하는 핀으로 사용하면 됩니다. 대충 실험에서는 그림에서 볼때 하단을 Vcc로 3핀을 전부 열결했으며 상단 왼쪽핀 저항을 붙여서 Gnd로 연결하고 가운데는 Gnd 연결 오른쪽을 출력핀으로 사용하였습니다. 햇갈리시면 회로도 구성을 살펴보시면 됩니다.


실제 MQ-2 모델을 구입해서 많이 사용하는데 위 그림을 자세히 살펴보면 Gnd, DO, AO, Vcc 핀으로 구성되어 있습니다. 출력핀이 2개인데 디지털 출력이나 아날로그 출력이냐로 구분되는데 디지털이든 아날로그든 하나를 선택하고 나머지 Vcc, Gnd를 사용하여 총 3핀만 아두이노우노에 연결해서 실험하시면 됩니다.

하지만 가상시뮬레이터에서는 총 6핀으로 구성되고 핀 연결을 어쩔 수 없이 복잡하지만 회로도를 만들어야 겠죠.

2. 회로도 구성


  • 준비물 : GAS Sensor, 저항 1K옴 1개, 아두이노우노, 뻥판
  • 내용 : 간단히 GAS 측정하여 IDE 시리얼 모니터로 측정된 값을 출력하도록 설계


회로도를 보면 간단합니다. 회로도에서 위아래가 반대로 연결해도 됩니다. 참가로 가운데 핀은 고정이고요 사이드 핀은 저항을 세번째로 옮기고 A0핀을 입력받는 핀을 GAS Sensor 첫번째로 핀으로 연결해도 됩니다. 쉽게 가운데 핀은 고정이고 위아래는 한쪽 방향으로 Vcc, Gnd로 나뉘고 양쪽 사이드 핀은 서로 바꿀 수 있다는 것만 알아 두시면 됩니다.

그리고 참고하셔야 할 것은 GAS Sensor에 연결된 저항r값에 따라서 측정되는 값이 달라집니다. 한번 나중에 시뮬레이터를 돌릴때 저항값을 바꿔 보세요.

3. 코딩


  • 사용함수 : Serial.begin(), Serial.println(), analogRead()
  • 내용 : GAS Sensor에서 측정된 값을 아두이노 IDE의 시리얼 모니터로 간단히 출력하자.

복습

  • Serial.begin(9600) : 시리얼 통신 시작
  • Serial.println(출력값) : 출력값을 시리얼 모니터로 출력
  • analogRead(아날로그핀) : 아날로그 값을 읽음

설계

  1. GAS Sensor의 값을 읽자.
  2. 아두이노 IDE 시리얼모니터로 GAS 값 출력한다.

코딩을 전체적으로 하면

void setup() {
  Serial.begin(9600);
}

void loop() {  
  Serial.println(analogRead(A0));
  delay(1000);
}

4. LCD16x2로 GAS Sensor 값을 출력해보자.



지난 시간에 다뤘던 LCD16x2로 출력을 한다면 어떻게 해야 할까요. 지난 포스팅한 참고자료에 보시면 됩니다. 여기서 필요한 것은 지난 코딩 소스에서 출력값을 analogRead(A0)만 삽입하면 그냥 간단히 해결 됩니다. 원래는 변수를 선언하고 변수에 저장된 값을 출력해야 하는데 정석이지만 최대한 코딩로직을 출이고 원리만 전달하는 목적으로 표현한 점을 이해해 주세요.

회로도 보면


LCD16x2 회로도와 오늘 포스팅한 GAS Sensor 회로도를 하나로 결합한 형태입니다.

코딩도 합치면

#include <LiquidCrystal.h>

//LiquidCrystal(rs, enable, d4, d5, d6, d7) 
LiquidCrystal lcd(3, 4, 9, 10, 11, 12);

void setup()
{
  lcd.begin(16,2);
  lcd.setCursor(0, 0);
  lcd.print("Hello World");
  delay(1000);
  lcd.clear();
}
void loop() {
  lcd.setCursor(0, 1);
  lcd.print("Sensor : ");
  lcd.setCursor(10, 1);
  lcd.print(analogRead(A0));   
  delay(20);      
  lcd.print("            ");   
}

간단히 이부분에 analogRead(A0) 함수만 추가되었네요. " "로 공백문자를 출력시킴으로 지우는 효과를 부여 했습니다. 가상시뮬레이터에서 lcd.clear()함수를 사용할때 좀 문제가 있어서 출력한 라인을 공백문자로 덮여서 지우는 효과를 대신했습니다.

  lcd.print(analogRead(A0));
  delay(20); 
  lcd.print("            ");  

참 쉽죠.

5. 결과


실험 영상은 GAS Sensor 실험과정의 내용만 담았습니다. 그리고 LCD16x2로 출력하는 실험결과를 마지막에 시뮬레이터 결과만을 영상에 포함 시켰습니다.


마무리


GAS Sensor는 거실이나 부엌 천장에 보면 가정집마다 다 붙어 있는 걸 확인 확인 할 수 있을꺼에요. 가스 검침원이 오면 측정기로 GAS가 새는지 확인하는 경우도 경험 하셨을꺼에요. 일상에서 자주 사용되는 부품이지요. 단순히 수치로 시리얼모니터로 출력을 하고 복습차원으로 LCD16x2로 출력 실험을 했습니다.

여기서 측정된 수치값을 기준을 정하여 위험수치가 되면 경보기가 울리게 한번 설계해 보세요. 피에조부저를 연결 하시면 경보기를 쉽게 만들 수 있겠죠.

[아두이노] 피에조부저 제어 포스팅의 내용을 오늘 배운 회로도에 추가하여 경보기를 만들어 보세요.


댓글()