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 Bài Trong Ngày 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 31-03-2009, 10:36 AM   #1
sandro_bk
Đệ tử 4 túi
 
sandro_bk's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 66
:
Cái PID này người ta đã làm từ rất rất lâu rồi,cái thread này cũng đã tạo ra từ rất lâu mà đến nay cũng chỉ kết thúc ở công thức PID,thật đáng thất vọng,
có điều khi làm lý thuyết là 1 chuyện,thực nghiệm là 1 chuyện,mô phỏng chạy rất ok nhưng thực nghiệm thì lại ko có thông số động cơ?vậy là cuối cùng cũng phải mò mấy hệ số KP,Ki,Kd,
sandro_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2009, 05:23 PM   #2
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Trích:
Nguyên văn bởi sandro_bk View Post
Cái PID này người ta đã làm từ rất rất lâu rồi,cái thread này cũng đã tạo ra từ rất lâu mà đến nay cũng chỉ kết thúc ở công thức PID,thật đáng thất vọng,
có điều khi làm lý thuyết là 1 chuyện,thực nghiệm là 1 chuyện,mô phỏng chạy rất ok nhưng thực nghiệm thì lại ko có thông số động cơ?vậy là cuối cùng cũng phải mò mấy hệ số KP,Ki,Kd,
@sandro_bk
- Thành viên mgdaubo có thắc mắc về phần công thức nên tôi cung cấp một chút thông tin cho bạn ý.
- Topic này tính đến nay đã có gần 75 nghìn lượt xem và ít nhiều các nhóm cũng đã có kết quả cho nên không thể nói là đáng thất vọng được. Hơn nữa đây là diễn đàn nên việc "học hành" ở đây không giống như trên lớp. Khi tham gia điễn đàn, không ai bắt ai phải thi, phải nộp báo cáo, thuyết minh đầy đủ cả.
- Đề tài tuy đã kết thúc nhưng các thông tin trong topic này vẫn còn giá trị của nó. Các thành viên mới vẫn có thể tham khảo và áp dụng vào công việc học tập của mình.
__________________
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
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2009, 02:48 PM   #3
thanhdai
Đệ tử 1 túi
 
thanhdai's Avatar
 
Tham gia ngày: Sep 2008
Bài gửi: 20
:
Em đã làm xong bộ điếu khiển dc servo chạy rất ok , đã kết nối với bộ điều khiển cnc tốt có một đoạn phim nhưng không biết làm thế nào pót lên để các bác góp ý
thanhdai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2009, 04:44 PM   #4
nhatson.elec
Đệ tử 4 túi
 
Tham gia ngày: Nov 2008
Bài gửi: 84
:
gởi lên youtube roi post link bác ah

b/r
nhatson.elec vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-03-2009, 07:38 PM   #5
sandro_bk
Đệ tử 4 túi
 
sandro_bk's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 66
:
gửi bác Mecha,ở đây em thật sự ko có ý gì cả,thật sự cái PID này người ta đã làm lâu lắm rồi,bây giờ mình làm lại,việc mở ra topic này là rất hay,nhưng cách làm theo kiểu phong trao hô hào rồi tất ngấm,em nói chỉ muốn để sau này có topic nào cũng hay như vầy nên làm có quy củ,ví dụ hướng dẫn từng module của PIC cần sử dụng,recommend nên dùng con PIC nào?tại sao?về thiết kế phần cứng về,giải thuật chung,....mô phỏng rồi thực nghiệm,để nếu ko đi đến cuối cùng thì các bạn lứa sau muốn làm cũng có cơ sở,chứ đã hơn 400 bài rồi mà vẫn có bạn hỏi về công thức PID,thì những bài trước đó nói về cái gì?
Cái DC này em đã làm 2,3 cái rồi,nhưng PID toàn mò,vì sao?ko có thông số động cơ mà thực tế đâu phải lúc nào em cũng có thể có được thông số động cơ để tìm hệ số PID theo lý thuyết này,lý thuyết nọ,rõ ràng thực tế rất khác với lý thuyết,
Ở đây,em biết các bác mod và bang chủ đều rất giỏi,em ko dám chê ai,nhưng chúng ta có thể làm tốt hơn thế này phải ko các bác?
sandro_bk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-04-2009, 10:19 AM   #6
thanhdai
Đệ tử 1 túi
 
thanhdai's Avatar
 
