Ngắt xung là gì

Xung PWM

Bạn có một DỰ ÁN hay giống thế này? Chia sẻ nhé!

pitagoever gửi vào Thứ tư, 28 Tháng 5, 2014 - 23:56

  • 151425 lượt xem

Kiến thức cơ bản

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à gì?

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ư thế nào? Đa phần các bạn mới nghiên cứu điện tử thường mắc sai lầm ở việc xác định 1 dao động. Dao động được xác định từ trạng thái bắt đầu và kết thúc ngay trước khi trạng thái bắt đầu được lặp lại.

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.

Tóm lại, với 1 xung ta có:

  1. Tần số: để tính toán ra được thời gian của 1 xung
  2. Chu kì xung: bao nhiêu thời gian xung có mức áp cao, bao nhiêu thời gian xung có mức áp thấp.

Liên hệ với Arduino

Với kiến thức cơ bản về xung, các bạn sẽ hiểu rõ hơn về xung trong thực tế như thế nào.

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.

analogWrite tỉ lệ chu kì xung
analogWrite[0] 0/255 0%
analogWrite[64] 64/255 25%
analogWrite[127] 127/255 50%
analogWrite[191] 191/255 75%
analogWrite[255] 255/255 100%

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.

Đố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.

Lưu ý: xung điều khiển servo có tên gọi PPM [Pulse Position Modulation] khác với xung PWM.

Reference Tags:

Analog I/O

Rate node

lên

55 thành viên đã đánh giá bài viết này hữu ích.

Các bài viết cùng tác giả

Bạn có một DỰ ÁN hay giống thế này? Chia sẻ nhé!

attachInterrupt[]

pitagoever gửi vào Thứ sáu, 27 Tháng 6, 2014 - 18:36

  • Xem thêm về attachInterrupt[]
  • Bình luận
  • 136953 lượt xem

Ngắt [interrupt] là những lời gọi hàm tự động khi hệ thống sinh ra một sự kiện. Những sự kiện này được nhà sản xuất vi điều khiển thiết lập bằng phần cứng và được cấu hình trong phần mềm bằng những tên gọi cố định.

Vì ngắt hoạt động độc lập và tự sinh ra khi được cấu hình nên chương trình chính sẽ đơn giản hơn.

Rate node

lên

27 thành viên đã đánh giá bài viết này hữu ích.

Bạn có một DỰ ÁN hay giống thế này? Chia sẻ nhé!

"Dấu hiệu nhận biết" của Cộng đồng Arduino Việt Nam - Gây quỹ cộng đồng

pitagoever gửi vào Thứ bảy, 12 Tháng 9, 2015 - 21:07

  • Xem thêm về "Dấu hiệu nhận biết" của Cộng đồng Arduino Việt Nam - Gây quỹ cộng đồng
  • Bình luận
  • 9241 lượt xem

Cũng đã hơn 1 năm kể từ ngày Cộng đồng Arduino Việt Nam của chúng ta ra đời, và đây cũng là lúc tri ân đến các thành viên tích cực trong cộng đồng và cũng là lúc đẩy Cộng đồng Arduino Việt Nam lên một bước phát triển mới.

Rate node

lên

18 thành viên đã đánh giá bài viết này hữu ích.

Từ khóa:

áo

áo cộng đồng

quyên góp

cộng tác viên

Cửa cuốn thông minh

Video liên quan

Chủ Đề