PIC Vietnam

Go Back   PIC Vietnam > Robotics > Cơ cấu chấp hành (Actuator)

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ơ cấu chấp hành (Actuator) Động cơ DC, AC, động cơ không chổi than, động cơ không cảm biến...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 21-02-2010, 11:28 PM   #1
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Question RC Servo

Mình mới mua 1 con RC Servo loại dành cho xe đua RC, về viết code test thử:
Code:
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=400000)

void main()
   {
   set_tris_c(0x00);
   setup_ccp1(CCP_PWM);
   setup_timer_2(T2_DIV_BY_16, 249, 1);
   set_pwm1_duty(9);
   while(1)
      {
      } 
   }
Đọc theo tài liệu của a Fall thì giới hạn của RC Servo khoảng từ 1ms-2ms, mà sao cắm RC Servo dô nó quay liên tục (mình đã cắt cái chốt của Servo để test cho an toàn), ai đã từng điều khiển con RC Servo có thể giúp xem dùm đoạn mã trên có đúng không, giới hạn trên và dưới của con RC này là bao nhiêu??.
P/S: Con RC Servo mới mua nên chạy tốt (dù đã mod), mình đã cắm vô cái cây mode của xe mô hình của mình thì nó vẫn chạy ok, nhưng tiếc là mình không có thiết bị nào để đo thử độ rộng xung từ cây mode đó hết .
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-03-2010, 10:16 PM   #2
minhtienbk
Đệ tử 5 túi
 
minhtienbk's Avatar
 
Tham gia ngày: Dec 2005
Bài gửi: 120
:
Send a message via ICQ to minhtienbk Send a message via Yahoo to minhtienbk
Tôi chẳng quen xài PIC nhưng xin mạo muội đoán là bạn dùng PWM hardware của PIC để dk nó , đó là 1 sai lầm . Tôi đã từng dk nó , chia sẻ với bạn như sau:
- ko nên (có thể nói là ko dc) dùng PWM hardware , vì PWM có duty 0-100% trong khi cái này chỉ xài khoảng 1.5/20 duty ( tôi chỉ nói khoảng thôi nhé , ko chính xác đâu ).
- Tín hiệu phải đc tuần hoàn .
Cụ thể :
- Bạn clear PORT ( xuất 0);
- set PORT
- delay 1.5ms
- clear PORT
- delay 20ms
lặp lại khoảng 200 lần
sau đó lặp lại , nhưng delay 1.2 ms thay vì 1.5ms , cũng khoảng 50 lần , bạn sẽ thấy servo bạn đứng giữa , rồi chạy sang 1 bên
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11
bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com
Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ.
minhtienbk vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-03-2010, 07:52 PM   #3
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Thk bạn. xin cho mình hỏi nếu không dùng PWM hardware thì còn cách nào hay hơn o (có thể o sử dụng PIC) chứ nếu cứ delay rồi on off thì sao làm gì khác được nữa, như điều khiển 2 con RCServo cùng lúc cũng thua luôn. Một lần nữa cảm ơn bạn đã hướng dẫn, để thử coi.
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2010, 10:05 PM   #4
hector
Nhập môn đệ tử
 
Tham gia ngày: Jun 2009
Bài gửi: 4
:
bạn có thể cho minh xin tài liệu về rc servo của anh fall dc ko ạ.mình ko down dc.thanks
hector vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-03-2010, 10:46 PM   #5
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
www.megaupload.com/?d=2TI18MCU
Đây nè bạn!!!
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-03-2010, 10:06 PM   #6
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Red face Không ai trả lời, tự xử luôn.

