![]() |
Cứu em phần lập trình Mạch PFC!
1 Attachment(s)
http://i634.photobucket.com/albums/u...tconverter.jpg
Em đang làm mạch này mà lập trình mãi nó vẫn không chạy cho. Một tuần nữa em phải bảo vệ tốt nghiệp về cái này rồi mà kô tìm ra lỗi ở đâu! Mong các cao thủ giúp em với? Chân PWM ra của em đã có xung ra nhưng kô đúng theo ý muốn em cũng kô hiểu tại sao nữa, hic Chương trình của em đây: Code:
#include <p30f4011.h> |
Trích:
Về phần code của bạn, bạn nên đọc lại phần ADC , bạn chọn AN0-AN2 như vậy là không đúng, để thực hiện việc quét kênh bạn phải chọn các kênh CH0,CH1,CH2,CH3, như vậy bạn đã chưa chọn các kênh cho tín hiệu, tôi khuyên bạn nên xem application note về PFC sau: http://www.microchip.com/stellent/id...pnote=en531747 Nó thực sự có ích với bạn đó, từ cách tính hàm PI, không phải ngẫu nhiên mà họ lại viết bằng ASM, họ viết như vậy để tiết kiệm thời gian tính toán lại , code ASM không có gì khó hiẻu cả,trong hàm PFC.s và hàm PI.s hầu như bạn không phải thay đổi gì cả, bạn nên đọc phần nhúng ASM va C như thế nào là được, cốt nhất là bạn phải hiểu bản chất của vấn đề. Tôi đã làm PFC này rồi và lấy nguyên 2 file PFC.s và PI.s và chỉnh sửa lại code một chút cho đúng phần cứng kết quả chạy khá ổn. |
Mạch cứng của em đây:
http://i634.photobucket.com/albums/u...ngthinh/DK.jpg http://i634.photobucket.com/albums/u...gthinh/LUC.jpg Em đã đọc code mẫu của nó rồi, vấn đề là em chưa hiẻu đc bộ thông số này: .equ pfcMaxDuty, 320 ; Saturate the maximum duty cycle value .equ voltMinRef, 200 ; Corresponds to 40V reference .equ pfcVoltKp, 30000 ; Kp for voltage compensator .equ pfcVoltKi, 1600 ; Ki for voltage compensator .equ pfcVoltKc, 107 ; Kc for voltage compensator .equ pfcVoltOutMax, 32767 ; Maximum Value for VPI output .equ pfcVoltOutMin, 0 ; Minimum Value for VPI output .equ VdcRef, 28736 ; Vdc Output Reference corresponds to 400 volt .equ pfcCurrKp, 1200 ; Kp for current compensator .equ pfcCurrKi, 7000 ; Ki for current compensator .equ pfcCurrKc, 50 ; Kc for current compensator .equ pfcCurrOutMax, 32767 ; Maximum Value for IPI output .equ pfcCurrOutMin, 800 ; Minimum Value for IPI output .equ MinimumVavg,3000 ; Minimum Value of Vavg .equ DutyScalingFactor, 100 ; Scaling Factor for PWM Duty Cycle .equ AdcConvFactor, 0x8000 ; Factor for scaling the ADC Results .equ SoftStartIncrement, 10 ;Softstart count to slowly rise the DC Bus Voltage .equ Km1, 2 ; Scaling constant .equ Km2, 1 ; Scaling constant Trong đó có nhiều thông số em hiểu nhưng có nhiều cái thì chịu |
He, hỏi xin thì ngại quá nhưng nếu anh tungnh ra tay hải hà có thể cho em tham khảo phần code của anh đc kô? 4 ngày nữa em phải bảo vệ rồi mà chưa có mạch, gấp lắm rồi!
|
1 Attachment(s)
Trích:
Trích:
Bạn đọc code của tôi rồi chỉnh sủa cho đúng, những cái gì không cần thiết như bàn phím, LCD bạn có thể bỏ.Chúc bạn tai qua nạn khỏi. |
Em cảm ơn anh nhé. Có j em chưa hiểu em hỏi anh trả lời giúp em nhé. Sau vụ này Anh bố trí dành cho em một buổi anh em mình đi uống cafe anh nhé.
Em đọc qua code của anh rồi, Có phải anh dùng + AN2 để phàn hồi dòng Iac + AN3 để phản hồi áp sau chỉnh lưu Vac + AN4 để phản hồi áp ra Các ngắt ngoài anh dùng làm gì thế ạ? Anh có thể cho em phần kết nối mạch cứng của anh để em dễ đối chiếu với cái của em đc kô ạ? chỉ cần phần chính thôi, các phần như bàn phím, LCD hay uart thì kô cần ạ. các hệ số phản hồi anh lấy bằng bao nhiêu? Điện áp vào cực đại tại các chân ADC của anh là bao nhiêu a? |
Anh tungnh ơi, Em về đọc file của anh có nhiều thông số khó hiểu quá. Em chỉ làm mạch PFC với điện áp đầu vào là 12V thôi. Anh làm rồi có kinh nghiệm chỉnh sửa rồi truyền lại cho em ít. Em ngồi cả ngà chỉnh mấy cái Kp, Ki mà mạch vần chưa ổn định được. Giúp em với. Anh chỉ cho em cần chỉnh những thông số nào nhé
|
Trích:
Ngắt ngoài dùng ứng dụng bàn phím. Việc chỉnh hệ số kp,ki gian lan lắm. Tùy thuộc vào thông số phần cứng nữa. Tôi dùng phím( LCD hiển thị), để tăng giảm các thông số như kp,ki,v_reference,vv....Dùng 1 động cơ nối vào đầu ra đê test dòng.Dùng dao động kí để quan sát xung PWM. Để biết khi nào thì ổn thì bạn phải chắc lý thuyết. Ví không trực tiếp bảo bạn được nên cũng khó đó, chúc bạn may mắn. |
Vâng em cảm ơn anh. Em cũng dùng dao đông kí nhưng em dùng để quan sát dòng điện đầu vào. có mấy thông số này em chưa hiểu, cách tính nó thế nào:
int VdcR_c = 300,kpV_c = 100,kiV_c = 10,kpI_c = 10,kiI_c = 10,pfcMaxDuty_c = 10; .equ voltMinRef, 200; Corresponds to 40V reference .equ pfcCurrOutMax, 32767 ; Maximum Value for IPI output .equ pfcCurrOutMin, 800 ; Minimum Value for IPI output .equ MinimumVavg,3000 ; Minimum Value of Vavg .equ DutyScalingFactor, 100 ; Scaling Factor for PWM Duty Cycle .equ AdcConvFactor, 0x8000 ; Factor for scaling the ADC Results .equ PI_qdSumL,0 .equ PI_qdSumH,2 .equ PI_qKp,4 .equ PI_qKi,6 .equ PI_qKc,8 .equ PI_qOutMax,10 .equ PI_qOutMin,12 .equ PI_qInRef,14 .equ PI_qInMeas,16 .equ PI_qOut,18 .equ NKo,4 Điện áp của em có 12V thôi, kô biết có phải sửa các thông số trên kô (mạch của anh là 220V phải kô ạ?) |
He, mạch của em chạy ngon rồi. em dùng lại hai file PFC.s và PI.s của nó. Chương trình của anh tungnh cho em em đã thử nhưng kô hiểu sao kô có xung ra. Dù sao cũng cảm ơn anh nhiều lắm. Em mới học lập trình cho dsPIC con gà lắm, post bài lên diễn đàn có mỗi anh tungnh nhiệt tình giúp đỡ. Bây giờ Em lại có cách khác để thực hiện hai khâu PI, dùng C hẳn hoi mà chương trình chạy vẫn nhanh.
|
Trích:
|
Anh cuongthinh cho xin phần code của anh có được không ?Cả phần mô phỏng nữa đi.
Email của em:ngththien@gmail.com Cảm ơn anh nhiều !!!! |
Trích:
|
Múi giờ GMT. Hiện tại là 07:45 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