세 단계의 역할을 분리합니다
첫째, 클록(clock)은 반복되는 사각파를 공급합니다. 적분기는 클록을 생성하는 장치가 아니므로 클록 입력이 외부에서 들어오는지, 별도 발진 회로가 있는지 확인합니다. 둘째, 반전 적분기의 입력 저항 R과 피드백 커패시터 C는 각 클록 상태에서 출력의 기울기를 정합니다. 셋째, 비교기는 삼각파와 제어 전압 V_CTRL을 비교해 두 파형이 교차할 때 출력 상태를 바꿉니다. 그림처럼 V_CTRL이 비반전 입력(+), 삼각파가 반전 입력(−)에 들어가면, 비교기의 정상 동작 범위에서 V_CTRL > V_TRI인 동안 PWM 출력은 HIGH입니다. 입력을 바꾸면 HIGH 구간도 뒤집힙니다.
삼각파의 최고·최저 전압을 각각 V_MAX, V_MIN이라고 하고 두 기울기의 크기가 같다면, V_CTRL이 그 사이에 있을 때 높은 상태의 듀티비(duty cycle, 한 주기에서 높은 상태가 차지하는 시간의 비율)는 대략 (V_CTRL−V_MIN)/(V_MAX−V_MIN)입니다. 제어 전압이 이 범위를 벗어나면 이상적으로 0% 또는 100% 상태에 붙습니다. 실제 비교기에서는 입력 공통 모드 범위(common-mode range), 출력 형식과 지연도 확인해야 합니다. 연산증폭기를 비교 용도로 쓴다면 포화 후 복귀 시간도 부품 자료에서 확인합니다. 오픈드레인(open-drain) 출력이라면 HIGH를 만들 풀업 저항이 필요합니다.
톱니파(sawtooth ramp)는 한 방향으로 천천히 변하다가 짧은 시간에 시작점으로 돌아오는 파형입니다. 삼각파 대신 상승하는 톱니파를 비반전 입력(+)에, 제어 전압을 반전 입력(−)에 넣으면 출력은 톱니파가 제어 전압보다 높아진 뒤부터 다음 초기화 직전까지 HIGH가 됩니다. 앞 문단의 연결과는 HIGH가 되는 쪽이 반대이므로, 제어 전압을 올리면 HIGH 시간이 줄어듭니다. 선형 상승과 순간 초기화를 가정한 이상적인 듀티비는 1−(V_CTRL−V_MIN)/(V_MAX−V_MIN)입니다.
예를 들어 한 주기가 100 µs(마이크로초)이고 톱니파가 0에서 500까지 같은 임의의 세로축 눈금으로 선형 상승한다고 해 보겠습니다. 기준선을 그 눈금의 200에 두면 교차 시점은 100 µs×(200/500)=40 µs입니다. 따라서 처음 40 µs는 LOW, 다음 60 µs는 HIGH이며, 이상적인 듀티비는 60/100=60%입니다. 주기 100 µs가 실제로 유지된다는 가정에서만 반복 주파수는 1/(100 µs)=10 kHz입니다. 0~500과 200은 전압 단위가 확인된 값이 아니며, 이 계산은 실측 전압·주파수나 출력 HIGH 전압을 보증하지 않습니다. 실제 회로에서는 톱니파와 기준선의 전압 범위가 비교기 입력 허용 범위 안에 있는지, 초기화 시간과 전파 지연이 40/60 µs 경계를 얼마나 바꾸는지 확인해야 합니다.
단극성 클록을 그대로 적분하면 삼각파가 유지되지 않습니다
반전 적분기에서 비반전 입력의 기준을 0 V로 두고 부품이 정상 선형 범위에서 움직인다면 dV_TRI/dt = −V_IN/(R C)입니다. 0~5 V 클록은 HIGH일 때 음의 기울기를 만들고 LOW=0 V일 때는 이상적으로 기울기 0입니다. 한 주기 평균 입력이 양수라면 출력의 기준선이 계속 내려갑니다. 원점으로 돌아오는 반복 삼각파가 되려면 기준 전압을 옮겨 입력의 양·음 면적을 같게 만들거나, 기준에 대해 대칭인 클록을 넣거나, 커패시터를 정해진 시점에 초기화하는 경로가 필요합니다. 리셋 방식은 톱니파를 만들 수 있으므로 파형의 모양도 직접 확인합니다.
설명용으로 ±2 V가 번갈아 나오는 1 kHz 클록, R=100 kΩ, C=10 nF를 가정해 보겠습니다. R C=1 ms, 반주기는 0.5 ms이므로 각 반주기 동안의 이상적인 출력 변화량은 2 V×0.5 ms/1 ms=1 V입니다. 초기 전압을 적절히 잡고 증폭기가 필요한 전압 범위를 낼 수 있다면, 출력은 예를 들어 −0.5~+0.5 V 사이를 오갈 수 있습니다. 이때 제어 전압 0 V의 이상적인 듀티는 50%, +0.25 V의 듀티는 약 75%입니다. 이 수치는 회로 그림의 측정 결과가 아니라 조건을 명시한 계산 예시입니다. 단일 0~5 V 전원에서는 −0.5 V 출력이 불가능하므로 중간 기준 전압을 두는 등 전원 구성을 다시 설계해야 합니다.

