PIC Vietnam

Go Back   PIC Vietnam > Robotics > Thực hành

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

Thực hành Bắt đầu làm một robot như thế nào? Mẹo vặt? Kỹ thuật? Công nghệ?... Hãy bắt tay vào việc...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 18-10-2006, 03:32 PM   #316
bluepine
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 53
:
Smile báo cáo sơ bộ công việc

Chào mọi người, em hiện đang chạy thử trên 1 bo mạch thí nghiệm Pic có bán ngoài chợ Nhật Tảo, phần cầu H em dùng LM18200.(lắp trên break board)
Em hiện đã đọc được tín hiệu encoder về rồi (nhưng chỉ đọc được một xung bằng chế độ đếm xung của timer0 thôi, do khi thử với ngắt on change trên port b bị ngắt liên tục).
Phần PID thì em đã tính được hàm truyền động cơ, mô phỏng trên matlab và tính được thông số PID bằng phương pháp Nychol Zisman 2, cụ thể
hàm truyền động cơ:



mô phỏng được Kgh = 6600; Tdao động = 10.7 ms
tính ra được Kp = 3960
Kd = 5.926
Ki = 740186
các anh có kinh nghiệm xem các thông số trên có hợp lý không?

Còn về giải thuật chương trình chung để điều khiển thì em xem trên 1 ứng dụng của Microchip nhưng vẫn chưa hiểu, các anh có tài liệu nào dễ hiểu hơn gửi lên cho mọi người cùng xem nhé.
File Kèm Theo
File Type: pdf DC servomotor application of PIC.pdf (291.0 KB, 1712 lần tải)

thay đổi nội dung bởi: falleaf, 18-10-2006 lúc 03:36 PM.
bluepine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-10-2006, 03:44 PM   #317
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
em có thể gửi hình ảnh mô phỏng, hoặc file mô phỏng của em lên đây để mọi người cùng tham khảo được không?

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-10-2006, 03:09 PM   #318
bluepine
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 53
:
Mô phỏng Matlab

Đây là chưong trình mô phỏng

function MophongPID(Kp,Ki,Kd);

J=5.5e-4;
b=0.29;
K=0.11;
R=2.1;
L=3.3e-3;

num=K;
den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) (0)];

numcf=[Kd Kp Ki];
dencf=[1 0];

numf=conv(numcf,num);
denf=conv(dencf,den);

[numc,denc]=cloop(numf,denf,-1);
t=0:0.0005:0.08;
step(numc,denc,t);

em lần lượt gọi hàm MophongPID, với các thông số Kp, Ki, Kd thay đổi theo phương pháp NycholZisman2,

Đây là đáp ứng ứng với Kgh = 6600; (xem hinh mophong1), ta đo được Tdaođộng = 10,7ms
Từ pp Nycholzisman2, ta tính được Kp= 0.6*Kgh = 3960, Ki = Kp/Ti = Kp/(0.5*Tdđ) = 740186; Kd = Kp*Td = Kp*(0.125*Tdđ) = 5.3965
Đáp ứng của hệ ứng với Kp,Ki,Kd vừa tính được : xem hình 2
Hình Kèm Theo
File Type: bmp Mo phong1.bmp (230.7 KB, 236 lần tải)
File Type: bmp Mo phong2.bmp (230.7 KB, 155 lần tải)
bluepine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-10-2006, 04:39 PM   #319
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Tôi nghĩ những người tham gia mục ứng dụng thực hành này nên viết lại các phần ứng dụng thực hành của mình thành một bản báo cáo khoa học (scientific report). Các bác admin cũng nên tổ chức một tạp chí điện tử cho diễn đàn chẳng hạn, trong tạp chí điện tử đó tập hợp những bài viết, bài báo cáo có tính học thuật khá tốt rồi tập hợp lại thành một số. Ví dụ định kỳ một năm 1, 2 số chẳng hạn. Cũng có thể lựa chọn trong các mods thành một ban biên tập để đóng góp ý kiến cho bài viết có chất lượng tốt.

Hải Âu
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-10-2006, 06:14 PM   #320
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Trích:
Tôi nghĩ những người tham gia mục ứng dụng thực hành này nên viết lại các phần ứng dụng thực hành của mình thành một bản báo cáo khoa học (scientific report). Các bác admin cũng nên tổ chức một tạp chí điện tử cho diễn đàn chẳng hạn, trong tạp chí điện tử đó tập hợp những bài viết, bài báo cáo có tính học thuật khá tốt rồi tập hợp lại thành một số. Ví dụ định kỳ một năm 1, 2 số chẳng hạn. Cũng có thể lựa chọn trong các mods thành một ban biên tập để đóng góp ý kiến cho bài viết có chất lượng tốt.
Em ủng hộ ý kiến của anh.

