PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

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

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 30-11-2009, 12:21 AM   #1
vutranthelan
Đệ tử 1 túi
 
vutranthelan's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 17
:
Điều khiển PID 2 động cơ

Cho em hỏi để điều khiển 2 PID động cơ thì làm cách nào nhỉ. Em xài còn PIC6F877A
Hiện tại em có 2 hướng giải quyết:
Cách 1: Em dùng 1 mạch để đều khiển PID cùng lúc 2 động cơ. Mà kẹt cái con này chỉ có 1 ngắt ngoài để đếm xung à. Còn đếm xung bằng Timer0 thì em có thử làm rồi, nhưng nó đếm không chính xác.
Cách 2: Em tính dùng 2 mạch để điều khiển 2 động cơ nhưng làm như thế thì giao tiếp cổng COM như thế nào nhỉ, vì cần tới 2 cổng COM lận.
Mọi người góp ý cho em nhé.
vutranthelan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-11-2009, 08:37 AM   #2
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
Điều khiển PID động cơ:
mình thấy thế này
c1: bạn nên dùng timer để đếm xung ecoder thì hay hơn, không phải nó không chính xác đâu bạn ah,nếu bạn tính toán hợp lý,trừ đi các vòng lặp,thời gian câu lệnh thì rất chính xác đó ,nó tối ưu hơn dùng ngắt còn nếu bạn dùng ngắt với ecoder có số xung lớn thì chương trình của bạn sẽ liên tục nhảy đến ngắt nên o tốt,
- còn nếu bạn dùng ngắt thì 16f877 không chỉ có 1 ngắt ngoài đâu. nó còn có ngắt ngoài RB bạn có thể sử dụng như ngắt INT. nhưng nếu sử dụng 2 ngắt như vậy thì bạn đếm xung dc từ 2 ecoder nhưng nếu 1 thời điểm mà có 2 ngắt đều xẩy ra thì sao? khi đó bạn cần ưu tiên ngắt nên sẽ dẫn tới thiếu chính xác ,nếu mức độ dk bình thường thì sai số đó tạm chấp nhận dc . với lại pic của bạn cơ bản luôn ở trong ct ngắt,nên ct chính main của bạn o làm dc gì cả
- bạn nên dùng pic 18f có timer0,1,2,3 bạn sử dụng 1 timer để tạo ngắt thời gian,còn các timer 16bit khác để đếm xung và có các bộ power pwm để dk đông cơ
cách 2 của bạn: không cần dùng 2 mạch để dk nhưng nếu bạn muốn bạn hoàn toàn có thể truyền nhân dữ liệu cổng com cho nhiều pic : đó là bạn giao tiếp pic ở chế độ master-slave khi đó master giao tiếp với com. hoắc 1 vdk vừa nhận vừa truyền data nhận cho vdk khác và vừa thực hiện lênh

PID mình cũng không hiểu lắm về nó . mình đang định làm về nó.bạn đã làm với 1 động cơ thì có thể nói rõ hơn cách điều khiển nó không?
bây giờ mình có tốc độ đặt a,tốc đọ phản hồi từ ecoder b, duty ứng với tốc độ đặt trước c
vậy mình muốn điều khiển ổn định tốc đôh cho động cơ thì mình làm thế nào từ các tham số mình có để tìm ra các hệ số Ki,Kp,Kd?
thanks!
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-12-2009, 10:02 PM   #3
vutranthelan
Đệ tử 1 túi
 
vutranthelan's Avatar
 
Tham gia ngày: Jul 2009
Bài gửi: 17
:
Trích:
Nguyên văn bởi dung h View Post
Điều khiển PID động cơ:
mình thấy thế này
c1: bạn nên dùng timer để đếm xung ecoder thì hay hơn, không phải nó không chính xác đâu bạn ah,nếu bạn tính toán hợp lý,trừ đi các vòng lặp,thời gian câu lệnh thì rất chính xác đó ,nó tối ưu hơn dùng ngắt còn nếu bạn dùng ngắt với ecoder có số xung lớn thì chương trình của bạn sẽ liên tục nhảy đến ngắt nên o tốt,
- còn nếu bạn dùng ngắt thì 16f877 không chỉ có 1 ngắt ngoài đâu. nó còn có ngắt ngoài RB bạn có thể sử dụng như ngắt INT. nhưng nếu sử dụng 2 ngắt như vậy thì bạn đếm xung dc từ 2 ecoder nhưng nếu 1 thời điểm mà có 2 ngắt đều xẩy ra thì sao? khi đó bạn cần ưu tiên ngắt nên sẽ dẫn tới thiếu chính xác ,nếu mức độ dk bình thường thì sai số đó tạm chấp nhận dc . với lại pic của bạn cơ bản luôn ở trong ct ngắt,nên ct chính main của bạn o làm dc gì cả
- bạn nên dùng pic 18f có timer0,1,2,3 bạn sử dụng 1 timer để tạo ngắt thời gian,còn các timer 16bit khác để đếm xung và có các bộ power pwm để dk đông cơ
cách 2 của bạn: không cần dùng 2 mạch để dk nhưng nếu bạn muốn bạn hoàn toàn có thể truyền nhân dữ liệu cổng com cho nhiều pic : đó là bạn giao tiếp pic ở chế độ master-slave khi đó master giao tiếp với com. hoắc 1 vdk vừa nhận vừa truyền data nhận cho vdk khác và vừa thực hiện lênh

