PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-06-2009, 06:33 PM   #1
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
Cứu em phần lập trình Mạch PFC!


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>
#include	<dsp.h>
#include	<math.h>

	_FOSC(CSW_FSCM_OFF & FRC_PLL16);
	_FWDT(WDT_OFF);
	_FBORPOR(PBOR_OFF & MCLR_EN);
	_FGS(CODE_PROT_OFF);

//------------------------------------------------------------------------------
//Cac hang so cua chuong trinh (gia tri tuc thoi dung trong chuong trinh)

#define	Fcy		32000000				//Tan so thuc thi lenh
#define	Fpwm	40000			//Tan so PWM = 40 kHz
#define	vOutmax	Q15(0.9)
#define vOutmin	Q15(0.1)
#define iOutmax	Q15(0.9)
#define iOutmin	Q15(0.1)

//Cac prototype cho cac chuong trinh con
void Init_PORTS(void);
void Init_MCPWM(void);
void Init_ADC10(void);
void CalciPI( fractional iInRef, fractional iInMeas);
void CalcvPI( fractional vInRef, fractional vInMeas);
void InitiPI(void);
void InitvPI(void);

//Cac bien toan cuc
fractional Vo,Vac,Iac,Vcom,vPI,Iref,Vavg;
fractional iSum, iExc, iErr;
fractional vSum, vExc, vErr;
fractional iU, iOut, vU, vOut;
int n,m,k;
unsigned int duty;
//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
	
	void InitvPI();
	void InitvPI();
	Init_PORTS();			//Khoi tao cac cong I/O
	Init_MCPWM();			//Khoi tao module PWM
	Init_ADC10();
	while(1) Nop();
}

//Chuong trinh con khoi tao cac cong I/O, de xuat cac tin hieu PWM, va doc tin
//hieu dieu chinh cua bien tro tai AN0
void Init_PORTS(void) {
	LATE = 0;						//Xoa thanh ghi chot cac tin hieu PWM
	TRISE = 0;						//Tin hieu PWM nam tai RE0
	TRISB = 0x0007;					//RB0 den RB2 la ngo vao, cac chan RB khac la ngo ra
}

//Chuong trinh con khoi tao module chuyen doi A/D
// AN0 phan hoi Vac, AN1 phan hoi Iac, AN2 phan hoi Vo
void Init_ADC10(void) {
	ADPCFG = 0b1111111111111000;	// RB0,RB1,RB2 = analog input
	ADCON1 = 0b0000001001101100;	// SIMSAM bit = 1 implies ...
									// simultaneous sampling
									// ASAM = 1 for auto sample after convert
									// SSRC = 011 for PWM trigger
									// integer output
	ADCSSL=0x0007;					// Lan luot quét ANO, AN1, AN2 kéet qua lan luot luu vao ADCBUF0->2 
	ADCON3 = 0x0302;				// Auto Sampling 3 Tad, Tad = internal 2 Tcy
	ADCON2 = 0b0000010000001000;	// CHPS= 00 Convert CHO
									// SMPI = 0010 for interrupt after 3 converts
									// CSCNA=1 scan input
	ADCHS=0;
	_ADIF = 0;				//Xoa co ngat ADC
	_ADIE = 1;				//Cho phep ngat ADC
	_ASAM = 1;				//Khoi dong che do tu dong lay mau
	ADCON1bits.ADON = 1;	// turn ADC ON
}

//Chuong trinh con khoi tao module PWM
void Init_MCPWM(void) {
	PTPER = Fcy/Fpwm-1;	//Dat thanh ghi chu ky voi tan so PWM = 40 kHz    
	SEVTCMP = PTPER;
	PWMCON1 = 0x070F;		//Chi dung cac chan PxL, mot cach doc lap
	OVDCON = 0xFF00;		//Khong dung overdrive
	PDC1 = 200;			//Khoi tao PWM1, 2, va 3 la 25%
	PWMCON2 = 0x0F00;		//Postscale = 1:10
	PTCON = 0x8000;			//Kich hoat module PWM
}

