[아두이노] 서미스터 온도 측정 완벽 워크플로우 (저항형 센서 감도 조절 및 캘리브레이션)

“비선형 데이터를 직선으로 펴고, 기울기와 절편까지 맞춘다” 아두이노로 온도를 측정할 때 가장 흔히 겪는 문제는 단순합니다. 값이 둔감하다 (변화가 잘 안 보인다) 값이 비선형이다 (온도와 비례하지 않는다) 값이 부정확하다 (실제 온도와 다르다) 이 문제를 해결하는 가장 정석적인 방법이 바로 다음 3단계입니다: ① 하드웨어 튜닝 → ② 수학적 선형화 → ③ 캘리브레이션 이 글에서는 이 과정을 “엔지니어링 워크플로우” 관점에서 정리합니다. 1. 하드웨어 단계: 가변저항으로 “감도” 확보 핵심 개념 서미스터는 온도에 따라 저항이 변하지만, 우리가 측정하는 것은 “전압”입니다. 그래서 반드시 전압 분배 회로 를 구성해야 합니다. 회로 구조 5V ── 가변저항(Rf) ── A0 ── 서미스터(Rs) ── GND 여기서 중요한 포인트는: 가변저항을 이용해 “측정 구간”을 중앙에 맞춘다 왜 이게 중요할까? ADC(analogRead)는 0~1023 범위를 사용합니다. 하지만 잘못 설정하면: 800~820만 왔다 갔다 → ❌ 해상도 낭비 100~120만 사용 → ❌ 감도 낮음 최적화 방법 👉 목표: 측정하려는 온도 범위의 중앙값에서 ADC ≈ 512 예: 측정 범위: 25~30°C 기준 온도: 27°C 목표: analogRead ≈ 512 (약 2.5V) 조정 방법 실제 온도를 27°C로 맞춘다 가변저항을 돌린다 analogRead 값이 512 근처가 되도록 맞춘다 결과 위쪽/아래쪽 변화 모두 감지 가능 Headroom 확보 측정 해상도 최대화 ⚠️ 매우 중요한 주의사항 한 번 맞춘 후 절대 건드리지 마세요 이 값이 바뀌면 이후 모든 계산이 틀어집니다. 2. 소프트웨어 단계: 로그 함수로 “선형화” 문제의 본질 서미스터는 이렇게 동작합니다: 온도 ↑ → 저항 ↓ (비선형, 지수형) 즉, 온도 vs 저항 그래프는 곡선이다 해결 방법: 로그 변환 로그를 취하면: 곡선 → 직선에 가까워짐 이를 정밀하게 모델링한 공식이 바로: Steinhart-Hart 방정식 1/T = ...

[아두이노] CdS 조도 센서의 ‘비선형성’과 감도 설계, 그리고 선형화까지

조도 센서를 쓰다 보면 이런 느낌을 받습니다. “어느 구간은 잘 반응하는데, 어느 구간은 거의 안 변한다…” 이건 센서 문제가 아니라, 👉 전압 분배 회로 자체가 ‘비선형’이기 때문 입니다. 1. 기본 원리 (수식 깨짐 방지 버전) CdS 센서는 빛에 따라 저항이 변합니다. 밝을 때 → 저항 ↓ 어두울 때 → 저항 ↑ 아두이노는 전압만 읽기 때문에 전압 분배 회로를 사용합니다. 전압 분배 공식 Vout = Vin × (Rsensor / (Rfixed + Rsensor)) 2. 핵심: 이 식은 비선형이다 이 식은 직선이 아니라 “곡선”입니다. 즉, 입력: 센서 저항 출력: 전압 👉 둘 사이 관계는 비선형 그래서 나타나는 현상: 초반 → 민감 (전압 많이 변함) 후반 → 둔감 (전압 거의 안 변함) 3. 감도의 정체 감도는 단순 전압 차이가 아니라: 👉 저항 변화 대비 전압 변화량 즉, 감도 ≈ ΔV / ΔR 4. 가장 중요한 포인트 Rsensor ≈ Rfixed 일 때 감도 최대 이 구간이 가장 가파른 영역입니다. 5. 왜 저항 선택이 중요할까 고정 저항은 단순 부품이 아닙니다. 👉 “어디 구간을 민감하게 볼지 결정하는 장치” Case 1: Rfixed = 1kΩ 밝은 영역 → 감도 좋음 어두운 영역 → 거의 변화 없음 이유: Rsensor >> Rfixed → Vout ≈ Vin 👉 전압이 5V 근처에 붙어버림 Case 2: Rfixed = 10kΩ 전체 영역에서 고르게 변화 👉 가장 일반적인 선택 6. 감도 분포 개념 감도는 일정하지 않습니다. 👉 특정 구간에서만 높고, 나머지는 낮습니다. 그래서: 고정 저항을 바꾸는 것 = 감도 위치를 이동시키는 것 7. 그럼 선형으로 만들 수 있을까? 가능합니다. 3가지 방법이 있습니다. 8. 방법 1: 소프트웨어 선형화 (추천) 센서 값 → 보정해서 사용 예시: int raw = analogRead(A0); // 간단한 로그 보정 예시 float corrected = log(raw + 1); 또...

