Tạo Xung PWM Dùng Arduino - Điện Tử Việt
- Đăng nhập/Đăng ký
- Ứng dụng
- Arduino
PWM là viết tắt của Pulse Width Modulation (Điều chế độ rộng xung) và nó là một kỹ thuật phổ biến được sử dụng để thay đổi độ rộng của các xung trong một chuỗi xung. PWM có nhiều ứng dụng như điều khiển độ sáng của đèn LED, điều khiển tốc độ của động cơ DC, điều khiển động cơ servo hoặc nơi bạn phải lấy ngõ ra analog bằng các thiết bị kỹ thuật số.
Các chân số của Arduino cung cấp cho chúng ta 5V (khi ở mức CAO) hoặc 0V (khi ở mức THẤP) và ngõ ra là một tín hiệu sóng vuông. Vì vậy, nếu chúng ta muốn làm mờ đèn LED, chúng ta không thể lấy điện áp trong khoảng từ 0 đến 5V từ chân số này nhưng chúng ta có thể thay đổi thời gian ON và OFF của tín hiệu. Nếu chúng ta thay đổi thời gian ON và OFF đủ nhanh thì độ sáng của đèn LED sẽ bị thay đổi.
Trước khi tiếp tục những nội dung khác, chúng ta hãy cùng thảo luận về một số thuật ngữ liên quan đến PWM.
Điều chế độ rộng xung về cơ bản là một sóng vuông với thời gian cao và thấp khác nhau. Một tín hiệu PWM cơ bản được hiển thị trong hình dưới đây.
Có một số thuật ngữ liên quan đến PWM mà chúng ta cần phải biết, đó là:
Ton (On-Time): Khoảng thời gian khi tín hiệu ở mức CAO (5V).
Toff (Off Time): Khoảng thời gian khi tín hiệu ở mức THẤP (0V).
Chu kỳ (Period):
Như trong hình trên, Ton biểu thị thời gian ON (thời gian ở mức CAO) và Toff biểu thị thời gian OFF (thời gian ở mức THẤP) của tín hiệu. Chu kỳ là tổng của cả thời gian ON và OFF và được tính theo công thức như sau
Ttotal = Ton + Toff
Chu kỳ làm việc (Duty Cycle):
Chu kỳ làm việc được tính là thời gian ON trong một chu kỳ của tín hiệu. Sử dụng công thức tính chu kỳ ở trên, chu kỳ làm việc được tính như sau
D = (Ton /Ton + Toff) = Ton/Ttotal
Vì vậy, ở chu kỳ làm việc 50% và tần số 1Hz, đèn LED sẽ sáng trong nửa giây và sẽ tắt trong nửa giây còn lại. Nếu chúng ta tăng tần số lên 50Hz (50 lần ON và OFF mỗi giây), thì đèn LED sẽ được nhìn thấy phát sáng ở một nửa độ sáng bằng mắt người.
Biểu đồ sau đây cho thấy sự so sánh của các chu kỳ làm việc khác nhau và mức điện áp tương ứng của chúng.
Từ biểu đồ, rõ ràng là khi tăng chu kỳ làm việc, điện áp ngõ ra (hoặc công suất được cung cấp) cũng tăng lên. Đối với chu kỳ làm việc 100%, điện áp tương ứng là 5V và đối với chu kỳ làm việc 50%, điện áp là 2,5V, v.v…
Arduino và PWM
Arduino IDE có một hàm được tích hợp sẵn “analogWrite()”, có thể được sử dụng để tạo ra một tín hiệu PWM. Nó có thể được sử dụng để điều khiển độ sáng của đèn LED hoặc điều khiển động cơ ở nhiều tốc độ khác nhau. Sau lệnh gọi hàm analogWrite (), chân này sẽ tạo ra một sóng vuông ổn định với chu kỳ làm việc xác định cho đến khi lệnh tiếp theo analogWrite () hoặc digitalRead () hoặc digitalWrite () trên cùng một chân.
Trên Arduino UNO, các chân PWM là 3, 5, 6, 9, 10 và 11. Tần số của tín hiệu PWM trên các chân 5 và 6 sẽ là khoảng 980Hz và trên các chân khác sẽ là 490Hz. Các chân PWM được dán nhãn với dấu ~.
analogWrite(0) có nghĩa là tín hiệu có chu kỳ làm việc 0%.
analogWrite(127) có nghĩa là tín hiệu có chu kỳ làm việc 50%.
analogWrite(255) có nghĩa là tín hiệu có chu kỳ làm việc 100%.
Linh kiện yêu cầu
Bây giờ, chúng ta cần xây dựng một mạch nhỏ để tìm hiểu ứng dụng của điều chế độ rộng xung PWM. Các linh kiện cần thiết cho mạch này được liệt kê dưới đây.
- Arduino UNO
- LED
- Điện trở 220Ω
- Biến trở 10kΩ
- Breadboard
- Dây cắm Breadboard
Điều khiển độ sáng của đèn LED thông qua chương trình
Đầu tiên, thực hiện các kết nối như hình dưới đây.
Kết nối chân anode của đèn LED với chân số 6 của Arduino. Sau đó kết nối điện trở 220Ω với chân cathode của LED và kết nối đầu kia của điện trở với chân nối đất của Arduino.
Bây giờ, chúng ta sẽ viết một đoạn chương trình để thay đổi độ sáng của đèn LED bằng cách sử dụng PWM.
Chương trình Arduino
Nạp chương trình này vào Arduino bằng phần mềm Arduino IDE và đèn LED sẽ bắt đầu mờ dần.
int led_pin = 6; //LED được kết nối với chân số 6 của Arduino
void setup() {pinMode(led_pin, OUTPUT); //Khai báo chân nối LED là chân ngõ ra}
void loop() {//Làm mờ dần LEDfor (int i = 0; i < 255; i++) {analogWrite(led_pin, i);delay(5);}
for (int i = 255; i > 0; i–) {analogWrite(led_pin, i);delay(5);}}
Chương trình Arduino để điều khiển độ sáng của đèn LED bằng biến trở
Trong mạch ở trên, thêm biến trở 10kΩ và kết nối hai đầu biến trở với 5V và GND của Arduino và sau đó kết nối chân giữa của biến trở với chân A0 của Arduino.
Chương trình Arduino
Nạp chương trình này vào Arduino bằng phần mềm Arduino IDE và xoay biến trở, độ sáng của đèn LED sẽ thay đổi.
int led_pin = 6; //LED được nối với chân số 6 của Arduinoint pot_pin = A0; //Chân giữa của biến trở được kết nối với chân tương tự A0 của Arduinoint output;int led_value;
void setup() {pinMode(led_pin, OUTPUT);}
void loop() {//Đọc giá trị từ biến trởoutput = analogRead(pot_pin);//Ánh xạ các giá trị từ 0 đến 255 vì chúng ta có thể đưa ra ngõ ra//giá trị từ 0 -255 bằng cách sử dụng hàm analogwriteled_value = map(output, 0, 1023, 0, 255);analogWrite(led_pin, led_value);delay(1);}
BÀI VIẾT LIÊN QUANXEM THÊM
Cân điện tử dùng Arduino và module HX711
Mạch khóa số điện tử dùng Arduino
Giao tiếp module điều khiển động cơ L298 với Arduino Uno
BÌNH LUẬN Hủy trả lời
Vui lòng nhập bình luận của bạn Vui lòng nhập tên của bạn ở đây Bạn đã nhập một địa chỉ email không chính xác! Vui lòng nhập địa chỉ email của bạn ở đâyLưu tên, email và trang web của tôi trong trình duyệt này cho lần tiếp theo tôi nhận xét.
VPS TỐT NHẤT
Chào các bạn! Website này được tạo ra nhằm mục đích chia sẽ miễn phí những kiến thức liên quan đến lĩnh vực điện tử và IoT. Tôi rất mong nhận được những ý kiến đóng góp của bạn đọc để website ngày càng phát triển và được nhiều người biết đến. Cảm ơn sự quan tâm của các bạn.Liên hệ chúng tôi: [email protected]BÀI VIẾT GẦN ĐÂY
- Giao tiếp module điều khiển động cơ bước TMC2208 với Arduino
- Giới thiệu IC 74LS192 – Hoạt động và ứng dụng
- Giới thiệu IC 74LS76 – Ứng dụng và hoạt động
- Top 5 xu hướng công nghệ hàng đầu năm 2023
- Download phần mềm Fritzing
KÊNH ĐIỆN TỬ VIỆT
© Bản quyền thuộc về Điện Tử ViệtTừ khóa » Code Băm Xung Pwm
-
Xung PWM | Cộng đồng Arduino Việt Nam
-
Băm Xung - Điều Khiển Tốc độ động Cơ Bằng L298 Với Cách Tiếp Cận ...
-
Xung PWM Và PPM Trong Arduino - Điện Tử Hello
-
Lập Trình Băm Xung PWM Với Arduino - YouTube
-
Lập Trình Vi điều Khiển-Phần 7-Lập Trình Băm Xung (PWM) Với Arduino
-
Bài 3: Lập Trình ESP32 PWM Băm Xung điều Khiển LED
-
Băm Xung PWM | #4.1_STM32 Cơ Bản - Kỹ Sư Nghèo
-
STM32F4: Điều Chế Xung PWM Trên 1 Kênh Và Nhiều Kênh - DevIOT
-
Băm Xung Là Gì
-
Điều Chế Độ Rộng Xung - Pulse-Width Modulation - STDIO
-
[Arduino Cơ Bản] Điều Chế độ Rộng Xung PWM | MCA
-
Băm Xung (Pwm) Là Gì
-
PWM On Arduino | Danh Sách Nội Dung Về Băm Xung Là Gì Chi Tiết