Tạo bảng sóng sine bằng PWM

Người viết: TAHMID MAHBUB

Khi tạo ra sóng sin bằng kỹ thuật số, chúng ta thường sử dụng một số xung sóng vuông cố định. Số lượng xung sóng này sẽ ảnh hưởng đến độ sạch của sóng sin.

Ví dụ, nếu chúng ta sử dụng 10 bước/bán kỳ, chúng ta sẽ chia nửa dương của sóng sin thành 10 phần. Mỗi phần sẽ có một giá trị tương ứng.

Dưới đây là các giá trị chúng ta cần:

  • Sin(0) = 0
  • Sin(18)= 0.31
  • Sin(36)= 0.59
  • Sin(54) = 0.81
  • Sin(72)= 0.95
  • Sin(90) = 1
  • Sin(108) = 0.95
  • Sin(126) = 0.81
  • Sin(144) = 0.59
  • Sin(162) = 0.31

Bây giờ, chúng ta cần đặt các giá trị này vào một bảng sin thích hợp bằng PWM. Để làm điều này, chúng ta cần biết giá trị của PR2.

Khoảng thời gian PWM = [(PR2 + 1) 4 TOSC * (TMR2 Giá trị đặt trước)]

Với PR2 = [PWM Period / (4 TOSC [TMR2 Prescale Value})] – 1

Bây giờ, chúng ta cần quyết định tần số sóng mang sẽ là bao nhiêu. Ví dụ, nếu chúng ta quyết định sử dụng tần số sóng mang là 16kHz và sử dụng bộ dao động 16MHz, sau khi đặt các giá trị vào công thức, chúng ta có PR2 = 249.

Vì vậy, chúng ta gán PR2 = 249. Thanh ghi chu kỳ nhiệm vụ là CCPR1L. Khi CCPR1L = 0, chu kỳ nhiệm vụ = 0, khi CCPR1L = (PR2 + 1), chu kỳ nhiệm vụ = 100%.

Bây giờ, chúng ta đã có bảng:

  • Sin(0) = 0%
  • Sin(18) = 31%
  • Sin(36) = 59%
  • Sin(54) = 81%
  • Sin(72) = 95%
  • Sin(90) = 100%
  • Sin(108) = 95%
  • Sin(126) = 81%
  • Sin(144) = 59%
  • Sin(162) = 31%

Chúng ta cũng có thể sắp xếp lại bảng này như sau:

  • Sin(0) = 0 * 250
  • Sin(18) = 0.31 * 250
  • Sin(36) = 0.59 * 250
  • Sin(54) = 0.81 * 250
  • Sin(72) = 0.95 * 250
  • Sin(90) = 1 * 250
  • Sin(108) = 0.95 * 250
  • Sin(126) = 0.81 * 250
  • Sin(144) = 0.59 * 250
  • Sin(162) = 0.31 * 250

Ở đây chúng ta nhân với 250 vì 250 là đỉnh của sóng sin [y = sin(x) * 250] với 250 là chu kỳ.

Vì vậy, chúng ta có:

  • Sin(0) = 0
  • Sin(18) = 77
  • Sin(36) = 147
  • Sin(54) = 202
  • Sin(72) = 237
  • Sin(90) = 250
  • Sin(108) = 237
  • Sin(126) = 202
  • Sin(144) = 147
  • Sin(162) = 77

Đó là 10 giá trị trong bảng sin của chúng ta. Chúng ta có thể lặp lại quy trình này cho bất kỳ giá trị nào.

Bây giờ, làm sao chúng ta sử dụng bảng này để tạo sóng sin bằng PWM?

Ban đầu, chúng ta xác định vị trí hiện tại của mảng bằng cách sử dụng một biến chỉ mục. Sau đó, chúng ta chuyển giá trị tương ứng trong mảng này cho thanh ghi CCPR1L. Tiếp theo, tăng biến chỉ mục và so sánh nó với giá trị kết thúc của chỉ mục. Nếu chưa đạt được, chúng ta tiếp tục lặp lại quy trình.

Để có sóng sin với tần số 50Hz, chúng ta cần kéo dài thời gian và gửi mỗi giá trị của bảng sin 16 lần trong mỗi ngắt.

Với các bước thích hợp, chúng ta có thể tạo thành công bảng sóng sine bằng PWM.

Sine Wave

Đây là hình ảnh minh họa:

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Như bạn đã thấy, tạo bảng sóng sine bằng PWM không phải là một nhiệm vụ khó khăn. Chúng ta chỉ cần tuân theo các bước và sử dụng đúng công thức.

FEATURED TOPIC

hihi