아두이노 나노 MQ3 알코올 센서
이 튜토리얼은 Arduino Nano와 MQ3 알코올 센서를 연결하여 환경의 에탄올 및 알코올 증기 수준을 모니터링하는 방법을 시연합니다. MQ3 센서는 DIY 음주 측정기, 알코올 감지 경보, 공기 품질 모니터링 프로젝트에 널리 사용됩니다.
다음을 배울 수 있습니다:
- MQ3 알코올 센서 모듈을 Arduino Nano 보드에 배선하기
- 알코올 농도 값을 측정하고 해석하는 Arduino Nano 코드 작성하기

필요한 하드웨어
| 1 | × | 아두이노 나노 | 쿠팡 | 아마존 | |
| 1 | × | USB A to Mini-B USB 케이블 | 쿠팡 | 아마존 | |
| 1 | × | MQ3 Alcohol Sensor | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 전원 분배기 | 쿠팡 | 아마존 |
MQ3 알코올 센서에 대하여
화학저항기(Chemiresistor)로 작동하는 MQ3는 감지 재료의 저항 변화를 통해 알코올 존재를 식별하는 금속 산화물 반도체(MOS) 장치입니다. 이 모듈은 다양한 농도 범위에서 에탄올 증기를 높은 민감도로 감지하는 데 뛰어납니다.
센서의 핵심은 산화알루미늄 세라믹 베이스 위에 증착된 이산화주석(SnO2) 층입니다. 가열이 SnO2를 활성화하여 알코올 분자에 반응하게 만듭니다. 스테인리스강 보호 망(방폭 스크린)이 센서를 감싸 가열 요소를 보호하면서 기체 분자가 감지 챔버를 통과할 수 있게 합니다.
이 센서는 음주 측정기 제작, 음주 운전 감지 장비, 알코올 경보 시스템, 환경 알코올 모니터링 응용 분야에 널리 사용됩니다.
기술 사양
- 동작 전압: 5V DC
- 부하 저항: 200KΩ
- 히터 저항: 33Ω ± 5%
- 가열 소비량: < 800mW
- 감지 저항: 1MΩ – 8MΩ
- 감지 범위: 25–500 ppm(백만분의 일)
- 예열 시간: 처음 사용 시 24~48시간
ppm 이해하기: ppm은 백만분의 일을 의미하며, 목표 가스 분자 대 총 분자의 비율을 나타냅니다. 실용적으로, 500 ppm 판독값은 100만 개의 총 가스 분자 중 500개가 알코올 분자임을 나타내며, 나머지 999,500개는 다른 대기 가스입니다.
핀아웃
MQ3 센서 모듈에는 4개의 연결 핀이 있습니다:
- VCC 핀: 이 연결을 통해 +5V 전원을 공급합니다.
- GND 핀: 접지(0V)에 연결합니다.
- DO 핀: 임계값 이상의 알코올을 감지하면 LOW, 미만이면 HIGH를 출력하는 디지털 출력. 온보드 가변저항으로 임계값 조정이 가능합니다.
- AO 핀: 알코올 수준에 따라 변하는 전압을 제공하는 아날로그 출력. 알코올이 많을수록 전압이 높아집니다.

