회로계산소

회로 실험과 설계에 자주 쓰는 계산을 한곳에서. 설치 없이 바로 쓰는 전자공학 계산기 모음입니다.

English

값은 단위 접두어와 함께 입력할 수 있습니다. 예: 4.7k 4k7 100n 10u 20mA 1M

ADC

ADC 값·전압 변환 계산기

아두이노 analogRead() 같은 ADC 값을 실제 전압으로 바꾸거나, 전압이 몇으로 읽힐지 계산합니다.

공식

V = (코드 × Vref)/(2N). 10비트 ADC에 5 V 기준이면 한 칸(1 LSB)이 약 4.88 mV입니다. 기준 전압보다 큰 신호는 전압 분배기로 먼저 낮춰서 넣어야 합니다.

직접 해 보기: ADC는 사인파를 어떻게 볼까

0~5 V 사인파를 샘플링해 정수 코드로 내림합니다. 분해능과 샘플 수를 바꾸면 계단 모양이 따라 바뀝니다.

두 주기 동안의 입력과 ADC 값

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 낮습니다.

1 LSB = (Vref)/(2N)
잡음rms = (1 LSB)/(√12)
SNR ≈ 6.02·N + 1.76 dB

비트가 하나 늘 때마다 계단이 반으로 줄고 신호 대 잡음비가 약 6 dB 좋아집니다. 주기당 샘플이 많을수록 모양을 잘 따라가고, 주기당 2개 이하가 되면 사인파를 다시 그릴 수 없습니다(나이퀴스트 한계). 이때는 샘플이 매번 같은 값에 찍히기도 합니다.

풀이 예제: 아두이노 10비트 ADC (5 V)

  1. 1 LSB(한 칸): (Vref)/(2^(10)) = (5 V)/(1024) = 4.88 mV
  2. analogRead()가 512를 돌려줬다면 V = 512 × (5 V)/(1024) = 2.5 V
  3. 3.3 V를 넣으면 floor((3.3 V × 1024)/(5 V)) = 675로 읽힙니다.

비트 수별 1 LSB

분해능최대 코드1 LSB (3.3 V)1 LSB (5 V)
8비트25512.9 mV19.5 mV
10비트1,0233.22 mV4.88 mV
12비트4,095806 µV1.22 mV
16비트65,53550.4 µV76.3 µV

아두이노 우노는 10비트(5 V 기준), ESP32·STM32는 보통 12비트(3.3 V 기준)입니다. 기준 전압보다 큰 신호는 전압 분배기로 낮춰서 넣으세요.

실전에서 쓰는 법

순서대로 쓰기

  1. 분해능(아두이노 우노는 10비트)과 기준 전압을 정합니다.
  2. ADC 값을 넣으면 전압이, 전압을 넣으면 예상 코드가 나옵니다.
  3. 입력이 분압기를 거친다면 결과에 분압비를 곱해 실제 전압을 구합니다.

자주 하는 실수

  • 기준 전압이 정확히 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 자체 오차보다 작습니다.

기준 전압보다 높은 전압은 어떻게 재나요?

전압 분배기로 최대 입력이 기준 전압보다 낮아지도록 줄여서 넣고, 읽은 값에 분배비를 다시 곱해 원래 전압을 구합니다.