Hiện nay các thành viên chưa có thói quen viết, vì có thể cho rằng đó là một công việc mất thời gian, tốn công sức. Nhưng cái gì cũng có cái giá của nó. Bỏ ra một chút thời gian và công sức sẽ thu lại được sự vững vàng trong các kiến thức, các vấn đề đã từng giải quyết.

Hơn nữa, đã gọi là dự án mở, thì không thể thiếu một hai bài viết được. Làm tới đâu viết tới đó, củng cố lại tới đó, dễ theo dõi, dễ hướng dẫn, làm việc có định hướng và tập trung hơn.

Bữa giờ em cứ chờ đợi ở luồng này một bài báo có tính chất học thuật, để học và biết thêm (em chưa sờ tới cái động cơ bao giờ cả ). Nhưng chờ hoài không thấy, mà thấy hơi lung tung thế nào ấy. Lúc thì nói về sơ đồ nguyên lí, lúc thì nói về mô phỏng, ... Các anh hướng dẫn cũng vất vả theo.

Được một thời gian sôi động, thành quả thực hiện như thế nào, tiến độ tới đâu, em cũng chịu.

Bản thân em thì viết chương trình cho con LED nó sáng em cũng viết lại. Đấy, cũng có được một cái tutorial coi được. Cũng không thể nói là thiếu thời gian để viết. Anh Nam bận đến bao nhiêu cũng bỏ công sức và thời gian viết các tutorial về dsPIC.

Em nghĩ mỗi người chia ra viết một đoạn, ai mô phỏng rồi thì viết cái báo cáo về mô phỏng, ai test mạch thành công rồi thì viết một chút để giải thích về sơ đồ nguyên lý và nguyên lí hoạt động, ai viết chương trình thành công rồi thì viết một chút về chương trình của mình. Form chuẩn đã có rồi. Cuối cùng tổng hợp lại, mọi vấn đề về PID sẽ được giải quyết, ai bị kẹt phần nào, thì thma khảo của người đã giải quyết được rồi, cuối cùng ai cũng làm được, đõ tốn thời gian và công sức.
__________________


thay đổi nội dung bởi: ntc, 19-10-2006 lúc 06:28 PM.
ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-10-2006, 08:51 PM   #321
HaiAu2005
Đệ tử 9 túi
 
Tham gia ngày: May 2006
Bài gửi: 150
:
Cấu trúc của một bài báo cáo khoa học (để đăng tạp chí, tham dự hội nghị) thông thường có cấu trúc và các mục như sau:

Tiêu đề (Title): ngắn gọn cô đọng chứa đựng thông tin chính về nội dung báo cáo. Thông thường dài khoảng 10 từ.

Tên người viết (tác giả) và người cộng tác cùng địa chỉ liên lạc.

Tóm tắt (Abstract, hoặc Summary): Tóm tắt nội dung của bài báo cáo. Phần này nói chung là tóm tắt ý chính của bài báo. Thường dài khoảng 150 (ngắn) tới 300 (hơi dài) từ.

Từ khóa (Keywords): các từ chính dùng để phục vụ cho việc tìm kiếm, đặc biệt các tài liệu điện tử - các từ khóa này thông thường do hội nghị và các ban biên tập tạp chí quy định.

1. Giới thiệu (Introduction)

2. Phương pháp (Methodology) - Thuật toán (Algorithms)

3. Thí nghiệm (Experiments) hoặc Mô phỏng (Simulation)

4. Kết quả thí nghiệm - Kết quả mô phỏng (Results)

5. Phân tích, đánh giá thảo luận (Analysis, Evaluation and Discussion)

6. Kết luận (Conclusion) và Hướng phát triển tiếp (Future Work)

Lời cảm tạ (Acknowledgements)
Tài liệu tham khảo (References)
Phụ lục (Appendices)

