H ng d nướ ẫ
ROBOCON 2005 Sample Robots
Ng i d ch: ườ ị
[email protected]
www.robocon.vn
www.skynet.com.vn
Hà n i 2006ộ
N i dungộ
Ch ng 1: Đi u khi n DC Motor ươ ề ể
1.1 Gi i thi u ho t đ ng DC motor ớ ệ ạ ộ
1.2Đi u khi n h ng chuy n đ ng dùng m ch c u Hề ể ướ ể ộ ạ ầ
1.3 Đi u khi n DC motor dòng nh (1A) dùng L293Bề ể ỏ
1.4 Đi u khi n DC motor dòng l n (2A) dùng L298ề ể ớ
1.5Đi u khi n t c đ DC Motor dùng ch nh đ r ng xung (Pulse Widthề ể ố ộ ỉ ộ ộ
Modulation -PWM)
1.6 Ph n c ng Pulse Width Modulation (PWM)ầ ứ
1.7 Ph n m m Pulse Width Modulation (PWM)ầ ề
Ch ng 2:ươ Dò đ ng tr ng dùng Sensor h ng ngo i (IR) ườ ắ ồ ạ
2.1 các đ c tính c a IR sensorặ ủ
2.2 IR Sensor đi u bi nề ế
Ch ng 3:ươ L p trình Robot t đ ngậ ự ộ
3.1 Ch y theo đ ng tr ngạ ườ ắ
3.2 Dò và đ m nh ng đ ng c t ế ữ ườ ắ
Ch ng 1: Đi u khi n DC Motor ươ ề ể
1.1 Gi i thi u ho t đ ng DC motor ớ ệ ạ ộ
Đ cho motor 1 chi u ho t đ ng, chúng ta c n đ t 1 đi n áp 1 chi u vào motor andể ề ạ ộ ầ ặ ệ ề
1 dòng đi n 1 chi u s ch y qua motor, motor s quay theo 1 chi u nào đó.ệ ề ẽ ạ ẽ ề
N u chúng ta đ i chi u c a đi n áp 1 chi u này, motor s quay ng c l iế ổ ề ủ ệ ề ẽ ượ ạ
Chú ý: đi n áp V và dòng I không nên v t quá giá tr đ c ghi trên motor, n uệ ượ ị ượ ế
không motor s b h ng. Tuy nhiên n u ta đ t 1 đi n áp th p h n V ho c 1 dòngẽ ị ỏ ế ặ ệ ấ ơ ặ
đi n th p h n I, thì t c đ và đ ch u t i c a motor s gi m theo.ệ ấ ơ ố ộ ộ ị ả ủ ẽ ả
1.2 Đi u khi n h ng chuy n đ ng dùng m ch c u H ề ể ướ ể ộ ạ ầ
Đ đi u khi n h ng quay c a motor 1 chi u, chúng ta c n đ t đi n áp lên motor.ể ề ể ướ ủ ề ầ ặ ệ
Có 1 m ch ph bi n dùng đ đi u khi n motor g i là c u H. Nó đ c g i nhạ ổ ế ể ề ể ọ ầ ượ ọ ư
v y b i vì m ch này trông gi ng hình ch ‘H’. M t trong nh ng kh năng c c hayậ ở ạ ố ữ ộ ữ ả ự
c a m ch này là nó cho phép đi u khi n motor ti n lên ho c lùi l i b t kỳ t c đủ ạ ề ể ế ặ ạ ở ấ ố ộ
nào, ngoài ra nó còn có th dùng 1 ngu n đi n đ c l p [1].ể ồ ệ ộ ậ
Khi đ u vào ‘Direction’ tr ng thái cao thì motor s chuy n sang ch đ h ngầ ở ạ ẽ ể ế ộ ướ
bình th ng. N u đ u vào ‘Direction’ tr ng thái th p thì motor s quay ng cườ ế ầ ở ạ ấ ẽ ượ
chi u.ề
Có r t nhi u lo i IC dùng cho m ch c u H. Lo i ph thông dùng cho motor dòngấ ề ạ ạ ầ ạ ổ
th p là L293B và motor dòng cao là L298.ấ
1.3 Đi u khi n DC motor dòng nh (1A) dùng L293Bề ể ỏ
ng d ng đi n hình c a L293B đ c v trên hình d i [2]. Vs là đi n áp đ t vàoỨ ụ ể ủ ượ ẽ ướ ệ ặ
motor và có th lên t i 36V. Dòng l n nh t c a L293B có th lên t i 1A m i kênh.ể ớ ớ ấ ủ ể ớ ỗ
M t IC L293B có th dùng đ đi u khi n 2 motor. Đ u vào 2 và 7 dùng đ đi uộ ể ể ề ể ầ ể ề
khi n motor 1. Đ u 10 và 15 dùng đ đi u khi n motor 2. Diode D1 và D8 t o 1ể ầ ể ề ể ạ
m ch c p. L293B là m t IC ph thông có th mua các c a hàng đi n t (giáạ ặ ộ ổ ể ở ử ệ ử
kho ng 20 ngàn đ ng – tham kh o www.skynet.com.vn)ả ồ ả
Trong các robot t đ ng, chúng tôi s d ng con L293B đ đi u khi n motor r tráiự ộ ử ụ ể ề ể ẽ
và ph i. M ch đ c v trên hình d i đây. ả ạ ượ ẽ ướ
Trong s đ P1.1 và P1.3 là các tín hi u đi u khi n chi u motor t con vi s lýơ ồ ệ ề ể ề ừ ử
87C552. Nh ng tín hi u đi u khi n h ng này đ c t h p AND v i các tín hi uữ ệ ề ể ướ ượ ổ ợ ớ ệ
đi u bi n đ r ng xung PWM0 và PWM1 đ đi u khi n t c đ motor. Chúng tôiề ế ộ ộ ể ề ể ố ộ
s gi i thích vi c đi u khi n này trong m c sau.ẽ ả ệ ề ể ụ
Ngu n motor đ c cung c p vào chân 8 c a con L293B. Đi n áp th c t ph thu cồ ượ ấ ủ ệ ự ế ụ ộ
vào thông s c a motor, th ng t 9V đ n 12V. Robot m u này s d ng đi n ápố ủ ườ ừ ế ẫ ử ụ ệ
12V. Chân 16 đ c n i vào đi n áp 5V logic dùng làm ngu n IC.ượ ố ệ ồ
L1 và L2 tách ngu n nuôi L293B ra kh i h th ng. Chúng ho t đ ng gi ng nhồ ỏ ệ ố ạ ộ ố ư
nh ng b l c các tín hi u nhi u đ c sinh ra b i motor.ữ ộ ọ ệ ễ ượ ở
1.4 Đi u khi n DC motor dòng l n (2A) dùng L298ề ể ớ
L298 cũng t ng t nh con L293B nh ng nó cho phép dòng l n h n. ng d ngươ ự ư ư ớ ơ Ứ ụ
đi n hình đ c miêu t nh sau [3]. (Giá con này kho ng 40 ngàn đ ng – thamể ượ ả ư ả ồ
kh o www.skynet.com.vn)ả
Cho ng d ng dòng l n h n, chúng ta dùng 2 kênh nh hình v trên. Vs là ngu nứ ụ ớ ơ ư ẽ ồ
motor và Vss là ngu n logic. Đi n tr Rs đ c dùng đ h n ch .ồ ệ ở ượ ể ạ ế
Trong robot m u đi u khi n b ng tay, chúng tôi dùng con L298 đ đi u khi n 2ẫ ề ể ằ ể ề ể
motor dòng l n (2A). M ch đ c v nh hình d i đây.ớ ạ ượ ẽ ư ướ
1.5 Đi u khi n t c đ DC Motor dùng ch nh đ r ng xung (Pulse Width Modulation -ề ể ố ộ ỉ ộ ộ
PWM)
Đi u khi n đ r ng c a xung đ c làm b ng cách t t b t nhanh ngu n đi n lênề ể ộ ộ ủ ượ ằ ắ ậ ồ ệ
motor. Ngu n áp 1 chi u DC s chuy n thành tín hi u xung vuông, thay đ i tồ ề ẽ ể ệ ổ ừ
12V xu ng 0V, t o cho motor m t lo t các cú s c đi n. ố ạ ộ ạ ố ệ
N u t n s b t t t mà đ cao, motor s ch y m t t c đ n đ nh nh mômenế ầ ố ậ ắ ủ ẽ ạ ở ộ ố ộ ổ ị ờ
quay c a bánh xe.ủ
B ng cách thay đ i chu kỳ ho t đ ng c a tín hi u (thay đ i đ r ng xung –ằ ổ ạ ộ ủ ệ ổ ộ ộ
PWM), t c là kho ng th i gian “B t”, ngu n đi n trung bình đ t lên motor sứ ả ờ ậ ồ ệ ặ ẽ
thay đ i và d n đ n thay đ i t c đ . [4][5]ổ ẫ ế ổ ố ộ
1.6Ph n c ng Pulse Width Modulation (PWM)ầ ứ
Đi u khi n đ r ng xung (PMW) có th dùng IC th i gian NE555. M ch dùng conề ể ộ ộ ể ờ ạ
này đ c th hi n trên hình v d i đây. [6]ượ ể ệ ẽ ướ
Trong m ch này đ r ng “B t” c a xung ph thu c vào đi n áp đ t lên đ u vàoạ ộ ộ ậ ủ ụ ộ ệ ặ ầ
chân 5 (RA và C gi nguyên). Và chu kỳ c a xung vuông ph thu c vào tín hi uữ ủ ụ ộ ệ
Trigger.
Trong robot m u đi u khi n tay, 2 con NE555 t o thành ph n c ng đ đi u khi nẫ ề ể ạ ầ ứ ể ề ể
đ r ng xung nh trên hình v . Tín hi u đi u bi n MOD đ c truy n t bi n trộ ộ ư ẽ ệ ề ế ượ ề ừ ế ở
đi u khi n t c đ trên bàn đi u khi n. VR1 và VR2 có th đ c đi u ch nh đề ể ố ộ ề ể ể ượ ề ỉ ể
thay đ i chu kỳ c a xung vuông. VR3 dùng đ ch nh chu kỳ c a sóng.ổ ủ ể ỉ ủ
1.7Ph n m m Pulse Width Modulation (PWM)ầ ề
S d ng con vi s lý có s các tín hi u PWM, nh 87C552 nh chúng tôi dùng choử ụ ử ẵ ệ ư ư
robot m u, chúng tôi có th l p trình đ t o các sóng PWM. ẫ ể ậ ể ạ
Con 87C552 ch a 2 kênh đi u bi n PWM. Nh ng kênh này t o các xung theo đứ ề ế ữ ạ ộ
r ng và kho ng cách đ c l p trình. T n s l p l i đ c đ nh nghĩa b i thanh ghiộ ả ượ ậ ầ ố ặ ạ ượ ị ở
8-bit trong tên là b chia PWMP, t o nh p đ ng h cho b đ m. B chia và b đ mộ ạ ị ồ ồ ộ ế ộ ộ ế
dùng chung cho c 2 kênh PWM. B đ m 8-bit dùng đ m 255, t c là t 0 đ n 254.ả ộ ế ế ứ ừ ế
Giá tr c a b đ m 8-bit đ c so sánh v i n i dung c a 2 thanh ghi: PWM0 vàị ủ ộ ế ượ ớ ộ ủ
PWM1. Gi s n i dung c a nh ng thanh ghi này l n h n giá tr b đ m, thì đ u raả ử ộ ủ ữ ớ ơ ị ộ ế ầ
t ng ng /PWM0 hay /PWM1 s là TH P. N u n i dung nh ng thanh ghi này màươ ứ ẽ Ấ ế ộ ữ
b ng ho c nh h n giá tr b đ m, tín hi u ra s là CAO. Chu kỳ làm vi c do đóằ ặ ỏ ơ ị ộ ế ệ ẽ ệ
đ c xác đ nh b i n i dung c a 2 thanh ghi PWM0 và PWM1. Chu kỳ làm vi cượ ị ở ộ ủ ệ
n m trong kho ng t 0% đ n 100% và có th đ c l p trình t nh ti n 1/255/ằ ả ừ ế ể ượ ậ ị ế
Đ l p l i c a t n s fộ ặ ạ ủ ầ ố PWM, v i các tín hi u ra PWMn đ c xác đ nh b i:ớ ệ ượ ị ở
255)1(2 ×+×
=
PWMP
f
f OSCPWM
Nó cho ta t n s l p l i t 84.7Hz to 21.7kHz (fầ ố ặ ạ ừ OSC=11.0592MHz) trong tr ng h pườ ợ
c a chúng tôi. B ng cách đ a vào các thanh ghi PWM giá tr là 00H ho c FFH, cácủ ằ ư ị ặ
kênh PWM s cho tín hi u ra m c CAO ho c TH P t ng ng. Vì b đ m 8-bitẽ ệ ứ ặ Ấ ươ ứ ộ ế
đ m modul 255, nó có th không bao gi đ t t i giá tr c a các thanh PWM khiế ể ờ ạ ớ ị ủ
chúng ta đ t FFH.ặ
Khi thanh ghi so sánh (PWM0 và PWM1) đ c n p giá tr m i, thì đ u ra t ngượ ạ ị ớ ầ ươ
ng s đ c c p nh t ngay l p t c. Vi c này không c n ph i đ i đ n h t chu kỳứ ẽ ượ ậ ậ ậ ứ ệ ầ ả ợ ế ế
đ m. [7]ế
Mã ngu n C sau đây đ c l p cho các đ u ra PWM:ồ ượ ậ ầ
……
/* PWM for Philips 87c552 */
sfr at 0xFC PWM0 ; //Define the registers addresses
sfr at 0xFD PWM1 ;
sfr at 0xFE PWMP ;
……
……
……
PWMP=53; //The period of the pulse (set to around 400Hz)
PWM0=127; //Set 50% duty cycle for /PWM0
PWM1=63; //Set 25% duty cycle for /PWM1
……
[8][9]
Ch ng 2:ươ Dùng Sensor h ng ngo i (IR) đ dò v ch tr ng ồ ạ ể ạ ắ
2.1 Các đ c tính c a IR sensor ặ ủ
Trong con robot m u t đ ng này, chúng tôi s d ng 2 linh ki n h ng ngo i (IR):ẫ ự ộ ử ụ ệ ồ ạ
m t linh ki n phát h ng ngo i (IR emitter) và m t linh ki n nh n (IR receiver) t oộ ệ ồ ạ ộ ệ ậ ạ
thành 1 c p c m bi n sensor. Linh ki n phát s t o tia h ng ngo i và sau khi ph nặ ả ế ệ ẽ ạ ồ ạ ả
x s truy n t i linh ki n nh n.ạ ẽ ề ớ ệ ậ
Dòng đi n đi qua linh ki n nh n s t l v i c ng đ năng l ng c a tia h ngệ ệ ậ ẽ ỉ ệ ớ ườ ộ ượ ủ ồ
ngo i mà nó nh n đ c.ạ ậ ượ
Trong robot m u c a chúng tôi, linh ki n phát và nh n đ c n i m ch theo s đẫ ủ ệ ậ ượ ố ạ ơ ồ
hình d i đây. Khi TX tr ng thái th p, dòng s đi qua linh ki n phát và nó sướ ở ạ ấ ẽ ệ ẽ
phát ra tia h ng ngo i. N u có 1 v t ph n x m u tr ng thì năng l ng h ng ngo iồ ạ ế ậ ả ạ ầ ắ ượ ồ ạ
s ph n h i l i và t o m t dòng cao h n đi qua linh ki n nh n, do đó đi n áp trênẽ ả ồ ạ ạ ộ ơ ệ ậ ệ
IRS0 s h xu ng. N u v t ph n x có m u đen, ho c m u s m h n thì đi n ápẽ ạ ố ế ậ ả ạ ầ ặ ầ ẫ ơ ệ
trên IRS0 s nâng lên.ẽ
Đ c giá tr đi n áp này chúng ta có th phân bi t đ c v ch d n đ ng màu tr ngọ ị ệ ể ệ ượ ạ ẫ ườ ắ
trên n n nhà màu xanh.ề
2.2 IR Sensor đi u bi nề ế
Đ chính xác c a sensor h ng ngo i đ c miêu t trên ph n tr c b nh h ngộ ủ ồ ạ ượ ả ầ ướ ị ả ưở
r t nhi u b i ánh sáng môi tr ng. M c đi n áp trên đ u ra c a sensor IR khôngấ ề ở ườ ứ ệ ầ ủ
ch ph thu c vào c ng đ ánh sáng ph n x mà còn b thay đ i b i đi u ki nỉ ụ ộ ườ ộ ả ạ ị ổ ở ề ệ
ánh sáng môi tr ng.ườ
Đ gi m b t s nh h ng c a ánh sáng môi tr ng, chúng tôi dùng 1 sensor h ngể ả ớ ự ả ưở ủ ườ ồ
ngo i đi u bi n thay vì sensor IR thông th ng.ạ ề ế ườ
Trong h th ng sensor IR đi u bi n c a chúng tôi, linh ki n phát đ c b t và t tệ ố ề ế ủ ệ ượ ậ ắ
b i 1 đ ng h . Tín hi u nh n đ c sau đó đi qua 1 m ch khu ch đ i 1 chi u DCở ồ ồ ệ ậ ượ ạ ế ạ ề
nh trên hình v d i đây. T C2 trong m ch s ch n dòng DC ra kh i tín hi u điư ẽ ướ ụ ạ ẽ ặ ỏ ệ
qua b khu ch đ i này. Ch có ph n xoay chi u c a tín hi u thay đ i t ng ngộ ế ạ ỉ ầ ề ủ ệ ổ ươ ứ
v i tia h ng ngo i ph n x phát ra t b phát là đ c khu ch đ i và tích h p vàoớ ồ ạ ả ạ ừ ộ ượ ế ạ ợ
m c 1 chi u đ u ra c a m ch. Nh v y m c ra c a m ch ch ph thu c vào tiaứ ề ở ầ ủ ạ ư ậ ứ ủ ạ ỉ ụ ộ
h ng ngo i mà không ph thu c vào ánh sáng môi tr ng. [10]ồ ạ ụ ộ ườ
Ch ng 3:ươ L p trình m t Robot t đ ng ậ ộ ự ộ
Đ hoàn thành các công vi c c a 1 robot t đ ng trong cu c thi Robocon 2005,ể ệ ủ ự ộ ộ
robot ph i có các tính năng sau:ả
1. kh năng l n theo v ch tr ngả ầ ạ ắ
2. kh năng nh n bi t và đ m các đi m giao nhau khi nó đi qua ả ậ ế ế ể
3.1 L n theo v ch tr ng ầ ạ ắ
Trong con robot t đ ng m u c a chúng tôi, chúng tôi đ t 2 c p sensor IR: bên tráiự ộ ẫ ủ ặ ặ
(Left) và bên ph i (Right) ph n đ u c a robot. Khi sensor trái c t đ ng tr ng,ả ở ầ ầ ủ ắ ườ ắ
giá tr c a sensor s h xu ng d i m c đi n áp ng ng đ t tr c và chúng taị ủ ẽ ạ ố ướ ứ ệ ưỡ ặ ướ
bu c ph i đ cho robot ch y sang trái m t vài b c đ đi u ch nh h ng đi c aộ ả ể ạ ộ ướ ể ề ỉ ướ ủ
nó. Ho c khi sensor ph i c t vào v ch tr ng, giá tr c a sensor ph i s th p h nặ ả ắ ạ ắ ị ủ ả ẽ ấ ơ
giá tr ng ng đ t s n, chúng ta ph i cho robot ch y sang ph i m t vài b c đị ưỡ ặ ẵ ả ạ ả ộ ướ ể
đi u chính h ng ch y chính xác. N u c hai sensor đ u không c t v ch tr ng thìề ướ ạ ế ả ề ắ ạ ắ
chúng ta gi đ nh là đã đi đúng h ng và đ nó ch y th ng.ả ị ướ ể ạ ẳ
Thu t toán l n theo v ch tr ng đ c miêu t trong bi u đ sau: ậ ầ ạ ắ ượ ả ể ồ
3.2 Dò và đ m nh ng đ ng c t ế ữ ườ ắ
Đ dò đ c nh ng đi m giao nhau c a các vach khi robot ch y qua, chúng tôi ki mể ượ ữ ể ủ ạ ể
tra c sensor trái và ph i. N u c hai sensor đ u c t v ch tr ng cùng lúc thì chúngả ả ế ả ề ắ ạ ắ
ta có th cho r ng robot đã đi qua 1 đi m giao nhau. Trong tr ng h p này, chúng taể ằ ể ườ ợ
ph i đ cho robot đi ti p vài b c đ tránh đ m 2 l n đi m giao nhau này.ả ể ế ướ ể ế ầ ể
Thu t toán nh n bi t và đ m đi m giao nhau đ c v d i đây:ậ ậ ế ế ể ượ ẽ ướ
Hàm C d i đây là ví d cho 1 robot l n theo đ ng tr ng và đ m v ch giao nhauướ ụ ầ ườ ắ ế ạ
khi nó đi qua:
……
void move_robot(unsigned char step) {
int cnt;
cnt=0;
while(cnt<step) {
if (read_sensor(1)>ALIGN_THRESHOLD && read_sensor(2)>ALIGN_THRESHOLD) movet(FORWARD,1,0);
else if (read_sensor(1) ALIGN_THRESHOLD) movet(TURN_LEFT,1,80);
else if (read_sensor(2) ALIGN_THRESHOLD) movet(TURN_RIGHT,1,80);
else if (read_sensor(2) <=ALIGN_THRESHOLD && read_sensor(1) <=ALIGN_THRESHOLD) {
cnt++;
movet(FORWARD,8,0);
}
}
stop();
}
……
……
move_robot(3); // move the robot for 3 cross line
……
[11]
References
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10] bottom.pdf
[11] RoboconDemo05.c