Arduino Mega의 PWM 주파수를 변경하는 방법
Arduino Mega는 멀티태스킹 자동화 프로젝트에 있어 괴물입니다. 상당히 많은 수의 디지털 및 아날로그 핀으로 인해 Mega는 다중 출력 제어를 포함한 많은 복잡한 프로젝트에서 최우선 순위입니다.
그러나 일부 고주파수 제어 회로에서는 PWM 핀의 기본 주파수가 제한될 수 있습니다. 예, 이 핀의 주파수에는 몇 가지 기본값이 있습니다. 하지만 좋은 소식은 간단한 한 줄 코드를 사용하여 이 주파수를 쉽게 변경할 수 있다는 것입니다!
Arduino Mega의 각 PWM 핀의 기본 주파수는 다음과 같습니다.
Arduino Mega에는 총 15개의 PWM 핀이 있습니다. 이 중 12개는 핀 2부터 핀 13까지이고 나머지 3개는 D44, D45 및 D46입니다. 기본 주파수가 980Hz인 핀 4와 13을 제외하고 모든 핀의 기본 주파수는 490Hz입니다.
1) D4 및 D13의 PWM 주파수:
490.20Hz(기본값)
2) D2, D3, D5 ~ D12, D44, D45 및 D46의 PWM 주파수:
976.56Hz(기본값)
이러한 주파수는 LED 조광과 같은 저주파 작업에 가장 적합하지만 고주파 회로에는 적합하지 않습니다. 예를 들어 S.M.P.S에는 1kHz가 충분하지 않습니다.
많은 프로젝트, 특히 벅 컨버터와 같은 고주파 펄스와 관련된 프로젝트에서는 주파수 조정이 필요합니다. Arduino Mega의 PWM 주파수를 수정하는 간단한 한 줄 명령은 다음과 같습니다.
D4 및 D13 핀의 PWM 주파수를 변경하기 위한 라인 코드 1개:
TCCR0B = TCCR0B & B11111000 | B00000001; // 62500Hz의 PWM 주파수용
TCCR0B = TCCR0B & B11111000 | B00000010; // 7812.50 Hz
TCCR0B = TCCR0B & B11111000 | B00000011; // 976.56 Hz
TCCR0B = TCCR0B & B11111000 | B00000100; // 244.14 Hz
TCCR0B = TCCR0B & B11111000 | B00000101; // 61.04 Hz
TCCR5B = TCCR5B & B11111000 | B00000101; // 30.64 Hz
TCCR0B = TCCR0B & B11111000 | B00000001; // 62500Hz의 PWM 주파수용 TCCR0B = TCCR0B & B11111000 | B00000010; // 7812.50Hz TCCR0B = TCCR0B & B11111000 | B00000011; // 976.56Hz TCCR0B = TCCR0B & B11111000 | B00000100; // 244.14Hz TCCR0B = TCCR0B & B11111000 | B00000101; // 61.04Hz TCCR5B = TCCR5B & B11111000 | B00000101; // 30.64Hz
D11 및 D12 핀에 대한 명령:
TCCR1B = TCCR1B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
TCCR1B = TCCR1B & B11111000 | B00000010; // 3921.16 Hz
TCCR1B = TCCR1B & B11111000 | B00000011; // 490.20 Hz
TCCR1B = TCCR1B & B11111000 | B00000100; // 122.55 Hz
TCCR1B = TCCR1B & B11111000 | B00000101; // 30.64 Hz
TCCR1B = TCCR1B & B11111000 | B00000001; // 31372.55Hz의 PWM 주파수용 TCCR1B = TCCR1B & B11111000 | B00000010; // 3921.16Hz TCCR1B = TCCR1B & B11111000 | B00000011; // 490.20Hz TCCR1B = TCCR1B & B11111000 | B00000100; // 122.55Hz TCCR1B = TCCR1B & B11111000 | B00000101; // 30.64Hz
D9 및 D10 핀에 대한 명령:
TCCR2B = TCCR2B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
TCCR2B = TCCR2B & B11111000 | B00000010; // 3921.16 Hz
TCCR2B = TCCR2B & B11111000 | B00000011; // 980.39 Hz
TCCR2B = TCCR2B & B11111000 | B00000100; // 490.20 Hz
TCCR2B = TCCR2B & B11111000 | B00000101; // 245.10 Hz
TCCR2B = TCCR2B & B11111000 | B00000110; // 122.55 Hz
TCCR2B = TCCR2B & B11111000 | B00000111; // 30.64 Hz
TCCR2B = TCCR2B & B11111000 | B00000001; // 31372.55Hz의 PWM 주파수용 TCCR2B = TCCR2B & B11111000 | B00000010; // 3921.16Hz TCCR2B = TCCR2B & B11111000 | B00000011; // 980.39Hz TCCR2B = TCCR2B & B11111000 | B00000100; // 490.20Hz TCCR2B = TCCR2B & B11111000 | B00000101; // 245.10Hz TCCR2B = TCCR2B & B11111000 | B00000110; // 122.55Hz TCCR2B = TCCR2B & B11111000 | B00000111; // 30.64Hz
D2, D3 및 D5에 대한 명령:
TCCR3B = TCCR3B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
TCCR3B = TCCR3B & B11111000 | B00000010; // 3921.16 Hz
TCCR3B = TCCR3B & B11111000 | B00000011; // 490.20 Hz
TCCR3B = TCCR3B & B11111000 | B00000100; // 122.55 Hz
TCCR3B = TCCR3B & B11111000 | B00000101; // 30.64 Hz
TCCR3B = TCCR3B & B11111000 | B00000001; // 31372.55Hz의 PWM 주파수용 TCCR3B = TCCR3B & B11111000 | B00000010; // 3921.16Hz TCCR3B = TCCR3B & B11111000 | B00000011; // 490.20Hz TCCR3B = TCCR3B & B11111000 | B00000100; // 122.55Hz TCCR3B = TCCR3B & B11111000 | B00000101; // 30.64Hz
D6, D7, D8 명령:
TCCR4B = TCCR4B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
TCCR4B = TCCR4B & B11111000 | B00000010; // 3921.16 Hz
TCCR4B = TCCR4B & B11111000 | B00000011; // 490.20 Hz
TCCR4B = TCCR4B & B11111000 | B00000100; // 122.55 Hz
TCCR4B = TCCR4B & B11111000 | B00000101; // 30.64 Hz
TCCR4B = TCCR4B & B11111000 | B00000001; // 31372.55Hz의 PWM 주파수용 TCCR4B = TCCR4B & B11111000 | B00000010; // 3921.16Hz TCCR4B = TCCR4B & B11111000 | B00000011; // 490.20Hz TCCR4B = TCCR4B & B11111000 | B00000100; // 122.55Hz TCCR4B = TCCR4B & B11111000 | B00000101; // 30.64Hz
D44, D45 및 D46에 대한 명령:
TCCR5B = TCCR5B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
TCCR5B = TCCR5B & B11111000 | B00000010; // 3921.16 Hz
TCCR5B = TCCR5B & B11111000 | B00000011; // 490.20 Hz
TCCR5B = TCCR5B & B11111000 | B00000100; // 122.55 Hz
위 코드를 사용하여 D3 핀의 주파수를 변경해 보겠습니다. 회로는 Proteus 소프트웨어에서 시뮬레이션됩니다.
1단계: 다음 구성요소를 워크시트에 배치합니다.
아래와 같이 연결하세요.

