본문 바로가기

아두이노우노 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

 

 

참고 문서: 영문 자료 

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