![]() |
|
Tài trợ cho PIC Vietnam |
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... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Trưởng lão PIC bang
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. |
![]() |
![]() |
![]() |
#2 |
Đệ 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, |
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
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- 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. thay đổi nội dung bởi: minhcuong, 03-11-2006 lúc 11:29 AM. |
![]() |
![]() |
![]() |
#4 |
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? |
![]() |
![]() |
![]() |
#5 |
Đệ tử 2 túi
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. |
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: Jul 2005
Bài gửi: 26
: |
Cập nhật file tạo S-Curve
Phiên bản này tốt hơn. Viết rõ ràng, và cẩn thận hơn. Đổi lại extension *.m để chạy trong Matlab.
các bạn có thể thay đổi thông số của DCMotor vào các parameter phía trên. Xem trong Attach là S-Curve thực sự của motor tracking theo S-Curve tạo tuần tự. Phương pháp của tôi rất đơn giản, tất nhiên không thể là best được vì tôi chỉ dùng duy nhất một vòng hồi tiếp vị trí: Code:
error = ref_pos - enc_pos; PWM = Kp*error + Kd*(error - prev_error); có thêm thêm Iterm Code:
if (error<prev_error){ Intergrate_error -= prev_error; //Anti windup } else { Intergrate_error += prev_error; } if (Intergrate_error>threshold){ //threshold chọn từ 0.1~0.5 maximum của //PWM Intergrate_error = threshold; } PWM = Kp*error + Kd*(error - prev_error) + Ki thay đổi nội dung bởi: minhcuong, 04-11-2006 lúc 09:01 PM. |
![]() |
![]() |
![]() |
#7 | |
Nhập môn đệ tử
Tham gia ngày: Feb 2009
Bài gửi: 2
: |
![]() Trích:
__________________
AK Lovely |
|
![]() |
![]() |
![]() |
|
|