QC

ESP32 PWM

 ESP32 PWM

Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo tín hiệu PWM với ESP32 bằng Arduino IDE. Để làm ví dụ, chúng tôi sẽ xây dựng một mạch đơn giản làm mờ đèn LED bằng cách sử dụng bộ điều khiển LED PWM của ESP32. Chúng tôi cũng sẽ chỉ cho bạn cách bạn có thể nhận được cùng một tín hiệu PWM trên các GPIO khác nhau cùng một lúc.

PHẦN 1: GIẢI QUYẾT VẤN ĐỀ.

- PWM : Có nghĩa là điều chỉnh độ rộng xung.

- Điều chỉnh độ sáng của led, của bóng đèn, còn điều chỉnh vd tốc độ động cơ DC nhanh hay chậm ... Còn điều chỉnh tốc độ động cơ AC người ta dùng biến tần nhé !.



1. Đầu tiên, bạn cần chọn một kênh PWM. Có 16 kênh từ 0 đến 15.

2. Sau đó, bạn cần đặt tần số tín hiệu PWM. Đối với đèn LED, tần số 5000 Hz là tốt để sử dụng.

3. Bạn cũng cần đặt độ phân giải chu kỳ nhiệm vụ của tín hiệu: bạn có độ phân giải từ 1 đến 16 bit. Chúng tôi sẽ sử dụng độ phân giải 8 bit, có nghĩa là bạn có thể kiểm soát độ sáng của đèn LED bằng cách sử dụng giá trị từ 0 đến 255.

4. Tiếp theo, bạn cần chỉ định GPIO hoặc GPIO nào mà tín hiệu sẽ xuất hiện. Để làm được điều đó, bạn sẽ sử dụng chức năng sau:

ledcAttachPin(GPIO, channel)

Hàm này chấp nhận hai tham số. Đầu tiên là GPIO sẽ xuất tín hiệu và kênh thứ hai là kênh sẽ tạo ra tín hiệu.

5. Cuối cùng, để điều khiển độ sáng đèn LED bằng PWM, bạn sử dụng chức năng sau:

ledcWrite(channel, dutycycle)
Hàm này chấp nhận làm đối số kênh đang tạo tín hiệu PWM và chu kỳ nhiệm vụ.


Ta ví dụ đoạn code sau :

const int ledPin = 16;  //  Chân số 16 xuất tính hiệu ra điều khiển led.

const int freq = 5000; // TẦN SỐ 5000 HZ

const int ledChannel = 0;  // kênh 0.

const int resolution = 8;  // độ phân giải 8 bít đếm từ 0-255.

void setup(){

  // cấu hình kênh 0, 5000 hz, phân giải 8 bit.

  ledcSetup(ledChannel, freq, resolution);

  // ledPin =16, chân số 16, kênh số 0 đưa ra ngõ led đó.

  ledcAttachPin(ledPin, ledChannel);

}

void loop(){

  // cho biến dutycycle tăng từ 0 --> 255.

  // Led sang dần.

  for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){   

    // changing the LED brightness with PWM

    ledcWrite(ledChannel, dutyCycle);

    delay(15);

  }

  // Led Tối dần

  for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){

    // changing the LED brightness with PWM

    ledcWrite(ledChannel, dutyCycle);   

    delay(15);

  }

}


* Những giải thích khác đã đính kèm trong code. chúc các bạn học tốt !

Nap Code vào PY32F003 dùng Stlink

 Nap Code vào PY32F003 dùng Stlink Bước 1: Cài đặt  KeilC v5.39 theo link sau ( chú ý 5.39 keil c mới nạp ok). https://edge07.111.ir.cdn.ir/...