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 10-10-2012, 01:26 AM   #1
boy_legend
Đệ tử 1 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 19
:
Xin ý kiến về điều khiển vị trí động cơ DC

Hiện mình đang làm đồ án về điều khiển động cơ DC có encoder theo nguyên lý servo.Về kiến thức thì mình cũng vừa học về lập trình VĐK 1 thời gian ngắn và cũng đủ nền tảng sơ sơ về lập trình chế độ PWM của PIC16F877A.Nói về đồ án mình đang làm thì mình đã làm cho động cơ quay thuận, nghịch cũng như thay đổi tốc độ động cơ , cũng như đếm số xung hồi tiếp về động cơ được rồi, nhưng hiện thầy yêu cầu thêm về điều khiển vị trí động cơ DC, cụ thể như sẽ có 3 nút nhất điều khiển góc quay của động cơ DC (vd: 90,180,270), thì khi nhấn button chọn góc nào động cơ sẽ quay tới đúng vị trí góc quay đó.Mình đọc nhiều tài liệu trên mạng nói về thuật toán PID nhưng thật sự là không hiểu mấy.Không biết ngoài cách giải thuật PID ra, còn cách nào khác để điều khiển vị trí của động cơ DC có encoder này ko? Xin mọi người cho ý kiến giúp đỡ mình nha, cảm ơn.
Hình Kèm Theo
File Type: jpg do an.jpg (190.2 KB, 73 lần tải)
boy_legend vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2012, 10:02 AM   #2
automations
Nhập môn đệ tử
 
Tham gia ngày: Jun 2012
Bài gửi: 7
:
Về phương hướng thì bạn làm vậy là hoàn toàn đúng lấy xung ecoder về tính toán ra góc hoặc quãng đường đi.Nhưng bạn chú ý chút là với động cơ DC ko có phanh hay không có hãm thì khi đó dừng đúng vị trí là rất khó khăn nhất là chạy với tốc đọ cao một chút.
automations vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2012, 10:11 AM   #3
boy_legend
Đệ tử 1 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 19
:
Đúng là mình đã thử lập điều kiện cho xung nếu vượt quá 1 mức nào đó sẽ làm cho động cơ quay nghịch lại để ngừng nhưng mà không chính xác được.Nên ko biết có cách nào để dừng được động cơ đúng vị trí hay ko?
boy_legend vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-10-2012, 10:43 PM   #4
trihung12a1
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 8
:
Chào bạn mình có ý kiên thế này:
Nếu bạn dùng được thuật toán PID để đk thì động cơ chạy sẽ rất mịn và tránh rung động khi đên sđủ góc.
Còn mình nghĩ đến cách đơn giản hơn để cho bạn là sẽ điều khiển đa cấp. Tức đến vị trí rồi thì sẽ bật bit cờ tràn lên và so sánh giá trị sai lệch đó (Nếu giá trị sai lệch càng lớn thì xung cấp PWM lớn và giảm dần khi xung sai lệnh nhỏ), và chia ra càng nhiều câp thì đc sẽ càng mịn.
trihung12a1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-10-2012, 10:37 AM   #5
boy_legend
Đệ tử 1 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 19
:
Trích:
Nguyên văn bởi trihung12a1 View Post
Chào bạn mình có ý kiên thế này:
Nếu bạn dùng được thuật toán PID để đk thì động cơ chạy sẽ rất mịn và tránh rung động khi đên sđủ góc.
Còn mình nghĩ đến cách đơn giản hơn để cho bạn là sẽ điều khiển đa cấp. Tức đến vị trí rồi thì sẽ bật bit cờ tràn lên và so sánh giá trị sai lệch đó (Nếu giá trị sai lệch càng lớn thì xung cấp PWM lớn và giảm dần khi xung sai lệnh nhỏ), và chia ra càng nhiều câp thì đc sẽ càng mịn.
Chào bạn, về thuật toán PID thì thật sự mình không biết cách sử dụng thế nào, mình đã thử thêm công thức PID vào nhưng không biết dùng nó để điều khiển vị trí thế nào cả.Còn về cách 2 bạn nêu, mình thì do ước chừng, ví dụ mình encoder 100xung/vòng nên nếu muốn quay 180 thì có lẽ là 50xung, thì mình lập điều kiện nếu xung >=50 sẽ cho quay nghịch lại, còn nhỏ hơn 50 thì lại quay thuận, nếu =50 thì dừng động cơ.Với cách này thì động cơ chứ quay tới quay lui với 1 góc sai lệch lớn lắm(tốc độ động cơ mình cho cố định 1 giá trị).
boy_legend vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-10-2012, 04:26 PM   #6
trihung12a1
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 8
:
Trích:
Nguyên văn bởi boy_legend View Post
Chào bạn, về thuật toán PID thì thật sự mình không biết cách sử dụng thế nào, mình đã thử thêm công thức PID vào nhưng không biết dùng nó để điều khiển vị trí thế nào cả.Còn về cách 2 bạn nêu, mình thì do ước chừng, ví dụ mình encoder 100xung/vòng nên nếu muốn quay 180 thì có lẽ là 50xung, thì mình lập điều kiện nếu xung >=50 sẽ cho quay nghịch lại, còn nhỏ hơn 50 thì lại quay thuận, nếu =50 thì dừng động cơ.Với cách này thì động cơ chứ quay tới quay lui với 1 góc sai lệch lớn lắm(tốc độ động cơ mình cho cố định 1 giá trị).
Chính xác đó bạn nếu để 1 giá trị PWM khá lớn thì nó sẽ giật động cơ. Cho nên mình mới nói bạn đk đa cấp. Mình cho bạn vd như sau:

if(setpoint-encoder)>10
{dir=1;pwm=1023;}
else if(setpoint-encoder)<-10
{dir=0;pwm=1023;}
else ifif(setpoint-encoder)>5
{dir=1;pwm=500;}
else if(setpoint-encoder)<-5
{dir=0;pwm=500;}
.
.
.
.
bạn càng để nhiều cấp thì dcow bạn sẽ càng ít giật.
Đây chỉ là 1 pa để bạn làm tuy nhiên bạn nên xem thêm phân đk pid bởi vì nó cg ko khó.
trihung12a1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-12-2012, 01:01 AM   #7
boyvungsinh
Nhập môn đệ tử
 
Tham gia ngày: Dec 2012
Bài gửi: 1
:
bạn có còn cái mạch ko, có thế share mình với code dc ko, thanks
boyvungsinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-12-2012, 01:39 AM   #8
dinhnambkhn
Đệ tử 2 túi
 
Tham gia ngày: Feb 2011
Bài gửi: 45
:
Dung pic18f4331 do ban, tích hợp 1 bộ Qei. 8 kênh pwm.nếu điều khiển gị trí thì dùng encoder có số xung nhiều lên,tùy chất lượng của bộ điều khiển. Mình có làm bộ PID đk Động cơ DC dùng pic18f4331. Giao diện và vẽ đồ thị pid c#.nếu quan tâm gửi mail cho m:dinhnambkhn@gmail.com .ạ ở Vinh or Hà Tĩnh thì gặp nhau trao đổi.hj,đang thất nghjep free time,nên hướng dan chi tiết hơn(free nhé,chỉ muốn giúp a e thôi,^_^).phone 0909014168,sắp tới mình cũng làm 1 tutorial ,hẹn 1 tuần nữa.
Thân
dinhnambkhn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2013, 02:11 PM   #9
albusnooo1
Nhập môn đệ tử
 
Tham gia ngày: May 2012
Bài gửi: 2
:
Bạn cho mình xin tài liệu về mảng này vs

Trích:
Nguyên văn bởi dinhnambkhn View Post
Dung pic18f4331 do ban, tích hợp 1 bộ Qei. 8 kênh pwm.nếu điều khiển gị trí thì dùng encoder có số xung nhiều lên,tùy chất lượng của bộ điều khiển. Mình có làm bộ PID đk Động cơ DC dùng pic18f4331. Giao diện và vẽ đồ thị pid c#.nếu quan tâm gửi mail cho m:dinhnambkhn@gmail.com .ạ ở Vinh or Hà Tĩnh thì gặp nhau trao đổi.hj,đang thất nghjep free time,nên hướng dan chi tiết hơn(free nhé,chỉ muốn giúp a e thôi,^_^).phone 0909014168,sắp tới mình cũng làm 1 tutorial ,hẹn 1 tuần nữa.
Thân
nếu đc có thế share mình cái mạch với code luôn dc ko, mình đang làm đồ án về mảng này, thanks
albusnooo1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-01-2013, 06:29 PM   #10
dinhnambkhn
Đệ tử 2 túi
 
Tham gia ngày: Feb 2011
Bài gửi: 45
:
Ok !bạn cứ gửi vào mail cho mình đi!
thấn!
dinhnambkhn 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à 06:18 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