void CalciPI( fractional iInRef, fractional iInMeas)
{	iErr = iInRef - iInMeas;
  	iU = iSum + Q15(8.174) * iErr;					//kpz = 8.174  = 0.00025 fraction
	if( iU > iOutmax )	iOut = iOutmax;
    else {
			if( iU < iOutmin )	iOut = iOutmin;
    		else    iOut = iU ;
		 }
	iSum =  iSum + Q15(4.266)*iErr;				//kiz = 4.266 = 0.00013 fraction
}

void CalcvPI( fractional vInRef, fractional vInMeas)
{	vErr = vInRef - vInMeas;
  	vU = vSum + Q15(49.36) * vErr;					//kpz = 49.36 = 0.0015 fraction
	if( vU > vOutmax )	vOut = vOutmax;
    else {
			if( vU < vOutmin )	vOut = vOutmin;
    		else    vOut = vU ;
		 }
	vSum =  vSum + Q15(48.0)*vErr;				//kiz = 48 = 0.001465 fraction
}

void InitvPI(void)
{
    vSum = 0;
    vOut = 0;
}

void InitiPI(void)
{
    iSum = 0;
    iOut = 0;
	n = 0;
	k = 0;
}

                
//Trinh phuc vu ngat cho ADC

void __attribute__((__interrupt__ , auto_psv)) _ADCInterrupt(void)
{  
	Vac = ADCBUF0;			//4kHz
	Vavg = Vavg + Vac;
	if (k=40) { Vcom = Q15(1)/(Vavg*Vavg);	k = 0;	}
	else 	(k++);
	if (n=40) 	Vo = ADCBUF2; 	// tao bien dem de duoc Vac voi tan so 100Hz (ADC trich mau voi tan so 4kHz)
	else (n++)	;
	CalcvPI(Q15(1),Vo); // V_refer = 1V , Tinh toan khau PI ap
	vPI = vOut;			// Tin hieu ra khau PI ap
	Iref = vPI*Vcom*Vac*Q15(2.4);	//Voi km=2.4
	Iac = ADCBUF1; //  Iac voi tan so 4kHz (ADC trich mau voi tan so 4kHz)								
	CalciPI(Iref,Iac);			// Tinh toan Pi dong
								// dai luon tham chieu la Iref
								// Tin hieu phan hoi la Iac
	PDC1 = (unsigned int)((iOut*32768)*2*PTPER); ;// Update thanh ghi chu ki nhiem vu
	_ADIF = 0;

}
File Kèm Theo
File Type: txt PFC.txt (4.5 KB, 15 lần tải)

thay đổi nội dung bởi: namqn, 02-06-2009 lúc 07:13 PM. Lý do: định dạng code
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2009, 12:23 AM   #2
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Trích:
Nguyên văn bởi cuongthinh View Post

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>
#include	<dsp.h>
#include	<math.h>

	_FOSC(CSW_FSCM_OFF & FRC_PLL16);
	_FWDT(WDT_OFF);
	_FBORPOR(PBOR_OFF & MCLR_EN);
	_FGS(CODE_PROT_OFF);

//------------------------------------------------------------------------------
//Cac hang so cua chuong trinh (gia tri tuc thoi dung trong chuong trinh)

#define	Fcy		32000000				//Tan so thuc thi lenh
#define	Fpwm	40000			//Tan so PWM = 40 kHz
#define	vOutmax	Q15(0.9)
#define vOutmin	Q15(0.1)
#define iOutmax	Q15(0.9)
#define iOutmin	Q15(0.1)

//Cac prototype cho cac chuong trinh con
void Init_PORTS(void);
void Init_MCPWM(void);
void Init_ADC10(void);
void CalciPI( fractional iInRef, fractional iInMeas);
void CalcvPI( fractional vInRef, fractional vInMeas);
void InitiPI(void);
void InitvPI(void);

