ADC 노이즈 줄이는 방법: 오버샘플링과 필터로 값 흔들림 완벽 해결
임베디드 제어 시스템이나 정밀 계측 기기를 개발할 때 센서 입력 신호의 비트 단위 요동은 연산 알고리즘 전체를 교란하는 대표적인 전단 문제입니다. 특히 연속-근사-레지스터(SAR) ADC 회로에서 하위 3~4비트가 무작위로 흔들리는 현상은 제어 루프의 미분 이득을 증폭시켜 모터 진동이나 오동작을 촉발합니다. 단순 소프트웨어 연산으로 이를 억제하려 하면 필터 지연 시간(Group Delay)이 급증하여 시스템 동특성이 붕괴하므로, 하드웨어 기준전압 안정화와 디지털 신호 처리를 아우르는 ADC 노이즈 줄이는 방법의 정밀한 트레이드오프 검증이 선행되어야 합니다.
아날로그-디지털 변환 과정에서 발생하는 오차는 외부 전원 스위칭 리플, 아날로그 접지(AGND) 루프의 공통 모드 간섭, 그리고 내부 양자화 노이즈가 복합적으로 결합되어 발생합니다. 하드웨어 전원 무결성을 확보하지 않은 상태에서 무작정 이동평균 탭 수를 늘리면 위상 지연으로 인해 폐루프 제어계가 불안정해지므로, 양자화 잡음 바닥(Noise Floor)을 낮추는 체계적인 접근이 필수적입니다.

페이지내용
ADC 노이즈 줄이는 방법: 양자화 잡음과 기준전압(VREF) 무결성 메커니즘
ADC의 변환 결과값은 아날로그 입력 전압($V_{IN}$)과 기준전압($V_{REF}$)의 상대적 비율인 $D = 2^N \times \frac{V_{IN}}{V_{REF}}$에 의해 결정됩니다. 따라서 $V_{REF}$ 레일에 단 1mV의 고주파 스위칭 리플이나 열 드리프트가 인입되어도 변환된 디지털 코드 전체가 직접 비례하여 흔들리게 됩니다.
특히 마이크로컨트롤러(MCU) 내부 디지털 전원 레일($V_{DD}$)을 ADC 기준전압으로 직결할 경우, 내부 코어 로직 스위칭에 따른 수십 mV의 전원 노이즈가 고스란히 유효 비트 수(ENOB)를 갉아먹게 됩니다. 이를 방어하기 위해서는 저잡음 전용 밴드갭 기준전압 IC(예: REF30xx 계열)를 배치하고, 고주파 임피던스를 차단하는 디커플링 회로망을 구축해야 합니다.
"SAR ADC의 기준전압 입력 핀(VREF)은 변환 클록 주기마다 동적 스위칭 전하를 요구합니다. 이로 인해 VREF 단자의 전압 강하가 발생하므로, 0.1uF 및 10uF 세라믹 커패시터를 최단 거리로 실장하여 고주파 루프 인덕턴스를 1nH 이하로 억제해야 유효 분해능(ENOB) 손실을 방지할 수 있습니다."
— Texas Instruments Application Report (SBAA208A): Voltage Reference Circuit for Precision SAR ADCs
TI 앱노트의 명시 기준처럼, 기준전압 핀의 기생 인덕턴스는 내부 비교기 스위칭 시 전압 드룹을 일으켜 주기적 노이즈를 형성합니다. 따라서 전원단 분리와 함께 인쇄회로기판(PCB)의 분리된 아날로그 접지 플레인 관리가 필수적입니다.