처음 구동할 때 확인할 파형
- 비교기를 빼고 클록의 HIGH·LOW 전압, 주파수, 듀티와 적분기 기준 전압을 측정합니다. 한 주기 평균 입력이 기준에서 0인지 계산합니다.
- 적분기 출력의 각 구간 기울기를
−(V_IN−V_REF)/(R C)와 비교합니다. 주기마다 기준선이 이동하거나 평평해지면 평균값, 전원 레일, 초기 전압과 입력·출력 허용 범위를 살펴봅니다. - 삼각파의 실제
V_MIN과V_MAX를 측정한 뒤 제어 전압을 그 중간에 둡니다. 비교기 입력 극성에 맞춰 약 50% 듀티가 나오는지 확인합니다. - 제어 전압을 조금씩 올리고 내리면서 듀티가 어느 방향으로 바뀌는지 측정합니다. 빠른 클록이라면 비교기 전파 지연과 출력 상승·하강 시간, 연산증폭기의 슬루율(slew rate, 출력 전압이 변할 수 있는 최대 속도)도 확인합니다.
클록·저항·커패시터·전원·비교기 부품값이 없는 블록 그림만으로 실제 주파수, 듀티 정확도나 최대 출력 부하를 말할 수는 없습니다. 먼저 적분기가 지속되는 파형을 만드는지 확인하고 그다음 비교기 출력을 평가해야 합니다.
비교기에서 원하는 PWM 파형을 얻었다고 해서 다음 회로에 필요한 전류까지 비교기 출력이 낼 수 있는 것은 아닙니다. 출력 형식과 허용 소스·싱크 전류, 부하를 연결했을 때의 HIGH·LOW 전압을 데이터시트와 파형으로 확인하세요. 부족하면 부하에 맞는 출력 버퍼(output buffer, 앞단 신호를 받아 다음 부하를 구동하는 회로)를 두고 버퍼의 전원·극성·전환 지연·발열을 다시 검사합니다. 비교기 출력 핀에 큰 부하를 바로 달아 파형이 유지될 것으로 가정하지 않습니다.
다음 회로가 PWM 펄스가 아니라 듀티에 따른 평균 전압을 필요로 한다면, 출력 뒤의 저역 통과 필터(low-pass filter, 빠른 펄스 성분을 줄이는 회로)를 별도로 설계합니다. 예를 들어 저항과 커패시터를 쓰는 RC 필터에서는 PWM 반복 주파수에 비해 충분히 낮은 차단주파수를 택해야 잔류 리플이 줄지만, 듀티를 바꾼 뒤 출력이 새 전압에 도달하는 시간은 길어집니다. 필터 뒤의 부하가 전류를 끌어가면 전압과 응답도 달라지므로, 실제 부하에서 리플과 듀티 변경 후 정착 시간을 함께 측정하세요. 부하 전력 구동 경로에 RC 필터 하나를 넣는 방법과 신호용 평균 전압을 얻는 방법을 혼동하지 않습니다.
위상 지연과 정착 시간은 다른 시험입니다
저항을 직렬로 놓고 커패시터 양단에서 출력을 읽는 이상적인 1차 RC 저역 통과 회로를 생각해 보겠습니다. 신호원 저항은 0이고 추가 출력 부하는 없다고 할 때 H(jω)=1/(1+jωRC)이며, 정현파 출력의 위상은 −atan(ωRC)입니다. ω=2πf이고 차단주파수 fc=1/(2πRC)에서는 위상 지연이 45°입니다. 따라서 ‘위상은 항상 −5°’처럼 주파수와 R·C가 없는 숫자를 일반화할 수 없습니다. ADI의 저역·고역 통과 필터 위상 설명
정현파 위상은 일정한 주파수로 계속 구동했을 때의 관계입니다. 반면 듀티 변경 후 정착은 과도 응답을 확인하는 일입니다. 같은 이상적 RC의 직류 계단 입력에서는 목표값과의 차이가 exp(−t/RC)로 줄어 약 4.6RC 뒤 1%가 남습니다. PWM에는 잔류 리플도 있으므로 이 숫자를 실제 PWM 출력의 1% 정확도 보증으로 쓰지 않습니다. 부하와 실제 파형에서 리플·위상·정착 시간을 구분해 기록합니다.
MCU의 두 비교값을 바꿀 때는 타이머 모드도 확인합니다
아날로그 비교기 대신 MCU 타이머로 두 LED 채널을 제어할 수도 있습니다. 상한 L과 단계값 x에 대해 A=L−x, B=x로 정하면 A+B=L입니다. 예를 들어 L=150에서 이 합은 항상 150이지만, 두 LED의 광량 합이나 체감 밝기가 일정하다는 뜻은 아닙니다. LED 종류, 전류 제한, 연결 극성과 출력 모드가 결과에 영향을 줍니다.
AVR의 OCR0A·OCR0B를 쓴다면 실제 제품의 WGM(파형 생성 모드), COM(비교 출력 모드), OC0A·OC0B 핀과 포트 방향을 함께 확인합니다. 별도 예인 ATtiny25/45/85의 Timer/Counter0에서는 fast PWM의 TOP이 모드에 따라 0xFF 또는 OCR0A입니다. OCR0A가 TOP인 모드에서 그 값을 바꾸면 주기에도 영향을 주므로, 두 레지스터를 항상 독립 듀티값으로 해석하면 안 됩니다.
타이머 클록·분주·TOP으로 주기를 확인합니다. _delay_ms(50) 같은 값 갱신 간격은 PWM 반송 주파수가 아니고, 프로그래머의 SCK도 펌웨어 기록용 클록입니다. 전류 제한과 핀 정격을 갖춘 저전압 시험에서 낮음·중간·높음 비교값의 실제 주기·듀티·극성과 끝값 동작을 확인한 뒤 LED 전류를 측정합니다. 업로드 성공만으로 이 확인이 끝나지 않습니다.
제품별 예: Microchip ATtiny25/45/85 데이터시트의 Timer/Counter0. 이 설명은 특정 영상 기판의 MCU를 ATtiny로 식별하거나 실제 동작을 재현했다는 결과가 아닙니다.
English summary. Two complementary compare values do not guarantee complementary light output. Check the actual MCU, timer mode, output pins and TOP. Update delays and programmer clocks are not the PWM carrier.