Pulse Width Modulation (PWM) là một khái niệm được sử dụng rộng rãi trong vật lý, điện tử và viễn thông. Nó được định nghĩa là một dạng điều chế tín hiệu (signal modulation) để lấy dạng sóng analog từ các đầu vào kỹ thuật số.
Trong các ứng dụng Arduino, PWM rất hữu ích trong việc thay đổi cường độ của tín hiệu như độ sáng của diode LED, thời gian ping của cảm biến hoặc cung cấp năng lượng cho động cơ servo.
Tại sao lại PWM cần thiết trong Arduino?
Một lý do chính cho việc tại sao những kỹ thuật PWM lại cần thiết trong các dự án Arduino là vì nó giúp tạo ra các dạng sóng liên tục. Hãy xem xét một ví dụ về đèn LED. Bất kỳ tín hiệu kỹ thuật số nào đều nằm trên hai giá trị: ON hoặc OFF, có thể được điều chỉnh bằng các pin kỹ thuật số Arduino 5V và 0 tương ứng, như được hiển thị bên dưới.
Tuy nhiên, có những ứng dụng mà bạn có thể quan tâm nhiều hơn một chút, ngoài việc thiết bị tắt hay bật. Bạn cần một dạng sóng analog liên tục để kiểm soát độ sáng hoặc độ mờ của đèn LED trong bóng đèn thông minh.
Ví dụ, bóng đèn Philip Hue có một tính năng PWM liên quan, được áp dụng như một kỹ năng sử dụng Alexa: “Alexa, brighten Kitchen to 60%” (Alexa, làm sáng nhà bếp 60%). Lệnh này có thể kiểm soát độ sáng của phòng bạn.
Cách sử dụng PWM trong các dự án Arduino
Arduino IDE có một số ví dụ tích hợp để sử dụng PWM cho các kết quả khác nhau. Để khám phá các lệnh PWM trong những dự án Arduino, bạn có thể dễ dàng cài đặt IDE cho Windows 10, Linux hoặc Mac.
Ngoài ra, bạn sẽ cần kết nối bo mạch Arduino Uno hoặc Mega với đèn LED và kiểm soát nó với chức năng analog. Các thành phần cần thiết bao gồm:
- Chiết áp và điện trở 10 kOhm
- Breadboard và dây nối
- Arduino IDE
Arduino Project Hub có một ví dụ hướng dẫn trong đó mạch cuối cùng được hiển thị (tham khảo tại: https://create.arduino.cc/projecthub/muhammad-aqib/arduino-pwm-tutorial-ae9d71), nhưng đây là một ví dụ không liên quan. Mạch thực tế của bạn sẽ tuân theo code và hướng dẫn được cung cấp trong Arduino IDE.
Code hoạt động
Mở Arduino IDE và truy cập vào File > Examples > Analog > AnalogWriteMega. Code này làm mờ rồi sáng dần các đèn LED một lúc trên các pin kỹ thuật số 2 đến 13. Code này chỉ dành cho bo mạch Arduino Mega.
Tham khảo bài viết: Tổng hợp các lệnh Arduino IDE để hiểu ý nghĩa của các lệnh cơ bản bao gồm const(), setup(), loop() và delay().
Ngoài ra, có một lệnh for đặt các pin 2 đến 13 thành mức thấp nhất đến cao nhất.
Tiếp theo, một lệnh gọi là analogWrite() được sử dụng để kiểm soát độ sáng của đèn LED, từ các giá trị thấp nhất ở pin kỹ thuật số 2 (0), đến giá trị cao nhất của pin kỹ thuật số 13 (255). Độ trễ 100 mili giây được đưa ra để ghi lại sự chuyển đổi của đèn LED (việc thay đổi trạng thái analog của chúng).
Bài viết sẽ lấy một ví dụ nữa về một bóng mờ LED dựa trên đầu ra analog. Để làm điều này, hãy truy cập vào File > Examples > Analog và chọn Fading. Code này có thể được sử dụng với bo mạch Arduino Uno. Đèn LED được gắn từ pin số 9 xuống đất.
Trong ví dụ này, một lệnh analogWrite đã được sử dụng để sửa đổi các giá trị mờ dần trong khoảng từ 0 đến 255. Độ mờ được hiển thị ở độ trễ 30 mili giây cho hiệu ứng mờ dần.
Pulse Width Modulation (PWM) là một phương pháp cần thiết để đảm bảo tính thay đổi và sự tiến bộ trong các dự án Arduino của bạn.
Bạn đã sử dụng PWM trong các dự án IoT của riêng mình chưa? Bạn có bắt gặp bất kỳ ví dụ nào giống như PWM khi sử dụng Alexa, tương tự như bóng đèn Philip Hue không? Vui lòng chia sẻ ý kiến trong phần bình luận bên dưới nhé!
Chúc bạn thực hiện thành công!