[아두이노] V=IR은 어떻게 만들어졌을까? 그리고 전압 분배는 왜 성립할까?

전자회로를 배우다 보면 너무 당연하게 등장하는 공식이 있습니다. V = IR 그리고 바로 이어서 배우는 것이 전압 분배 공식입니다. Vout = Vin × (R2 / (R1 + R2)) 많은 사람들이 이렇게 생각합니다. “이거 그냥 편의상 만든 공식 아닌가?” 하지만 실제로는 전혀 다릅니다. 이 두 공식은 모두 👉 실험 + 수학 + 물리학이 결합된 “필연적인 결과”입니다. 1. 시작은 관찰이었다 (옴의 법칙) 초기 전기 실험에서 발견된 사실: 전압을 2배 → 전류도 2배 전압을 3배 → 전류도 3배 즉, 전류 ∝ 전압 이 관계를 정리한 사람이 게오르크 옴(Georg Ohm)입니다. 그래서 나온 식이 바로: V = IR 여기서 중요한 포인트는: R은 처음부터 “저항”이라는 개념이 아니라 👉 단순한 비례상수였다는 점입니다. 즉, “이 물질은 전류가 덜 흐르네?” → 그걸 숫자로 표현한 것이 R 2. 왜 이런 관계가 생길까? (물리적 의미) 나중에 물리학이 발전하면서 이유가 밝혀집니다. 전류의 본질은 전자의 이동입니다. 그런데 전자는 자유롭게 날아가지 않습니다. 전기장이 전자를 밀어냄 전자는 가속됨 하지만 원자와 계속 충돌 결과: 계속 빨라지는 것이 아니라 일정한 평균 속도로 움직임 (drift velocity) 이때: 전압 ↑ → 전기장 ↑ 전자 속도 ↑ → 전류 ↑ 그래서 자연스럽게: 전류 ∝ 전압 → V = IR 3. “다 무시하고 단순화”의 의미 실제 물리 세계는 매우 복잡합니다. 양자역학 격자 구조 열 진동 충돌 확률 하지만 이런 걸 다 고려하면 회로 설계는 불가능합니다. 그래서 엔지니어링에서는 이렇게 합니다: 👉 결과만 남기고 나머지는 버린다 그 결과가 바로: V = IR 즉, 옴의 법칙은 👉 “진리”가 아니라 👉 “잘 동작하는 단순 모델”입니다 4. 전압 분배 공식은 어떻게 나왔을까? 이제 핵심 질문...

[아두이노] 왜 어떤 센서는 저항만 있고, 어떤 센서는 전압을 바로 줄까?

