Title Image

Blog Logo

8051 PWM ASSEMBLY

🌱 8051 PWM ASSEMBLY

👉 PWM là gì?

    PWM - Viết tắt của Pulse Width Modulation, phương pháp điều chế độ rộng xung, cơ bản là sự thay đổi độ rộng xung mức cao/thấp nhưng giữ nguyên chu kỳ của một xung vuông. 

    Về cơ bản khi thay đổi độ rộng xung ở mức cao và giữ nguyên chu kỳ thì điện áp trung bình của xung vuông này sẽ thay đổi. 

    Một số thuật ngữ liên quan PWM:

  • On-time: Thời gian xung ở mức cao.
  • Off-time: Thời gian xung ở mức thấp.
  • Period: Chu kỳ xung, bằng tổng thời gian xung ở mức cao và mức thấp.
  • Duty-Cycle: Tỷ lệ xung ở mức cao trên chu kỳ xung.
  • Biên độ xung: Điện áp xung ở mức cao.
   Một số tính toán:
  •     Period - Chu kỳ: T = Ton + Toff  
  •     Duty-Cycle: D = Ton / T = Ton / (Ton + Toff)
  •     Điệp áp chu kỳ của xung tạo ra: Vout = Biên độ xung * D = Biên độ xung * Ton / T
    Ứng dụng của PWM:
  • Điều khiển tốc độ động cơ DC, Servo, Step, ...
  • Điều khiển độ sáng của đèn, ...

👉 Triển khai PWM với Vi điều khiển 8051 - Assembly

    Vấn đề cơ bản của PWM là sử dụng Timer, chúng ta sẽ thay đổi trạng thái xung từ thấp lên cao hoặc cao xuống thấp khi Timer đếm đủ thời gian. Bài viết về Timer tại đây!

    Ví dụ: Ở đây ví dụ sử dụng 8051 với Timer 0 (8 bits) - Mode 0, với xung ở mức cao, ta nạp giá trị x cho thanh ghi TH0, thì giá trị nạp cho TH0 ở mức thấp của xung PWM là (255 - x).
  1.     Setup Timer cho PWM:


  2.  Interrupt Service Routine
    Dùng Ngắt Timer để chuyển xung từ cao xuống thấp hoặc thấp lên cao, dùng cờ PWM_FLAG để kiểm tra xem xung đang ở mức nào, từ đó nạp giá trị tương ứng.


  3. Hàm dừng Timer - Tắt PWM

    Độ rộng của PWM có thể thay đổi bằng cách thay đổi giá trị của thanh ghi R7, trong ví dụ R7 = 160, R7 có thể từ 0 đến 255, tương ứng với độ rộng xung từ 0% đến 100%.

>>>= Follow ngay =<<<

💚 Kênh Youtube Lập trình - Điện tử 💚

Để nhận được những bài học miễn phí mới nhất nhé 😊

    Chúc các bạn học tập tốt! 😊

Đăng nhận xét

0 Nhận xét