//Cac bien toan cuc
fractional Vo,Vac,Iac,Vcom,vPI,Iref,Vavg;
fractional iSum, iExc, iErr;
fractional vSum, vExc, vErr;
fractional iU, iOut, vU, vOut;
int n,m,k;
unsigned int duty;
//------------------------------------------------------------------------------
//Chuong trinh chinh
int main(void) {
	
	void InitvPI();
	void InitvPI();
	Init_PORTS();			//Khoi tao cac cong I/O
	Init_MCPWM();			//Khoi tao module PWM
	Init_ADC10();
	while(1) Nop();
}

//Chuong trinh con khoi tao cac cong I/O, de xuat cac tin hieu PWM, va doc tin
//hieu dieu chinh cua bien tro tai AN0
void Init_PORTS(void) {
	LATE = 0;						//Xoa thanh ghi chot cac tin hieu PWM
	TRISE = 0;						//Tin hieu PWM nam tai RE0
	TRISB = 0x0007;					//RB0 den RB2 la ngo vao, cac chan RB khac la ngo ra
}

//Chuong trinh con khoi tao module chuyen doi A/D
// AN0 phan hoi Vac, AN1 phan hoi Iac, AN2 phan hoi Vo
void Init_ADC10(void) {
	ADPCFG = 0b1111111111111000;	// RB0,RB1,RB2 = analog input
	ADCON1 = 0b0000001001101100;	// SIMSAM bit = 1 implies ...
									// simultaneous sampling
									// ASAM = 1 for auto sample after convert
									// SSRC = 011 for PWM trigger
									// integer output
	ADCSSL=0x0007;					// Lan luot quét ANO, AN1, AN2 kéet qua lan luot luu vao ADCBUF0->2 
	ADCON3 = 0x0302;				// Auto Sampling 3 Tad, Tad = internal 2 Tcy
	ADCON2 = 0b0000010000001000;	// CHPS= 00 Convert CHO
									// SMPI = 0010 for interrupt after 3 converts
									// CSCNA=1 scan input
	ADCHS=0;
	_ADIF = 0;				//Xoa co ngat ADC
	_ADIE = 1;				//Cho phep ngat ADC
	_ASAM = 1;				//Khoi dong che do tu dong lay mau
	ADCON1bits.ADON = 1;	// turn ADC ON
}

//Chuong trinh con khoi tao module PWM
void Init_MCPWM(void) {
	PTPER = Fcy/Fpwm-1;	//Dat thanh ghi chu ky voi tan so PWM = 40 kHz    
	SEVTCMP = PTPER;
	PWMCON1 = 0x070F;		//Chi dung cac chan PxL, mot cach doc lap
	OVDCON = 0xFF00;		//Khong dung overdrive
	PDC1 = 200;			//Khoi tao PWM1, 2, va 3 la 25%
	PWMCON2 = 0x0F00;		//Postscale = 1:10
	PTCON = 0x8000;			//Kich hoat module PWM
}

void CalciPI( fractional iInRef, fractional iInMeas)
{	iErr = iInRef - iInMeas;
  	iU = iSum + Q15(8.174) * iErr;					//kpz = 8.174  = 0.00025 fraction
	if( iU > iOutmax )	iOut = iOutmax;
    else {
			if( iU < iOutmin )	iOut = iOutmin;
    		else    iOut = iU ;
		 }
	iSum =  iSum + Q15(4.266)*iErr;				//kiz = 4.266 = 0.00013 fraction
}

void CalcvPI( fractional vInRef, fractional vInMeas)
{	vErr = vInRef - vInMeas;
  	vU = vSum + Q15(49.36) * vErr;					//kpz = 49.36 = 0.0015 fraction
	if( vU > vOutmax )	vOut = vOutmax;
    else {
			if( vU < vOutmin )	vOut = vOutmin;
    		else    vOut = vU ;
		 }
	vSum =  vSum + Q15(48.0)*vErr;				//kiz = 48 = 0.001465 fraction
}

void InitvPI(void)
{
    vSum = 0;
    vOut = 0;
}