아두이노로 센서를 다루다 보면 이런 의문이 한 번쯤 생깁니다. 서미스터나 조도센서는 왜 저항만 덩그러니 있고 LM35DZ 같은 센서는 왜 전압을 바로 출력할까? 겉보기에는 둘 다 “온도 센서”인데, 내부는 완전히 다른 세계입니다. 1. 저항형 센서: “날것의 재료” 대표적인 예: 서미스터 (Thermistor) 조도 센서 (LDR) 이 센서들의 본질은 아주 단순합니다. 👉 물리량 → 저항 변화 예를 들어: 온도가 올라가면 저항이 줄어든다 (NTC) 빛이 밝아지면 저항이 줄어든다 하지만 여기서 중요한 포인트: ❗ 이 센서들은 전압을 만들어내지 못합니다 📌 그래서 반드시 필요한 것: 전압 분배 회로 아두이노는 “전압”만 읽을 수 있기 때문에 저항을 전압으로 바꿔줘야 합니다. 이때 등장하는 것이 바로 전압 분배 공식 입니다. V o u t = V i n ⋅ R 2 R 1 + R 2 V_{out} = V_{in} \cdot \frac{R_2}{R_1 + R_2} ​ ​ R 1 R_1 : 고정 저항 R 2 R_2 : 센서 (가변 저항) 👉 센서 저항이 변하면 → 출력 전압이 변함 → 아두이노가 읽음 🔧 PLC 비유 이건 딱 이런 느낌입니다: 무전압 접점 단순 가변 저항기 👉 스스로 신호 못 만듦 👉 외부에서 “회로 구성”을 해줘야 의미 있는 데이터가 됨 2. LM35DZ: “이미 요리된 완제품” LM35DZ temperature sensor 같은 센서는 완전히 다릅니다. 겉은 단순해 보여도 내부는… 👉 정밀 아날로그 IC 📌 내부에서 무슨 일이 벌어질까? LM35DZ 안에는: 트랜지스터 배열 기준 전압 회로 증폭기 (Op-Amp) 같은 것들이 들어 있습니다. 그 결과: 👉 온도 → 전압으로 바로 변환해서 출력 📌 핵심 특징 가장 중요한 공식은 이것 하나입니다: V o u t = 10   mV × T ( ∘ C...

[아두이노] 저항형 센서를 읽는 법: 전압 분배(Voltage Divider)의 본질

1. 왜 “저항”을 “전압”으로 바꿔야 할까? 아두이노의 analogRead() 는 전압만 측정 할 수 있다. 하지만 우리가 사용하는 많은 센서는 이런 식이다: LDR (조도 센서) → 빛에 따라 저항 변화 서미스터 (온도 센서) → 온도에 따라 저항 변화 FSR (압력 센서) → 압력에 따라 저항 변화 👉 문제는 이거다: “저항은 직접 측정 못하는데… 그럼 어떻게 읽지?” 그래서 등장하는 게 바로 👉 전압 분배 회로 (Voltage Divider) 2. 전압 분배 회로의 구조 가장 기본 구조는 이거다: Vcc (5V) | [R1] ← 고정 저항 | +----→ 아날로그 핀 (A0) | [R2] ← 센서 (변하는 저항) | GND 여기서 핵심은: 👉 중간 지점의 전압을 측정한다는 것 3. 전압 분배 공식 (핵심 수식) V o u t = V i n ⋅ R 2 R 1 + R 2 V_{out} = V_{in} \cdot \frac{R_2}{R_1 + R_2} ​ ​ V o u t V_{out} : 아두이노가 읽는 전압 R 1 R_1 : 고정 저항 R 2 R_2 : 센서 저항 4. 직관적으로 이해해보자 이 공식이 의미하는 건 간단하다: 👉 전체 전압이 저항 비율대로 나눠진다 센서 저항 ↑ → V o u t ↑ V_{out} ↑ 센서 저항 ↓ → V o u t ↓ V_{out} ↓ 즉, “저항 변화 → 전압 변화 → 아두이노가 읽음” 이게 핵심 흐름이다. 5. 아두이노에서 실제로 읽히는 값 아두이노는 전압을 이렇게 변환한다: 0V → 0 5V → 1023 즉: V o u t = a n a l o g R e a d ( ) 1023 × 5 V V_{out} = \frac{analogRead()}{1023} \times 5V 6. 센서 저항을 역으로 계산하기 전압을 읽었으면, 다시 저항으로 바꿀 수도 있다. 공식 변형하면: R 2 = R 1...

[아두이노] 아날로그 온도 센서 완벽 가이드 (TMP36 vs LM35DZ)

이미지
아두이노로 온도를 측정할 때 가장 많이 사용하는 센서인 LM35DZ 와 TMP36 . 겉모양은 거의 동일한데, 왜 코드 속 계산식은 다를까요? 핵심은 바로 전압 스케일링 + 오프셋(Offset) 입니다. 1. 하드웨어 이해 (TO-92 패키지) 두 센서 모두 동일한 형태입니다. 👉 평평한 면을 정면으로 봤을 때: 왼쪽 : VCC (5V) 가운데: OUTPUT 오른쪽: GND 센서 스펙 차이 LM35DZ 측정 범위: 0°C ~ 100°C 특징: 음수 온도 측정 불가 (기본 상태에서는) TMP36 측정 범위: -40°C ~ 125°C 특징: 영하 온도 측정 가능 2. 1단계: ADC 값을 전압으로 변환 아두이노는 전압을 직접 읽지 못하고 0 ~ 1023 범위의 디지털 값 으로 변환합니다. 공식 (블로그 안전 버전) Voltage(mV) = Reading × (5000.0 / 1024.0) 의미 5000.0 → 5V를 mV로 변환 1024.0 → ADC 분해능 (10비트) 1 step ≈ 4.88mV 즉, 👉 ADC 값 × 4.88mV = 실제 전압 3. 2단계: 전압 → 온도 변환 두 센서 모두 공통점: 10mV = 1°C 하지만 차이는 여기서 발생합니다: 👉 0°C 기준점 (Offset) 4. LM35DZ (기준점 = 0V) 특성 0°C → 0mV 완전히 비례하는 직선 공식 Temperature(°C) = Voltage(mV) / 10.0 장점 계산이 매우 단순 단점 음수 온도 측정 불가 (아두이노는 음전압 측정 못함) 5. TMP36 (Offset = 500mV) 핵심 개념: 오프셋(Offset) 0°C → 500mV 일부러 기준점을 위로 올려둠 이유 👉 영하에서도 전압이 0V 아래로 떨어지지 않게 하기 위해 예: -10°C → 400mV 공식 Temperature(°C) = (Volta...

[아두이노] RGB LED 핀 구별법: 공통 단자(Common) 완벽 정리

이미지
DIY 프로젝트나 회로 설계에서 자주 사용되는 4핀 RGB LED 는 처음 보면 핀 구별이 어렵게 느껴질 수 있습니다. 하지만 몇 가지 핵심 포인트만 알면 빠르고 정확하게 판별할 수 있습니다. 1️⃣ 외형으로 구별하기 (핀 길이 + 내부 구조) 가장 직관적인 방법은 핀 길이와 내부 금속 구조 를 확인하는 것입니다. 가장 긴 다리 → 이 핀이 바로 공통 단자 (Common) 입니다. 내부 금속판 (컵 형태) → LED 내부를 보면 특정 금속판이 유독 넓은데, 이 부분이 가장 긴 다리와 연결된 공통 단자 입니다. 핀 배열 (일반적인 형태) → 가장 긴 핀을 왼쪽에서 두 번째에 두었을 때 👉 Red - Common - Green - Blue 순서가 일반적입니다. ⚠️ 단, 제조사에 따라 다를 수 있으니 참고용으로만 활용하세요. 2️⃣ 구동 방식에 따른 분류 (Anode vs Cathode) RGB LED는 공통 단자의 극성에 따라 두 가지 타입으로 나뉩니다. 구분 Common Cathode Common Anode 공통 단자 GND (-) VCC (+) 제어 방식 HIGH(1) → 점등 LOW(0) → 점등 특징 아두이노 등에서 많이 사용 일부 드라이버 회로에서 사용 👉 핵심은 긴 다리가 +인지 -인지 입니다. 이것에 따라 회로 구성 방식이 완전히 달라집니다. 3️⃣ 멀티미터로 10초 만에 확인하는 방법 데이터시트가 없을 때 가장 확실한 방법입니다. 멀티미터를 다이오드 모드 로 설정 검정색 리드선(COM) 을 가장 긴 다리에 연결 빨간색 리드선 을 나머지 핀에 하나씩 접촉 💡 LED가 켜진다면 → Common Cathode (GND 공통) ❌ LED가 안 켜진다면 → 리드를 반대로 연결해서 다시 테스트 💡 그때 켜진다면 → Common Anode (VCC 공통) ⚠️ 설계 시 주의사항 (Engineering Tip) ✔ 전류 제한 저항은 필수 RGB LED는 색상마다 특성이 다릅니다. Red: 약 2.0V Green / Blue: 약 3.0 ~ 3.2V 따...