Tham gia ngày: Sep 2008
Bài gửi: 20
:
EM MỚI LÀM XONG CÁI NÀY . CHẠY THẤY CŨNG KHÁ TỐT INPUT <100Kz ĐIỀU KHIỂN PID NHƯNG HIỆN TẠI CHỈ NHỎ HƠN 40VOL. EM ĐANG LÀM CÁI SẺVO 200VOL - 20A BỊ MẮC KẸT CÁI NGUỒNG XUNG , BÁC NÀO CÓ CÁI NGUỒN DAO ĐỘNG NGHẸT NÀO CHẠY TỐT CHO EM XIN ĐƯỢC KHÔNG, VÌ LÀM ÁP CAO PHẢI CÓ NHIỀU NGUỒN ĐIỀU KHIỂN RIÊNG .
MONG CÁC BÁC GIÚP ĐƠ&

http://www.youtube.com/watch?v=TTu06sOmMRA
thanhdai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2009, 03:16 AM   #7
gà mờ
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 10
:
Chào các bác em cung làm về đề tài pid điều khiển động cơ và cũng tìm các hệ số kp,ki,kd theo phương pháp thực nghiệm có điều động cơ của em khi chạy không tải thì đáp ứng khá tốt ở tốc độ cao . còn khi cho tốc độ nhỏ khoảng 30v/phút thì nó lại chạy rật cục,em thử rất nhiều giá trị pid mà không làm thay đổi tình hình . vả lại khi cho tải vào thì nó mất ổn định . Bác nào đã làm Pid cho động cơ với cả hai vòng phản hổi,dòng điện và tốc độ cho em xin mạch điện và chương trinh để tham khảo với
THANKS!!!
gà mờ vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2009, 04:02 AM   #8
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Trích:
Nguyên văn bởi gà mờ View Post
Chào các bác em cung làm về đề tài pid điều khiển động cơ và cũng tìm các hệ số kp,ki,kd theo phương pháp thực nghiệm có điều động cơ của em khi chạy không tải thì đáp ứng khá tốt ở tốc độ cao . còn khi cho tốc độ nhỏ khoảng 30v/phút thì nó lại chạy rật cục,em thử rất nhiều giá trị pid mà không làm thay đổi tình hình . vả lại khi cho tải vào thì nó mất ổn định . Bác nào đã làm Pid cho động cơ với cả hai vòng phản hổi,dòng điện và tốc độ cho em xin mạch điện và chương trinh để tham khảo với
THANKS!!!

Khi thay đổi giá trị của tải, bạn đã tính lại thông số cho PID chưa?

Với vòng điều khiển dòng và tốc độ, bạn chỉ nên dùng PI thôi. Thành phần D có thể là nguyên nhân (phần mềm) gây cho đáp ứng động cơ của bạn bị giật. Ngoài ra có thể còn do thiết kế phần cứng của bạn nữa.
__________________
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
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2009, 12:22 AM   #9
gà mờ
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 10
:
trưởng lão cho em hỏi công thức PID dùng cho dong điện thì cũng giống công thức của tốc độ phải không vậy.em tìm trên mạng nhưng ít thấy nói về dùng pid để điều chỉnh dòng điện ,vì chúng em không được đào tạo bài bàn về điều khiển nên nhờ trưởng lão nói chi tiết một chút
THANKs
gà mờ vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2009, 12:45 AM   #10
mtuankct
Đệ tử 6 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 125
:
Về công thức tổng quát thì PID cho mạch tốc độ hay dòng điện đều như nhau, vấn đề là ở bộ tham số, người ta có nhiều cách để tính toán các bộ tham số cho mỗi mạch vòng (các đối tượng cần thiết kế là khác nhau nên các bộ tham số là khác nhau) bạn có thể tìm đọc cách thiết kế các bộ tham số trong nhiều sách khác nhau về đk tự động, truyền động điện
mtuankct vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2009, 06:00 PM   #11
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Như bạn mtuankct đã trả lời, công thức PID cho vòng dòng điện và tốc độ là như nhau (thường là PI). Chỉ khác nhau ở thông số P và I của bộ điều khiển. Vòng điều khiển dòng yêu cầu tốc độ đáp ứng phải nhanh hơn vòng tốc độ nên chu kỳ trích mẫu sẽ phải nhỏ hơn. Tương tự nếu vòng ngoài cùng là điều chỉnh vị trí thì chu kỳ trích mẫu của vòng tốc độ cũng phải nhỏ hơn chu kỳ trích mẫu của vòng điều chỉnh vị trí.