Điểm quan trọng trong bài báo là người viết phải biết cách trích dẫn tài liệu tham khảo, trình bày các biểu bảng số liệu sao cho dễ đọc dễ hiểu. Khi viết báo cáo khoa học người viết cần phải biết áp dụng hệ thống tham khảo nào và theo suốt trong cả bài. Trên thế giới có nhiều hệ thống tham khảo, ví dụ như Hệ thống tham khảo Harvard, Hệ thống tham khảo APA (American Psychology Association)... Các bài báo về khoa học tự nhiên và công nghệ thường sử dụng hệ thống tham khảo Harvard (Harvard Referencing System). Ai quan tâm có thể tìm được hướng dẫn viết bài sử dụng hệ thống tham khảo Harvard trên Internet. Ví dụ sử dụng hệ thống tham khảo Harvard, hệ thống này có hai phần: 1. viết lời trích dẫn trong đoạn văn, 2. liệt kê danh mục tài liệu hướng dẫn trong phần Tài liệu hướng dẫn. Phần 1 có liệt kê nhiều loại trích dẫn trực tiếp, gián tiếp các loại ấn phẩm khác nhau, đại loại là nếu trích dẫn thông tin "Hệ thống điều khiển PID đầu tiên được thiết kế cho tàu thủy vào năm 1922..." thì có thể viết theo một số cách như sau:

Theo AB (2003) hệ thống điều khiển PID đầu tiên được thiết kế cho tàu thủy vào năm 1922...

Hệ thống điều khiển PID đầu tiên được thiết kế cho tàu thủy vào năm 1922... (AB, 2003).

Trong AB (2003) viết "Hệ thống điều khiển PID đầu tiên được thiết kế cho tàu thủy vào năm 1922... ".

Và trong danh mục tài liệu tham khảo liệt kê tài liệu theo thứ tứ ABC như sau..

Tài liệu tham khảo

AA, B (2001) ...

AB, C. (2003) Modern PID Control Systems. Control Engineering Practice. Elsevier, Pergamon, UK, 2(3), pp. 12-20.

...

H.A.

thay đổi nội dung bởi: HaiAu2005, 19-10-2006 lúc 09:13 PM.
HaiAu2005 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-10-2006, 11:07 AM   #322
bluepine
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 53
:
Chào mọi người, em cũng thấy ý kiến của mọi người về báo cáo khoa hoc rất có ích cho mọi người tham khảo, học hỏi thêm kiến thức từ những kinh nghiệm thực tế.
Tuy nhiên hiện nay, dự án đang còn đang thực hiện, giải thuật bọn em đang nghiên cứu để áp dụng vẫn chạy chưa đúng, những tài liệu tham khảo còn chưa hiểu rõ được. Cho nên, em nhận thấy khi đã chạy thành công ra được kết quả đúng thì mới làm báo cáo khoa học thể, chi tiết cho mọi người xem được.
bluepine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-11-2006, 07:44 PM   #323
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Hiện nay cho hỏi lại, còn bao nhiêu người theo tiếp dự án này, đã làm động cơ chạy được chưa, đọc được số liệu về máy tính chưa (số liệu encoder), dùng Hyperterminal, hoặc là dùng chương trình tự viết...

Tất cả đã làm xong phần này chưa, chúng ta có thể đi vào vấn đề PID được chưa?

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-11-2006, 08:51 AM   #324
bluepine
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 53
:
thay đổi PID theo tải

Trích:
Nguyên văn bởi falleaf View Post
Hiện nay cho hỏi lại, còn bao nhiêu người theo tiếp dự án này, đã làm động cơ chạy được chưa, đọc được số liệu về máy tính chưa (số liệu encoder), dùng Hyperterminal, hoặc là dùng chương trình tự viết...

Tất cả đã làm xong phần này chưa, chúng ta có thể đi vào vấn đề PID được chưa?

Chúc vui
Chào mọi người, em hiện đã điều khiển được động cơ dùng PID, số liệu khá chính xác (sai lệch về tốc độ rất nhỏ). Tuy nhiên chỉ điều khiển được với một tải cố định thôi, khi gỡ cục tải ra thì không còn đúng nữa nên em nghĩ các thông số PID thay đổi khi tải thay đổi. Anh F cho em hỏi có cách nào tính các thông số PID theo sự thay đổi của tải không?
Đây là chương trình em đã chạy tốt với 1 tải cố định

Code:
#include <16f877a.h>
#fuses HS,NOPROTECT,NOWDT,NOBROWNOUT
#use delay (clock = 20000000)
// Giao tiep vi dieu khien
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, parity=N, bits=8)         // Giao tiep RS232

#include <stdlib.h>
#include <string.h>
#include <math.h>
#include<ctype.h>

#byte PR2 = 0x92