Sau 2 năm vật lộn với con RC Servo cuối cùng cũng điều khiển được nó, hỏi bên PICVIETNAM và DIENTUVIETNAM mà chẳng ai quan tâm, có vài kinh nghiệm bản thân post lên cho ae nào "gà" giống mình tham khảo.
- Theo tài liệu mình đọc thì RC Servo hoạt động ở dãy tần số 50Hz (T=20ms), độ rộng xung từ 1ms đến 2ms. Nên ta có 3 cách sau để điều khiển nó:
1. Sử dụng PWM của PIC, nhưng cách này để tạo ra xung tần số 50Hz hơi bị khó, mình không rành điện tử lắm nhưng hình như do tần số PWM phụ thuộc vào tần số thạch anh nên chỉ thích hợp tạo ra xung tần số cao >500Hz. Lúc đầu mình cũng đã dùng cách này và thất bại cay đắng .
2. Sử dụng PWM tự tạo bằng cách on off chân output và delay tá lả. Cách củ chuối này chỉ thích hợp để test chơi cho vui.
3. Tạo PWM dựa trên ngắt timer0, cách này có vẻ hợp lý (do chẳng biết còn cách nào hay hơn ). Dùng ngắt timer0 để on off chân RC2 (tương tự cách 2 nhưng pờ rồ hơn). Và code test được viết như sau:
Code:
#include <16F877A.H>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#define MAX_VALUE 200
#define Right MAX_VALUE - 20
#define Left MAX_VALUE - 10
#define Center MAX_VALUE - 15
unsigned char pulse_max=0;
unsigned char pulse_top=0;
unsigned char top_value=0;
#INT_TIMER0
void interrupt_timer0()
 {
   set_timer0(156);
   pulse_max++;            
   pulse_top++;
   if (pulse_max >= MAX_VALUE) 
    {
      pulse_max=0;
      pulse_top=0;
      RC2=0;                // Turn off RC2
    }
   if (pulse_top == top_value) 
    {
      RC2=1;                // Turn On RC2
    } 
 }
/* TIMER0 period = [(TMR0 + 1)] x 4 x Tosc x (TIMER0 prescaler value) second
   Init TIMER0: Period: Fosc/4 x Prescaler x TMR0
   TIMER0 period = [((255 - 156) + 1)] x 4 x 1/4000000 x 1 = 0.0001 second = 0.1 ms*/
void main()
 {
   set_tris_c(0x00);
   portC = 0x00;
   top_value = Center;
   enable_interrupts(global);
   enable_interrupts(int_timer0);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   set_timer0(156);
   while(1)
    {    
      top_value = Left;
      delay_ms(1000);
      top_value = Right;
      delay_ms(1000);    
    } 
 }