2단계: 각 Mega의 D3 핀을 오실로스코프에 연결합니다
.
3단계: 첫 번째 메가보드의 프로그램은 추가 명령이 사용되지 않으므로 기본 주파수로 PWM 신호를 출력합니다.
// 기본 PWM 주파수
// 기본 PWM 주파수
void setup() {
pinMode(3, OUTPUT);
}
void loop() {
analogWrite(3, 155);
}
Mega2 보드용 프로그램에는 주파수를 31372.55Hz로 설정하는 추가 명령이 있습니다.
// 핀 D3에서 PWM 주파수를 31KHz로 설정합니다.
void setup() {
TCCR3B = TCCR3B & B11111000 | B00000001; // for PWM frequency of 31372.55 Hz
pinMode(3, OUTPUT);
}
void loop() {
analogWrite(3, 155);
}
4단계: 시뮬레이션 실행

위 이미지에서 볼 수 있듯이 채널 2(Mega2에 연결됨)의 신호 주파수는 채널 1(Mega2에 연결됨)의 신호 주파수보다 높습니다.
'아두이노우노 R4' 카테고리의 다른 글
| DS1302 아두이노 RTC 모듈 사용법 (2) | 2024.07.12 |
|---|---|
| 아두이노 0.96인치 OLED 디스플레이(SSD1306) 실습 (0) | 2024.07.04 |
| UNO R4 WiFi BLE ② LPS22의 BLE 주변기기 (1) | 2024.06.18 |
| UNO R4 WiFi BLE ① 기압 센서 LPS22 연결 (1) | 2024.06.17 |
| UNO R4 Mechanical Size (1) | 2024.05.22 |
| 아두이노 UNO R4 WiFi 최강 가이드 (0) | 2024.05.22 |
| 아두이노 UNO R4와 R3: 종합적인 검토 및 호환성 가이드 (0) | 2024.05.21 |
| 아두이노 UNO PWM 주파수를 변경하는 방법 (0) | 2024.05.21 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.
귀사가 성공하기까지의 긴 고난의 시간을 캐어랩과 함께 하세요.
캐어랩