물·흙 · 난이도 어려움
pH 센서 모듈을 완충 용액 두 점으로 보정하고 전극을 보관액으로 지키며 쓰기
pH 센서는 유리 전극이 만드는 아주 작은 전압을 모듈이 키워 내보내요. 5V 모듈 출력을 10kΩ·20kΩ으로 나눠 읽는 배선, pH 4.00과 6.86 완충 용액으로 두 점 보정하는 코드, 증류수에 보관하면 안 되는 이유, 보안경을 쓰고 묽은 생활 용액으로 하는 탐구를 정리했어요.
이 센서로 무엇을 잴 수 있나
pH 센서는 물에 녹은 수소 이온의 활동도를 재서 용액이 얼마나 산성인지, 염기성인지 숫자(pH 0~14)로 알려 줘요. 수업용 세트는 보통 BNC 단자가 달린 유리 전극과, 그 신호를 키워 주는 작은 모듈(PH-4502C 같은 것)로 이루어져요. 모듈에는 pH 전압이 나오는 Po, 문턱을 넘었는지 알려 주는 Do, 온도와 관련된 To 핀이 있어요.
이 센서로는 식초를 묽힐 때 pH가 얼마나 오르는지, 탄산수를 열어 두면 pH가 어떻게 바뀌는지, 베이킹소다 물에 식초를 떨어뜨리면 pH가 어떤 모양으로 내려가는지처럼 생활 속 묽은 용액의 변화를 잴 수 있어요. 빗물과 수돗물을 견주는 것도 좋아요.
재지 않는 것도 정해 둬요. 강한 산·염기 세제(락스, 배수관 세정제, 염산)는 쓰지 않아요. 증류수도 측정 대상으로 맞지 않아요. Vernier의 전극 설명서는 증류수가 녹아든 이산화탄소 때문에 pH 5.5~7.0 사이로 나오고, 이온이 거의 없어 값이 불안정하다고 적어요.
원리
유리 전극 끝의 얇은 유리막은 용액의 수소 이온 농도에 따라 아주 작은 전압을 만들어요. 이상적인 전극에서 이 전압은 pH 1마다 2.303RT/F만큼, 곧 25℃에서 약 59.16mV씩 변해요(네른스트 식). 이 값은 절대온도에 비례해서, 같은 식으로 계산하면 15℃에서는 약 57.2mV, 35℃에서는 약 61.1mV예요. Vernier 전극 설명서는 온도가 영향을 주지 않는 점(등전위점)을 pH 7로 적어요.
전극의 전압은 너무 작고, 0V를 사이에 두고 양쪽으로 움직여서 피코가 그대로 읽을 수 없어요. 모듈은 이 신호를 키우고 가운데 전압을 올려 Po로 내보내요. raw.org의 PH-4502C 안내는 BNC 단자의 가운데와 바깥을 짧은 선으로 이은 채(전극이 0V를 내는 상태) BNC에 가까운 가변저항(POT1)을 돌려 Po를 약 2.5V로 맞추는 순서를 소개해요. 모듈의 증폭 정도는 제품마다 달라서, 이 글은 pH를 아는 완충 용액 두 개로 기울기와 위치를 직접 정해요.
모듈은 5V로 켜고, Po는 3.3V를 넘을 수 있어요. 그래서 시나브로 PICO 배선처럼 10kΩ·20kΩ으로 2/3로 나눠 GP26에 넣고 코드에서 1.5를 곱해 되돌려요.
준비물
- 라즈베리파이 피코와 USB 케이블
- pH 모듈(V+·G·Po 핀)과 BNC 유리 전극, 10kΩ·20kΩ 저항 각 1개, 브레드보드
- 완충 용액 pH 4.00과 6.86(또는 7.00), 확인용으로 9.18(또는 10.01)이 있으면 좋아요
- 증류수 세척병, 작은 비커나 투명 컵 여러 개, 보풀 없는 휴지, 전극 보관액
- 보안경, 일회용 장갑, 온도계
- 탐구용: 식초, 탄산수, 베이킹소다, 스포이트, 계량스푼
배선
브레드보드 따라 꽂기 순서 (10단계)
- 피코를 브레드보드 가운데 홈에 걸쳐 꽂아요. USB 단자가 왼쪽을 보게 하고, 1번 핀이 f2, 40번 핀이 e2에 들어가요. 다리가 홈 양쪽에 모두 들어갔는지 옆에서 봐요.
- 빨간 선: 피코 40번 핀(VBUS) 옆 칸 a2 → 아래쪽 + 줄(5V). 이제 이 줄 전체가 5V예요. 위쪽 + 줄(3.3V)과 아래쪽 + 줄(5V)은 절대 서로 잇지 않아요.
- 검은 선: 피코 3번 핀(GND) 옆 칸 j4 → 아래쪽 − 줄(GND). 이제 이 줄 전체가 GND예요.
- 액체 산도 pH Meter 꽂기: 다리 V+ · G · Po를 아래쪽 j24 · j25 · j26에 차례로 꽂아요. 다리가 브레드보드에 바로 안 들어가면 암-수 점퍼선으로 같은 칸에 이어요.
- 빨간 선(5V 전원): 액체 산도 V+ 줄 i24 → 아래쪽 + 줄(5V)
- 검은 선(GND): 액체 산도 G 줄 i25 → 아래쪽 − 줄(GND)
- 저항 10kΩ(색띠 갈색·검정·주황): g26 ↔ g28 (Po 다리 칸 → 나눔 칸 28열)
- 저항 20kΩ(색띠 빨강·검정·주황): i28 ↔ 아래쪽 − 줄(GND)
- 초록 선: 나눔 칸 h28 → 피코 31번 핀(GP26) 옆 칸 a11. 5V 신호가 3.3V 아래로 줄어 피코가 안전해요.
- 마지막 확인: ① 위쪽 + 줄(3.3V)과 아래쪽 + 줄(5V)이 서로 이어지지 않았나요? ② 모든 부품의 GND가 − 줄에 이어졌나요? ③ 5V 신호 다리는 저항을 거쳐 피코에 이어졌나요? ④ 긴 브레드보드는 + − 줄이 가운데에서 끊긴 것도 있어요(빨간·파란 선이 끊겨 있으면 짧은 선으로 이어요). ⑤ 그림과 한 칸씩 비교한 뒤 USB를 꽂아요.
| 모듈 핀 | 피코 핀 | 비고 |
|---|---|---|
| V+ | VBUS (40번) | 모듈 전원 5V |
| G | GND (38번) | 모듈의 G 핀 두 개를 모두 GND에 |
| Po | GP26 (31번) | 10kΩ·20kΩ 분압 뒤 연결 |
| Do · To | 연결 안 함 | 이 글에서는 쓰지 않아요 |
분압은 Po ─ 10kΩ ─ ● ─ 20kΩ ─ GND로 잇고, 가운데 점(●)을 GP26에 이어요(분압 회로). 피코와 모듈은 용액에서 떨어진 마른 곳에 두고, 전극은 끝의 유리 부분만 용액에 담가요. Vernier 설명서는 BNC 연결부가 방수가 아니니 전극을 통째로 담그지 말라고 적어요. 같은 비커에 EC 센서 같은 다른 수질 센서를 함께 넣지 않아요. 서로 신호를 방해해요(EC 센서 글).
코드
from machine import ADC, Pin
import time
po = ADC(Pin(26)) # Po → 10kΩ/20kΩ 분압 → GP26
# 두 점 보정: 완충 용액에 담가 steady=1일 때의 po_v를 적어요
PH1, V1 = 6.86, 2.50 # 예시 값. 내 센서로 잰 값으로 바꿔요
PH2, V2 = 4.00, 3.00 # 예시 값. 내 센서로 잰 값으로 바꿔요
def read_v(n=40):
s = 0
for i in range(n):
s += po.read_u16()
time.sleep_ms(5)
return s / n * 3.3 / 65535 * 1.5 # 분압을 되돌린 Po 전압(V)
slope = (PH2 - PH1) / (V2 - V1) # 1V당 pH
print(f"보정 기울기 {slope:.2f} pH/V, 1pH당 {1000 / abs(slope):.0f} mV")
prev = read_v()
while True:
v = read_v()
ph = PH1 + (v - V1) * slope
steady = 1 if abs(v - prev) < 0.002 else 0 # 2초 사이 2mV 안이면 멈춘 것으로
print(f"DATA: ph={ph:.2f}, po_v={v:.4f}, steady={steady}")
prev = v
time.sleep(2)
- 시나브로 PICO 센서 가이드 예제는
3.5 × 전압같은 간이 식을 써요. 그 식은 특정 모듈에 맞춘 값이라, 이 글은 두 점에서 직접 구한 기울기로 바꿨어요. PH1, V1과PH2, V2는 계산을 보여 주려고 넣은 예시예요. 실제로는 완충 용액에서 잰po_v를 적어요. 예시 값으로 계산하면 기울기는 −5.72pH/V, 곧 pH 1당 175mV예요.steady는 2초 전과 비교해 2mV 안으로 멈췄는지 알려 줘요. 보정값은steady=1이 몇 번 이어진 뒤에 적어요.- 40번을 5ms 간격으로 읽어 평균을 내요. 잡음을 줄이려는 거예요.
값 해석과 보정
두 점 보정은 이 순서로 해요.
- 전극 보호 캡을 벗기고 증류수로 헹군 뒤 휴지로 물기를 찍어 내요. Cole-Parmer의 전극 관리 안내는 문지르면 정전기 때문에 값이 틀어진다고 적어요.
- pH 6.86(또는 7.00) 완충 용액에 담가 살살 저은 뒤
steady=1이 이어지면po_v를V1에 적어요. - 다시 헹구고 찍어 낸 뒤 pH 4.00 용액으로 같은 일을 해
V2에 적어요. - 코드를 다시 돌려 두 용액에서 4.00과 6.86 근처가 나오는지 확인해요. 세 번째 완충 용액이 있다면 그 값도 재서 보정 범위 밖의 오차를 확인해요.
보정은 잴 용액과 비슷한 온도에서 하고 온도를 함께 적어요. 위의 계산처럼 기울기 자체가 온도에 따라 바뀌기 때문이에요. 완충 용액 병에 온도별 pH 표가 있으면 그 값을 써요. 보정한 뒤 POT1을 돌리면 V1과 V2가 모두 바뀌니 다시 보정해요.
기울기로 전극 상태를 봐요. 보정할 때마다 나오는 "1pH당 mV"를 기록장에 적어 두면, 몇 주 뒤 그 값이 크게 줄었을 때 전극이 낡았거나 말랐다는 신호로 읽을 수 있어요(센서 값의 신뢰도).
보관이 수명을 정해요. Vernier 설명서는 전극을 증류수에 보관하지 말고, 하루 안쪽이면 pH 4나 7 완충 용액에, 그보다 길면 pH 4 완충 용액에 염화칼륨(KCl)을 녹인 보관액에 두라고 적어요. 말라 버린 전극은 보관액에 8시간 넘게 담가 둔 뒤 다시 써요.
자주 하는 실수
- 전극을 증류수에 담가 두거나 말려 두기. 유리막과 기준부가 상해 반응이 느려지고 값이 흔들려요. 캡에 보관액을 채워 끼워요.
- 휴지로 유리구를 문지르기. 찍어 내기만 해요. 유리구는 얇아서 깨지기도 쉬워요.
- 한 점(pH 7)만 맞추고 끝내기. 위치만 맞고 기울기는 모르는 상태예요. 두 점을 써요.
- 용액을 바꿀 때 헹구지 않기. 앞 용액이 묻어 다음 값이 끌려가요.
- Po를 GP26에 바로 꽂기. 5V 모듈의 출력이 3.3V를 넘을 수 있어요. 분압해요.
이 센서로 잴 수 있는 탐구
1. 식초를 10배 묽히면 pH는 1만큼 오를까 - 질문: 식초를 10배, 100배로 묽히면 pH는 얼마씩 오를까? - 바꾸는 것: 묽힌 정도(원래 식초, 10배, 100배). 계량스푼과 눈금실린더로 만들어요 - 재는 것: pH(멈춘 값) - 방법: 묽은 쪽부터 진한 쪽 순서로 재고, 사이마다 헹궈요. 강산이라면 10배마다 1씩 오르지만, 식초 속 아세트산 같은 약산은 묽혀도 덜 오른다고 예상할 수 있어요(약산의 근사식으로는 10배에 약 0.5). 3번 반복해 예상과 비교해요.
2. 열어 둔 탄산수는 얼마나 빨리 pH가 오를까 - 질문: 뚜껑을 연 탄산수를 저은 컵과 그대로 둔 컵은 1시간 동안 pH가 어떻게 다르게 바뀔까? - 바꾸는 것: 젓기(10분마다 30초 저음, 그대로 둠), 지난 시간(0, 10, 30, 60분) - 재는 것: pH - 방법: 같은 병을 두 컵에 같은 양 나눠요. 시각마다 두 컵을 번갈아 재고 헹궈요. 날을 바꿔 3번 해요.
3. 베이킹소다 물에 식초를 떨어뜨리면 pH는 어떤 모양으로 내려갈까
- 질문: 베이킹소다 물에 식초를 한 방울씩 더할 때 pH가 갑자기 많이 바뀌는 구간이 있을까?
- 바꾸는 것: 넣은 식초 방울 수(0부터 5방울씩)
- 재는 것: 방울 수마다 멈춘 pH
- 방법: 물 100mL에 베이킹소다 1g을 녹여요. 스포이트로 식초를 넣고 저은 뒤 steady=1이 될 때 기록해요. 거품(이산화탄소)이 가라앉은 뒤 재고, 3번 반복해 그래프를 그려요.
안전
- 보안경을 써요. 묽은 생활 용액(식초, 탄산수, 베이킹소다 물)만 쓰고, 장갑을 끼면 더 좋아요. 눈에 튀면 바로 흐르는 물로 씻고 선생님께 알려요.
- 락스(염소계 표백제)와 식초 같은 산을 절대 섞지 않아요. 유독한 염소 기체가 나와요. 강한 산·염기 세제는 실험에 쓰지 않아요.
- 실험한 용액은 맛보지 않아요. 끝나면 물을 충분히 흘려 버리고 손을 씻어요.
- 유리 전극이 깨지면 맨손으로 줍지 않고 선생님께 알려요.
- 이 장치는 먹는 물이나 음식의 안전을 판단하는 기기가 아니에요.
더 알아보기
- 전극 자료: Vernier "Go Direct pH BNC Electrode User Manual"(증류수 보관 금지, pH 4 완충액/KCl 보관액, 증류수 측정이 흔들리는 이유, BNC는 방수 아님, 등전위점 pH 7), Cole-Parmer "pH Electrode Care"(헹구고 찍어 내기, 문지르지 않기)
- 모듈 자료: raw.org "Control PH-4502C pH Sensor with Arduino"(PO·DO·TO 핀, POT1 오프셋, BNC를 이어 2.5V 맞추기, 3.3V 보드에서는 분압)
- 라이브러리: 따로 없어요. MicroPython 내장
machine.ADC - 기초 글: 센서 값의 신뢰도(두 점 보정), 분압 회로, 잴 수 있는 탐구 주제 만들기