PID mình cũng không hiểu lắm về nó . mình đang định làm về nó.bạn đã làm với 1 động cơ thì có thể nói rõ hơn cách điều khiển nó không?
bây giờ mình có tốc độ đặt a,tốc đọ phản hồi từ ecoder b, duty ứng với tốc độ đặt trước c
vậy mình muốn điều khiển ổn định tốc đôh cho động cơ thì mình làm thế nào từ các tham số mình có để tìm ra các hệ số Ki,Kp,Kd?
thanks!
Mình điều khiển PID 1 động cơ rồi, nhưng mình dùng cách điều xung một cách thủ công, tức là high 1 pin nào đó, rồi delay, rồi low pin đó xuống rồi delay. Nếu bạn dùng chức năng PWM của PIC thì mình ko giúp đc rồi
Còn hệ số PID thì theo mình biết là làm thí nghiệm nhiều lần đề mò ra theo phương pháp nào đó, chứ không có cách nào tìm ra chính xác hệ số PID cả
vutranthelan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-12-2009, 04:48 PM   #4
lybao_huy
Đệ tử 5 túi
 
Tham gia ngày: Jan 2008
Bài gửi: 97
:
Pid

nếu bạn muốn dùng động cơ dc không chổi quét (brushless dc Motor) thay cho động cơ dc chổi quét thì phone cho minh.
tên mình Bảo Huy.
phone:0906745086
lybao_huy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-01-2011, 09:40 AM   #5
minhduc_bn
Nhập môn đệ tử
 
Tham gia ngày: May 2008
Bài gửi: 3
:
minh đang làm đề tài dùng 18f4431 để điều khiển động cơ đc dùng bộ điều khiên pid và giao tiếp với máy tính. xin được giúp đỡ tài liều và hướng dẫn. xin chia sẻ tài liệu qua mail. ducvm2512@yahoo. trân thành cảm ơn mọi sự giúp đỡ

thay đổi nội dung bởi: minhduc_bn, 27-02-2011 lúc 10:09 PM.
minhduc_bn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-04-2011, 06:48 PM   #6
arm_cortex01
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 13
:
mình nữa nghen,
arm_cortex@yahoo.com
chân thành cảm ơn mọi sự giúp đỡ
arm_cortex01 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-04-2011, 12:45 PM   #7
Thaison202
Đệ tử 1 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 15
:
Trích:
Nguyên văn bởi vutranthelan View Post
Cho em hỏi để điều khiển 2 PID động cơ thì làm cách nào nhỉ. Em xài còn PIC6F877A
Hiện tại em có 2 hướng giải quyết:
Cách 1: Em dùng 1 mạch để đều khiển PID cùng lúc 2 động cơ. Mà kẹt cái con này chỉ có 1 ngắt ngoài để đếm xung à. Còn đếm xung bằng Timer0 thì em có thử làm rồi, nhưng nó đếm không chính xác.
Cách 2: Em tính dùng 2 mạch để điều khiển 2 động cơ nhưng làm như thế thì giao tiếp cổng COM như thế nào nhỉ, vì cần tới 2 cổng COM lận.
Mọi người góp ý cho em nhé.
Em dùng giao tiếp mater và slaver để điều khiển cái này hơi tốn kém chút. thêm một con PIC nữa.
Thaison202 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-04-2011, 06:03 PM   #8
Thaison202
Đệ tử 1 túi
 
Tham gia ngày: Apr 2011
Bài gửi: 15
:
reply

Trích:
Nguyên văn bởi vutranthelan View Post
Cho em hỏi để điều khiển 2 PID động cơ thì làm cách nào nhỉ. Em xài còn PIC6F877A
Hiện tại em có 2 hướng giải quyết:
Cách 1: Em dùng 1 mạch để đều khiển PID cùng lúc 2 động cơ. Mà kẹt cái con này chỉ có 1 ngắt ngoài để đếm xung à. Còn đếm xung bằng Timer0 thì em có thử làm rồi, nhưng nó đếm không chính xác.
Cách 2: Em tính dùng 2 mạch để điều khiển 2 động cơ nhưng làm như thế thì giao tiếp cổng COM như thế nào nhỉ, vì cần tới 2 cổng COM lận.
Mọi người góp ý cho em nhé.
bạn dùng 2 Pic giao tiếp i2c với nhau
mỗi con đọc encoder và điều khiển một động cơ
Thaison202 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à 05:17 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