본문 바로가기

아두이노우노 R4

아두이노 나노의 PWM 주파수를 변경하는 방법

반응형

 

 

아두이노 나노의 PWM 주파수를 변경하는 방법

 

이 포스팅에서는 아두이노 나노의 PWM 주파수를 변경하는 방법을 보여드리겠습니다. PWM 또는 펄스 폭 변조는 입력 전압을 매우 높은 주파수로 ON/OFF하여 출력 전압을 낮추는 방법입니다. 여기서 줄인다는 것은 출력의 평균 전압 값을 얻는 것을 의미합니다.

 

아두이노 나노 PWM 핀

 

보드에는 이러한 PWM 전압 출력을 공급할 수 있는 총 6개의 PWM 핀이 있습니다. 이 핀은 3, 5,6,9,10, 11로 번호가 매겨져 있습니다. 아두이노 보드에서 PWM 핀은 핀 옆에 인쇄된 “~” 기호 또는 핀 이름 위에 표시된 “-”로 식별할 수 있습니다.

 

Arduino Nano

 

PWM 출력을 얻으려면 “analogWrite(PWM 핀, PWM 값)” 명령이 사용됩니다. PWM 값은 0에서 255 사이입니다. PWM 값 255는 출력 5V를 의미하고 0은 0V를 의미합니다. 0에서 255 사이의 PWM 값은 출력 전압이 0에서 5V 사이가 됩니다.

 

위에서 언급했듯이 PWM 출력은 입력 전압(5V)을 특정 주파수로 전환하는 방식으로 이루어집니다. 애플리케이션/프로젝트에 따라 이 주파수는 다를 수 있습니다. 하지만 아두이노 나노의 PWM 핀에서 PWM 출력이 생성되는 특정 기본 주파수가 있습니다.

 

이 기본 주파수는 일부 핀의 경우 최대 65Khz, 다른 핀의 경우 최대 30Hz의 값으로 변경할 수 있습니다. 이는 PWM 파의 모양이나 주요 감쇠를 변경하지 않고 코드 섹션에 한 줄 명령을 추가하여 수행됩니다.

 

기본 아두이노 나노 PWM 주파수

 

아두이노 나노에는 총 6개의 PWM 핀을 사용할 수 있습니다. 이 핀은 3, 5,6,9,10, 11로 번호가 매겨져 있습니다. 기본 주파수가 980Hz인 4번과 13번 핀을 제외한 모든 핀의 기본 PWM 주파수는 490Hz입니다.

 

D3, D9, D10 및 D11의 기본 PWM 주파수:

490.20Hz(기본값)

D5 및 D6의 기본 PWM 주파수:

976.56Hz(기본값)

 

이제 이러한 주파수는 LED 페이딩과 같은 저주파 애플리케이션에 최적입니다. 그러나 이러한 기본 주파수는 벅/부스트 컨버터 및 S.M.P.S와 같은 고주파 회로에는 적합하지 않습니다.

 

따라서 PWM 핀의 기본 주파수보다 낮거나 높은 주파수를 얻기 위해 PWM 핀을 출력으로 초기화하기 전에 사용할 수 있는 한 줄 명령은 다음과 같습니다:

 

아두이노 나노 PWM 핀 주파수 변경을 위한 명령어

 

Code for Available PWM frequency on D3 & D11:
 

TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz

TCCR2B = TCCR2B & B11111000 | B00000010; // for PWM frequency of 3921.16 Hz

TCCR2B = TCCR2B & B11111000 | B00000011; // for PWM frequency of 980.39 Hz

TCCR2B = TCCR2B & B11111000 | B00000100; // for PWM frequency of 490.20 Hz (The DEFAULT)

TCCR2B = TCCR2B & B11111000 | B00000101; // for PWM frequency of 245.10 Hz

TCCR2B = TCCR2B & B11111000 | B00000110; // for PWM frequency of 122.55 Hz

TCCR2B = TCCR2B & B11111000 | B00000111; // for PWM frequency of 30.64 Hz

 

 

Code for Available PWM frequency on D5 & D6:
 

TCCR0B = TCCR0B & B11111000 | B00000001; // for PWM frequency of 62500.00 Hz

TCCR0B = TCCR0B & B11111000 | B00000010; // for PWM frequency of 7812.50 Hz

TCCR0B = TCCR0B & B11111000 | B00000011; // for PWM frequency of 976.56 Hz (The DEFAULT)

TCCR0B = TCCR0B & B11111000 | B00000100; // for PWM frequency of 244.14 Hz

TCCR0B = TCCR0B & B11111000 | B00000101; // for PWM frequency of 61.04 Hz

 

 

Code for Available PWM frequency on D9 & D10:
 

TCCR1B = TCCR1B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz

TCCR1B = TCCR1B & B11111000 | B00000010; // for PWM frequency of 3921.16 Hz

TCCR1B = TCCR1B & B11111000 | B00000011; // for PWM frequency of 490.20 Hz (The DEFAULT)

TCCR1B = TCCR1B & B11111000 | B00000100; // for PWM frequency of 122.55 Hz

TCCR1B = TCCR1B & B11111000 | B00000101; // for PWM frequency of 30.64 Hz

 

 

 

프로테우스(회로 시뮬레이션 프로그램) 에서 아두이노 나노 PWM 주파수를 변경하는 방법

 

위의 명령어를 적용했을 때 주파수가 어떻게 변화하는지 보여드리기 위해 프로테우스에서 아두이노 나노용 회로를 시뮬레이션해 보았습니다. 이를 위해 두 개의 아두이노 나노가 선택되어 있으며 PWM 핀 3이 사용됩니다. 나노 1은 기본 주파수인 490Hz(명령 없이)를 생성하고 다른 하나는 3921Hz의 PWM 주파수를 생성합니다. 그런 다음 두 아두이노 나노의 출력이 오실로스코프에 제공됩니다.

 

확인해보세요: 프로테우스에 아두이노 라이브러리를 추가하고 아두이노 프로젝트를 시뮬레이션하는 방법

 

1. 두 개의 아두이노를 선택하고 전면 시트에 배치합니다.

 

2. 각 아두이노의 디지털 핀 3(PWM 핀)을 오실로스코프에 연결합니다.

 

3. 각 아두이노마다 2개의 프로그램을 따로 작성한 후 헥스 파일을 따로 업로드합니다:

 

Nano1용 프로그램 A - 핀 3의 기본 주파수 : 

 

void setup() {
pinMode(3,OUTPUT);
}
void loop() {
analogWrite(3,155);
}

 

 

Nano2용 프로그램 B - 핀 3의 주파수가 변경되었습니다: 

 

void setup() {
TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 3921.16 Hz
pinMode(3,OUTPUT);
}
void loop() {
analogWrite(3,155);
}

 

 

4. 시뮬레이션 실행

 

프로테우스의 아두이노 나노 PWM 주파수 변화

 

 

오실로스코프의 아두이노 나노 PWM 주파수

 

 

5. 이 명령을 void setup() 에 사용하면 주파수가 매우 높은 값으로 증가하는 것을 오실로스코프에서 명확하게 볼 수 있습니다:

 

TCCR2B = TCCR2B & B11111000 | B00000010; // for PWM frequency of 3921.16 Hz

 

 

참고 문서: 영문 자료 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^