int16 e2;
int16 e1;
///////////////////////////////////////////////////////

int16 v_set = 250;

/////////////////////////////////////////////////////////
int16 v_cur;
int16 e_sum;
int16 e_del;
int16 flag_timer1;


///////////////////////////////////////////////////////////
unsigned long kp =5;
unsigned long ki = 0.62;
unsigned long kd = 10;
////////////////////////////////////////////////////////////


int16 pw_duty;
int16 counted_round_value;
int16 temp_timer0;
int16 update_counted_round_value;

#byte TMR0 = 0x01      //timer0 REGISTER
#byte TMR1_L = 0X0E
#byte TMR1_H = 0X0F

#define START_VALUE_TIMER0   55  //tri khoi tao ban dau cua timer0 55, so xung dem duoc moi khi ngat la 255 - 55
#define START_VALUE_TIMER1    15535  //tri khoi tao ban dau cua timer1 65536-15536

#INT_TIMER0 // ngat timer0 tang bien len 1
void TIMER0_int()
{

      set_timer0(START_VALUE_TIMER0);
      counted_round_value++;

}

#INT_TIMER1 // ngat timer0 tang bien len 1
void timer1_int()
{

      set_timer1(START_VALUE_TIMER1);


      temp_timer0 = get_timer0();

      if (temp_timer0 == 0){
      temp_timer0 = 255;
      }
      v_cur = counted_round_value*400 + 2*(temp_timer0 - START_VALUE_TIMER0);
      set_timer0(START_VALUE_TIMER0);
      counted_round_value = 0;
      //printf("%ld\t",pw_duty);
      flag_timer1 = 1;
}


void init_timer0()
{

   setup_timer_0(RTCC_EXT_H_TO_L | RTCC_DIV_2); // timer0 dung xung ngoai va chia xung vao


   setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); // moi lan tran timer1 la 50000*4* (1/5) uS = 40ms

   set_timer0(START_VALUE_TIMER0);
   set_timer1(START_VALUE_TIMER1);
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(INT_TIMER1);
}

void init_PWM(int16 frequency){

   setup_ccp1(CCP_PWM); // initiate PWM
   PR2 = 20000000/4/frequency - 1; // set PWM period

   setup_timer_2(T2_DIV_BY_1,255,1);   // initiate time 2  The cycle time will be (1/clock)*4*t2div*(period+1)
                                       //   (1/20000000)*4*1*(255+1) =  51.2 us( will over flow every 51.2 us, will intrup every 51.2 uS or 19.5 khz;

}

void cal_pid(){

long temp_kp;
long temp_ki;
long temp_kd;
  e2 = v_set - v_cur;
  e_sum += e2;
  e_del = e2 - e1;
  e1 = e2;

  temp_kp = kp*e2;
  temp_ki = ki*e_sum;
  temp_kd = kd*e_del;
  pw_duty +=temp_kp;

  if (pw_duty <1000)
     pw_duty += temp_ki;
  if (pw_duty <1000)
     pw_duty += temp_kd;
  if (pw_duty <256) // vi khi pw_duty <256 thi PWM chi dieu rong xung 8 bit                                                                                    /                         //chu khong phai  10 bit,
     pw_duty = 256;
  if (pw_duty >1000) // bao hoa
     pw_duty = 1000;

printf(" \t%ld", v_cur); // truyen toc do xung ve may tinh hien thi tren Hyperterminal
}

void main()
{
   int8 timer0_value;

   init_timer0();
   init_PWM(19500);

   while(true){
      if (flag_timer1 ==1){
      flag_timer1 = 0;
      cal_pid();
      set_pwm1_duty(pw_duty);
      }
   }
}
mến

thay đổi nội dung bởi: falleaf, 11-09-2008 lúc 10:07 PM.
bluepine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-11-2006, 03:38 PM   #325
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Em hỏi câu đó mà anh trả lời thì anh là thằng nói dóc

Em thử nghĩ coi, vấn đề muôn thuở của điều khiển, vẫn chỉ là cái actuator gắn cục tải vào, và mình muốn nó chạy như thế nào thì nó chạy như thế ấy.

Tất nhiên, anh không nói là không có cách để đạt đến một cái gì đó, người ta vẫn có giả pháp Auto Tuning PID, mà anh Hùng đã giới thiệu.

Em có thể download trên www.tailieuvietnam.net

Em có thể gửi file các thông số đo được lên đây, và em có thể dùng Matlab để nhúng các thông số đó, vẽ thành các đồ thị để giới thiệu cho mọi người?

