[아두이노] 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); 또...