Thật ra những kinh nghiệm trên được dịch từ trang web www.ermicro.com/blog/?p=771 (trang hay nhất trong tất cả các trang hướng dẫn về RC Servo, đọc rất dễ hiểu và giải thích cụ thể) các bạn có thể vào đọc để nghiên cứu kỹ hơn, mình chỉ đọc, hiểu đại khái và cải biên lại vậy thôi, o dịch chính xác và toàn bộ (dịch hết lòi cái ngu ra sao )
Code này đã test chạy ok, nhưng có một điều không hiểu, đúng ra RC Servo phải quay 1 góc chính xác ứng với 1 độ rộng xung, nhưng thực tế chạy thử thì sau mỗi lần quay qua quay lại, con RC Servo bị lệch 1 góc nhỏ, quay 10 lần nó thành góc lớn, 100 lần nó lệch má nhìn không ra (, cao thủ nào giúp e với, h ...e ...l....p!!! (chắc chờ tiếp 2 năm nữa mới có lời giải đáp).
Thk cả nhà, chúc ngủ ngon, e đi làm việc kiếm tiền mua Servo về test tiếp.
P/S: Các bạn mới test với con RC Servo lần đầu, nhớ cắt cái chốt cản để có lỡ tay cũng không làm hư nó.
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-03-2010, 08:49 PM   #7
phamdinh
Đệ tử 2 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 26
:
Mình cũng đang vật lộn với RC servo đây, để điều khiển mặc định(giới hạn góc của từng loại động cơ) thì mình cũng đã làm được. Tuy nhiên, mình đang muốn dùng RC servo để quay 360 độ. Sau khi theo hướng dẫn mình đã hack được rùi. Nhưng bây giờ mình muốn điều khiển tốc độ chạy nhanh hay chậm thì... hic hic. Không thể đợi đến 2 năm được, mình đang làm đồ án về omni robot sử dụng RC servo, và VDK pic. Đúng như anh minhtienbk nói, mình không thể dùng hadware PWM được. Ai có bí kíp gì giúp mình với.
phamdinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2010, 08:00 PM   #8
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Sao o thấy ai trả lời dùm topic này, chẳng lẽ điều khiển RC Servo lại khó đến vậy sao???
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2010, 10:30 PM   #9
phamdinh
Đệ tử 2 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 26
:
Mình nghĩ khó thì không khó. Nhưng RC servo có lẽ giới sinh viên ít dùng. Vì RC servo giá hơi đắt mà đồ cũ thì không có bán. Nên hầu như mọi người không xài nó. Tuy nhiên, đó là một công cụ rất mạnh trong việc phát triển robot đấy. Ở nước ngoài thì họ bàn luận rất nhiều về RC servo này, giá thì lại quá mềm. Hic, SV Việt Nam thiệt thòi về mặt vật chất..
phamdinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2010, 04:34 PM   #10
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Trích:
Nguyên văn bởi phamdinh View Post
Mình nghĩ khó thì không khó. Nhưng RC servo có lẽ giới sinh viên ít dùng. Vì RC servo giá hơi đắt mà đồ cũ thì không có bán. Nên hầu như mọi người không xài nó. Tuy nhiên, đó là một công cụ rất mạnh trong việc phát triển robot đấy. Ở nước ngoài thì họ bàn luận rất nhiều về RC servo này, giá thì lại quá mềm. Hic, SV Việt Nam thiệt thòi về mặt vật chất..
Trên diễn đàn này mình thấy đâu phải chỉ có sinh viên, có rất nhiều người đã đi làm, thậm chí còn làm ở những công ty pro, việc tiếp xúc với con RC là chuyện trong tầm tay, quan trọng là có nhã ý trả lời không thôi, hay những thắc mắc của mình với của bạn "ngớ ngẩn" quá nên không ai muốn trả lời.
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-03-2010, 11:36 AM   #11
phamdinh
Đệ tử 2 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 26
:
Trích:
Nguyên văn bởi motu View Post
Trên diễn đàn này mình thấy đâu phải chỉ có sinh viên, có rất nhiều người đã đi làm, thậm chí còn làm ở những công ty pro, việc tiếp xúc với con RC là chuyện trong tầm tay, quan trọng là có nhã ý trả lời không thôi, hay những thắc mắc của mình với của bạn "ngớ ngẩn" quá nên không ai muốn trả lời.
^_^! Uhm, có thể là như thế. Xin giới thiệu với mọi người một RC robot servo quay 360 độ (hic nhìn mê thật nhưng ở VN không có bán) rất lợi hại trong việc điều khiển robot tự hành.
http://www.servocity.com/html/hsr-14...s_rotatio.html
phamdinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-03-2010, 11:48 AM   #12
motu
Đệ tử 4 túi
 
Tham gia ngày: Oct 2007
Bài gửi: 79
:
Bạn thử liên hệ bên clbmohinh có người nhận ship hàng về, họ ship về được nhưng giá cả chắc là sẽ chát. Chúc vui!
__________________
Dao nao cung la dao, dao cao dai cung la dao.
motu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-04-2010, 06:44 PM   #13
phamdinh
Đệ tử 2 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 26
:
Uhm. Cho mình hỏi là khi hoạt động ở xung 1ms và 2ms thì dòng tiêu thụ của động cơ là bao nhiêu vậy nhỉ?
phamdinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-12-2010, 02:38 AM   #14
longdv
Đệ tử 2 túi
 
Tham gia ngày: Oct 2009
Bài gửi: 26
:
chào mọi người.
mình xin góp ý xíu, dòng tiêu thụ bao nhiêu thì mình ko biết chính xác, chỉ biết là nó khá cũng lớn đó.

RC servo thi chưa đầy 3 ngày em đã điều khiển đc, em đã thử lây giá trị ADC từ biến trở để điều khiển góc quay cuả nó, rất good., em sài chân điều xung của AVR
bây giờ với yêu cầu mới, em muốn điều khiển 10 RC sevor trên một con AVR nên đã nghỉ đến cách dùng timer như pro ở trên có nói
và đang bế tăt, pic thi em không rành nên đọc code chưa hiểu lắm.
xin pro hãy nói rõ về giải thuật cho em lĩnh giáo với.
em đang cần làm gấp nè.
longdv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-12-2010, 08:59 AM   #15
dinhminh09
Đệ tử 4 túi
 
dinhminh09's Avatar
 
Tham gia ngày: Mar 2010
Bài gửi: 83
:
Send a message via Yahoo to dinhminh09
nếu dùng timer thì trong con pic ví dụ như con 16f877a có tm0 tm1 tm2 tùi cách mà sử dụng chúng. còn về giải thuật thì trên con avr hay con pic cũng như nhau.
dùng pwm thì bắt buộc phải xài timer2. bài của motu là đầy đủ rồi
__________________
học đến trọc vẫn học.

ngồi buồn lại nhớ tây sơn võ.
nhị khúc tam côn vẫn dùng phan.
nhâm nhi chén rượi say (cả) thiên đình.
nhưng rồi đầu óc vẫn tuệ minh.




dinhminh09 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à 04:28 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