빛·소리·불꽃 · 난이도 쉬움
GUVA-S12SD 자외선 센서의 출력 전압으로 UV 지수를 어림하고 차단 재료 비교하기
GUVA-S12SD는 240~370nm 자외선에 반응하는 질화갈륨 광다이오드예요. 3.3V 배선과 GP26 코드, 데이터시트의 1 UVI당 26nA와 모듈 증폭으로 본 전압과 UV 지수의 관계, 0.1V당 1이라는 어림의 한계, 시간대·차단 재료·그늘 탐구와 자외선 안전을 정리했어요.
이 센서로 무엇을 잴 수 있나
GUVA-S12SD는 질화갈륨(GaN)으로 만든 자외선 광다이오드예요. 데이터시트(2011년 판)에 적힌 감지 파장은 240~370nm이고, 눈에 보이는 빛에는 거의 반응하지 않아요. 판매되는 모듈은 이 소자의 아주 작은 전류를 연산 증폭기로 키워 전압으로 내보내요. Adafruit 모듈 자료에는 전원 2.7~5.5V, 출력 전압 = 4.3 × 광전류(µA)라고 적혀 있어요.
이 센서로는 햇빛 속 자외선이 시간에 따라 어떻게 바뀌는지, 유리창이나 선글라스, 자외선 차단제를 바른 필름이 자외선을 얼마나 막는지, 나무 그늘과 건물 그늘에 자외선이 얼마나 남는지를 잴 수 있어요. 실내 형광등이나 LED 조명 아래에서는 값이 거의 0이라, 탐구는 대부분 밖에서 해요.
원리
자외선이 소자에 닿으면 빛의 세기에 비례하는 아주 작은 전류(광전류)가 흘러요. 데이터시트의 전형값은 1mW/cm² 세기의 UVA 램프에서 113nA, 자외선 지수(UVI) 1에서 26nA예요. 어두울 때 흐르는 전류는 1nA 이하라 무시할 만해요.
이 두 숫자로 전압과 UV 지수의 관계를 계산해 볼 수 있어요. Adafruit 모듈처럼 1µA를 4.3V로 키운다면, UVI 1의 26nA는 4.3 × 0.026 ≈ 0.11V예요. Adafruit는 더 간단하게 "출력 전압 ÷ 0.1V ≈ UV 지수"를 쓰라고 안내해요. 둘을 비교하면 0.1V로 나누는 어림이 데이터시트 값으로 계산한 것보다 UV 지수를 약 12% 높게 내요. 어느 쪽이든 전형값에서 나온 숫자라, 소자 하나하나의 차이는 담겨 있지 않아요.
UV 지수는 햇빛이 피부를 붉게 만드는 정도로 가중한 자외선 세기를 수평면 기준으로 나타낸 숫자예요. ICNIRP가 정리한 국제 기준은 0~2 낮음, 3~5 보통, 6~7 높음, 8~10 매우 높음, 11 이상 위험(Extreme)이에요. 이 센서가 반응하는 파장의 비율은 그 가중과 똑같지 않아서, 전압에서 바꾼 UV 지수는 햇빛 아래에서만 의미가 있는 어림값이에요. 램프 빛에 UV 지수를 붙이지 않아요.
준비물
- 라즈베리파이 피코와 USB 케이블, 밖에서 기록할 노트북
- GUVA-S12SD 모듈(V+·GND·OUT 3핀), 암-수 점퍼선 3개
- 센서를 수평으로 둘 받침, 검은 테이프(어두운 값 재기용)
- 탐구용: 유리판, 식품 포장용 랩, OHP 필름과 자외선 차단제, 선글라스, 양산이나 천
배선
브레드보드 따라 꽂기 순서 (8단계)
- 피코를 브레드보드 가운데 홈에 걸쳐 꽂아요. USB 단자가 왼쪽을 보게 하고, 1번 핀이 f2, 40번 핀이 e2에 들어가요. 다리가 홈 양쪽에 모두 들어갔는지 옆에서 봐요.
- 주황 선: 피코 36번 핀(3V3(OUT)) 옆 칸 a6 → 위쪽 + 줄(3.3V). 이제 이 줄 전체가 3.3V예요.
- 검은 선: 피코 38번 핀(GND) 옆 칸 a4 → 위쪽 − 줄(GND). 이제 이 줄 전체가 GND예요.
- 자외선 센서 GUVA-S12SD 꽂기: 다리 VCC · GND · SIG를 위쪽 a24 · a25 · a26에 차례로 꽂아요. 다리가 브레드보드에 바로 안 들어가면 암-수 점퍼선으로 같은 칸에 이어요.
- 주황 선(3.3V 전원): 자외선 센서 VCC 줄 b24 → 위쪽 + 줄(3.3V)
- 검은 선(GND): 자외선 센서 GND 줄 b25 → 위쪽 − 줄(GND)
- 초록 선(신호): 자외선 센서 SIG 줄 b26 → 피코 31번 핀(GP26) 옆 칸 a11
- 마지막 확인: ① 위쪽 + 줄(3.3V)과 아래쪽 + 줄(5V)이 서로 이어지지 않았나요? ② 모든 부품의 GND가 − 줄에 이어졌나요? ③ 5V 신호 다리는 저항을 거쳐 피코에 이어졌나요? ④ 긴 브레드보드는 + − 줄이 가운데에서 끊긴 것도 있어요(빨간·파란 선이 끊겨 있으면 짧은 선으로 이어요). ⑤ 그림과 한 칸씩 비교한 뒤 USB를 꽂아요.
| 모듈 핀 | 피코 핀 | 비고 |
|---|---|---|
| VCC(V+) | 3V3 (36번) | 모듈 전원 범위 2.7~5.5V 가운데 3.3V |
| GND | GND (38번) | 피코와 접지를 함께 써요 |
| SIG(OUT) | GP26 (31번) | 아날로그 출력 |
전원을 3V3으로 주면 출력도 3.3V를 넘지 않아요. 5V로 켜면 강한 자외선에서 출력이 3.3V를 넘을 수 있으니 3V3에 이어요. 0.1V를 UV 지수 1로 보면 3.3V 범위는 지수 30에 해당해서, 국제 기준의 가장 높은 단계(11 이상)까지 넉넉히 들어와요.
센서 창은 기판 앞쪽의 작은 소자예요. 손가락 기름이 묻으면 자외선이 줄어드니 만지지 않고, 받침에 붙여 하늘을 향해 수평이 되게 둬요.
코드
from machine import ADC, Pin
import time
uv = ADC(Pin(26)) # SIG → GP26, 모듈은 3V3으로 켜요
V_PER_UVI = 0.1 # Adafruit 어림. 데이터시트 값으로 계산하면 약 0.11
DARK_V = 0.0 # 센서 창을 검은 테이프로 가렸을 때의 전압을 재서 넣어요
def read_v(n=32):
s = 0
for i in range(n):
s += uv.read_u16()
time.sleep_ms(5)
return s / n * 3.3 / 65535
while True:
v = read_v()
uvi = max(v - DARK_V, 0) / V_PER_UVI
level = "낮음" if uvi < 3 else "보통" if uvi < 6 else "높음" if uvi < 8 else "매우 높음" if uvi < 11 else "위험"
print(f"DATA: uv_v={v:.3f}, uvi={uvi:.1f}")
print(f" 어림 단계: {level}")
time.sleep(2)
read_v()는 32번 읽어 평균 전압을 구해요. 구름이 지나가며 생기는 짧은 흔들림이 줄어요.DARK_V는 센서를 가렸을 때 나오는 전압이에요. 처음에 한 번 재서 넣으면 그만큼을 빼고 계산해요.uvi는 어림한 UV 지수,level은 국제 기준 단계예요.V_PER_UVI를 0.11로 바꾸면 데이터시트 값으로 계산한 결과가 나와요.
값 해석과 보정
이 센서의 UV 지수는 어림값이라, 기상청의 자외선 지수 예보와 같은 시각에 비교해 보는 것이 좋은 보정 방법이에요. 맑은 날 같은 자리, 같은 수평 자세로 며칠 동안 정오 무렵 값을 재서 예보와의 비율을 구하면, 내 센서의 V_PER_UVI를 정할 근거가 생겨요. 예보는 넓은 지역의 값이고 센서는 한 점이라 완전히 같을 수는 없어요.
자세도 결과를 바꿔요. UV 지수는 수평면 기준이라 센서를 해 쪽으로 기울이면 값이 커져요. 탐구마다 센서를 수평에 두기로 정하고 지켜요. 차단 재료를 비교할 때는 지수보다 "가리기 전 대비 몇 %가 남았나"를 쓰면 하늘 상태가 조금 변해도 비교가 덜 흔들려요. 재료를 대기 바로 전과 뗀 바로 뒤의 값을 함께 재서 평균을 기준으로 삼아요.
온도의 영향은 작아요. 데이터시트의 온도 계수는 1℃에 0.08%라, 햇볕에 센서가 10℃ 데워져도 1%가 안 돼요. 그보다 구름과 그늘, 센서 창의 먼지가 훨씬 크게 작용해요.
자주 하는 실수
- 실내에서 자외선 LED 손전등으로 시험하기. Adafruit는 400nm 근처의 자외선 LED가 이 센서의 감지 범위 밖이라 시험에 맞지 않는다고 적어요.
- 창문 안쪽에서 재고 바깥 자외선이라고 쓰기. 유리가 자외선을 얼마나 막는지는 탐구 2에서 직접 확인하고, 바깥 값은 밖에서 재요.
- 센서 자세를 바꿔 가며 비교하기. 기울기가 다르면 같은 하늘에서도 값이 달라요. 수평으로 고정해요.
- 5V로 켜기. 출력이 3.3V를 넘을 수 있어요. 3V3에 이어요.
- 0.1V당 1을 정확한 값으로 믿기. 전형값으로 만든 어림이에요. 예보와 비교해 내 센서를 확인해요.
이 센서로 잴 수 있는 탐구
1. 하루 중 자외선은 언제 가장 셀까
- 질문: 맑은 날 9시부터 15시까지 UV 지수는 어떻게 변하고, 언제 가장 클까?
- 바꾸는 것: 시각(매시 정각)
- 재는 것: 1분 동안의 uvi 평균, 그 시각의 하늘 상태(맑음, 구름 조금)
- 방법: 운동장의 같은 자리에 센서를 수평으로 두고 재요. 맑은 날 3일 동안 반복하고, 같은 시각의 기상청 예보와 나란히 적어요.
2. 무엇이 자외선을 가장 잘 막을까 - 질문: 유리판, 랩, 선글라스 렌즈, 차단제를 바른 OHP 필름은 자외선을 얼마나 통과시킬까? - 바꾸는 것: 센서 창 앞 재료 - 재는 것: 재료가 없을 때 대비 남은 비율(%) - 방법: 재료를 센서 위 1cm에 대고 10초, 떼고 10초를 번갈아 재요. 차단제는 저울로 무게를 정해 필름의 같은 넓이에 고르게 펴 바르고, 재료마다 3번 반복해요.
3. 그늘에도 자외선이 남아 있을까
- 질문: 나무 그늘, 건물 그늘, 양산 아래에는 햇빛 아래의 몇 %가 남을까?
- 바꾸는 것: 그늘의 종류
- 재는 것: 햇빛 아래 uvi에 대한 비율(%)
- 방법: 햇빛 아래와 그늘을 1분 안에 번갈아 재서 하늘 변화의 영향을 줄여요. 그늘마다 3번, 같은 시각대에 재요.
안전
- 밖에서 오래 잴 때는 모자와 자외선 차단제를 쓰고, 한낮에는 그늘에서 쉬어 가며 해요. 해를 직접 쳐다보지 않아요.
- 자외선 램프나 자외선 LED를 눈과 피부에 비추지 않아요. 살균용 자외선(UV-C) 램프는 탐구에 쓰지 않아요.
- 차단제를 바를 때는 눈에 들어가지 않게 하고, 실험이 끝나면 손을 씻어요.
- 이 장치의 값으로 햇볕에 얼마나 있어도 되는지 판단하지 말고, 기상청 예보를 따라요.
더 알아보기
- 데이터시트: "GUVA-S12SD Technical Data"(2011년 판, 감지 파장 240~370nm, 광전류 113nA·26nA, 어두운 전류, 온도 계수 0.08%/℃)
- 모듈 자료: Adafruit "Analog UV Light Sensor Breakout - GUVA-S12SD"(전원 2.7~5.5V, 출력 = 4.3 × 광전류(µA), UV 지수 ≈ 출력 ÷ 0.1V, 400nm LED 주의)
- UV 지수: WHO "Global Solar UV Index: A Practical Guide"(2002), ICNIRP "UV Index"(단계 구분)
- 라이브러리: 따로 없어요. MicroPython 내장
machine.ADC - 기초 글: 센서 값의 신뢰도, 잴 수 있는 탐구 주제 만들기, 피코 핀 지도, 브레드보드 처음 쓰기