Professional Documents
Culture Documents
Tm tt Ti liu hng dn lp trnh cho robot t ng d ng theo vch trng v iu khin cc c cu (nng h, gp nh qu) mt cch c bn nht.Vi iu khin c s dng trong ti liu l PIC16F877A ca Microchip.Lp trnh bng ngn ng C vi trnh bin dch CCS.
1 TM TT V THIT K ROBOT T NG Robot t ng trong cc cuc thi Robocon gm 3 th nh phn chnh: C kh, Mch in t, Lp trnh. 1.1 C kh Mt robot n gin gm 2 ng c truyn ng cho 2 bnh xe bn tri v bn phi gip robot di chuyn. Pha trc c th l 1 hoc 2 bnh t do (bnh t la, omni, mt tru,). thc hin c cc cng vic nh nng h trc, gp nh y qu, robot c trang b thm cc ng c khc truyn ng cho cc c cu ny. Tt c cc b phn trn c b tr trn mt khung bng nhm, st, Phn hng dn chi tit v thit k c kh s c trnh by trong mt ti liu khc. Ti liu ny ch tp trung vo phn lp trnh.
1.2.1 Mch ng vo (cm bin, nt n, cng tc hnh trnh) Vi robot n gin, ng vo thng l mc logic ly t cm bin quang (quang tr, quang diode), nt n hoc cng tc hnh trnh. T mch vi iu khin x l cc tn hiu ny xut ng ra (thng l ng c DC) cho ph hp. Cm bin quang phi c che chn cn thn hn ch nh hng t cc ngun nh sng bn ngoi.
R4 VCC R 1 330 R2 33K 100K VCC
5V
3 + 2 -
U1A 1 LM324
CAMBIEN 1
R3 10K CTHT
D2 LED
D3 QUANG TRO
C1 104
SW2 BIT0
Hnh 3: Mch cm bin, nt n v cng tc hnh trnh 1.2.2 Mch vi iu khin Mch s dng vi iu khin PIC16F877A ca Microchip. Mch nhn tn hiu t ng vo, x l v xut ng ra qua mt mch cch ly bng opto ra mch cng sut.
RESET RA0 RA1 RA2 RA3 RA4 RA5 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 C5 30p 13 Y1 CRY STAL 14 C6 30p 12 31 1 2 3 4 5 6 7 15 16 17 18 23 24 25 26 MCLR*/VPP RA0/AN0 RA1/AN1 RA2/AN2/VREF-/CVREF RA3/AN3/VREF+ RA4/T0CKI/C1OUT RA5/AN4/SS*/C2OUT RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT OSC1/CLKIN RE0/RD*/AN5 RE1/WR*/AN6 RE2/CS*/AN7 OSC2/CLKOUT VSS VSS PIC16F877A VDD VDD 11 32 RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 19 20 21 22 27 28 29 30 8 9 10 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 RE0 RE1 RE2 5V
MCU MODULE
Hnh 4: Mch vi iu khin 1.2.3 Mch cng sut iu khin ng c DC Mt s mch thng dng:
P-DIR2 12V D12 1N5819 P-PWM2 Q5 B562 R12 330 2W Q4 D468 M2 IRF540 5 D14 1N5819 24V 6 7 4 3 2 LS2 RELAY 8 1 1N5819 C2 104 CON2 1 2 D13 MOTOR2
(Feb 2010)
DEMO VERSION
Trang 2/14
D2
IR 2184
IR2184 Q1 R4 4.7R IRF540 R5 4.7R J1 C14 104 C7 470n + R6 4.7R Q3 IRF540 C8 470u R7 4.7R Q4 IRF540 1 2 MOTOR Q2 IRF540
Hnh 6: Mch cu H iu khin ng c vi Half Bridge Driver IR2184 Phn hng dn chi tit v mch in t s c trnh by trong mt ti liu khc. Ti liu ny ch tp trung vo phn lp trnh.
(Feb 2010)
DEMO VERSION
Trang 3/14
1.3 Lp trnh y l phn chnh ca ti liu ny. Ngn ng lp trnh c s dng l C, vi trnh bin dch CCS cho vi iu khin PIC ca Microchip. Kin thc ban u: Lp trnh C cn bn Cc ti liu tham kho: Ti liu CCS ting Vit: http://www.mediafire.com/?hd2ugmmzvwf Hng dn lp trnh PIC-DKS:http://www.mediafire.com/?e0ioxeideyx Gio trnh PIC (H Reading): http://www.mediafire.com/?iyewnoldyjk Lp trnh C cho PIC 8bit: http://www.mediafire.com/?tnjlztmmzdm CCS Manual (tra cu lnh): http://www.mediafire.com/?htljg1jg2mn y l cc ti liu cn c qua trc khi vo lp trnh cho PIC c th bit cc hm nhn tn hiu ng vo, xut tn hiu ng ra, ngt, timer, counter, PWM, Cc hm quan trng s c nhc li phn 2. 2 LP TRNH CHO ROBOT T NG D NG N GIN Chng trnh gip robot chy theo vch trng trn nn mu sm. 2.1 Phn cng 8 cm bin quang d ng Mch cng sut iu khin 2 ng c Mch vi iu khin: o PORTD: ni vi tn hiu ra ca 8 cm bin o ng c tri: Chn C0: iu khin chiu (DIR_LEFT) Chn C1: iu khin cho php chy (EN_LEFT) o ng c phi: Chn C3: iu khin chiu (DIR_RIGHT) Chn C2: iu khin cho php chy (EN_RIGHT) (Cc ng vo v ng ra c th ni vi bt c PORT v chn no ca vi iu khin) 2.2 Nguyn tc iu khin 2.2.1 iu khin ng c Trng thi DIRECTION ENABLE Thun 1 1 Ngc 0 1 Dng x 0 Tng t i vi cc ng c iu khin cc c cu. 2.2.2 Hng di chuyn ca robot Trng thi ng c tri ng c phi Thng Thun Thun Quay tri Thun Ngc (Dng) Quay phi Ngc (Dng) Thun
(Feb 2010)
DEMO VERSION
Trang 4/14
2.2.3 X l tn hiu cm bin (xem hnh v) Mc ch ca vic d ng l hng cho robot i theo 1 vch thng mu trng trn mt nn mu m (en, xanh,) Cm bin c t gia robot. o Khi cm bin s 3,4 nm trn vch trng (mc 1): robot chy thng o Khi robot lch sang tri: quay phi iu chnh robot v ng vch o Khi robot lch sang phi: quay tri iu chnh robot v ng vch 7
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6
0 0 0 0 0 0 0
5
0 0 0 0 0 0 0 0
4
1 1 1 1 1
3
1 1 1 1
2
0 0 0
1
0 0
0
0
Trng thi cm bin Gia vch Lch tri mc 1 Lch tri mc 2 Lch tri mc 3 Lch tri mc 4 Ngoi vch
1 1 1
1 1 1 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Lch phi mc 1 Lch phi mc 2 Lch phi mc 3 Lch phi mc 4 Ngoi vch
Hnh 7: Cc mc lch ra khi vch trng ca robot 2.3 Chng trnh iu khin
#include <16f877A.h> #include <def_877A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) /* NH NGHA CC CHN V PORT */ #define DIR_LEFT RC0 #define EN_LEFT RC1 #define DIR_RIGHT #define EN_RIGHT RC3 RC2
(Feb 2010)
DEMO VERSION
Trang 5/14
#define SENSOR PORTD /* KHAI BO CC CHNG TRNH CON */ void motor_left_forward(); void motor_left_reverse(); void motor_left_stop(); void motor_right_forward(); void motor_right_reverse(); void motor_right_stop(); void forward(); void reverse(); void stop(); void turn_left(); void turn_right(); /* CC CHNG TRNH CON */ // ng c tri chy thun void motor_left_forward() { DIR_LEFT=1; // chiu thun EN_LEFT=1; // cho php chy } // ng c tri chy ngc void motor_left_reverse() { DIR_LEFT=0; // chiu ngc EN_LEFT=1; // cho php chy } // ng c tri dng void motor_left_stop() { EN_LEFT=0; // khng cho php chy } // ng c phi chy thun void motor_right_forward() { DIR_RIGHT=1;// chiu thun EN_RIGHT=1; // cho php chy } // ng c phi chy ngc void motor_right_reverse() { DIR_RIGHT=0;// chiu ngc EN_RIGHT=1; // cho php chy } // ng c phi dng void motor_right_stop() { EN_RIGHT=0; // khng cho php chy } // Chy thng void forward()
(Feb 2010)
DEMO VERSION
Trang 6/14
{ motor_left_forward(); motor_right_forward(); } // Chy li void reverse() { motor_left_reverse(); motor_right_reverse(); } // Dng void stop() { motor_left_stop(); motor_right_stop(); } // Quay tri void turn_left() { motor_left_forward(); motor_right_reverse(); // hoc motor_right_stop(); } // Quay phi void turn_right() { motor_left_reverse(); // hoc motor_left_stop(); motor_right_forward(); } /* CHNG TRNH CHNH */ void main () { TRISC=0x00; // PORTC l ng ra ( ng c) TRISD=0x00; // PORTD l ng vo (cm bin quang) PORTC=0x00; // Khi to gi tr ban u 0x00 cho PORTC while(1) { switch (SENSOR) { case 0b00011000: forward(); break; case 0b00001100: turn_left(); break; case 0b00000110: turn_left(); break; case 0b00000011: turn_left(); break; case 0b00000001: turn_left(); break; case 0b00110000: turn_right(); break; case 0b01100000: turn_right(); break; case 0b11000000: turn_right(); break; case 0b10000000: turn_right(); break; } } }
(Feb 2010)
DEMO VERSION
Trang 7/14
3 CI TIN CHNG TRNH D NG 3.1 iu khin tc ng c vi cc trng thi lch khi vch trng 3.1.1 Nguyn l i vi chng trnh d ng n gin, khi robot lch tri hoc lch phi, robot s quay phi hoc quay tri iu chnh cho d lch t hay lch nhiu. Nh vy, trong qu trnh di chuyn, robot s lc lin tc v phi quay tri, quay phi lin tc. Do , vi cc mc lch ra khi vch trng khc nhau, ta iu chnh tc 2 bnh tri, phi cho ph hp qu trnh di chuyn theo vch ca robot c nhuyn v mt hn. Bng gi tr tham kho tc ng c tri v ng c phi tng ng vi cc trng thi lch khi vch trng ca robot (xem li hnh 7): Trng thi Tc ng c tri Tc ng c phi Gia vch 100% 100% Lch tri mc 1 90% 80% Lch tri mc 2 80% 70% Lch tri mc 3 70% 60% Lch tri mc 4 60% 50% Lch phi mc 1 80% 90% Lch phi mc 2 70% 80% Lch phi mc 3 60% 70% Lch phi mc 4 50% 60% 3.1.2 iu khin tc ng c DC bng phng php PWM i vi iu khin tc ng c DC trong robot, phng php c s dng ph bin nht l iu bin rng xung (Pulse Width Modulation) hay c gi tt l iu xung, bm xung hoc PWM. Nguyn l ca phng php ny l bt tt nhanh ngun in cp vo ng c to ra mt tn hiu xung. Khi vic bt tt tn s ln (thng s dng t 1kHz n 20kHz), ng c s chy vi 1 tc n nh nh moment quay. Thi gian cp ngun cho ng c l T-on, thi gian tt ngun ng c l T-off. Vic thay i thi gian T-on v T-off lm thay i in p hiu dng cp cho ng c. i vi ng c DC, tc ng c tng i t l thun vi in p cp cho ng c. V vy, bng cch thay i rng ca xung, ta thay i c tc ca ng c DC. i lng biu din mi quan h gia T-on v T-off c gi l duty cycle
duty _ cycle Ton Ton Toff
V d: Ta cp ngun ng c trong 0.8ms, sau tt 0.2ms. Nh vy: T-on = 0.8ms; T-off = 1ms. Tn s PWM l
f 1 1 1 1kHz Ton Toff 0.8ms 0.2ms 1ms
(Feb 2010)
DEMO VERSION
Trang 8/14
duty _ cycle
Hnh 8: Tnh ton duty cycle iu khin tc ng c DC 3.1.3 iu xung PWM dng vi iu khin iu xung PWM bng phn mm: iu xung PWM mt cch n gin l a 1 chn no ca vi iu khin ln mc 1, sau a xung mc 0. Cng vic ny c lp i lp li lin tc s to ra xung, v tc ca ng c s tng ng vi duty cycle. V d: iu xung trn chn A0 : Code
RA0=1; Delay_ms(Ton); RA0=0; Delay_ms(Toff);
Tuy nhin, nu thc hin bng cch ny th vi iu khin s lun dnh thi gian cho vic iu xung PWM. Do , cc cng vic khc nh nhn tn hiu t cm bin, iu khin cc c cu s b nh hng. iu xung PWM bng phn cng gii quyt vn vic iu xung PWM bng phn mm chim phn ln thi gian hot ng ca vi iu khin, PIC16F877A c h tr 2 knh iu xung bng phn cng 2 chn C1 (CCP2) v C2(CCP1) s dng TIMER2. Ngha l, khi ta khai bo iu xung PWM mt tn s v duty cycle no th vi iu khin s thc hin cng vic xut xung mt cch lin tc v t ng cho n khi ta thay i cc gi tr khai bo. Khi , ta c th lm cc cng vic khc mt cch d dng m khng phi mt thi gian cho vic duy tr xung PWM. Cc hm h tr vic iu xung bng phn cng ca CCS: Ghi ch: Ch cp n cc i s ca cc hm c phc v cho vic iu xung PWM. o setup_timer_2 (mode, period, postscale) mode: T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16 period: 0-255 postscale: 1
(Feb 2010)
DEMO VERSION
Trang 9/14