2. PWM(Pulse Width Modulation)의 이해
페이지 정보
작성자 관리자 댓글 0건 조회 4,233회 작성일 18-10-16 21:28본문
2. PWM(Pulse Width Modulation)의 이해
(1) 신호의 3요소
PWM은 신호를 디지털 방식으로 표현하는 방법의 하나이다.
신호란 시간에 따라 변화하는 값들을 의미한다. 예를 들어, 소리도 신호이며 전파도 신호이다. 소리를 비롯한 모든 신호는 주파수, 세기, 그리고 음색을 갖는다.
(2) 신호의 주파수(frequency)
그 신호가 초당 몇 번 동일한 파동을 반복하는가를 의미하며 단위는 Hz를 사용한다.
악기를 조율할 때 사용되는 소리굽쇠는 440Hz의 주파수를 갖는 음, 즉 ‘라’ 음을 낸다.
(3) 신호의 세기
신호의 세기란 신호의 크고 작은 정도를 의미하며 소리의 경우 dB(데시벨)을 단위로 사용한다.
소리굽쇠는 두드리면 ‘라’ 음을 내도록 설계되어 있다. 하지만 소리굽쇠를 세게 두드리면 큰 ‘라’ 소리가 날 것이고 살살 두드리면 작은 ‘라’ 소리가 날 것이다.
(4) 신호의 음색
소리굽쇠가 내는 ‘라’ 음과 피아노가 내는 ‘라’ 음의 주파수는 동일하다. 하지만 우리는 소리굽쇠의 ‘라’ 음과 피아노의 ‘라’ 음을 구분할 수 있다.
즉, 주파수와 세기가 같아도 신호들은 서로 다른 음색을 가질 수 있다. 예를 들어, 피아노와 소리굽쇠는 다른 음색을 갖는다.
바이올린의 ‘라’ 음과 피아노의 ‘라’ 음을 같은 크기로 내더라도 두 음은 음색이 서로 다르므로 구분할 수 있다.
(5) 아날로그 신호
아날로그 신호란 시간에 따라 변화하는 신호의 세기를 연속적인 실수 값으로 기록한 신호를 의미한다.
요즘은 디지털 방식으로 녹음된 MP3 파일이나 WAVE 파일로 음악을 듣지만, 이전에는 카세트 테이프에 아날로그 방식으로 음악을 저장하고 소니 워크맨과 같은 아날로그 장비로 음악을 들었었다. 하지만 이제 아날로그 테이프는 거의 사용되지 않는다.
MP3 파일이나 WAV 파일로 녹음된 음악은 여러 번 복사해도 음질이 떨어지지 않는다. 하지만, 이전에 사용하던 아날로그 카세트 테이프에 녹음된 음악은 다른 카세트 테이프로 여러 번 복사하면 음질이 점점 떨어지게 된다.
아날로그 테이프를 복사할 때, 신호를 읽거나 쓰는 회로에서 발생할 수 있는 전자기적 잡음 등에 의해 새로운 오차나 왜곡들이 복사본에 추가될 수 있다.
또한 아날로그 테이프를 복사할 때마다 읽거나 쓰는 회로에서 발생하는 전자기적 잡음 등에 의해 새로운 오차나 왜곡들이 추가될 수 있을 뿐 아니라, 이전 복사 과정에서 만들어진 오차나 왜곡들도 그대로 복사된다.
(6) 디지털 신호란
아날로그 방식에서는 시간에 따라 변화하는 신호의 세기를 연속적인 실수값으로 표현하지만, 디지털 방식에서는 신호의 세기를 이산 값들 (discrete values)로 기록한다.
이산적인 값들이란 {0, 1 }, {0.1, 0.2, 0.3, …, 1.0 } 또는 {-256, -255, …, -1, 0, 1, 2 , … ,255 } 와 같이 연속되지 않은 값들을 의미한다.
예를 들어, 어떤 신호의 세기가 0 또는 1로만 기록되었다면 그 신호는 이산 값 {0, 1 }을 사용하는 디지털 신호이다.
아날로그 신호의 세기를 일정한 시간 간격마다, 이산적인 값으로 읽는 과정을 샘플링(sampling)이라고 한다. 샘플링의 결과로 디지털 신호가 기록된다.
디지털 방식으로 표현된 신호는 복사 과정에서 발생하는 오차와 왜곡에 대응할 수 있다. 즉 디지털 복사의 경우 원본과 복사본의 품질이 동일하다. 왜냐하면 디지털 방식에서는 이산값 들만을 사용하므로 어느 정도의 오차나 왜곡에 대응할 수 있기 때문이다.
예를 들어, 0 과 1만으로 기록된 신호를 복사할 때 복사 장비에 들어온 잡음 등의 이유로 0.1, 0.05, 0.95 등의 신호가 읽히더라도 그 신호를 0, 0, 1로 교정하여 읽을 수 있다.
디지털 장치나 회로들도 오차와 왜곡으로부터 완전히 자유로울 수는 없다. 하지만 디지털로 자료를 표현하면 디지털 신호를 복사할 때 복사본에 오차나 왜곡이 생기는 경우는 거의 드물다.
디지털 장비들을 설계할 때 신호를 읽거나 쓰는 데 발생할 수 있는 오차가 어느 허용 범위 이상 넘지 않도록 설계하기 때문이다.
음악 CD의 경우, 음악을 기록할 때 16비트 정수값을 신호의 세기로 사용하여 초당 44100번 샘플링을 한다.
(7) 아두이노의 아날로그/디지털 신호 처리
디지털 장비들은 일반적으로 전압을 이용하여 신호의 세기를 표현한다.
아두이노 UNO는 5V 전원 사용한다.
HIGH -> 1을 의미. 5V 로 표현됨
LOW -> 0을 의미. 0V 로 표현됨
내부적으로 3.3V를 사용하는 Raspberry Pi에서 HIGH 는 3.3V 의미한다.
실제 시스템에서는 아주 정확한 5V나 3.3V 만 HIGH로 판정되는 것은 아니며 어느 정도의 전압 오차가 허용된다.
예를 들어 3.0V 미만을 LOW로, 3.0V ~ 5.5V까지를 HIGH로 사용할 수 있다.
HIGH나 LOW 값에 대한 허용 전압 오차는 시스템 마다 다르다.
(8) analogWrite(), analogRead()
analog값은 digital값과 다르게 HIGH, LOW가 아니라 조금 더 상세한 값을 지정할 수 있다. digital값은 5V(HIGH), 0V(LOW)값 밖에 표현을 할 수 없기 때문에 0V와 5V사이의 값은 analog값으로 표현을 해주어야 한다.
analogWrite()값은 0 ~ 255로 표현이 가능하고, analogRead()값은 0 ~ 1023까지 표현할 수 있다. 그러므로 analogRead()을 통해 입력받은 값을 1/4하면 analogWrite()로 출력하여 0 ~ 5V까지 표현을 할 수 있다.
digital값의 LOW(0V)는 analog값으로 0, digital값의 HIGH(5V)는 analog값으로 255로 변환할 수 있다. 즉, 2.5V를 표현하고자 한다면 analog값으로 255/2하면 대략 127로 표현할 수 있다.
analogWrite()함수를 사용하려면 PWM으로 지정된 핀에서만 가능하다.
( 3, 5, 6, 9, 10, 11 )
(9) PWM(Pulse Width Modulation)
PWM은 Pulse Width Modulation의 약자로 펄스 폭 변조를 의미한다.
HIGH 상태와 LOW 상태로 구분되는 디지털 전압의 펄스폭을 제어하여 아래와 같은 사각형 형태의 디지털 신호를 만드는 방법을 의미한다.
주기는 동일한 파형이 반복될 때 하나의 파형이 지속되는 시간의 길이를 의미한다.
Duty cycle은 주기에서 HIGH가 차지하는 퍼센트를 나타난다.
핀 3, 5, 6, 9, 10, 11 에서 analogWrite(pin, duty_cycle) 함수로 PWM 신호를 출력할 수 있다. (0 <= duty_cycle <= 255)
아두이노 보드에 ~표시가 있는 3, 5, 6, 9, 10, 11번 핀을 PWM으로 사용할 수 있다. 아두이노는 핀으로 출력전압을 조절하는 기능은 없다. 대신 이 PWM을 이용하면 출력 전압을 조절할 수 있다.
(10) analogWrite(pin, duty_cycle) 예제
PWM은 펄스 폭 변조를 말하며, 말 그 대로 펄스의 폭의 주기를 제어하는 방법이다.
위의 그림을 보면 맨위 그림은 0V를 나타내며, 맨 아래 그림은 5V를 나타낸다. 사이의 값들은 일정하게 펄스폭을 조절하여 on/off를 빠르게 반복하는 형태이다. 이렇게 출력되는 전압값을 일정한 펄스폭은 5V를 유지하고, 나머지 비율은 0V를 주기로 출력하며 전압의 크기를 조절할 수 있다.
(11) PWM 심화
파형의 특성을 살펴보면, 디지털 시스템에서 나타나는 대부분의 파형은 일련의 펄스로 구성되며, 이를 펄스 열이라고 하고, 이는 주기 펄스와 비주기 펄스로 분류된다.
주기펄스 파형은 주기(period, T) 즉 일정한 시간 간격으로 파형이 반복되는 것 중에 하나를 말하며, 주파수(Frequency, f)는 주기의 반복률로, 단위는 Hz이다.
비주기펄스 파형은 일정한 간격으로 반복되지 않고, 펄스 폭도 다르며, 펄스 사이의 시간 간격도 다른 펄스들로 구성되어 있다.
펄스(디지털) 파형의 주파수는 주기의 역수로서, f=1/T 또는 T=1/f 로 나타낼 수 있다.
주기적인 디지털 펄스 파형의 중요한 특성 중의 하나는 듀티 사이클(Duty Cycle)로서, 이는 주기에 대한 펄스폭의 비를 의미하고 다음과 같이 백분율로 나타낸다.
Duty Cycle=(펄스폭 / T) × 100%
이러한 식들을 이용해 심화된 프로젝트를 하고자 할 때 유용하게 사용하길 바란다. 아두이노는 500Hz의 주파수를 가지고 있으므로, T=1/f을 이용하면 주기는 2ms라는 것을 알 수 있다.
(12) digitalWrite(pin, value) 예제
digitalWrite( ) 함수와 delayMicrosecond( ) 또는 delay( ) 함수를 결합하면 PWM 신호를 만들 수 있다.
(13) tone(pin, note) 예제
PWM 신호 출력을 시작시키는 함수이다. 인자로 핀 번호와 출력할 신호의 주파수를 사용한다.
PWM 방식의 신호를 출력하지만 H/W PWM 모드를 사용하지 않는다. 따라서 인자로 PWM 핀이 아닌 핀을 사용해도 된다.
analogWrite( )나 digitalWrite( ) 보다 PWM 신호를 만들기 편리 하다.
댓글목록
등록된 댓글이 없습니다.