View Single Post
Old 29-08-2008, 08:32 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi tienminh View Post
Đoạn code của bác , Tôi về thử đã chạy tốt.
Tôi xin hỏi bác câu hỏi cuối cùng trong topic này, mong bác bớt chút thời gian trả lời cụ thể giúp cho tôi và các anh em quan tâm:
*Mục đích:
-Tạo sóng sine với tần số 50Hz chuẩn, dùng cho Inverter DC-AC (hoặc mục đích khác)
-Có tạo deadtime để điều khiển cầu H
*Phương pháp thực hiện:
-Sử dụng khối công suất PWM của PIC18F4431 để thực hiện việc đặt dutycycle theo quy luật sine.
*Tính toán thông số:
-Chọn tần số sóng mang PWM là 20Khz ---> Tpwm=50uS
-Chọn Thạch Anh là 16MHz.
-Có công thức Tpwm=(1+PTPER)/(Fosc:4)--->PTPER=199---->Dutycycle=0-199
-Tần số sóng sin là 50Hz--->Tsin=20ms
-Thời gian update dutycycle là Tu=20E-3 / sizeof(sine_table)

Bác cho em hỏi,
- bảng sin như thế nào là hợp lý trong trường hợp này?
- Thời gian update có vấn đề gì liên quan không?vì trong code của bác em chưa thấy đề cập đến nó.
Hợac bác có một giải pháp nào khác cho bài toán tạo sin này không?
xin cảm ơn Bác
Những vấn đề mà bạn hỏi cần được xem xét với khả năng hiện thực của PIC18F4431. Trong hình 17-12 của datasheet của PIC18F4431, với PWM đồng bộ ở cạnh, duty cycle chỉ được module PCPWM cập nhật một lần vào cuối mỗi chu kỳ PWM. Nghĩa là nếu bạn thay đổi duty cycle 2 lần trong mỗi chu kỳ PWM thì chỉ có 1 thay đổi sau được phản ánh vào duty cycle của tín hiệu ra.

Do đó, chúng ta không có nhiều sự lựa chọn với thời gian cập nhật duty cycle. Cách tốt nhất mà chúng ta có thể làm trong trường hợp này là cập nhật duty cycle sau mỗi chu kỳ PWM.

Với cách làm này, chúng ta sẽ có kích thước bảng sin = 20 ms/Tpwm. Như tôi đã giải thích ở một post trước đó, với tần số clock 40 MHz, tần số PWM là 50 kHz, và bảng sin có 800 giá trị, bạn sẽ có tần số của tín hiệu được điều chế là 62,5 Hz. Nếu muốn có tần số tín hiệu được điều chế là 50 Hz, bạn thay đổi độ dài bảng sin, tăng lên thành 1000 giá trị.

Cuối cùng, bạn thử nghĩ xem làm thế nào để có nhiều giá trị duty cycle trong một chu kỳ PWM!

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn