Xung PWM 1.Các khái niệm -Xung là các trạng thái cao / thấp HIGH/LOW về mức điện áp được lặp đi lặp lại.. Đại lượng đặc trưng cho 1 xung PWM Pulse Width Modulation bao gồm tần số frequen
Trang 1Xung PWM 1.Các khái niệm
-Xung là các trạng thái cao / thấp (HIGH/LOW) về mức điện áp được lặp đi lặp lại Đại lượng đặc trưng cho 1 xung PWM (Pulse Width Modulation) bao gồm tần số (frequency) vàchu kì xung (duty cycle)
-Tần số là số lần lặp lại trong 1 đơn vị thời gian Đơn vị tần số là Hz, tức là số lần lặp lại dao động trong 1 giây
Lấy ví dụ, 1Hz = 1 dao động trong 1 giây 2Hz = 2 dao động trong 1 giây 16MHz = 16 triệu dao động trong 1 giây
Như vậy theo quy tắc tam suất: 16 triệu dao động - 1 giây > 1 dao động tốn 1/16.000.000 (giây) = 0,0625 (micro giây)
Cách xác định 1 dao động
Như vậy thông thường, 1 dao động sẽ bao gồm 2 trạng thái điện: mức cao (x giây) và mức thấp (y giây) Tỉ lệ phần trăm thời gian giữa 2 trạng thái điện này chính là chu kì xung Với x/y = 0% ta có xung chứa toàn bộ điện áp thấp (khái niệm xung nên hiểu mở rộng) Với x/y = 50% thì 50% thời gian đầu, xung có điện áp cao, 50% sau xung có điện áp thấp Với x/y=100% ta có xung chứa toàn bộ điện áp cao
Trang 22.Các hàm liên quan
Hàm analogWrite() trong Arduino giúp việc tạo 1 xung dễ dàng hơn Hàm này truyền vào tham số cho phép thay đổi chu kì xung, bạn có thể tính toán ra được chu kì xung như ở bảng trên Tần số xung được Arduino thiết lập mặc định
Xung khi sử dụng với hàm analogWrite trong Arduino
Giữa 2 vạch màu xanh lá cây là 1 xung
Trang 3analogWrite(191) 191/255 75%
Đối với board Arduino Uno, xung trên các chân 3,9,10,11 có tần số là 490Hz, xung trên chân 5,6 có tần số 980Hz Làm thế nào để tạo ra các xung có tần số nhanh hơn? Bạn có thể tham khảo thêm các thư viện riêng hỗ trợ việc này Trong mã nguồn Arduino gốc không
hỗ trợ phần này
Hàm analogwrite() dùng cho những chân có ký hiệu “~”
Ví dụ minh họa:
Trong ví dụ này, ta sẽ cho đèn LED sáng dần lên và tối dần đi bằng việc điều chế biên độ xung Bạn đọc cần chuẩn bị các thiết bị / dụng cụ sau:
• 1 x Arduino Uno R3 hoặc tương đương
• 1 x Breadboard
• 1 x LED màu bất kì
• 1 x điện trở 560 Ohm
Do Arduino Uno R3 chỉ hỗ trợ PWM ở các pin 3, 5, 6, 9, 10, 11 Vì vậy ta sẽ mắc mạch của theo
sơ đồ sau:
Trang 4Kết nối Arduino với máy tính và nạp đoạn code
1 #define LED_PIN 9
2
3 void setup () {
4 pinMode ( LED_PIN , OUTPUT );
5 }
6
7 void loop () {
8 // Make LED brighter time-to-time
9 for ( int i = 0 ; i < 256 ; i ++)
10 {
11 analogWrite ( LED_PIN , i );
12 delay ( 10 );
13 }
14
15 // Stop for a while
16 delay ( 1000 );
17
18 // Make LED dimmer time-to-time
19 for ( int i = 255 ; i >= 0 ; i )
20 {
21 analogWrite ( LED_PIN , i );
22 delay ( 10 );
23 }
Trang 524
25 // Stop for a while
26 delay ( 1000 );
27 }
Kết quả thu được là đèn LED của ta sáng / tối dần theo thời gian