Chu kỳ trích mẫu được chọn theo định lý Nyquist-Shannon (http://en.wikipedia.org/wiki/Nyquist...mpling_theorem) thì tần số lấy mẫu được chọn > 2 lần bandwidth của hệ thống (tức là chu kỳ mẫu nhỏ hơn 2 lần):

- Bandwidth của vòng điều chỉnh dòng điện vào khoảng 10^6 rad/s (chu kỳ khoảng 6 micro giây) => chu kỳ lấy mẫu tầm 3 micro giây. Mô phỏng với chu kỳ lấy mẫu nhỏ như thế này thì oki những khi lập trình thực tế thì vòng điều khiển (real-time) với chu kỳ lấy mẫu nhỏ như thế này là không tưởng. Nên thực tế thường thực hiện lấy mẫu cỡ 0.1 mili giây (10kHz).
- Bandwidth của vòng điều chỉnh tốc độ vào khoảng 120-150 rad/s (20-25Hz) => tần số trích mẫu vào khoảng > 40-50Hz. Tuy nhiên thực tế thường chọn f của vòng điều chỉnh tốc độ vào khoảng 1kHz.
- Bandwidth của vòng điều chỉnh vị trí vào khoảng 30-40 rad/s (5-6Hz) => tần số trích mẫu vào khoảng > 10-12Hz. Tuy nhiên thực tế thường chọn f của vòng điều chỉnh vị trí vào khoảng 100Hz.

Thực hiện 3 tần số trích mẫu khác nhau trên cùng 1 hệ thống điều khiển real-time sẽ là một vấn đề. Cách đơn giản nhất là dùng tần số trích mẫu cơ bản = 10kHz, rồi dùng biến counter trong vòng lặp để giảm tần số trích mẫu xuống cho vòng tốc độ và vị trí. Ví dụ counter=10 sẽ được f=1kHz, counter=100 sẽ được f=100Hz.
__________________
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
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2009, 10:40 PM   #12
gà mờ
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 10
:
Cảm ơn trưởng lão ! Từ gợi ý của anh em làm như vầy không biết có đúng không mong anh chỉ giáo giùm thêm (tạm thời em tiến hành làm hai vòng phản hồi là tốc độ và dòng.) như sau:
Bước 1:
Thực hiện vòng phản hồi tốc độ với chu kỳ 100msec
ev=Vset-Vcur;
ev_cur = ev + evlast; // e_cur sai so hien tai
ev_sum+= ev_cur;
ev_del=ev-elast;
duty +=((kp*ev)+(ki*ev_sum)+(kd*ev_del)); // Công thưc tinh PID(không biết += hay chỉ = thôi anh nhỉ)
if(duty >511) //gioi han PWM 9Bit
{ duty =511; }
if(duty <0) {duty =0; }
evlast=ev;
Bước 2 từ duty em suy ra điện áp Uư= (duty/TOP)*Umax (top =511)
--> Iset = (Uư-kb*ω)/Rư
---> sau đó em cũng thực hiện phản hồi dòng như trên chu kỳ 10msec
ei=I set-Icur;
ei_cur = ei + eilast;
ei_sum+= ei_cur;
ei_del=ei-eilast;
duty +=((kp*ei)+(ki*ei_sum)+(kd*ei_del));
if(duty >511)
{ duty =511; }
if(duty <0) {duty =0; }
eilast=ei;
Pwm = duty;
Anh xem giúp xem em làm vậy có được không nếu không thì anh chỉ giúp em cách lồng hai vòng phản hồi này vào nhau với nếu mà lồng được cả vòng phản hồi vị trí nữa thì càng tốt
Em cảm ơn!!!
gà mờ vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2009, 01:38 AM   #13
Mecha
Trưởng lão PIC bang
 
Mecha's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 315
:
Bạn chú ý những chỗ in đậm:
- Đây là PID số nên bạn phải có chu kỳ trích mẫu trong công thức.
- Tín hiệu ra của vòng điều chỉnh tốc độ được dùng làm setpoint cho vòng điều chỉnh dòng điện.

Code:
 
// Cho mach vong toc do:
// ham truyen PI trong s-plane: uOutvantoc = Kvantoc [1 + 1/(s*Tivantoc)] errorV
Tvantoc = 0.1; // sampletime = 100ms
errorV = Vref - Vcur;
uPvantoc = Kvantoc * errorV;
uIvantoc = uIvantoc_previous + ( ( Kvantoc * Tvantoc * errorV ) / Tivantoc );
uOutvantoc = uPvantoc + uIvantoc;
uIvantoc_previous = uIvantoc;
 
 
// Cho mach vong dong dien:
// ham truyen PI trong s-plane: uOutdong = Kdong [1 + 1/(s*Tidong)] errorD
Tdong = 0.01; // sampletime = 10ms
errorD = uOutdong - Dcur;
uPdong = Kdong * errorD;
uIdong = uIdong_previous + ( ( Kdong * Tdong * errorD ) / Tidong );
uOutdong = uPdong + uIdong;
uIdong_previous = uIdong;
__________________
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: Mecha, 09-04-2009 lúc 01:44 AM.
Mecha vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-04-2009, 01:05 AM   #14
gà mờ
Nhập môn đệ tử
 
Tham gia ngày: Mar 2006
Bài gửi: 10
:
Anh mecha ! cho em làm phiền chút trong công thức trên của anh có nói tín hiệu điều chỉnh vòng tốc độ được dùng làm setpoint của vòng phản hồi dòng có nghĩa là mình đặt luôn uOutdong = uOutvantoc hay gì bởi vì nếu làm như thế thì setpoint sẽ bị thay đổi nên em hỏi lại mong anh chỉ rõ thêm nữa
Cảm ơn anh!!
__________________
Sống là cố gắng , cố gắng là sống
gà mờ vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-05-2009, 03:10 AM   #15
hutdragon
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 2
:
Trích:
Nguyên văn bởi Mecha View Post
Như bạn mtuankct đã trả lời, công thức PID cho vòng dòng điện và tốc độ là như nhau (thường là PI). Chỉ khác nhau ở thông số P và I của bộ điều khiển. Vòng điều khiển dòng yêu cầu tốc độ đáp ứng phải nhanh hơn vòng tốc độ nên chu kỳ trích mẫu sẽ phải nhỏ hơn. Tương tự nếu vòng ngoài cùng là điều chỉnh vị trí thì chu kỳ trích mẫu của vòng tốc độ cũng phải nhỏ hơn chu kỳ trích mẫu của vòng điều chỉnh vị trí.

Chu kỳ trích mẫu được chọn theo định lý Nyquist-Shannon (http://en.wikipedia.org/wiki/Nyquist...mpling_theorem) thì tần số lấy mẫu được chọn > 2 lần bandwidth của hệ thống (tức là chu kỳ mẫu nhỏ hơn 2 lần):

- Bandwidth của vòng điều chỉnh dòng điện vào khoảng 10^6 rad/s (chu kỳ khoảng 6 micro giây) => chu kỳ lấy mẫu tầm 3 micro giây. Mô phỏng với chu kỳ lấy mẫu nhỏ như thế này thì oki những khi lập trình thực tế thì vòng điều khiển (real-time) với chu kỳ lấy mẫu nhỏ như thế này là không tưởng. Nên thực tế thường thực hiện lấy mẫu cỡ 0.1 mili giây (10kHz).
- Bandwidth của vòng điều chỉnh tốc độ vào khoảng 120-150 rad/s (20-25Hz) => tần số trích mẫu vào khoảng > 40-50Hz. Tuy nhiên thực tế thường chọn f của vòng điều chỉnh tốc độ vào khoảng 1kHz.
- Bandwidth của vòng điều chỉnh vị trí vào khoảng 30-40 rad/s (5-6Hz) => tần số trích mẫu vào khoảng > 10-12Hz. Tuy nhiên thực tế thường chọn f của vòng điều chỉnh vị trí vào khoảng 100Hz.

Thực hiện 3 tần số trích mẫu khác nhau trên cùng 1 hệ thống điều khiển real-time sẽ là một vấn đề. Cách đơn giản nhất là dùng tần số trích mẫu cơ bản = 10kHz, rồi dùng biến counter trong vòng lặp để giảm tần số trích mẫu xuống cho vòng tốc độ và vị trí. Ví dụ counter=10 sẽ được f=1kHz, counter=100 sẽ được f=100Hz.
cho em hỏi cách tính cái Bandwidth của vòng điều chỉnh dòng điện,tốc độ như thế nào vậy bác
hutdragon 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:21 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