void InitiPI(void)
{
    iSum = 0;
    iOut = 0;
	n = 0;
	k = 0;
}

                
//Trinh phuc vu ngat cho ADC

void __attribute__((__interrupt__ , auto_psv)) _ADCInterrupt(void)
{  
	Vac = ADCBUF0;			//4kHz
	Vavg = Vavg + Vac;
	if (k=40) { Vcom = Q15(1)/(Vavg*Vavg);	k = 0;	}
	else 	(k++);
	if (n=40) 	Vo = ADCBUF2; 	// tao bien dem de duoc Vac voi tan so 100Hz (ADC trich mau voi tan so 4kHz)
	else (n++)	;
	CalcvPI(Q15(1),Vo); // V_refer = 1V , Tinh toan khau PI ap
	vPI = vOut;			// Tin hieu ra khau PI ap
	Iref = vPI*Vcom*Vac*Q15(2.4);	//Voi km=2.4
	Iac = ADCBUF1; //  Iac voi tan so 4kHz (ADC trich mau voi tan so 4kHz)								
	CalciPI(Iref,Iac);			// Tinh toan Pi dong
								// dai luon tham chieu la Iref
								// Tin hieu phan hoi la Iac
	PDC1 = (unsigned int)((iOut*32768)*2*PTPER); ;// Update thanh ghi chu ki nhiem vu
	_ADIF = 0;

}
Phần cứng của PFC cũng rất quan trọng, phần cúng phải đúng thì bạn mới nói tới chuyện phần mềm,bạn post mạch nên xem nào
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.
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2009, 08:10 AM   #3
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
Mạch cứng của em đây:



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

thay đổi nội dung bởi: cuongthinh, 03-06-2009 lúc 08:18 AM.
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2009, 03:58 PM   #4
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
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!
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2009, 05:59 PM   #5
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Trích:
Nguyên văn bởi cuongthinh View Post
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!
Trích:
.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
Những biến này đã được giải thích trong phần code rồi, bạn đọc là hiểu thôi.
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.
File Kèm Theo
File Type: zip PFC_.zip (240.0 KB, 103 lần tải)
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2009, 08:02 PM   #6
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
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?

thay đổi nội dung bởi: cuongthinh, 04-06-2009 lúc 05:12 PM.
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-06-2009, 06:23 PM   #7
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
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é
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2009, 12:58 AM   #8
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Trích:
Nguyên văn bởi cuongthinh View Post
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é
Mạch lực của tôi cũng gióng của bạn thôi,tôi ráp bằng tay. Cái này tôi làm cũng lâu rồi nên không nhớ lắm, nhưng điên áp đưa váo các chân AN0,AN3,AN4 <=1. Bạn tính toán hệ số cho đúng.
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.
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-06-2009, 08:00 AM   #9
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
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ô ạ?)

thay đổi nội dung bởi: cuongthinh, 05-06-2009 lúc 08:08 AM.
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-06-2009, 09:59 PM   #10
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
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.
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-06-2009, 11:12 PM   #11
vodanh_bk
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 9
:
Trích:
Nguyên văn bởi cuongthinh View Post
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.
Chúc mừng bạn Toàn nhé. Bạn đã giải quyết được bài toàn điều khiển PFC cả phần lập trình lẫn phần lực thì không ai có thể nói bạn là gà được. Bảo vệ tốt nghiệp ngon lành nhé.
vodanh_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-06-2009, 02:09 AM   #12
thaithien
Đệ tử 7 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 213
:
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 !!!!
thaithien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-06-2009, 04:40 PM   #13
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Trích:
Nguyên văn bởi cuongthinh View Post
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.
Hi Thì tôi đã bảo bạn rồi 2 file PFC.s và PI.s là hai file chuẩn , chỉ việc xơi thôi, Chúc mừng bạn nhé. Chúc bạn bảo vệ thật tốt.

thay đổi nội dung bởi: tungnh, 09-06-2009 lúc 04:48 PM.
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 03:50 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam