발진기를 만드는 것은 어렵다
(lcamtuf.substack.com)- 발진기 회로 설계의 핵심 원리와 실제 구현의 어려움을 단계적으로 설명
- 단일 MOSFET 회로가 안정점 때문에 발진하지 않는 이유를 분석하고, 이를 해결하기 위한 Schmitt 트리거 구조 제시
- Schmitt 트리거를 기반으로 한 릴랙세이션 발진기를 구성해 약 3 kHz의 안정적 주파수를 구현
- 이후 연산 증폭기(op-amp) 를 이용한 간단한 발진 회로를 소개하고, 이론 계산과 실제 측정값의 차이를 비교
- 마지막으로 위상 이동(phase-shift) 발진기를 통해 RC 필터의 위상 변화로 사인파형 생성 원리를 설명하며, 아날로그 회로 설계의 정밀성과 실험적 검증의 중요성 강조
발진기의 기본 개념과 어려움
- 발진기의 핵심 조건은 신호 이득(gain) 존재이며, 이득이 없으면 진동이 감쇠함
- 증폭 회로가 우연히 발진하는 경우도 있으나, 안정적 아날로그 발진기를 직접 설계하기는 어렵다고 설명
- 인터넷에서 흔히 볼 수 있는 발진 회로는 불안정하거나 특수 부품(센터탭 인덕터, 백열전구 등)을 필요로 함
- 목표는 이해하기 쉽고 주파수가 예측 가능한 발진기를 외부 참고 없이 직접 구성하는 것
단일 MOSFET 발진 시도의 한계
- n채널 MOSFET을 스위치처럼 사용해 발진을 시도하지만, 실제로는 안정 평형점이 존재해 진동이 멈춤
- 예시로 BS170 트랜지스터의 Vgs–Id 곡선을 제시하며, 약 2 V 부근에서 300 µA 전류가 흐르는 안정 상태 형성
- 이 상태는 “스위치가 반쯤 켜진” 상태와 같아 발진이 지속되지 않음
Schmitt 트리거를 이용한 안정적 스위칭
- 중간 안정점이 없는 전자 스위치로서 Schmitt 트리거 회로를 제시
- 입력이 0 V일 때 오른쪽 트랜지스터가 도통하며, 입력이 약 2.6 V를 넘으면 왼쪽 트랜지스터가 켜지고 오른쪽이 꺼짐
- 이 과정에서 양의 피드백이 발생해 회로가 중간 상태에 머무르지 않음
- 입력 전압이 2.6 V에서 켜지고 2.2 V에서 꺼지는 400 mV 히스테리시스 형성
Schmitt 트리거 기반 릴랙세이션 발진기
- Schmitt 트리거 출력 신호를 입력으로 되먹임하고, 저항–커패시터(RC) 지연을 추가해 발진 주파수 제어
- 5 V 전원에서 약 3 kHz의 발진 주파수 관측
- 커패시터 전압이 2.2 V~2.6 V 사이에서 진동하며, 충전·방전 시간은 각각 154 µs, 167 µs로 계산
- 회로를 단순화할 수 있으나, 더 적은 부품으로는 연산 증폭기(op-amp) 사용이 효율적임
연산 증폭기 릴랙세이션 발진기
- R1 = R2 = R3 구성 시, 비반전 입력은 전원·접지·출력의 평균 전압(⅓~⅔ Vsupply) 유지
- 초기 상태에서 커패시터가 0 V이므로 출력이 상승하고, 이후 커패시터가 충전되며 ⅔ Vsupply에 도달하면 출력이 반전
- 커패시터가 ⅔ → ⅓ Vsupply로 방전되며 주기적 발진 발생
- 5 V 회로, Rcap = 10 kΩ, C = 1 µF일 때 이론상 75 Hz, 실제 측정은 70 Hz
- 오차 원인은 비상수 전류 근사의 한계이며, R3를 47 kΩ으로 조정하면 더 정확한 결과 도출
주파수 계산과 일반식
- R1 = R2일 때 두 저항을 병합해 전압 분배식으로 단순화 가능
- 커패시터 전압이 ½ Vsupply 중심에서 진동하므로, 평균 전류를 이용해 t = Δv · C / I 형태로 주기 계산
- 예시 값(R1 = R2 = 10 kΩ, R3 = 47 kΩ)으로 실제 주파수 도출
위상 이동(Phase-Shift) 발진기
- 연산 증폭기 전압 팔로워의 음의 피드백을 변형해 특정 주파수에서 위상 반전을 유도
- RC 저역통과 필터를 연속 연결해 각 단계에서 -60°씩, 총 -180° 위상 이동을 달성
- 각 RC 단계의 아크탄젠트(Arctan) 관계식을 이용해 해당 주파수 계산
- 세 단계 모두 동일한 결과를 가지며, 위상 반전 주파수에서 발진 발생
파형 특성과 시뮬레이션
- 증폭기 이득이 제한되지 않아 출력은 사각파 형태지만, RC 필터를 거친 파형은 사인파에 근접
- 시뮬레이션 결과, 사각파(파란색)와 사인파(회색)의 거동이 거의 일치
- 출력 파형을 순수 사인파로 만들려면 이득을 조정하거나 비반전 입력 신호를 증폭하는 방법 사용
회로 설계상의 고려
- 각 RC 단계의 임피던스를 10배씩 증가시켜 상호 부하 효과를 최소화
- 동일 임피던스일 경우, 전체 여섯 부품의 전달 함수 계산이 복잡해짐
- 문헌에서는 고역통과(high-pass) 필터와 단일 트랜지스터를 사용하는 방식도 있으나, 실제 구현은 까다로움
- 본문 회로는 Electronic Design 기사에서 논의된 저왜곡 사인·사각파 발생기 구조 기반
Hacker News 의견
-
오래된 전자공학 농담 중에 “발진기를 만들고 싶으면 증폭기를 만들어보라”는 말이 있음
80년대에 읽은 Television Magazine 기사에서 Philips 라디오의 서비스 노트를 다루던 글이 떠올랐음
거기엔 “Fix VIUPS”라는 수리 지시가 있었는데, 저항 몇 개와 커패시터 몇 개를 바꾸는 정도였음
저자는 그게 뭔지 궁금해서 Philips 본사까지 연락했는데, 결국 엔지니어가 “VIUPS는 고장 났을 때 나는 소리 이름임”이라고 답했다고 함 — “VIUPS VIUPS VIUPS”- 내가 들은 버전은 “증폭기는 발진하고, 발진기는 발진하지 않는다”였음
- 이건 no-input 테크닉으로 쉽게 시연할 수 있음. 오디오 믹서의 출력을 입력으로 다시 연결하면 피드백이 생기고, 그로부터 다양한 톤을 만들 수 있음
다만 조심해서 해야 함 — 시연 영상 - 공감됨, 진짜 공명(resonates) 하는 이야기임
- AM 라디오로 이웃을 괴롭히는 가장 쉬운 방법은 재생형 AM 수신기의 이득을 너무 높이는 것임
그러면 발진해서 같은 주파수로 소음을 방출함. 여기에 탄소 마이크를 추가하고 게인을 최대로 하면 간단한 AM 송신기가 됨
-
LC 발진기는 만들기 꽤 쉬움
나는 무작위 회로 토폴로지를 생성하고 SPICE 시뮬레이션으로 발진 여부를 찾는 프로그램을 만들었음
그 결과, 가장 단순한 형태는 인덕터 1개, 커패시터 2개, 저항 1개, 트랜지스터 1개로 구성된다는 걸 발견했음
이 회로군을 “LCCRT 발진기”라 부르고, 가능한 조합을 모두 생성해보니 12개의 고유한 토폴로지가 있었음
실제로 테스트해보니 안정적이었고, 금속 탐지기에도 사용했음 — 프로젝트 링크- “새로운” 발진기라지만 사실 전부 콜피츠(Collpitts) 발진기의 변형임. 이미 100년 전에 연구된 구조들이라 겸손이 필요함
- CS 전공자로서 전자공학 입문 수준인데, 왜 글이 LC 발진기가 아닌 트랜지스터 중심인지 궁금했음
- 멋짐! Q-팩터 기준으로 분류해보면 더 흥미로울 듯함
- 접근 방식이 인상적이었음. 저장소를 구경하면서 영감을 많이 받았음
- Hacker News에 글 올리면 항상 이런 일 생김 — 누군가가 지식으로 압도함
-
어릴 때 전자공학을 시작했을 때, 발진기를 만들려면 증폭기를 만들고, 증폭기를 만들려면 발진기를 만들게 됐음
7살짜리의 야망은 기술보다 컸음. 수많은 시도 끝에야 증폭기가 발진하지 않게 만들 수 있었음
저항 색 코드를 읽는 법도 몰랐지만, 안다고 착각했음- “7살의 야망”이라는 말이 너무 좋음. 절대 잃지 말아야 할 태도임
- 종종 우리를 막는 건 “이건 불가능하다”는 성숙한 이해심임
- 3살짜리의 “왜?”와 7살짜리의 야망을 합치면 세상에서 가장 생산적인 천재가 나올지도 모름
-
기사에 나온 전구(lightbulb) 이야기를 짧게 설명하고 싶음
발진기에서 깨끗한 사인파를 얻는 게 어려운 이유는 이득 안정화 때문임
이득이 너무 낮으면 진동이 사라지고, 너무 높으면 포화되어 고조파가 생김
전구는 짧은 시간에는 선형 저항처럼, 긴 시간에는 비선형 저항처럼 동작함
필라멘트가 가열되면 저항이 증가하므로, 이를 이용해 자기 안정화 발진기를 만들 수 있음
전구를 증폭기의 이득 조정 저항으로 사용하면 거의 완벽한 사인파를 얻을 수 있음 -
발진기는 단순히 이득을 위상 지연(>90도) 주위에 걸어주는 것임
문제는 얼마나 예측 가능하고 안정적이게 만들 수 있느냐임
외부 요인(온도, 전압, 시간 등)에 덜 민감하게 만드는 게 핵심이며, 이를 위해선 Allan Variance 같은 개념을 참고하면 좋음- “부엉이의 나머지를 그려라” 밈처럼, 발진기 만드는 건 말처럼 쉽지 않음
진공관 발명 이후에도 안정적인 발진기를 만드는 데 오랜 시간이 걸렸음
결국 성공한 회사가 있었는데, 그게 바로 Hewlett-Packard였음
- “부엉이의 나머지를 그려라” 밈처럼, 발진기 만드는 건 말처럼 쉽지 않음
-
발진기의 발명은 사실 우연한 사고였다고 읽은 적 있음
누군가 증폭기를 만들다 입력과 출력을 잘못 연결해 “삐익” 소리를 냈고, 그게 발진기의 시작이었음
당시엔 고주파를 만들기 위해 AC 발전기를 사용했는데, 15kHz 정도가 한계였음
이 실수로부터 양의 피드백 개념이 생겼고, 이후 고전적인 발진기 회로들이 등장했음 -
언급되지 않은 두 가지 회로가 있음
하나는 “Two Transistor Metronome”으로, 아버지와 함께 7~8살 때 만들었음
두 트랜지스터가 일종의 SCR처럼 동작하는 릴랙세이션 발진기임 — 회로 링크
Roland TB303이나 Korg MS 시리즈의 발진기도 이와 유사한 구조를 사용함- 내가 생각한 건 Astable Multivibrator였음. 아마 같은 회로일 듯
일반적으로 NPN 트랜지스터 두 개를 사용하는 버전이 많음 — 참고 링크
- 내가 생각한 건 Astable Multivibrator였음. 아마 같은 회로일 듯
-
기타 이펙터를 디버깅하려고 신호 인젝터를 만들어봤음
Astable Multivibrator가 너무 많은 고조파를 만들어서 입력단에서도 들릴 정도였음
거의 Juggernaut처럼 신호를 밀어붙이는 느낌이었음
필터를 배우는 좋은 계기였고, 결국 깨끗한 사인파를 만들어낼 수 있었음 -
발진기가 어려운 이유는 우리가 요구하는 정확도(spec) 가 너무 높기 때문임
예를 들어 시계용 발진기는 단 5개의 부품으로 구성되지만, 하루에 1초 오차 이내(100ppm)를 요구함
전력, 시동, 온도 안정성 등 모든 조건을 만족시키는 게 어렵음
단순히 진동만 원한다면 노이즈 제너레이터를 만들면 됨
초보자에게는 555 타이머가 가장 쉬운 발진기임. ±10% 정도의 오차는 있지만 대부분의 용도엔 충분함
555는 비교기 2개, 전압 분배기, 커패시터로 구성된 단순한 구조임
하지만 현대 회로는 더 빠르고 정확해야 하므로, 초보자용 글이라면 555 중심으로 설명하는 게 좋음 -
음악 중심의 전자공학에 관심 있다면 Moritz Klein의 YouTube 채널을 추천함
- 링크를 보자마자 Moritz Klein일 거라고 바로 알았음