ADC 값·전압 변환 계산기
아두이노 analogRead() 같은 ADC 값을 실제 전압으로 바꾸거나, 전압이 몇으로 읽힐지 계산합니다.
공식
V = (코드 × Vref)/(2N). 10비트 ADC에 5 V 기준이면 한 칸(1 LSB)이 약 4.88 mV입니다. 기준 전압보다 큰 신호는 전압 분배기로 먼저 낮춰서 넣어야 합니다.
직접 해 보기: ADC는 사인파를 어떻게 볼까
0~5 V 사인파를 샘플링해 정수 코드로 내림합니다. 분해능과 샘플 수를 바꾸면 계단 모양이 따라 바뀝니다.
- 1 LSB (Vref ÷ 2N)
- 313 mV
- 코드 수
- 16 (0–15)
- 이 사인파가 쓰는 코드
- 9
- 샘플 시점의 최대 오차
- 284 mV
- 양자화 잡음 (rms)
- 90.2 mV
- 이론 SNR (풀스케일 사인파)
- 25.8 dB
N비트 ADC는 0부터 Vref까지를 1 LSB 크기의 계단 2N개로 나누고, 입력이 몇 번째 계단에 있는지 알려 줍니다. 샘플과 샘플 사이는 알 수 없어서 값은 다음 샘플까지 그대로 유지되는 계단 모양이 됩니다. 이 페이지는 V = 코드 × Vref ÷ 2N을 쓰므로, 읽은 값은 실제 입력보다 최대 1 LSB 낮습니다.
비트가 하나 늘 때마다 계단이 반으로 줄고 신호 대 잡음비가 약 6 dB 좋아집니다. 주기당 샘플이 많을수록 모양을 잘 따라가고, 주기당 2개 이하가 되면 사인파를 다시 그릴 수 없습니다(나이퀴스트 한계). 이때는 샘플이 매번 같은 값에 찍히기도 합니다.
풀이 예제: 아두이노 10비트 ADC (5 V)
- 1 LSB(한 칸): (Vref)/(2^(10)) = (5 V)/(1024) = 4.88 mV
- analogRead()가 512를 돌려줬다면 V = 512 × (5 V)/(1024) = 2.5 V
- 3.3 V를 넣으면 floor((3.3 V × 1024)/(5 V)) = 675로 읽힙니다.
비트 수별 1 LSB
| 분해능 | 최대 코드 | 1 LSB (3.3 V) | 1 LSB (5 V) |
|---|---|---|---|
| 8비트 | 255 | 12.9 mV | 19.5 mV |
| 10비트 | 1,023 | 3.22 mV | 4.88 mV |
| 12비트 | 4,095 | 806 µV | 1.22 mV |
| 16비트 | 65,535 | 50.4 µV | 76.3 µV |
아두이노 우노는 10비트(5 V 기준), ESP32·STM32는 보통 12비트(3.3 V 기준)입니다. 기준 전압보다 큰 신호는 전압 분배기로 낮춰서 넣으세요.
실전에서 쓰는 법
순서대로 쓰기
- 분해능(아두이노 우노는 10비트)과 기준 전압을 정합니다.
- ADC 값을 넣으면 전압이, 전압을 넣으면 예상 코드가 나옵니다.
- 입력이 분압기를 거친다면 결과에 분압비를 곱해 실제 전압을 구합니다.
자주 하는 실수
- 기준 전압이 정확히 5 V라고 가정하기. USB 전원에서 우노의 5 V는 4.7~5.1 V인 경우가 많고, 모든 측정값이 그 비율로 달라집니다. 실제 기준 전압을 재거나, 안정적인 값을 원하면 내부 기준 전압을 쓰세요.
- 기준 전압이나 전원보다 큰 입력. 기준 전압보다 큰 입력은 최대값으로 읽히고, 전원보다 크면 핀이 망가질 수 있습니다. 큰 전압은 먼저 분압하세요.
- 큰 저항으로 입력 구동하기. ADC의 샘플링 커패시터는 임피던스가 낮은 신호원이 필요합니다. ATmega328P 데이터시트는 10 kΩ 이하를 권합니다. 신호원이 약하면 핀에 100 nF 커패시터를 다세요.
값을 안정시키는 법
10비트, 5 V 변환기의 한 단계는 약 4.9 mV라서 1~2카운트 흔들리는 것은 정상입니다. 소프트웨어로 8~16번 평균하고, 아날로그 배선을 모터나 LED 스위칭에서 떨어뜨리고, 채널을 바꾼 직후 첫 값은 버리고 한 번 더 읽으세요. 약 0.5%보다 좋은 정확도가 필요하면 자체 정밀 기준 전압이 있는 외부 ADC를 쓰세요.
자주 묻는 질문
1023으로 나눠야 하나요, 1024로 나눠야 하나요?
대부분의 ADC 데이터시트는 1 LSB를 (Vref)/(2N)으로 정의하므로 10비트는 1024로 나눕니다. 아두이노 예제에는 1023으로 나누는 경우가 많은데, 차이는 최대 한 칸(5 V 기준 약 5 mV)이라 ADC 자체 오차보다 작습니다.
기준 전압보다 높은 전압은 어떻게 재나요?
전압 분배기로 최대 입력이 기준 전압보다 낮아지도록 줄여서 넣고, 읽은 값에 분배비를 다시 곱해 원래 전압을 구합니다.