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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 03-01-2009, 10:30 PM   #11
ham_hoc_hoi
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 25
:
em viết đoặn mã cho PID như thế này, bác góp ý cho em có được ko nhé, em dùng công thức sai phân lùi để chuyển sang pt số
Code:
/Khai bao cac bien toan cuc cho xu lý PID
 float u[2];			//u[1] là gia tri dau ra bo PID thoi diem hien tai, dc dua vao gia tri PDC1 de thay doi gia tri % duty cycle
						//u[0] là gia tri dau ra bo PID thoi diem truoc do
 
 int e[3];				//e[2] gia tri sai lech toc do tai thoi diem dang xet ( e[2] = toc do dat - toc do do dc tu encoder)

 float A0,A1,A2;  
 float PID_P = 7, PID_I =1.3, PID_D =2.7;		//cac he so Kp, Ki, Kd
//Chuong trinh khoi tao thong so PID
//------------------------------------------------------------------------------
void PID_init(void)
{    
    u[0] =0;
    u[1] =0;
    e[0] =0;
    e[1] =0;
    e[2] =0;
    
    A0 = PID_P + PID_I + PID_D;
    A1 = -PID_P - 2*PID_D;
    A2 = PID_D;
}

//Chuong trinh xu ly ngat Timer 2 sau 10ms
//chu ki trich mau 10ms de tinh toan PID
//------------------------------------------------------------------------------
void  __attribute__((__interrupt__)) _T2Interrupt(void) 
{
		
    e[2] = (ADCBUF0 >> 1) - (POSCNT*3 );  	//e[2] gia tri sai lech toc do tai thoi diem dang xet 
											//e[2] = toc do dat - toc do do dc tu encoder  
											// toc do dat = ADCBUF0 >>1 (giá tri chuyen doi ADC bien tro dieu chinh toc do, lay 9 bit)
											// toc do do dc tu encoder = POSCNT * 3
	
	POSCNT = 0;
    
    //u[n] = u[n-1]  + A0*e[n] +A1*e[n-1] +A2*e[n-2]

    u[1] = u[0] + e[2]*A0 + e[1]*A1 + e[0]*A2;

    if (u[1] > 511)						//Gioi han tren
        {	u[1] = 511;}	
	if (u[1]<0)							//Gioi han duoi
        {	u[1] = 0;}	

    u[0] = u[1];                 
    e[0] = e[1];
    e[1] = e[2];
        
    PDC1 = u[1];
}
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 08:35 AM.


Đượ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