펄스 폭 변조 (PWM) 는 파동 주파수를 일정하게 유지하면서 펄스 폭을 변경하는 기술입니다. PWM 기술은 주로 LED의 밝기, DC 모터의 속도, 서보 모터를 제어하거나 디지털 소스를 사용하여 아날로그 신호를 생성해야하는 다른 경우에 사용됩니다. 이전 기사에서 PWM에 대해 자세히 설명했습니다.
이 튜토리얼에서는 ESP32 개발 보드의 PWM (펄스 폭 변조) 핀에 대해 설명합니다. ESP32 개발 보드의 모든 GPIO 핀 (전원, GND, Tx, Rx 및 EN 제외)을 사용하여 PWM 신호를 얻을 수 있습니다. 이 AS ESP32 PWM 예, 우리는 간단한 회로를 구축 할 것이다 PWM 신호에 따라 LED의 밝기를 변경.
필요한 구성 요소
- ESP32
- LED
- 330Ω 저항기
- 10k 냄비
- 브레드 보드
PWM 생성
ESP32에서 PWM 생성을 설명하기 전에 PWM과 관련된 몇 가지 용어를 살펴 보겠습니다.
TON (On Time): 신호가 높은 시간입니다.
TOFF (꺼짐 시간): 신호가 낮을 때의 시간입니다.
기간: PWM 신호의 온 타임과 오프 타임의 합입니다.
TotalPeriod = T ON + T OFF
듀티 사이클: PWM 신호 기간 동안 신호가 높았던 시간의 백분율입니다.
듀티 사이클 = T ON / T 총계 * 100
예를 들어 총주기가 10ms 인 펄스가 5ms 동안 ON (하이) 상태로 유지되는 경우입니다. 그러면 듀티 사이클은 다음과 같습니다.
듀티 사이클 = 5/10 * 100 = 50 % 듀티 사이클
회로에는 단일 LED, 저항 및 10K 전위차계가 포함되어 있습니다. LED의 음극 핀은 330 Ω 저항을 통해 ESP32의 GND에 연결됩니다. 230Ω에서 500Ω 사이의 모든 저항 값을 사용할 수 있습니다. LED 양극 핀을 GPIO 16에 연결하고 Pot의 신호 핀을 ESP32의 ADC1 (VP) 핀에 연결합니다.
ESP32 PWM에 대한 코드 설명
전체 코드는 페이지 끝에 제공됩니다.
이 코드에는 라이브러리가 필요하지 않으므로 LED가 연결된 핀을 정의하여 코드를 시작하십시오. 제 경우에는 GPIO 16을 사용하여 LED를 연결했습니다.
const int ledPin = 16; // 16은 GPIO16에 해당
그 후 다음 줄에서 PWM 신호 속성을 설정합니다. PWM 주파수를 9000으로 설정하고 해상도를 10으로 설정하면 다른 PWM 신호를 생성하도록 변경할 수 있습니다. ESP32 보드는 1 비트에서 16 비트까지의 PWM 해상도를 지원합니다. 또한 PWM 채널을 선택해야합니다. ESP32에는 총 16 (0 ~ 15) 개의 PWM 채널이 있습니다.
const int freq = 9000; const int ledChannel = 0; const int 해상도 = 10;
이제 void setup () 함수 내에서 ledcSetup () 함수를 사용하여 이전에 설정 한 속성으로 LED PWM을 구성합니다. 다음 줄에서 LED가 연결된 GPIO 핀을 정의합니다. ledcAttachPin () 함수는 GPIO 핀과 신호를 생성하는 채널을 정의하는 데 사용된다. 제 경우에는 GPIO 16 인 ledPin과 채널 0에 해당하는 ledChannel을 사용했습니다.
void setup () {Serial.begin (9600); ledcSetup (ledChannel, 주파수, 해상도); ledcAttachPin (ledPin, ledChannel); }
에서 보이드 루프 남비가 연결된 아날로그 핀을 읽어라는 변수에 저장 읽기 '듀티 - 사이클' . 전위차계의 회전에 따라 LED 밝기가 증가하거나 감소합니다. ledcWrite는 () 와 매우 유사하다 analogWrite ().
void loop () {dutyCycle = analogRead (A0); ledcWrite (ledChannel, dutyCycle); 지연 (15); }
ESP32 PWM 신호 테스트
ESP32 PWM 신호를 테스트하려면 회로도에 따라 LED와 전위차계를 연결하고 코드를 ESP32에 업로드합니다. 올바른 보드와 COM 포트를 선택했는지 확인하십시오. 이제 전위차계를 돌려 LED 밝기를 높이거나 낮 춥니 다.
완전한 작업은 아래 주어진 비디오에 나와 있습니다. 또한 링크를 따라 다른 ESP32 기반 프로젝트를 확인하십시오.