Ngoài ra, em thay cục tải khác, và em thử tìm lại hệ số PID phù hợp cho hai cục tải đó.

Khi em thay tải khác, em cố gắng tìm hệ số bằng một cách cảm tính, bước này anh đã có đề cập trước rồi. Có nghĩa là, anh muốn em cố gắng sử dụng cảm tính của mình, điều chỉnh các hệ số, cho nó chạy, rồi đọc giá trị về, rồi quan sát: rising time (thời gian đáp ứng), overshoot (vọt lố), và ss error (chả biết cái này tiếng Việt gọi là cái gì nữa).

Em quan sát nó, và em cố gắng cảm nhận, giả sử tôi tăng P, thì điều gì xảy ra, giảm P thì điều gì xảy ra, giả sử tôi có một P tương đối tốt, tăng I, thì điều gì xảy ra, giảm I thì điều gì xảy ra.. tương tự cho D...

Tóm lại là, em cố gắng cảm nhận, đây là giai đoạn quan trọng nhất. Bảng tóm tắt những ảnh hưởng anh đã cung cấp trước đây, nhưng không nhớ, nhưng anh vấn muốn em cảm nhận nhiều hơn khi thực hành điều khiển.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-11-2006, 11:04 PM   #326
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Mecha xin cung cấp một số tài liệu về vấn đề chỉnh định thông số cho bộ điều khiển PID:

1. PI and PID controller tuning rules for time delay processes: A summary
http://www.tailieuvietnam.net/downlo...0processes.pdf
Tài liệu tiếng Anh, tập hợp khoảng 60 phương pháp chỉnh định PID cho nhiều dạng mô hình đối tượng có trễ khác nhau.

2. Một số khái niệm cơ bản về lý thuyết điều khiển PID, điều khiển mờ và mờ lai PID.
http://www.tailieuvietnam.net/downlo...BPG.221205.pdf
Tài liệu tiếng Việt nhưng hiện vẫn còn đang trong giai đoạn xây dựng.

3. Một phần mềm viết bằng Basic cho phép tính toán thông số bộ điều khiển PID theo phương pháp Reinisch
http://www.tailieuvietnam.net/downlo...D_Reinisch.zip
Phần mềm tự động tính toán thông số bộ điều khiển PID cho các đối tượng quán tính bậc nhất, bậc hai và các đối tượng theo mô hình của Reinisch; xét ổn định theo tiêu chuẩn Routh và vẽ đồ thị đáp ứng quá độ. Trong phần mềm đã có phần hướng dẫn sử dụng.
Chú ý: sử dụng không đúng các bước rất dễ bị báo lỗi. Thông cảm chạy lại từ đầu!

Falleaf: Các tài liệu này đã được chuyển về kho. Nếu sau này bị mất link của ftp, các bạn tìm lại bằng tên trong www.kho.tailieuvietnam.net.
__________________
Sống là động nhưng lòng luôn bất động,
Sống là thương nhưng lòng chẳng vấn vương,
Sống yên vui danh lợi vẫn coi thường,
Tâm bất biến giữa dòng đời vạn biến.


Chú ý: đề nghị các thành viên đọc luồng dưới đây trước khi post bài:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: falleaf, 03-11-2006 lúc 12:07 AM.
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2006, 08:36 AM   #327
bluepine
Đệ tử 3 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 53
:
Chào mọi người, cảm ơn mọi người đã gửi tài liệu, em sẽ về chạy lại chương trình để lấy số liệu chính xác đưa lên cho mọi người cùng xem.
còn phần dùng matlab để vẽ đồ thị kết quả đưa về thì em chưa thử bao giờ nên cần có thời gian để tìm hiểu. à, anh nào có tài liệu hướng dẫn phần này thì gửi lên cho giùm em nhe.
mến,
bluepine vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2006, 10:26 AM   #328
minhcuong
Đệ tử 2 túi
 
minhcuong's Avatar
 
Tham gia ngày: Jul 2005
Bài gửi: 26
:
Hiện giờ tôi đang điều khiển một số DC Motor đồng thời cho dự án của lab. Phần mềm, phần cứng, + các phần linh tinh tôi làm từ A-Z trừ việc chế tạo động cơ, và chip điều khiển.

Phương pháp trình PID là trial and error tất nhiên có suy nghĩ một tý, nhưng vẫn là nông dân thôi. Sẽ học hỏi các bác thêm vụ auto tuning.