오버샘플링과 데시메이션: $4^w$ 비트 확장 원리와 백색잡음 분산
양자화 노이즈는 입력 신호의 대역폭 전반에 걸쳐 백색 가우시안 잡음(White Gaussian Noise) 형태로 균일하게 분산됩니다. 샘플링 주파수($f_s$)를 나이퀴스트 주파수($2f_{in}$)보다 훨씬 높게 설정하는 오버샘플링을 적용하면, 동일한 총 양자화 잡음 전력이 더 넓은 주파수 대역($0 \sim f_s/2$)으로 얇게 펼쳐집니다.
원하는 신호 대역 이외의 노이즈를 디지털 저역통과 필터로 잘라내고 다운샘플링(데시메이션)을 수행하면 신호 대 잡음비(SNR)를 비약적으로 개선할 수 있습니다. 추가 분해능 $w$ 비트를 획득하기 위한 오버샘플링 배수(OSR) 산출 공식은 다음과 같습니다.
$$f_{os} = 4^w \cdot f_s \quad , \quad D_{out} = \frac{\sum_{i=1}^{4^w} D_{raw,i}}{2^w} = \left(\sum_{i=1}^{4^w} D_{raw,i}\right) \gg w$$
- w: 추가로 얻고자 하는 분해능 비트 수 (예: 12비트 ADC를 14비트로 확장 시 $w=2$)
- OSR ($4^w$): 누적해야 하는 연속 샘플링 횟수 ($w=2$일 때 16배, $w=4$일 때 256배)
- 필수 전제조건: 신호에 최소 1 LSB 이상의 백색 노이즈(Dither)가 인입되어 있어야 통계적 평균화가 성립
위 공식에 따라 12비트 ADC를 14비트로 확장하려면 16개의 연속 샘플을 합산한 뒤 $2^2=4$로 나누어야(우측 2비트 시프트) 합니다. 단순 16회 산술평균(16으로 나누기)을 수행하면 유효 해상도 확장 없이 노이즈만 감소하지만, 누적합을 $2^w$로 스케일링하면 14비트의 확장된 동적 범위를 온전히 확보할 수 있습니다.
| 필터링 기법 | 노이즈 감쇄 성능 | 위상 지연 (응답 속도) | 메모리 및 연산 부하 | 최적 적용 환경 |
|---|---|---|---|---|
| 하드웨어 RC 필터 | 고주파 대역 차단 (-20dB/dec) | 아날로그 시정수($\tau = RC$) 의존 | CPU 부하 0% | 안티앨리어싱 및 고주파 스파이크 차단 |
| 이동평균(Moving Average) | 주기적 리플 상쇄 우수 | 윈도우 크기($N/2$) 비례 지연 | 버퍼 링큐 필요, 가산기 연산 | 50/60Hz 상용 전원 험 노이즈 제거 |
| 1차 IIR 지수 필터 | 저주파 노이즈 평활화 탁월 | 가중치 계수($\alpha$)에 따라 조절 | 극소 (이전 상태 변수 1개) | MCU 메모리가 극도로 제약된 센서 노드 |
| 오버샘플링+데시메이션 | SNR 대폭 개선 및 비트 확장 | 샘플 획득 주기만큼 지연 | 누적 레지스터 필요 (오버플로 주의) | 정밀 체중계, 온도 계측, 배터리 모니터 |
위 비교표에서 볼 수 있듯이 고속 제어 루프에서는 메모리 점유율이 낮고 연산이 빠른 1차 IIR 필터가 선호되는 반면, 정적 직류 정밀 계측에서는 오버샘플링 데시메이션 기법이 최선의 선택지가 됩니다.

