전극에서 ADC까지 — 처음부터 끝까지 한 번에
한 줄 요약 — 실제 설계는 앞에서 뒤로 한 번에 흐르지 않습니다. 되돌아간 지점까지 그대로 적은 기록입니다.
목표
| 항목 | 값 |
|---|---|
| 신호원 | 전극, 1 MΩ @ 1 kHz, 50 µVrms |
| 대역 | 0.5 Hz ~ 5 kHz |
| 전극 반전위 | ±300 mV DC (신호의 6000배) |
| 간섭 | 60 Hz, 입력환산 5 mVrms |
| 목표 SNR | 20 dB 이상 |
| 채널 | 8 |
| 전원 | +3.3 V 단일 |
| ADC | 12비트, 0~3.3 V |
16-00 방법론의 8단계를 따르되, 막힌 곳과 되돌아간 곳을 지우지 않고 적습니다.
1단계 — 가능한가부터
목표 SNR 20 dB → 잡음이 5 µVrms 이하여야 합니다. 잡음 대역폭잡음 대역폭 noise equivalent bandwidth실제 필터가 통과시키는 잡음의 양을 같은 양의 잡음을 통과시키는 이상적인 벽돌담 필터의 폭으로 바꾼 값입니다.자세히 보기 →은 1차 필터라 kHz.
mu이동도mobilitym²/V·se_n, 잡음 잡음 전압 밀도noise noise voltage densityV/√Hz전극 자체의 열잡음열잡음 thermal noise모든 저항이 온도 때문에 내는 피할 수 없는 잡음으로, 측정의 바닥을 정합니다.자세히 보기 →:
e_n입력 환산 전압 잡음 밀도input-referred voltage noise densityV/√Hz129 > 56 — 불가능합니다.
⚠️ 여기서 멈춰야 합니다. 회로를 아무리 잘 만들어도 전극이 이미 목표의 2.3배를 냅니다. 소자 탓이 아니라 물리입니다.
되돌아가서 고를 것 셋:
| 바꿀 것 | 어떻게 | 대가 |
|---|---|---|
| 대역을 좁힌다 | 5 kHz → 1 kHz | 빠른 성분을 잃음 |
| 전극 임피던스를 낮춘다 | 면적↑, 표면 처리 | 공간 해상도↓ |
| 목표 SNR 을 낮춘다 | 20 → 14 dB | 후처리 부담 |
대역 1 kHz 로 재계산: kHz, nV/√Hz.
129 vs 126 — 여전히 아슬아슬합니다. 전극만으로 목표를 다 씁니다.
최종 판단: 대역 1 kHz + 목표 SNR 18 dB. 그러면 허용 잡음 6.3 µV, nV/√Hz. 전극 129 를 빼면 회로에 남는 몫은
93 nV/√Hz — 이제 넉넉합니다. 첫 단 소자를 고를 기준이 생겼습니다.
2단계 — 첫 단: 무엇을 쓸 것인가
| 후보 | 잡음 | 입력 전류 | 판정 |
|---|---|---|---|
| 저잡음 바이폴라 (OPA211) | 1.1 nV/√Hz | 60 nA | ✗ 1 MΩ × 60 nA = 60 mV 오프셋 |
| FET 입력 (OPA140) | 5.1 nV/√Hz | 0.5 pA | ✓ 0.5 µV 오프셋 |
| CMOS 저전력 (OPA333) | 55 nV/√Hz | 70 pA | △ 잡음이 예산의 60% |
| 계측 증폭기 (INA333) | 50 nV/√Hz | 70 pA | ✓ CMRR동상신호 제거비 CMRR두 입력에 똑같이 들어온 간섭을 얼마나 지워 내는지를 나타내며, 차동 측정의 값어치가 여기서 나옵니다.자세히 보기 → 내장 |
바이폴라는 잡음이 가장 좋은데 못 씁니다. 입력 바이어스 전류입력 바이어스 전류 input bias currentOP앰프 입력이 스스로 빨아들이는 작은 전류로, 고임피던스 신호원에서는 이것이 곧 오프셋 전압이 됩니다.자세히 보기 →가 1 MΩ 을 지나며 60 mV 오프셋을 만들고, 그건 신호의 1200배입니다.
계측 증폭기를 고릅니다. 잡음 50 nV/√Hz 는 예산 93 안이고, 무엇보다 CMRR 을 소자가 보장합니다 — 01 값을 정하는 순서에서 봤듯이 개별 저항으로 CMRR 을 맞추는 것은 지는 싸움입니다.
3단계 — 첫 단 이득: 간섭이 상한을 정합니다
여기가 이 설계에서 가장 중요한 판단입니다.
신호만 보면 이득을 크게 할수록 좋습니다 (뒷단 잡음이 묻히므로). 그런데 간섭이 같이 증폭됩니다.
| 성분 | 입력 | 이득 100 | 이득 10 |
|---|---|---|---|
| 신호 | 50 µV | 5 mV | 0.5 mV |
| 60 Hz 간섭 | 5 mV | 500 mV | 50 mV |
| DC 반전위 | ±300 mV | ±30 V ✗ | ±3 V ✗ |
DC 반전위가 먼저 터집니다. 3.3 V 단일 전원에서 ±300 mV 를 10배만 해도 ±3 V — 레일에 붙습니다.
핵심: DC 를 먼저 없애고 증폭해야 합니다. 순서가 거꾸로면 아무리 좋은 소자를 써도 포화합니다.
그런데 고역통과를 첫 단 앞에 두면 그 커패시터가 전극과 직렬이 되어 로딩로딩 loading뒷단이 앞단에서 전류를 끌어가면서 신호가 줄어드는 현상으로, 고임피던스 신호원에서 특히 심합니다.자세히 보기 →을 만듭니다. 0.5 Hz 를 통과시키려면 F — 필름으로는 크고, 전해는 누설이 있습니다.
해결: 계측 증폭기의 레퍼런스 핀에 DC 서보DC 서보 DC servo출력의 DC 성분을 적분해 입력에서 되빼는 귀환 회로로, 저주파를 덜 잃으면서 오프셋을 지웁니다.자세히 보기 → 를 겁니다. 출력의 DC 를 적분해 REF 로 되먹이면, 입력에 커패시터를 달지 않고도 DC 가 빠집니다.
첫 단 이득 10 으로 정합니다. 간섭 50 mV 는 3.3 V 안에 넉넉히 들어갑니다.
4단계 — 60 Hz 를 어떻게 없앨 것인가
이득 10 뒤에도 간섭 50 mV 가 신호 0.5 mV 의 100배입니다. 이걸 먼저 없애지 않으면 뒷단 이득 200 을 못 겁니다 (50 mV × 200 = 10 V).
순서대로 시도합니다 — 싼 것부터.
| 방법 | 얻는 것 | 대가 |
|---|---|---|
| 1. CMRR (계측 증폭기) | 이미 90 dB → 5 mV → 0.16 µV | 공짜 |
| 2. 우측 다리 구동 (DRL) | 추가 20~30 dB | OP앰프 1개 |
| 3. 차폐·꼬임선 | 결합 자체를 줄임 | 케이블 값 |
| 4. 60 Hz 노치 | 확실 | 신호도 잃음, 위상 왜곡 |
1번만으로 끝납니다. CMRR 90 dB 면 5 mV 공통모드가 0.16 µV 로 줄어 신호 50 µV 의 0.3% 입니다.
⚠️ 단, 두 전극의 임피던스가 다르면 CMRR 이 무너집니다. 공통모드가 서로 다른 분압을 거쳐 차동으로 바뀌기 때문입니다.
CMRR동상 신호 제거비common-mode rejection ratiodBZ_electrode전극 임피던스electrode impedanceΩZ_in입력 임피던스input impedanceΩ= Ω, = 200 kΩ(전극 편차 20%)이면 = 94 dB — 소자의 90 dB 와 비슷합니다. 통과.
이 이었다면 500 = 54 dB 로 무너집니다. 계측 증폭기의 입력 임피던스가 왜 중요한지가 이 계산입니다.
5단계 — 게인 배분과 레벨표
총 이득: 신호 50 µV → ADC 풀스케일의 80%(2.64 Vpp ≈ 0.93 Vrms) 목표.
A_total전체 이득total gain너무 큽니다. 1.5 Vpp 만 쓰기로 하고 → 실무적으로 10000.
| 단 | 이득 | 누적 | 신호 | 간섭(60 Hz) | DC |
|---|---|---|---|---|---|
| 전극 | — | 1 | 50 µV | 5 mV | 300 mV |
| 계측증폭기 | 10 | 10 | 0.5 mV | 0.16 µV (CMRR) | 서보가 제거 |
| HPF 0.5 Hz | 1 | 10 | 0.5 mV | — | 0 |
| 게인 | 200 | 2000 | 100 mV | 0.03 mV | 0 |
| 게인 2 | 5 | 10000 | 0.5 V | 0.16 mV | 0 |
| LPF 1 kHz | 1 | 10000 | 0.5 V | — | — |
헤드룸 확인: 0.5 Vrms = 1.4 Vpp. 중점 1.65 V 기준으로 ±0.7 V — 3.3 V 안에 넉넉합니다. ✓
GBW이득대역폭곱 gain-bandwidth productOP앰프가 낼 수 있는 이득과 대역폭의 곱은 일정하므로, 이득을 키우면 대역이 그만큼 줄어듭니다.자세히 보기 → 확인: 이득 200 단이 1 kHz 를 통과시키려면 GBW ≥ 200 × 1 kHz × 10(여유) = 2 MHz. 흔한 값입니다. ✓
6단계 — 다채널: 여기서 또 막힙니다
8채널을 멀티플렉서로 돌리려 했습니다.
tau시정수time constantst_settle정착 시간settling timesMUX 도통 저항 100 Ω, 뒤쪽 용량 50 pF 면 = 5 ns → 45 ns. 빠릅니다.
그런데 MUX 를 어디에 둘 것인가가 문제입니다.
| MUX 위치 | 문제 |
|---|---|
| 전극 바로 뒤 | MUX 누설(1 nA)이 1 MΩ 에서 1 mV — 신호의 20배 ✗ |
| 계측증폭기 뒤 | 채널마다 계측증폭기 8개 필요 (부품↑) |
| 게인단 뒤 | ✓ 신호가 이미 크고 임피던스가 낮음 |
게인단 뒤로 정합니다. 채널당 계측증폭기 + 게인단이 필요하니 부품이 늘지만, 누설과 잡음이 신호를 못 건드립니다.
⚠️ 그러면 채널마다 DC 서보도 하나씩입니다. 8채널 × (INA + OPA + 서보) = 24개 소자. 이것이 다채널 측정의 실제 비용이고, 16-01 의 액티브 어레이가 픽셀에 소스 팔로워소스 팔로워 source follower전압 이득이 1인데도 쓰는 이유는 높은 임피던스를 낮은 임피던스로 바꿔 주기 때문입니다.자세히 보기 →를 두는 이유와 같은 논리입니다.
7단계 — 최종 확인
| 확인 항목 | 계산 | 판정 |
|---|---|---|
| 잡음 | 전극 129 + 회로 50 → 138 nV/√Hz × √1570 = 5.5 µV | ✓ (목표 6.3) |
| SNR | = 19.2 dB | ✓ (목표 18) |
| 헤드룸 | 1.4 Vpp / 3.3 V | ✓ |
| DC 오프셋 | 서보가 ±300 mV 제거 | ✓ |
| 60 Hz | CMRR 90 dB → 0.3% | ✓ |
| 대역 | 0.5 Hz ~ 1 kHz | ✓ (사양을 5 kHz 에서 줄임) |
| 세틀링 | 45 ns × 8 = 0.36 µs ≪ 샘플 주기 | ✓ |
| 전류 | 채널당 3소자 × 0.7 mA = 2.1 mA, 8채널 17 mA | ✓ |
되돌아간 지점 둘: ① 1단계에서 대역 5 kHz → 1 kHz, ② 6단계에서 MUX 를 앞에서 뒤로. 둘 다 계산이 시켰습니다.
시뮬레이션으로 확인
# examples/18-design/electrode-frontend.yaml
meta:
name: 전극 프론트엔드 (1채널)
lesson: docs/18-design/02-electrode-frontend.md
note: RE 를 1MEG / 2MEG 로 바꿔 잡음과 대역이 어떻게 움직이는지 본다
components:
- {ref: VP, type: vdc, value: 3.3}
- {ref: VSIG, type: vac, value: 50u}
- {ref: RE, type: r, value: 1MEG, label: 전극}
- {ref: RPROT, type: r, value: 10k, label: 보호}
- {ref: CIN, type: c, value: 3p, label: 입력 용량}
- {ref: U1, type: opamp, model: OPA333, label: 첫 단 x10}
- {ref: R1, type: r, value: 1k}
- {ref: R2, type: r, value: 9k}
- {ref: CHP, type: c, value: 330n, label: HPF 0.5Hz}
- {ref: RHP, type: r, value: 1MEG}
- {ref: RF, type: r, value: 15.9k}
- {ref: CF, type: c, value: 10n, label: LPF 1kHz}
nets:
VCC: [VP.p, U1.'v+']
SRC: [VSIG.p, RE.1]
IN: [RE.2, RPROT.1]
INP: [RPROT.2, CIN.1, U1.'in+']
FB: [U1.'in-', R1.1, R2.1]
A1: [U1.out, R2.2, CHP.1]
HP: [CHP.2, RHP.1, RF.1]
OUT: [RF.2, CF.1]
GND: [VP.n, VSIG.n, CIN.2, R1.2, RHP.2, CF.2, U1.'v-']
analyses:
- {type: ac, sweep: dec, points: 20, fstart: 0.05, fstop: 100k}
- {type: noise, out: OUT, source: VSIG, sweep: dec, points: 10, fstart: 0.5, fstop: 10k}RE 를 2 MΩ 로 올리면 잡음이 √2 배 되고 CIN 과의 대역도 반이 됩니다 —
1단계에서 “전극 임피던스를 낮춘다”가 왜 선택지였는지 보입니다.
⚖️ 되돌아갈 때 무엇을 포기하는가
| 막힌 곳 | 포기할 수 있는 것 | 대가 |
|---|---|---|
| 잡음이 안 됨 | 대역, 목표 SNR, 전극 크기 | 정보량, 공간 해상도 |
| 포화 | 첫 단 이득 | 뒷단 잡음이 더 보임 |
| 누설 | MUX 위치 | 부품 수 (채널당 소자) |
| 전류 | 채널 수, 샘플링률 | 처리량 |
가장 흔한 실수는 “회로를 더 잘 만들면 되겠지” 입니다. 1단계에서 불가능 판정이 나면 사양이나 신호원을 바꾸는 것 말고 길이 없습니다.
🔌 실제 쓰임새
- 이 구조가 ECG·EEG·EMG·ECoG 상용 장비의 표준입니다
- 온도(RTD)·스트레인 게이지도 같은 흐름 — 신호원 임피던스와 반전위만 다릅니다
- 16-02의 계측 증폭기 예제가 여기 3단계에 해당합니다
⚠️ 이상과 실제의 차이
| 이상 | 실제 |
|---|---|
| 전극 임피던스가 1 MΩ | 주파수에 따라 변하고, 시간이 지나며 오릅니다 |
| 반전위가 ±300 mV | 움직이면 천천히 흘러다닙니다 — 서보 대역을 그보다 위에 |
| CMRR 이 데이터시트대로 | 전극 임피던스 불균형이 실제 CMRR 을 정합니다 |
| 8채널이 독립 | 공통 전원·접지를 통해 서로 섞입니다 (12-03) |
| 계산이 끝나면 설계 끝 | 보드가 오면 04 켜는 순서가 남아 있습니다 |
연습문제
문제 1. 같은 전극으로 SNR 26 dB 를 요구받았습니다. 가능합니까?
exercises/18-02-electrode-band.yaml풀이
26 dB → 잡음 µVrms.
대역 1 kHz( = 1570 Hz)에서 nV/√Hz.
전극만으로 129 nV/√Hz — 불가능합니다.
전극을 그대로 두고 가능한 것은 대역을 줄이는 것뿐입니다:
Delta f대역폭bandwidthHzmu이동도mobilitym²/V·sf_-3 주파수 (-3)frequency (-3)Hzf_n잡음 주파수noise frequencyHz240 Hz 로 줄이면 됩니다. 그런데 그러면 스파이크 성분을 잃습니다.
전극을 바꾸는 쪽: 임피던스를 1/4(250 kΩ)로 낮추면 잡음이 반으로 줄어 = 64 nV/√Hz — 겨우 됩니다. 면적을 4배로 키우거나 표면 처리를 합니다.
“불가능”이 아니라 “무엇을 포기할 것인가”의 문제로 바뀌었습니다. 이것이 1단계 계산의 값어치입니다.
문제 2. 첫 단 이득을 100 으로 올리면 무엇이 먼저 깨집니까?
exercises/18-02-first-stage-gain.yaml풀이
DC 반전위가 먼저입니다. ±300 mV × 100 = ±30 V — 3.3 V 전원에서 말이 안 됩니다.
DC 서보가 잡아 준다고 해도, 서보가 잡기 전 과도 상태에서 레일에 붙고 회복에 서보 시정수(수 초)가 걸립니다. 전극을 붙이는 순간마다 몇 초씩 못 쓰게 됩니다.
그다음이 60 Hz 간섭: 5 mV × 100 = 500 mV. CMRR 로 줄어드니 이건 괜찮습니다.
순서: DC → 간섭 → 헤드룸. 그래서 첫 단 이득은 DC 가 정합니다.
문제 3. 전극 두 개의 임피던스가 1 MΩ 과 1.5 MΩ 입니다. 실효 CMRR 은? 계측 증폭기 입력 임피던스는 Ω.
exercises/18-02-electrode-cmrr.yaml풀이
CMRR동상 신호 제거비common-mode rejection ratiodBZ임피던스impedanceΩZ_in입력 임피던스input impedanceΩ소자의 90 dB 와 합치면(RSS 가 아니라 나쁜 쪽이 지배) 약 84.6 dB.
5 mV 공통모드가 µV 로 남습니다. 신호 50 µV 의 0.6% — 아직 괜찮습니다.
⚠️ 그런데 전극이 마르면서 한쪽이 5 MΩ 이 되면 = 4 MΩ, CMRR = 68 dB, 간섭 2 µV — 신호의 4% 입니다. 전극 임피던스를 주기적으로 재야 하는 이유가 이것입니다 (14-03).
이전 ← 01 값을 정하는 순서 | 다음 → 03 EasyEDA로 그리기