Tôi gửi kèm các file ảnh capture và file matlab (đổi sang đuôi .txt) chứa transfer function và hàm tạo S-curve chỉ cần dùng mấy phép +,-,*/ shift cơ bản để tăng tốc độ tính toán.

Nhìn chung motor chạy rất êm, chính xác error<1xung, khi có disturbance. Video quay lúc nào rỗi tôi sẽ post lên YouTube.


Một số lưu ý: trong S-Curve nên chia thành 5 giai đoạn:
1- tăng positive acceleration, tốc độ tăng nhanh
2- giảm acceleration, tốc độ tăng chậm lại
3- tốc độ không đổi
4- tăng negative acceleration, tốc độ giảm nhanh
5- giảm acceleration, tốc độ giảm chậm lại
6- chỉnh sửa sai lệch vị trí và dừng hẳn

từ 1->4 chỉ nên dùng PD tránh windup
còn từ 5->6 dùng PID để có thêm phần sửa static error. Lưu ý khi dùng I ở giai đoạn này, nếu error giảm là lập tức reset ngay I term để tránh overshoot. Xem cái ControlScreen , để ý đoạn đồ thị cuối, có ít xung nhọn trồi lên là do I term dùng để sửa lổi vị trí

Khi đọc ghi vào RS232 nên dùng ngắt để tránh blocking main algorithm.

Nếu có thời gian, tôi định implement một đoạn chương trình sau đây:
A- Auto tuning PID:
1- Xác định dynamics của motor tự động bằng gửi step response. Dữ liệu thu thập được, gửi về máy tính để xác định transfer function
2- Sau khi biết transfer function, sampling rate là vòng lặp thử nghiệm các bộ thông số PID rồi chọn kết quả tốt nhất.
Việc tạo bộ thông số PID như thế nào, tôi chưa có thời gian tìm hiểu..... Bác nào có cao kiến thì cho vài lời hướng dẫn.

B- Thay RS232 bằng USB để có thể đọc trực tiếp nhiều dữ liệu hơn từ motor: position, vel, các loại thông số trong algorithm để dễ dàng debug và phân tích.
Hình Kèm Theo
File Type: jpg controlscreen.jpg (162.1 KB, 206 lần tải)
File Type: jpg MotorAmp.JPG (137.4 KB, 175 lần tải)
File Type: jpg MotorController.JPG (133.0 KB, 198 lần tải)
File Kèm Theo
File Type: txt FaulHarber1724SRModel.txt (1.6 KB, 150 lần tải)
File Type: txt SCurveSmooth2.txt (4.5 KB, 131 lần tải)

thay đổi nội dung bởi: minhcuong, 03-11-2006 lúc 11:29 AM.
minhcuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2006, 11:18 AM   #329
Trần Quốc Đạt
Nhập môn đệ tử
 
Tham gia ngày: Nov 2005
Bài gửi: 8
:
new style driver

cho minh hoi co ai da lam mach dieu khien dong co dung Hbridge nhu so do da cho ma chay duoc hoan chinh tai cong suat lon chua.
cac bac xai bo fet irf9540(19A/100V) voi irf(28A/100V), ma cac bac chay dong co ti hon the lam gi duoc cho doi chu it ra phai chay gan sat voi so the moi thu duoc truong trinh duoc.
con 1 viec nua do la can phai nang phan driver len sao cho lap trinh cang do ton cong cang tot chu theo nhu cac bac no co san cu choi the thi lap trinh co ma chet ah?
that su ra minh da tham gia dien dan lau roi nhung ko co thoi gian cua minh rat it.
nhung minh se dua cac ban so do mach dieu khien dong co hoi nam truoc minh thi robocon cua doi minh cho cac ban tham khao thu se don gian lai rat nhieu cho cac ban.
sao attach file ko duoc?
Trần Quốc Đạt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-11-2006, 11:32 AM   #330
minhcuong
Đệ tử 2 túi
 
minhcuong's Avatar
 
Tham gia ngày: Jul 2005
Bài gửi: 26
:
Nếu bạn cần điều khiển H Bride dòng lớn. Search Google, OSMC.

Ở lab có thằng bạn đã thiết kế nhái bo mạch OSMC. Hôm nào rỗi tôi post lên cái schematics và cả PCB layout (nếu xin được nó). À mà hình như trong mục file của OSMC yahoo groups cũng có rất đầy đủ đấy.
minhcuong vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 05:27 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