PIC Vietnam

Go Back   PIC Vietnam > Robotics > Điều khiển

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

Điều khiển Lý thuyết điều khiển và ứng dụng lý thuyết điều khiển trong những trường hợp thực tế

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 14-11-2009, 10:07 AM   #1
nhat925
Đệ tử 1 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 15
:
pid ổn định tốc độ động cơ

e đang làm đồ án về ổn định tốc độ động cơ(tốc độ k thay đổi khi thay đổi tải).nhờ mấy bác xem dùm cho e phần lập trình pid của em như thế này là được chưa??cho e hỏi cái thời gian mình đọc encoder về ví dụ là 10ms.thì cái T trong công thức pid là 10*10^-3 đúng k ạ?
http://www.mediafire.com/?nodwyywjntu.
cho e hỏi nữa.mình muốn mô phỏng cái pid này thì nên dùng cái gì để mô phỏng được.nếu dùng matlab thì k có hàm truyền của động cơ?protues có thể mô phỏng được k
nhat925 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 01:13 AM   #2
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
điều khiển ổn định tốc độ động cơ bắng phương pháp pid rất hay! bạn ơi bạn có thể nói rõ hơn về phương pháp này và cách bạn điều khiển pid trong chương trình của cậu
bạn thông cảm mình đọc chương trình của cậu o hiểu lắm!
thanks
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 09:23 AM   #3
nhat925
Đệ tử 1 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 15
:
chương trình của em nhằm mục đích là ổn định tốc độ với sự thay đổi của tải.do mấy cái Ki,kp,kd chưa tìm ra nên e để thế.trong phần khai báo sửa lại mấy cái e0,e1,e2,u0 là những số có dấu.mục đích so sánh e0 với +- 200 là nhằm để hạn chế sai số thôi.ví dụ khi giá trị sai lệch lớn hơn 200 vòng thì mình cho U0=0,để hạn chế tốc độ.e k biết a k hiểu bài e chỗ nào nên cũng hơi khó nói.có gì thì a nói rõ hơn cho e với nha.
còn một cái nữa e muốn hỏi mọi người là e tạo xung vuông 10khz ở chân ccp1.(tần số thạch anh là 20Mhz,setup_timer_2(T2_div_by_4,124,1).thế mà khi mô phỏng bằng protues(cho osilicope vào chân ccp1 để quan sát và tính chu kỳ xung thì thấy nó k ra như thế.nó ra chu kỳ cỡ 3.6ms.tức là tần số nó nhỏ hơn.e k hiểu tại sao.đoạn code e viết ra để tạo xung nè.mọi người xem thử.
#include "E:\doan\123\123.h"
#use delay(clock=20000000)
#byte porta=0x05
#byte portc=0x07
#byte portd=0x08
main()
{


set_tris_c(0x01);
setup_ccp1(ccp_pwm);
setup_timer_2(T2_DIV_BY_4,124,1);//tao ra xung 10khz
set_pwm1_duty(100);


}
nhat925 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 02:57 PM   #4
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
bạn có thể nói cách tìm ra các tham số của pid la Ki,Kp,Kd không?
khi ta có tốc độ cần ổn định v, tốc độ phản hồi từ ecoder?
mình thấy trong chương trình của bạn chưa làm điều đó thì phải,
mình chưa thấy cái biến set_speed bạn lấy giá trị ở đâu thế?

còn mình thấy với các timer số bạn setup timer2 như vậy cho f =10k là đúng đây chứ.
bạn dùng pic f bao nhiêu thế?
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 06:20 PM   #5
vinasheva
Đệ tử 2 túi
 
Tham gia ngày: May 2008
Bài gửi: 28
:
setup_timer_2(T2_DIV_BY_4,124,1);//tao ra xung 10khz
set_pwm1_duty(value);

Như vậy thì mình cho giá trị value từ 0 đến 123 sẽ được duty từ 0% đến 100%. Như vậy còn ít giá trị quá. Có ai biết cách nào làm tăng độ nhuyễn của duty dc k?
vinasheva vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 07:08 PM   #6
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
Trích:
Nguyên văn bởi vinasheva View Post
setup_timer_2(T2_DIV_BY_4,124,1);//tao ra xung 10khz
set_pwm1_duty(value);

Như vậy thì mình cho giá trị value từ 0 đến 123 sẽ được duty từ 0% đến 100%. Như vậy còn ít giá trị quá. Có ai biết cách nào làm tăng độ nhuyễn của duty dc k?
không phải value từ 0->123 mà là từ 0->496 tức băng 124*4
bạn kiểm tra lại xem khi bạn nạp 496 vào value thi xung ra mới đầy
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 15-11-2009, 09:30 PM   #7
nhat925
Đệ tử 1 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 15
:
mình đã tìm ra được lỗi sai của cái xung rồi.do trong con pic ở mô phỏng k để là 20Mhz.nên nó bị sai.hihi.à.cái set_speed là tốc độ đặt.mình định đặt là 1000 vòng.đặt trong phần mềm chớ k có lấy ở ngoài.còn ki,kp,kd thì thực hiện dựa theo phương pháp Nigelr_nichols.do mình chưa tìm đc nên mình để đó.cái đọc encoder là cái real_speed đó bạn.
nhat925 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-11-2009, 12:06 AM   #8
nhat925
Đệ tử 1 túi
 
Tham gia ngày: Aug 2007
Bài gửi: 15
:
cái vấn đề trong cái pid mà e đang cần hỏi là cái Udk của em nó ngược ngược.ví dụ.trong mô phỏng khi e làm vận tốc thực lớn hơn so với vận tốc đặt thì cái U nó lại dương.ngược lại khi mà vận tốc đặt lớn hơn vận tốc thực thì U nó âm làm cho k có xung ra.mấy anh xem dùm cho e cái set_pwm(value) của là đúng trong trường hợp này k??e thấy nó sai sai sao đó
http://www.mediafire.com/?wnzwezyuiwg
nhat925 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2009, 07:55 AM   #9
ngoctuan522
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 1
:
sao minh ko thấy đường linh để xem bài của Nhat925 vậy? Nếu được nhờ ban quản trị hoặc bạn gửi qua mail (ngoctuan522@gmail.com)cho mình với.Mình cũng đang làm đồ án với nội dung như bạn. Thanks..
ngoctuan522 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à 12:34 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