두 개의 표시 LED가 시각적 피드백을 제공합니다:
- PWR-LED: 모듈에 전원이 공급될 때 점등됩니다.
- DO-LED: 디지털 출력 상태를 반영합니다 — 알코올 감지 중 점등되고 그 외에는 꺼집니다.
작동 원리
MQ3의 감지 메커니즘은 이산화주석(SnO2) 반도체 요소의 저항 변화에 의존합니다:
깨끗한 공기 조건: SnO2에 열이 가해지면 산소가 표면에 결합하여 전자를 포획하고 공핍층을 형성합니다. 이 전자 트랩은 전기 전도성을 제한하는 장벽을 만들어 저항을 높게 유지합니다.
알코올 노출: 알코올 분자가 표면 산소와 상호 작용하여 산소 결합을 끊고 포획된 전자를 이산화주석 구조로 다시 방출합니다. 이로 인해 전도성이 크게 향상됩니다 — 알코올 농도가 높을수록 전기 저항이 낮아집니다.
이 센서에서 두 가지 출력 모드를 사용할 수 있습니다:
디지털 출력(DO 핀):
- 조절 가능한 가변저항이 감지 임계값을 설정합니다.
- 감지된 알코올이 임계값을 초과하면 DO는 LOW를 출력하고 LED 표시등이 점등됩니다.
- 알코올이 임계값 미만이면 DO는 HIGH를 유지하고 LED는 꺼집니다.
아날로그 출력(AO 핀):
- 전압 출력은 감지된 알코올 수준과 직접 상관됩니다.
- 알코올 증기 많음 = 전압 판독값 높음.
- 알코올 증기 적음 = 전압 판독값 낮음.
- 참고: 가변저항 조정은 디지털 출력에만 영향을 미치며 아날로그 신호에는 영향을 주지 않습니다.
예열 및 보정
예열 요구 사항
MQ3에서 정확한 측정값을 얻으려면 작동 전에 적절한 가열이 필요합니다:
- 처음 사용 또는 장기 보관(30일 이상): 센서 안정화 및 신뢰할 수 있는 측정을 위해 24~48시간의 연속 가열이 필요합니다.
- 일반 사용: 5~10분의 짧은 예열로 충분합니다. 초기 판독값이 높게 나타날 수 있지만 빠르게 안정됩니다.
센서를 예열하려면 VCC와 GND를 5V 전원 공급 장치 또는 Arduino Nano의 전원 핀에 연결하고 예열 기간 동안 연결 상태를 유지합니다.
임계값 찾기
MQ3와 같은 히터 기반 센서는 장기 보관 시 보정이 변동될 수 있습니다. 음주 측정기 응용 프로그램을 위한 정확한 임계값을 다음 절차로 설정합니다:
- 깨끗한 공기 기준값 설정: 신선한 공기에서 센서를 작동시키고 아날로그 출력을 기록합니다(100~150 근처 값 예상).
- 알코올 증기 도입: 이소프로필 알코올이나 손 세정제를 센서 근처에(센서에 직접 닿지 않도록) 놓고 증기만 닿게 합니다. 상승된 판독값을 기록합니다(증기 밀도에 따라 일반적으로 400~900).
- 감지 구역 정의: 기록된 값을 사용하여 범위를 설정합니다:
- 음주 없음: 기준값 + 20 미만(예: < 120)
- 적당한 음주: 중간 범위 값(예: 120~400)
- 높은 중독: 중간 임계값 초과 판독값(예: > 400)
중요: 센서 특성은 장치 및 환경마다 다릅니다. 배포 전에 항상 특정 하드웨어로 보정을 수행하세요.
디지털 임계값 설정
온보드 트림 가변저항을 통해 DO 핀의 트리거 포인트를 구성합니다:
- 알코올 증기를 센서 근처에 놓습니다.
- LED가 활성화될 때까지 가변저항을 시계 방향으로 돌립니다.
- LED가 막 비활성화될 때까지 천천히 반시계 방향으로 돌립니다.
- 트리거 임계값이 올바르게 보정되었습니다.
배선도
MQ3 모듈에서 두 출력 핀을 모두 사용할 수 있습니다. 프로젝트 요구 사항에 따라 하나 또는 둘 다 동시에 사용합니다.
| MQ3 알코올 센서 | Arduino Nano |
|---|---|
| VCC | 5V |
| GND | GND |
| DO | 핀 2 |
| AO | A0 |

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
Arduino Nano와 기타 부품에 전원을 공급하는 가장 효과적인 방법은 다음 링크를 참조하세요: 아두이노 나노 전원 공급 방법.
Arduino Nano 코드 - 디지털 출력 읽기
빠른 단계
- 위 코드를 Arduino IDE에서 엽니다
- Upload 버튼을 통해 Arduino Nano에 업로드합니다
- 알코올 증기 소스를 MQ3 센서 근처에 놓습니다(손 세정제나 솜에 이소프로필 알코올을 적신 것이 잘 작동합니다)
- 시리얼 모니터에서 출력을 모니터링합니다
참고: 판독값이 실제 조건과 일치하지 않는 경우(오탐 또는 미탐), 모듈의 가변저항을 사용하여 감지 임계값을 미세 조정합니다. 시계 방향 회전은 민감도를 높이고, 반시계 방향은 낮춥니다. 감지 정확도가 향상될 때까지 조정합니다.
Arduino Nano 코드 - 아날로그 출력 읽기
빠른 단계
- 코드를 Arduino IDE에 불러옵니다
- Upload 버튼을 통해 업로드합니다
- 센서에 알코올 증기를 도입합니다(손 세정제 또는 이소프로필 알코올)
- 시리얼 모니터에서 판독값을 확인합니다
디지털 또는 아날로그 출력 중 하나를 사용하여 임계값 기반 결정을 구현하여 경보를 활성화하거나, 경고 표시등을 제어하거나, 음주 측정기 기능을 위한 데이터를 기록할 수 있습니다.
Arduino Nano 코드 - 임계값 감지가 있는 음주 측정기
이 예제는 보정된 임계값을 통해 아날로그 출력 해석을 시연하여 중독 수준을 추정합니다.
빠른 단계
- 중요: 먼저 아날로그 판독 예제를 사용하여 센서를 보정하고 환경에 적합한 임계값을 결정합니다.
- 코드의 SOBER_THRESHOLD 및 DRUNK_THRESHOLD 상수를 보정된 값으로 업데이트합니다.
- 수정된 코드를 Arduino Nano에 불러와서 업로드합니다.
- 알코올 증기(이소프로필 알코올 또는 손 세정제 증기)로 테스트합니다.
- 시리얼 모니터에서 상태 메시지를 확인합니다.
참고: 이것은 교육 목적으로만 사용합니다. 법적인 음주 측정기로 사용하거나 운전 적합성을 판단하는 데 사용하지 마세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.