![]() |
Đ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 |
Trích:
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, |
Trích:
Với Inverter 3 pha, ta phải giải quyết vấn đề như thế nào? Với vấn đề được đề cập trong topic này thì giải quyết bằng Pic18F4431 và dsPIC30F6010A thì ưu nhược điểm của từng cách như thế nào ah? (Độ phức tạp của chương rình, phần cứng..) |
Trích:
Luồng này bàn về việc tạo tín hiệu sine PWM bằng PIC. Nếu bạn muốn hỏi về nghịch lưu 3 pha, đề nghị bạn mở luồng mới. Với vấn đề tạo sine PWM ở đây, dùng dsPIC có lợi hơn đôi chút về mặt thời gian thực hiện các lệnh, vì dsPIC xử lý dữ liệu 16-bit một cách tự nhiên, còn PIC18 thì chỉ xử lý tự nhiên các dữ liệu 8-bit. Về bản chất thì module PCPWM của PIC18F4431 và MCPWM của dsPIC6010A là giống nhau. dsPIC chỉ cho phép tần số PWM và độ phân giải duty cycle cao hơn so với PIC18. Do đó, ở những trường hợp PIC18 đáp ứng được tần số và độ phân giải thì dsPIC không có ưu thế đặc biệt gì. Chỉ khi yêu cầu về tần số và/hay độ phân giải vượt quá khả năng của PIC18 thì mới cần dùng dsPIC. Thân, |
Đầu ra của PWM,tôi đưa ra lọc thì thu được tín hiệu sin rất tốt,tần số ổn định ở 50Hz.
Tôi thay đổi các thông số dựa trên hướng dẫn của bác, với Thạch anh 10MHz, dao động HS chưa cần PLL, kích thước bảng sine là 400, cập nhật dutycycle khi PTMR>=10(đầu chu kỳ). Bây giờ tới phần deadtime vì nó không thể thiếu phải không bác? trong datasheet có nói, khoảng thời gian kích hoạt của PWM ít nhất phải lớn hơn 3 lần deadtime để tránh méo tín hiệu. tôi chọn deadtime=1us thì tín hiệu sine đầu ra bị méo dạng tại gần đỉnh của sine(tại sườn lên của sin, chưa tới đỉnh). Nếu không có deadtime thì lại không sao, tuy nhiên khi thử dutycycle tại các giá trị cực đại hoặc cực tiểu trong bảng sin thì thấy độ rộng vẫn ra đúng, và điều vô lý là tín hiệu bị méo tại sườn của sine chứ lại không méo tại đỉnh hoặc tại điểm 0. Đầu ra em lọc dùng R=1K và C=1uF. Mong bác gợi ý giúp em trường hợp này. |
Trích:
Thử nghiệm của tôi cho thấy ở những giá trị duty cycle quá lớn thì dạng sóng ở các ngõ ra hoàn toàn thay đổi (PWM1 và PWM0 thay phiên nhau 'on' trong suốt 1 chu kỳ PWM). Do đó hiện tượng mà bạn đã quan sát được là hợp lý. Mạch lọc của bạn tạo ra một độ lệch pha khoảng 17 độ, sớm pha (chỗ này viết sai, chậm pha mới đúng, xác định tại tần số 50 Hz). Với trường hợp cụ thể của bạn, tần số PWM là 20 kHz, dùng 1 us dead-time, bạn thử giảm giá trị duty tối đa trong bảng xuống còn khoảng 95% thử xem. Tuy nhiên, bạn nên suy nghĩ thêm: Tại sao phải đưa dead-time vào? Nếu có dead-time thì việc đo dạng sóng sau mạch lọc RC của bạn có ý nghĩa gì không? Nếu bạn là sinh viên đang làm đề tài, bạn nên trao đổi với người hướng dẫn. Thân, |
Cảm ơn bác đã gợi ý, em bắt buộc phải đưa deadtime vào bởi vì 2 tín hiệu PWM sẽ được dùng để điều khiển cầu H MOSFET.Đây là một phần quan trọng của DC-AC converter.
Nhân đây em hỏi luôn bác, nếu dùng cầu H và PIC như trên để convert sau đó dùng LC để lọc ra sine thì hiệu suất được khoảng bao nhiêu và deadtime khoảng 1us có là đủ với các loại MOSFET thông dụng hiện nay không? |
Trích:
Tôi không thể trả lời câu hỏi về hiệu suất của bạn, vì nó phụ thuộc vào tần số chuyển mạch, chất lượng mạch kích, tổn hao trong mạch lọc LC, linh kiện công suất được dùng, ... mà những thông tin này bạn không hề đưa ra. Tuy nhiên, đề nghị bạn không trao đổi thêm về điện tử công suất ở đây, vì đây là diễn đàn dành cho PIC. Nếu MOSFET thông dụng bạn muốn nói đến là IRF840 hay tương tự thì dead-time 1 us là thừa Thân, |
OK.Tôi nghĩ vấn đề này nên dừng ở đây vì nó đã được giải quyết xong, cảm ơn bác một lần nữa.
|
Trưởng lão namqn nói sai
Hôm nay lại nhảy vào PIC đọc tí chút thì thấy trưởng lão namqn lại chỉ dẫn sai cho các chú đồng chí rồi! Hahahaha.... Ngứa nghề cho nên Mỗ lại phải ra tay đây :)
Mỗ hoảng hồn khi nghe namqn nói là mạch lọc RC lại tạo được tín hiệu ra "sớm pha", lại còn tính ra được sớm đúng 17 độ mới ghê chứ! :) Học điện tử công suất như trưởng lão thì vất rồi. Sai cơ bản, sai cơ bản. Thiện tai! Thiện tai! Trưởng lão lại còn kết luận là do lệch pha nên méo dạng sóng là "hợp lý" thì chứng tỏ trưởng lão chưa hiểu gì về đặc điểm của PWM khi rời rạc hóa trong hệ thống số rồi :) Mỗ stop ở đây thôi kẻo không trưởng lão lại cho rằng vấn đề PWM không được tranh luận trong PIC :) Thân, Biển học có hạn, sức người mênh mông Trích:
|
Tóm lại mục đích của em là dùng PIC tạo PWM theo quy luật sine, đưa sang Driver sau đó vào cầu H MOSFET ,cuối cùng là lọc LC để được sine.
Mong các bác cao thủ ĐTCS định hướng giúp em, định hướng đúng em xin cảm ơn nhiều và các đồng chí khác cũng đỡ công phải nghiên cứu lại . Các bác cứ tranh luận với nhau đi để lộ ra chân lý và sự thật. thanks. |
Trích:
Cái nhận xét rằng hiện tượng xảy ra hợp lý là từ việc xem xét dạng xung ngõ ra khi duty cycle đặt gần bằng 100%, chứ không phải từ việc xét lệch pha của tần số cơ bản đâu. Lẽ ra tôi viết nhận xét ở đoạn trên mới phải. Tôi còn nhiều cái chưa hiểu lắm, mời bạn giảng cho. DSP là cái mà tôi không được học ở đại học. Toán rời rạc tôi cũng chưa hề đụng đến. Mà bạn cũng hay nhỉ, thấy các thành viên hỏi thì không thèm trả lời, có vẻ chỉ thích tìm lỗi của người khác để đem ra chê bai. Thân, |
Đúng là lỗi trên liên quan đến dutycycle khi đạt 100% và 0% có deadtime, tôi sửa lại 5-95% thì ngon lành.
Tôi rất muốn bác tuoitrequaypha định hướng giúp tôi câu hỏi trên, vì nghe bác nói tôi đoán bác là người giỏi(rất hi vọng là như vậy). |
Trả lời trưởng lão namqn và chú Tiễn Mình!
Dành cho trưởng lão namqn:
Hehehe... Trưởng lão án binh, bất khẩu về Đại lực điện tử (ĐTCS) để tái luyện công cũng là một ý hay, Mỗ hoan nghênh. Trưởng lão bất thiện khi nói Mỗ hám tìm lỗi của người khác để chê bai. Mỗ nhập diễn đàn là để luyện công, phải đâu để tóe tung miệng cho sướng để lòe bá tánh. Thiển nghĩ Mỗ tọa sơn kiến mục đấu pháp của bá tánh không phải là điều hay sao? Ngoài ra triệt kê bất dụng đại đao, nhiều thắc mắc của bá tánh sẽ được các ma đầu giải quyết, không cần Mỗ phải động thủ, vận công cho nhọc. Dành cho chú Tiễn Mình: Khi dụng PIC18F4431 thì nhiệm vụ đọat sóng sine hoàn hảo từ PIC ở những duty cycle có giá trị gần 100% hoặc là gần 0% là bất khả. Đây là yếu huyệt của nhiều dòng PIC của Microchip mà từ bấy giờ đến nay Mỗ vẫn ngạc nhiên khi không thấy ma đầu nào chỉ ra hạn chế này. Điểm nhãn vào sơ đồ khối của phần điều khiển tạo PWM trong con PIC thì Mỗ ngộ ra hạn chế này là do cách xử lý tín hiệu số trong nội bộ con chip không được tối ưu, không có phần bù trừ cải thiện dạng sóng. Nếu bất dụng biện pháp cải thiện bằng các mạch phụ trợ bên ngoài thì hạn chế này đồng nghĩa với việc chú sẽ không thể chiếm tiện nghi tối đa mức điện áp của nguồn dc đầu vào khi chỉ dùng khối PWM của PIC 18F4431. Khi muốn đảm bảo dạng sóng sine không bị biến dạng thì giá trị cực đại và cực tiểu của duty cycle được tính từ công thức sau: max(dutycycle)= 1-6*td/T min(dutycycle)=6*td/T với td= dead time, T=chu kỳ PWM Mỗ lấy ví dụ: chú dùng td=1us thì: - Ở 20kHz PWM --> T=50us --> max(dutycycle)= 88%; min(dutycycle)=12% - Ở 10kHz PWM --> T=100us --> max(dutycycle)= 94%; min(dutycycle)=6% Các giá trị lớn hơn max hoặc nhỏ hơn min đều làm biến dạng sóng sine của chú. Đến đây chú thấy kết quả có phù hợp với phần đo đạc của chú chửa? :) Ở tần số PWM cao hơn, chẳng hạn 50kHz thì tình hình còn thê thảm hơn nữa với con PIC của chú :). Chú đã bắt đầu thấy hạn chế của con PIC trong giải thuật SPWM chưa? :) Chúc các hạ vui. Thân, Biển học có hạn, sức người mênh mông :) Trích:
|
Công lực uyên thâm vô cùng! Xem ra bác tuoitrequaypha là một nhân vật có tên tuổi trong giới khoa học. Giá mà bác tích cực ra mặt giúp chúng em nhiều hơn nữa thì tốt biết bao, chứ bác cứ "tọa sơn kiến mục đấu pháp của bá tánh" thế thì thật lãng phí nhân tài.
Bác cho em hỏi, trong các dòng PIC và dsPIC thì dòng nào, chip nào giải quyết vấn đầ này tốt nhất? |
Múi giờ GMT. Hiện tại là 04:39 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam