
Lậ p trình Robot tự độ ng đơ n giả n vớ i PIC16F877A Biên soạ n: EM-BOT Robot Team
©http://em-bot.tk (Feb 2010) DEMO VERSION
Trang 1/14
LẬ P TRÌNH ROBOT TỰ ĐỘ NG ĐƠ N GIẢ N
VỚ I VI ĐIỀ U KHIỂ N PIC16F877A
Cao Hoàng Long, EM-BOT Robot Team
chlong.mechatronics@gmail.com ; embot.robocon@gmail.com
Khoa Công nghệ , Đạ i họ c Cầ n Thơ
Tóm tắ t
Tài liệ u hư ớ ng dẫ n lậ p trình cho robot tự độ ng dò đư ờ ng theo vạ ch trắ ng vàđiề u khiể n
các cơ cấ u (nâng hạ , gắ p nhả quà) mộ t cách cơ bả n nhấ t.Vi điề u khiể n đư ợ c sử dụ ng
trong tài liệ u là PIC16F877A củ a Microchip.Lậ p trình bằ ng ngôn ngữ C vớ i trình biên
dị ch CCS.
1 TÓM TẮ T VỀ THIẾ T KẾ ROBOT TỰ ĐỘ NG
Robot tự độ ng trong các cuộ c thi Robocon gồ m 3 thành phầ n chính: Cơ khí,
Mạ ch điệ n tử , Lậ p trình.
1.1 Cơ khí
Mộ t robot đơ n giả n gồ m 2 độ ng cơ truyề n độ ng cho 2 bánh xe bên trái và bên
phả i giúp robot di chuyể n. Phía trư ớ c có thể là 1 hoặ c 2 bánh tự do (bánh tự
lự a, omni, mắ t trâu,…). Để thự c hiệ n đư ợ c các công việ c như nâng hạ trụ c,
gắ p nhả đẩ y quá, robot đư ợ c trang bị thêm các độ ng cơ khác để truyề n độ ng
cho các cơ cấ u này.
Tấ t cả các bộ phậ n trên đư ợ c bố trí trên mộ t khung bằ ng nhôm, sắ t,…
Phầ n hư ớ ng dẫ n chi tiế t về thiế t kế cơ khí sẽ đư ợ c trình bày trong mộ t tài
liệ u khác. Tài liệ u này chỉ tậ p trung vào phầ n lậ p trình.
Hình 1: Mô hình robot dò dư ờ ng đơ n giả n
1.2 Mạ ch điệ n tử
Hình 2: Sơ đồ hoạ t độ ng củ a robot tự độ ng

Lậ p trình Robot tự độ ng đơ n giả n vớ i PIC16F877A Biên soạ n: EM-BOT Robot Team
©http://em-bot.tk (Feb 2010) DEMO VERSION
Trang 2/14
1.2.1 Mạ ch ngõ vào (cả m biế n, nút ấ n, công tắ c hành trình)
Vớ i robot đơ n giả n, ngõ vào thư ờ ng là mứ c logic lấ y từ cả m biế n quang
(quang trở , quang diode), nút ấ n hoặ c công tắ c hành trình. Từ đó mạ ch vi
điề u khiể n xử lý các tín hiệ u này để xuấ t ngõ ra (thư ờ ng là độ ng cơ DC) cho
phù hợ p.
Cả m biế n quang phả i đư ợ c che chắ n cẩ n thậ n để hạ n chế ả nh hư ở ng từ các
nguồ n ánh sáng bên ngoài.
C1
104
CTHT
SW2
BIT0
5V
R3
10K
Hình 3: Mạ ch cả m biế n, nút ấ n và công tắ c hành trình
1.2.2 Mạ ch vi điề u khiể n
Mạ ch sử dụ ng vi điề u khiể n PIC16F877A củ a Microchip. Mạ ch nhậ n tín
hiệ u từ ngõ vào, xử lý và xuấ t ngõ ra qua mộ t mạ ch cách ly bằ ng opto ra
mạ ch công suấ t.
RA5
RA4
RC7
RC0
RA2
RA3
RA0
RA1
RB1
RB2
RB4
RB5
RB0
RB6
RB7
RB3
RE0
RE1
RC3
RC4
RE2
RC5
RC6
RD4
RD0
RD1
RD2
RD3
RD5
Y1
CRY STAL
PIC16F877A
RA0/AN0
2
RA1/AN1
3
RA2/AN2/VREF-/CVREF
4
RA3/AN3/VREF+
5
RA4/T0CKI/C1OUT
6
RA5/AN4/SS*/C2OUT
7
RB0/INT 33
RB1 34
RB2 35
RB3/PGM 36
RB4 37
RB5 38
RB6/PGC 39
RB7/PGD 40
RC0/T1OSO/T1CKI
15
RC1/T1OSI/CCP2
16
RC2/CCP1
17
RC3/SCK/SCL
18
RC4/SDI/SDA
23
RC5/SDO
24
RC6/TX/CK
25
RC7/RX/DT
26
RD0/PSP0 19
RD1/PSP1 20
RD2/PSP2 21
RD3/PSP3 22
RD4/PSP4 27
RD5/PSP5 28
RD6/PSP6 29
RD7/PSP7 30
OSC1/CLKIN
13
OSC2/CLKOUT
14
VDD 32
VDD 11
VSS
31 VSS
12
MCLR*/VPP
1
RE0/RD*/AN5 8
RE1/WR*/AN6 9
RE2/CS*/AN7 10
C5 30p
C6 30p 5V
RC1
RC2
RESET
MCU MODULE
RD6
RD7
Hình 4: Mạ ch vi điề u khiể n
1.2.3 Mạ ch công suấ t điề u khiể n độ ng cơ DC
Mộ t số mạ ch thông dụ ng:
D14
1N5819
D13
1N5819
24V
C2
104
MOTOR2
CON2
1
2
M2
IRF540
R12
330 2W
LS2
RELAY
3
2
4
6
7
51
8
P-DIR2
P-PWM2
Q5
B562
Q4
D468
D12
1N5819
12V
D3
QUANG TRO
D2
LED
R
1
330
R2
33K
VCC
VCC
-
+
U1A
LM324
3
2
1
R4
100K
CAMBIEN
1
Vạ ch trắ ng: mứ c 1
Nề n: mứ c 0

Lậ p trình Robot tự độ ng đơ n giả n vớ i PIC16F877A Biên soạ n: EM-BOT Robot Team
©http://em-bot.tk (Feb 2010) DEMO VERSION
Trang 3/14
Hình 5: Mạ ch công suấ t sử dụ ng 1 FET và 1 relay
U3
IR 2184
COM
3LO 4
VB 8
IN
1
VCC
5
SD
2VS 6
HO 7
U4
IR2184
COM
3LO 4
VB 8
IN
1
VCC
5
SD
2VS 6
HO 7
+
C5
4.7u
+
C1
4.7u
C6
100n
C2
100n
D1
DIODE
R4 4.7R
R6 4.7R R7
4.7R
R5
4.7R
D2
DIODE
+C3
4.7u C4
100n
12V
IN2
Q1
IRF540
Q3
IRF540
Q2
IRF540
Q4
IRF540
24V
C7
470n
+C8
470u
J1
MOTOR
1
2C14
104
IN1
Hình 6: Mạ ch cầ u H điề u khiể n độ ng cơ vớ i Half Bridge Driver IR2184
Phầ n hư ớ ng dẫ n chi tiế t về mạ ch điệ n tử sẽ đư ợ c trình bày trong mộ t tài
liệu khác. Tài liệ u này chỉ tậ p trung vào phầ n lậ p trình.