실전 펌웨어 구현: 16배 오버샘플링과 비트연산 IIR 저역통과 필터
부동소수점 연산 장치(FPU)가 없는 저비용 마이크로컨트롤러에서도 실시간성을 보장할 수 있도록 고정소수점 비트 시프트 연산을 적용한 ADC 노이즈 필터링 드라이버 코드입니다. 12비트 원시 데이터를 14비트로 확장하는 오버샘플링 루틴과 정수형 IIR 지수 이동평균 루틴으로 구성됩니다.
#include <stdint.h>
// 12-bit ADC 샘플 16개를 14-bit 확장 분해능 데이터로 변환 (w=2, OSR=16)
uint16_t ADC_Oversample_14Bit(const uint16_t *raw_samples) {
uint32_t accumulator = 0;
// 16개 샘플 누적합 연산 (최대 4095 * 16 = 65,520 -> 16비트 오버플로 방지)
for (uint8_t i = 0; i < 16; i++) {
accumulator += raw_samples[i];
}
// 2^w = 2^2 = 4로 나누기 (우측 2비트 시프트) -> 최대 16,380 (14-bit 스케일)
return (uint16_t)(accumulator >> 2);
}
// 부동소수점 없는 고속 1차 IIR 정수형 지수 필터: Y[n] = Y[n-1] + alpha * (X[n] - Y[n-1])
// alpha_shift = 3 설정 시 alpha = 1/8 (12.5% 반영)
uint16_t ADC_Apply_IIR_Filter(uint16_t current_sample, uint16_t prev_filtered, uint8_t alpha_shift) {
int32_t diff = (int32_t)current_sample - (int32_t)prev_filtered;
// 비트 시프트를 통한 제산 처리 (FPU 부하 0)
int32_t step = diff >> alpha_shift;
return (uint16_t)(prev_filtered + step);
}위 코드에서 `accumulator >> 2` 처리는 추가된 2비트 해상도를 유지하면서 잡음 바닥을 억제하는 핵심 수식입니다. 또한 정수형 IIR 필터는 분기문 없이 산술 시프트만으로 구현되어 인터럽트 서비스 루틴(ISR) 내부에서도 단 수 사이클 만에 실행을 완료할 수 있습니다.
ADC 하드웨어 노이즈 차단 실무 체크리스트
- 전원 분리: 아날로그 전원($V_{DDA}$) 핀은 디지털 전원($V_{DD}$)과 페라이트 비드(Ferrite Bead) 및 10uF 탄탈/MLCC 파이(π) 필터로 격리한다.
- 스타 접지(Star Ground): AGND와 DGND는 단일 지점에서 결합하며, ADC 칩 직하단에 비드를 통하지 않고 0옴 저항 또는 순수 동박으로 직결한다.
- 입력단 안티-킥백 필터: ADC 샘플링 스위치 킥백 전하를 흡수할 수 있도록 입력 핀 직전에 $20\Omega \sim 50\Omega$ 저항과 C0G/NP0 등급의 $1\text{nF}$ 커패시터를 2mm 이내에 배치한다.
- 고속 스위칭 신호 교차 금지: SPI, PWM, 클록 라인이 아날로그 센서 트레이스 하부 레이어를 가로지르지 않도록 라우팅 차폐를 보장한다.

실무 엔지니어링 FAQ
Q1. 입력 신호에 노이즈가 전혀 없는 이상적인 환경에서도 오버샘플링 효과가 나타납니까?
나타나지 않습니다. 오버샘플링 데시메이션이 동작하기 위한 절대 조건은 양자화 레벨 사이에 걸쳐 있는 최소 1 LSB 피크-투-피크 진폭의 백색 잡음(Dither)입니다. 잡음이 0이면 모든 오버샘플링 결과가 동일한 고정 정수값으로 수렴하여 시프트 연산 후에도 분해능 확장이 불가능해지므로, 정밀 시스템에서는 의도적으로 미세 삼각파 디더 노이즈를 주입하기도 합니다.
Q2. STM32 MCU 내부 하드웨어 오버샘플러(Hardware Oversampler)를 쓰면 어떤 이점이 있습니까?
소프트웨어 개입 및 인터럽트 오버헤드 없이 DMA를 통해 최종 데시메이션된 결과값만 수신할 수 있습니다. STM32G4나 L4 시리즈에 탑재된 하드웨어 오버샘플러는 최대 256배 누적 및 우측 최대 8비트 시프트를 하드웨어 레지스터 레벨에서 자동 수행하여 CPU 클록 소모와 인터럽트 지연을 0으로 줄여줍니다.
Q3. 중간값 필터(Median Filter)와 이동평균 필터를 함께 쓰면 노이즈 제거에 더 좋습니까?
전원 스파이크나 릴레이 스위칭 서지가 유입되는 환경에서 최상의 조합입니다. 중간값 필터는 이상치(Outlier) 스파이크를 완벽하게 제거하고, 후단의 이동평균 필터는 잔여 가우시안 랜덤 노이즈를 평탄화합니다. 단, 정렬 알고리즘에 따른 CPU 연산 부하가 수반되므로 윈도우 크기는 5~7개 샘플 이내로 제한하는 것이 바람직합니다.
공식 기술 규격 및 데이터시트 레퍼런스
이 글은 정보 제공을 목적으로 작성되었으며, 실제 기기·환경·정책에 따라 결과가 다를 수 있습니다. 보다 정확하고 최신인 정보는 아래 공신력 있는 기관의 자료를 함께 참고하시기 바랍니다.





