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 |
더욱 좋은 정보를 제공하겠습니다.~ ^^