Lậ p trình Robot tự độ ng đơ n giả n vớ i PIC16F877A Biên soạ n: EM-BOT Robot Team
©http://em-bot.tk (Feb 2010) DEMO VERSION
Trang 4/14
1.3 Lậ p trình
Đây là phầ n chính củ a tài liệ u này. Ngôn ngữ lậ p trình đư ợ c sử dụ ng là C, vớ i
trình biên dị ch CCS cho vi điề u khiể n PIC củ a Microchip.
Kiế n thứ c ban đầ u: Lậ p trình C căn bả n
Các tài liệ u tham khả o:
Tài liệ u CCS tiế ng Việ t: http://www.mediafire.com/?hd2ugmmzvwf
Hư ớ ng dẫ n lậ p trình PIC-DKS:http://www.mediafire.com/?e0ioxeideyx
Giáo trình PIC (ĐH Reading): http://www.mediafire.com/?iyewnoldyjk
Lậ p trình C cho PIC 8bit: http://www.mediafire.com/?tnjlztmmzdm
CCS Manual (tra cứ u lệ nh): http://www.mediafire.com/?htljg1jg2mn
Đây là các tài liệ u cầ n đọ c qua trư ớ c khi vào lậ p trình cho PIC để có thể biế t các
hàm nhậ n tín hiệ u ngõ vào, xuấ t tín hiệ u ngõ ra, ngắ t, timer, counter, PWM,…
Các hàm quan trọ ng sẽ đư ợ c nhắ c lạ i ở phầ n 2.
2 LẬ P TRÌNH CHO ROBOT TỰ ĐỘ NG DÒ ĐƯ Ờ NG ĐƠ N GIẢ N
Chư ơ ng trình giúp robot chạ y theo vạ ch trắ ng trên nề n màu sậ m.
2.1 Phầ n cứ ng
8 cả m biế n quang dòđư ờ ng
Mạ ch công suấ t điề u khiể n 2 độ ng cơ
Mạ ch vi điề u khiể n:
oPORTD: nố i vớ i tín hiệ u ra củ a 8 cả m biế n
oĐộ ng cơ trái:
Chân C0: điề u khiể n chiề u (DIR_LEFT)
Chân C1: điề u khiể n cho phép chạ y (EN_LEFT)
oĐộ ng cơ phả i:
Chân C3: điề u khiể n chiề u (DIR_RIGHT)
Chân C2: điề u khiể n cho phép chạ y (EN_RIGHT)
(Các ngõ vào và ngõ ra có thế nố i vớ i bấ t cứ PORT và chân nào củ a vi điề u khiể n)
2.2 Nguyên tắ c điề u khiể n
2.2.1 Điề u khiể n độ ng cơ
Trạ ng thái
DIRECTION
ENABLE
Thuậ n
1
1
Ngư ợ c
0
1
Dừ ng
x
0
Tư ơ ng tự đố i vớ i các độ ng cơ điề u khiể n các cơ cấ u.
2.2.2 Hư ớ ng di chuyể n củ a robot
Trạ ng thái
Độ ng cơ trái
Độ ng cơ phả i
Thẳ ng
Thuậ n
Thuậ n
Quay trái
Thuậ n
Ngư ợ c (Dừ ng)
Quay phả i
Ngư ợ c (Dừ ng)
Thuậ n

Lậ p trình Robot tự độ ng đơ n giả n vớ i PIC16F877A Biên soạ n: EM-BOT Robot Team
©http://em-bot.tk (Feb 2010) DEMO VERSION
Trang 5/14
2.2.3 Xử lý tín hiệ u cả m biế n (xem hình vẽ )
Mụ c đích củ a việ c dòđư ờ ng là hư ớ ng cho robot đi theo 1 vạ ch thẳ ng màu trắ ng
trên mộ t nề n màu đậ m (đen, xanh,…)
Cả m biế n đư ợ c đặ t ở giữ a robot.
oKhi cả m biế n số 3,4 nằ m trên vạ ch trắ ng (mứ c 1): robot chạ y thẳ ng
oKhi robot lệ ch sang trái: quay phả i để điề u chỉ nh robot về đúng vạ ch
oKhi robot lệ ch sang phả i: quay trái để điề u chỉ nh robot về đúng vạ ch
7
6
5
4
3
2
1
0
Trạ ng thái cả m
biế n
Giữ a vạ ch
Lệ ch trái mứ c 1
Lệ ch trái mứ c 2
Lệ ch trái mứ c 3
Lệ ch trái mứ c 4
Ngoài vạ ch
Lệ ch phả i mứ c 1
Lệ ch phả i mứ c 2
Lệ ch phả i mứ c 3
Lệ ch phả i mứ c 4
Ngoài vạ ch
Hình 7: Các mứ c độ lệ ch ra khỏ i vạ ch trắ ng củ a robot
2.3 Chư ơ ng trình điề u khiể n
#include <16f877A.h>
#include <def_877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
/* ĐỊ NH NGHĨA CÁC CHÂN VÀ PORT */
#define DIR_LEFT RC0
#define EN_LEFT RC1
#define DIR_RIGHT RC3
#define EN_RIGHT RC2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
1
1
0
0
0
0
0
0
1
1
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
1
0
0
0
0
1
0
0
0
0
0