Tải bản đầy đủ (.docx) (55 trang)

ĐỒ án hệ THỐNG NHÚNG THIẾT kế ROBOT dò ĐƯỜNG TRONG mê CUNG đơn GIẢN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.88 MB, 55 trang )

Đô an hê thông nhung

ĐỀ TÀI:
THIẾT KẾ ROBOT DÒ ĐƯỜNG TRONG MÊ
CUNG ĐƠN GIẢN


Đô an hê thông nhung

Mục lục
CHƯƠNG 1. TÔNG QUAN..................................................................................................4
I.GIƠI THIÊU VÊ ROBOT TƯ HANH.........................................................................4
1.1.Muc tiêu.....................................................................................................................6
1.2.Nôi dung....................................................................................................................6
CHƯƠNG II: CAC THANH PHÂN VA CÂU TRUC ROBOT.......................................7
I.VI XỬ LÝ ARM...................................................................................................................7
1.1.Cortex là gì?..............................................................................................................7
1.2.Môt vài đăc điêm nôi bât cua STM32........................................................10
1.3.Kiên truc đương ông.........................................................................................11
1.4. Mô hình lâp trình (programmer’s model)...............................................12
1.5.Thanh ghi xPSR....................................................................................................13
1.6. Bô xư li Cortex.....................................................................................................14
1.7.Timer hê thông (system timer)....................................................................15
1.8.Xư li ngăt (interrupt handling).....................................................................15
1.9.Bô điêu khiên vector ngăt lông nhau (Nested Vector Interrupt
Controller).................................................................................................................................. 15
1.10.Ngăt ngoai (EXTI)............................................................................................15
1.11. Sơ đô phân cưng cơ ban..............................................................................17
1.12.Cac công I/O đa dung.....................................................................................17
II. CẢM BIẾN SIÊU ÂM SRF05....................................................................................19
2.1.Chê đô 1..................................................................................................................19


2.2.Chê đô 2..................................................................................................................20
III. Môt sô linh kiên khac...........................................................................................22


Đô an hê thông nhung
3.1. IC câu H (L293D)..............................................................................................22
3.2. Tranzitor C828...................................................................................................23
3.3. Đông cơ bươc 4 dây (step motor)..............................................................24
3.4. Câu truc cơ khi cua xe......................................................................................25
CHƯƠNG 3: THUÂT TOAN DÒ ĐƯỜNG – CODE.......................................................
SẢN PHẨM VA ỨNG DỤNG.............................................................................................27
I. SƠ ĐÔ KHÔI TÔNG QUAT......................................................................................27
1.1.Sơ đô khôi tông quat.........................................................................................27
1.2 Thuât toan do đương.........................................................................................28
1.3 Lưu đô thuât toan...............................................................................................29
1.4:Code...........................................................................................................................29
II.PHAT TRIỂN VA ỨNG DỤNG.................................................................................50
III. TAI LIÊU THAM KHẢO...........................................................................................51


Đô an hê thông nhung

CHƯƠNG 1. TÔNG QUAN
I.GIƠI THIÊU VÊ ROBOT TƯ HANH
Robot tự hành hay robot di đông (mobile robots, thương được gọi tăt là m
obot) được định nghĩa là môt loại xe robot có khả năng tự dịch chuyển, tự vận độ
ng (có thể l ập trinh lại đươc) dươi sự đi êu khiển tự đ ộng để th ực hiên thanh
công công viêc đươc giao.
Theo lý thuyêt, môi trương hoat đông cua robot tự hành có thê là đât, nư
ơc, không khi, không gian vũ tru hay sự tô hợp giữa chung. Địa hình bê măt mà r

obot di chuyên trên đó có thê bằng phẳng hoăc thay đôi, lôi lõm. Theo bô phân t
hực hiên chuyên đông, ta có thê chia robot tự hành làm 2 lơp: chuyên

đông

bằng

bằng

chân

và

chuyên

đông

banh.Trong lơp đâu tiên, chuyên đông có được nhơ cac chân cơ khi băt chươc ch
uyên đông cua con ngươi và đông vât.
Robot loai này có thê di chuyên rât tôt trên cac định hình lôi lõm, phưc ta
p. Tuy nhiên, cach phôi hợp cac chân cũng như vân đê gi ữ v ững tư thê là công
viêc cực kì khó khăn. Lơp con lai (di chuyên bằng banh) to ra th ực tê hơn, chung
có thê làm vi êc tôt trên hâu hêt cac địa hình do con ngươi t ao ra. Đi êu khi ên
robot di chuyên bằng banh cũng đơn gian hơn nhiêu, gân như luôn đam bao
tinh ôn định cho robot. Lơp này có thê chia thành 3 lo ai: lo ai chuyên đ ông b ằng
banh xe, loai chuyên đông bằng vong xich và loai hôn hợp banh và xich.
Tiêm năng cua robot tự hành là hêt sưc rông lơn. Có thê kê đên robot vân
chuyên vât liêu, hàng hóa trong cac nhà may, toa nhà, cua hàng, sân bay và thư
viên; robot phuc vu quet d ọn đương phô; khoang chân không … Măc du ưng
dung cao nhưng han chê ch ưa giai quyêt được cua robot tự hành nh ư chi phi

chê tao, đa không cho phep chung được sư dung rông rai. Môt nh ược đi êm khac
cua robot tự hành ph ai kê đ ên là con thiêu tinh linh hoat và thich ưng khi làm


Đô an hê thông nhung
viêc ơ những vị tri khac nhau. Bài toan tìm đ ương cua robot tự hành cũng không
phao là loai bài toan đơn gian như nhiêu ngươi nghĩ luc ban đâu. Trong đô an
môn học này, bài toan tìm đương se được giai quyêt ơ m ưc đô không qua ph ưc
tap.

Hình 1.1 môt sô hình anh vê robot tự hành
Do đương (navigation) là môt khoa học dân hương robot tự hành di
chuyên trong không gian làm viêc cua nó. Trong vân đê do đương, bài toan đ ược
quan tâm nhiêu nhât là tìm đương vê đich mà không ch am vât c an trên đ ương
đi. Có hai bài toan tìm đương cho robot: bài toan cuc b ô (local) và bài toan toàn
cuc (global). Trong bài toan toàn cuc, ban đô môi tr ương làm viêc c ua robot
hoàn toàn biêt trươc, vân đê chinh là tìm đ ược đương đi cho robot tr ươc khi nó


Đô an hê thông nhung
xuât phat. Ơ bài toan c uc bô, môi trương làm viêc cua robot ch ưa bi êt ho ăc ch i
biêt 1 phân, robot hoàn toàn phai nhơ vào s ự c am nhân môi trương thông qua
cam biên găn trên nó đê do đ ương. Bài toan toàn cuc to rõ l ợi thê là ta bi êt
trươc đương đi tơi đich hay không trươc khi robot khơi hành. Tuy vây nó l ai có
han chêt là đoi hoi nhiêu lênh tinh toan và bô nh ơ, và đăc bi êt tình hu ông xâu
có thê xay ra nêu ban đô môi tr ương làm viêc không được khai bao chinh xac,
yêu câu biêt trươc hoàn toàn môi trương làm viêc cũng là m ôt nhược đi êm c ua
nó. Trong khi đó, robot tìm đương cuc bô chi biêt được thông tin xung quanh qua
sensor cam nhân môi trương găn cung. Vì thê, robot tìm đương cuc bô có th ê
không hoan thành viêc tơi đich, khai niêm tôi ưu không có ý nghĩa trong bài toan

này. Tuy nhiên, dung lương bô nh ơ và khôi l ượng tinh toan lai thâp. Ngày nay,
cach tiêp cân giữa cuc bô và toàn c uc đang ngày càng phô bi ên, giup robot tự
hành tăng tinh linh hoat và hiêu qua.
1.1.Mục tiêu
Muc tiêu cua đê tài là thi êt kê, thi công, điêu khi ên robot tự hành. Robot
tự hành có th ê ho at đông ôn định, tự tìm đ ương đi tơi đich xac đ ịnh cua mê
cung, có thê học nhanh chóng cach tìm đương đi khi thay đôi hình dang mê cung,
sư dung thuât toan tìm kiêm theo hương ưu tiên re 1 hương trươc. Sư d ung kit
vi xư lý đê xư lý thuât toan do đương.
1.2.Nôi dung
Nôi dung nghiên cưu:
Tìm hiêu vê kit arm cortex m3
Khao sat phân tich tông hợp: phân tich cach thưc hoat đ ông c ua robot t ự
hành theo thiêt kê bô phân do tìm.
Khao sat tinh kha thi cua thuât toan do đương
Thực nghiêm: kiêm tra tinh ôn định cua robot, tôi ưu code
Đanh gia kêt qua đat được


Đô an hê thông nhung


Đô an hê thông nhung

CHƯƠNG II: CAC THANH PHÂN VA CÂU TRUC ROBOT
I.VI XỬ LÝ ARM
Trong vài năm trơ l ai đây, môt trong những xu hương chu y êu trong cac
thiêt kê v ơi vi điêu khiên là sư d ung cac chip ARM7 và ARM9 nh ư m ôt vi đi êu
khiên đa dung. Ngày nay cac nhà san xuât IC đưa ra th ị tr ương h ơn 240 dong vi
điêu khiêu sư d ung lõi ARM. Tâp đoàn ST Microelectronic vưa cho ra măt dong

STM32, vi điêu khiên đâu tiên dựa trên nên lõi ARM Cortex-M3 thê h ê m ơi do
hang ARM thiêt kê, lõi ARM Cortex-M3 là sự cai tiên cua lõi ARM7 truyên th ông,
tưng mang lai sự thành công vang d ôi cho công ty ARM. Dong STM32 thi êt l âp
cac tiêu chuân mơi vê hi êu suât, chi phi, cũng nh ư kha năng đap ưng cac ưng
dung tiêu thu năng lượng thâp và tinh điêu khiên thơi gian thực khăt khe.

1.1.Cortex là gì?
Dong ARM Cortex là môt bô x ư lý th ê h ê m ơi đưa ra môt ki ên truc chu ân
cho nhu câu đa dang vê công ngh ê. Không giông như cac chip ARM khac, dong
Cortex là môt lõi vi xư lý hoàn thi ên, đưa ra môt chuân CPU và ki ên truc h ê
thông chung. Dong Cortex gôm có 3 phân nhanh chinh: dong A dành cho cac ưng
dung cao câp, dong R cho cac ưng dung thơi gian thực nh ư cac đ âu đ ọc và dong
M cho cac ưng dung vi điêu khiên và chi phi thâp. STM32 được thi êt kê dựa trên
dong Cortex-M3, dong Cortex-M3 được thi êt kê đ ăc bi êt đ ê nâng cao hi êu su ât
hê th ông, kêt hợp vơi tiêu thu năng l ượng thâp, Cortex-M3 được thi êt kê trên
nên kiên truc mơi, do đó có chi phi san xuât th âp đu đ ê c anh tranh v ơi cac dong
vi điêu khiên 8 và 16-bit truyên thông.
Cac chip ARM7 và ARM9 được cac nhà san xuât ban d ân thi êt kê v ơi gi ai
phap riêng cua mình, đăc biêt là phân xư lý cac ng ăt đ ăc bi êt (exception) và cac
ngăt thông thương (interrupt). Cortex-M3 đưa ra môt lõi vi điêu khi ên chuân
nhằm cung câp phân tông quat, quan trọng nhât cua môt vi đi êu khi ên, bao
gôm hê thông ngăt (interrupt system), SysTick timer (đ ược thi êt kê cho h ê đi êu
hành thơi gian thực), hê th ông kiêm lôi (debug system) và memory map, không


Đô an hê thông nhung
gian địa chi 4Gbyte c ua Cortex-M3 được chia thành cac vung cho ma ch ương
trình, SRAM, ngoai vi và ngoai vi hê th ông. Không giông vơi ARM7 được thi êt kê
theo kiên truc Von-Neumann (bô nh ơ chương trình và bô nh ư d ữ li êu chung vơi
nhau), Cortex-M3 được thiêt kê theo ki ên truc Harvard (b ô nh ơ ch ương trình và

bô nhơ dữ liêu được tach biêt vơi nhau), và có nhiêu bus cho phep th ực hi ên cac
thao tac song song vơi nhau, do đó làm tăng hiêu su ât c ua chip. Không gi ông v ơi
cac kiên truc ARM trươc đó, dong Cortex cho phep truy c âp d ữ li êu không xêp
hàng (unaligned dât, vì chip ARM là kiên truc 32-bit, do đó tât c a cac d ữ li êu
hoăc ma chương trình đêu được săp xêp khit vơi vung bô nh ơ là b ôi c ua 4byte).
Đăc điêm này cho phep sư d ung hiêu qua SRAM n ôi. Dong Cortex con h ô tr ợ
viêc đăt và xóa cac bit bên trong hai vung 1Mbyte cua bô nh ơ b ằng phương phap
gọi là bit banding. Đăc điêm này cho phep truy câp hi êu qu a t ơi cac thanh ghi
ngoai vi và cac cơ được dung trên bô nhơ SRAM mà không cân môt b ô x ư lý luân
lý (Boolean processor).

Hình 2.1. Kiên truc vi xư lý ARM Cortex-M3
Khôi trung tâm cua STM32 là bô x ư lý Cortex-M3. B ô x ư lý Cortex-M3 là
môt vi điêu khiên được tiêu chuân hóa gôm môt CPU 32-bit, c âu truc bus (bus


Đô an hê thông nhung
structure), đơn vị x ư lý ng ăt có hô tr ợ tinh năng l ông ng ăt vào nhau (nested
interrupt unit), hê th ông kiêm lôi (debug system) và tiêu chuân b ô tri b ô nh ơ
(standard memory layout).
Môt trong những thành phân chinh cua lõi Cortex-M3 là NVIC (Nested
Vector Interrupt Controller). NVIC cung câp môt c âu truc ngăt chu ân cho tât c a
cac vi điêu khiên được thiêt kê d ựa trên lõi Cortex và cach x ư lý cac ng ăt đ ăc
biêt (exceptional interrupt). NVIC cung câp cac vector ngăt chuyên d ung lên t ơi
240 nguôn ngăt tư ngoai vi, môi nguôn ngăt đó có thê đ ược ưu tiên hóa v ơi cac
mưc riêng biêt. NVIC được thiêt kê đ ê x ư lý cac ng ăt đoi h oi th ơi gian đap ưng
cực kì nhanh (extremely fast interrupt). Thơi gian tư luc nh ân m ôt tin hi êu ng ăt
cho tơi khi thực thi dong lênh đâu tiên trong trình ph uc v u ng ăt ch i là 12 chu kì
xung nhịp. Công viêc này được thực hiên tự đ ông bơi môt vi chương trình
(microcode) được cài săn trong CPU. Trong trương hợp xuât hiên cac interrupt

lông nhau (tưc là xay ra ngăt khi đang x ư lý ng ăt tr ươc đó), NVIC s ư d ung môt
phương phap gọi là “tail chain” cho phep ngăt lien ti êp được ph uc v u v ơi đ ô tr ê
nho ch i chó 6 chu kì xung nh ịp. Trong suôt giai đo an lưu trữ d ữ li êu lên vung
nhơ stack đ ê b ăt đâu thực thi chương trình phuc vu ng ăt, m ôt ngăt có m ưc ưu
tiên cao hơn ngăt hiên tai có thê c anh tranh vơi (pre-empt) ngăt hi ên tai mà
không chịu bât kì sự trì hoan nào. C âu truc ngăt cũng đi kem v ơi ch ê đ ô ti êt
kiêm năng lượng cua trong lõi Cortex-M3. CPU có th ê được câu hình tự đ ông vào
chê đô tiêt kiêm năng lượng sau khi thoat khoi ngăt. Sau đó lõi ti êp tuc ngu cho
đên khi môt exceptiong (ngăt đăc biêt) xuât hiên.
Măc du Cortex-M3 được thiêt kê là m ôt lõi chi phi th âp (low cost core),
nhưng nó vân là môt CPU 32-bit và vân hô tr ợ hai ch ê đ ô ho at đ ông: Thread và
Hander, môi chê đô có th ê đ ược câu hình vơi môi vung stack riêng bi êt c ua nó,
điêu này cho phep thiêt kê cac ph ân mêm phưc tap và h ô tr ợ cac h ê đi êu hành
thơi gian thực. Lõi Cortex có hô tr ợ m ôt timer 24-bit tự đ ông n ap l ai gia trị, nó
cũng se cung câp môt ngăt timer đêu đăn cho môt nhân RTOS (Real Time
Operating System). Cac chip ARM7 và ARM9 có hai tâp l ênh (tâp l ênh ARM 32-


Đô an hê thông nhung
bit và tâp lênh Thumb 16-bit), trong khi đó dong Cortex được thi êt kê h ô tr ợ tâp
lênh ARM Thumb-2, tâp lênh này được pha trôn giữa tâp l ênh 16 và 32-bit,
nhằm đat được hiêu suât cao cua tâp lênh ARM 32-bit vơi mât đô ma ch ương
trình tôi ưu cua tâp lênh Thumb 16-bit. Tâp lênh Thumb-2 được thi êt kê đ ăc
biêt dành cho trình biên dịch C/C++, tưc là cac ưng dung dựa trên n ên Cortex
hoàn toàn có thê đ ược viêt bằng ngôn ngữ C mà không c ân đên chương trình
khơi đông viêt bằng assembler như ARM7 và ARM9.

1.2.Môt vài đăc điêm nôi bât cua STM32
ST đa đưa ra thị tr ương 4 dong vi điêu khiên dựa trên ARM7 và ARM9,
nhưng STM32 là môt bươc tiên quan trọng trên đương cong chi phi và hi êu su ât

(price/performace), gia chi gân 1 Euro vơi sô l ượng l ơn, STM32 là s ự thach th ưc
thât sự v ơi cac vi điêu khiên 8 và 16-bit truyên thông. STM32 đâu tiên g ôm 14
biên thê khac nhau, được phân thành hai nhóm: don performance có t ân s ô ho at
đông cua CPU lên tơi 72Mhz và dong Access có tân sô ho at đ ông lên t ơi 36Mhz.
Cac biên thê STM32 trong hai nhóm này t ương thich hoat toàn vê cach b ô tri
chân (pin) và phân mêm, đông thơi kich thươc bô nh ơ Flash Rom có th ê lên t ơi
128k và 20k SRAM.

Hình 2.2. Kiên truc STM32 nhanh performance và Access


Đô an hê thông nhung
Bô xư li Cortex và đ ơn vị x ư li trung tâm Cortex se đ ược xư d ung đ ê phân
biêt giữa nhung lõi Cortex hoàn chinh và bô x ư li trung tâm RISC n ôi (internal
RISC CPU).


Đô an hê thông nhung
1.3.Kiên truc đương ông
CPU Cortex có thê th ực thi hâu hêt cac lênh trong môt chu kì đ ơn. Gi ông
như CPU cua ARM7/9, viêc thực thi này đat được vơi môt đương ông ba tâng.
Tuy nhiên Cortex-M3 kha năng d ự đoan vi êc re nhanh đ ê gi am thi êu s ô l ân làm
rông (flush) đương ông.

Hình 2.3. Kiên truc đương ông cua ARM Cortex-M3
Trong khi môt lênh đang được thực thi, thì lênh tiêp theo được gi ai ma và
lênh tiêp theo nữa se được lây vê t ư b ô nh ơ. Phương thưc hoat đ ông này se
phat huy hiêu qua t ôi đa cho ma tuyên tinh (linear code), nhưng khi g ăp ph ai
môt re nhanh (vi du như cây truc lênh if ...else) thì cac đương ông phai được làm
rông (flush) và làm đây (refill) trươc khi ma có th ê ti êp tuc th ực thi. V ơi CPU cua

ARM7/9, viêc re nhanh là rât tôn kem vê măt hi êu suât ma (code performance).
Trong CPU Cortex có đương ông ba tâng được tăng cương kha năng d ự đoan re
nhanh, có nghĩa rằng khi môt lênh re nhanh có điêu kiên xuât hiên, môt thao tac
lây lênh dựa trên suy đoan được thực hiên, do đó lênh re nhanh có điêu ki ên
săn sàng đê th ực hiên mà không cân chịu them m ôt thao tac nào. Tr ương h ợp
xâu nhât khi găp môt lênh re nhanh gian tiêp, khi đó không th ê th ực hiên lây
lênh dựa trên viêc suy đoan, do đó phai làm rông đương ông dân. Kiên truc
đương ông là chìa khóa dân đên hiêu suât tông thê c ua CPU Cortex, vì vây
không cân bât kì cân nhăc, xem xet đăc biêt nào đ ược thực hiên trong ma ưng
dung.


Đô an hê thông nhung
1.4. Mô hình lâp trình (programmer’s model)
CPU Cortex là bô xư li dựa trên kiên truc RISC, do đó h ô tr ợ ki ên truc n ap
và lưu trữ (load and store architecture). Đê th ực hi ên lênh xư li dữ li êu, cac toan
hang phai được nap vào môt tâp thanh ghi trung tâm, cac phep tinh dữ li êu phai
được thực hiên trên cac thanh ghi này và kêt qua sau đó đ ược lưu l ai trong b ô
nhơ.

Hình 2.4. Kiên truc load and store cua ARM Cortex-M3
Do vây tât ca cac ho at đông cua chương trình tâp trung xung quanh tâp
thanh ghi cua CPU. Tâp thanh ghi này bao gôm 16 thanh ghi 32-bit. Cac thanh ghi
R0-12 là cac thanh ghi đơn gian, có thê đ ược dung đ ê ch ưa cac biên cua ch ương
trình. Cac thanh ghi R13-15 có chưc năng đăc bi êt trong CPU Cortex. Thanh ghi
R13 là con tro ngăn x êp (stack pointer). Thanh ghi này đ ược chia thành nhóm
(banked), cho phep CPU Cortex có hai chê đ ô ho at đ ông, m ôi chê đ ô có không
gian ngăn xêp riêng biêt. Đăc điêm này thương được hê đi êu hành th ơi gian
thưc (Real Time Operating System) sư d ung đê có th ê ch ay ma hê th ông c ua
mình trong môt chê đ ô b ao vê. Trong CPU Cortex có hai ngăn xêp đ ược g ọi là

main stack và process stack. Thanh ghi R14 tiêp theo được g ọi là thanh ghi lien
kêt (link register). Thanh ghi này được sư d ung đê l ưu tr ữ cac đ ịa ch i tr o v ê khi
môt cuôc gọi thu tuc (call a procedure) được thực hiên. Đi êu này cho phep CPU
Cortex thực hiên râ nhanh vi êc nhâp và thoat khoi môt th u t uc (fast entry and
exit to a procedure). Nêu chương trình cua ban gọi sâu vào nhi êu l ơp ch ương
trình con, trình biên dịch se tự đ ông lưu R14 trên ngăn xêp. Thanh ghi cu ôi cung
R15 là bô đ êm chương trình (program counter), nó là môt ph ân cua tâp thanh
ghi trung tâm nó có thê được đọc và thao tac giông như bât ky thanh ghi khac.


Đô an hê thông nhung

Hình 2.5. Mô hình lâp trình cua ARM Cortex-M3
1.5.Thanh ghi xPSR
Ngoài tâp thanh ghi trung tâp con có m ôt thanh ghi riêng bi êt đ ược g ọi là
thanh ghi trang thai chương trình (program status register). Nó không ph ai là
môt phân cua tâp thanh ghi chinh và chi có th ê truy c âp thông qua hai l ênh
chuyên dung. XPSR chưa môt sô cac vung ch ưc năng quan trong anh h ương đ ên
viêc thực thi cua CPU Cortex.

Hình 2.6. Thanh ghi trang thai chương trình cua CPU Cortex
Thanh ghi xPSR cũng có thê được truy câp thông qua ba bi êt hiêu đ ăc bi êt
(special alias names) cho phep truy câp vào cac bit trong xPSR. Năm bit đ âu là
những cơ ma điêu kiên và được gan biêt hiêu (aliased) như thanh ghi trang thai
chương trình ưng dung. Bôn cơ N,Z,C,V (Negative, Zero, Cary và Overflow) se
được thiêt lâp và xóa tuy thuôc vào kêt qua c ua môt lênh xư li d ữ li êu. Bit Q là
được sư d ung bơi cac lênh toan học DPS đê ch i ra r ằng môt bi ên đa đ at gia tr ị
tôi đa hoăc gia trị t ôi thiêu cua nó. Giông như tâp lênh ARM 32-bit, cac l ênh
Thumb-2 chi đươc thực hiên nêu ma điêu kiên cua lênh phu hợp v ơi trang thai
cua cac cơ trong thanh ghi tr ang thai chương trình ưng dung (application

program status register). Nêu ma điêu kiên cua lênh không phu h ợp, thì l ênh đi
ngang qua đương ông như là môt lênh NOP (lênh này không làm gì c a). Đi êu này
đam bao rằng cac lênh đi qua đương ông môt cach tr ơn tru và gi am thi êu làm
rông đương ông. Trong CPU Cortex, ki thuât này được mơ r ông vơi thanh ghi


Đô an hê thông nhung
trang thai chương trình thực thi. Đây là môt bi êt hiêu cua bit cac bit tư 8-26 c ua
xPSR. Nó gôm ba trương: trương ‘if then”, trương “interrupt continuable
instruction” và trương lênh thumb. Lênh Thumb-2 có môt ph ương phap hi êu
qua khi thực hiên cac khôi lênh nho “if then”. Khi có m ôt ki êm tra là đung nó có
thê thi êt lâp môt gia trị trong vung IT, bao cho CPU th ực thi b ôn l ênh. N êu vi êc
kiêm tra điêu kiên sai, cac lênh này se đi qua đươ'ng ông nh ư m ôt l ênh NOP. Vì
vây, môt dong lênh C điên hình se được ma hóa như sau:

Hâu hêt cac lênh Thumb-2 thực thi trong môt chu kì đ ơn, môt s ô khac
(như lênh load và store) cân nhiêu chu kì. Vì vây, đê CPU Cortex có th ê có m ôt
thơi gian đap ưng ngăt xac định, cac lênh cân nhiêu chu kì th ưc thi ph ai đươc
ngăt. Khi môt lênh châm dưt sơm, vung ICI (interrupt continuable instruction)
trong thanh ghi xPSR se lưu lai sô cac thanh ghi ti êp theo đ ược dung trong l ênh
load hoăc store nhiêu dữ liêu cung luc. Vì vây, môt khi ng ăt đ ược ph uc v u, l ênh
load/store bị ngăt trươc đó có thê ti êp tuc được thực hiên. Trương Thumb cu ôi
cung được thưa hương tư phiên ban CPU ARM trươc đó.
1.6. Bô xư li Cortex
Bô xư li cortex-M3 được thiêt kê dựa trên kiên truc Harvad vơi bus ma và
bus dữ liêu riêng biêt. Chung được gọi là bus I-code và D-code. Ca hai đ êu có th ê
truy câp ma và dữ liêu trong pham vi bô nh ơ t ư 0x00000000-0x1fffffff. M ôt bus
hê th ông bô sung đ ược sư d ung đê truy c âp vào không gian điêu khi ên h ê
thông Cortex trong pham vi 0x20000000-0xdfffffff và 0xe0100000-0xffffffff. Hê
thông gơ l ôi trên chip cua Cortex có them m ôt câu truc bus được g ọi là bus

ngoai vi riêng.
Bus hê th ông và bus dữ li êu được kêt nôi vơi vi đi êu khi ên bên ngoài
thông qua môt tâp cac bus tôc đô cao đ ược săp xêp như môt ma trân bus. Nó


Đô an hê thông nhung
cho phep môt sô đ ương dân song song giữa bus Cortex và bus ch u khac bên
ngoài.
1.7.Timer hê thông (system timer)
Lõi cortex có môt bô đêm xuông 24-bit, vơi tinh nhăng tự đông nap l ai gia
trị b ô đ êm và tao sự ki ên ngăt khi đêm xuông zero.nó được tao ra v ơi dung ý
cung câp môt bô đ êm thơi gian chuân cho tât ca cac vi đi êu khi ên d ựa trên
cortex. Đông hô SysTick đ ược sư d ung đê cung c âp môt nh ịp đâp h ê th ông cho
môt RTOS, hoăc đê t ao ra môt ngăt có tinh chu kì đ ê ph uc vu cho cac tac v u
được lâp lịch. Bằng cach thiêt lâp bit CLKSOURCE, đông hô SysTick se ch ay ơ
tân sô đung b ằng tân sô ho at đông cua CPU. Khi bit này được xóa, SysTick se
chay ơ tân sô bằng 1/8 CPU.
Đông hô SysTick có ba thanh ghi. Gia tr ị hi ên tai và gia tr ị t ai (current
value và reload value) nên được khơi tao vơi chu kì đêm. Thanh ghi trang thai và
điêu khiên có môt bit cho phep (enable bit) đê b ăt đ âu ch ay bô đ êm th ơi gian
và môt bit TICKINT cho phep tin hiêu ngăt.
1.8.Xư li ngăt (interrupt handling)
Thơi gian đê thực hiên viêc châm dưt hay huy bo m ôt lênh đang th ực thi
khi xay ra ngăt là không xac định. Cơ câu ngăt cua ARM7/9 không hô tr ợ ng ăt
lông nhau mà cân có sự hô trợ cua phân mêm.
1.9.Bô đi êu khiên vector ngăt lông nhau (Nested Vector Interrupt
Controller)
NVIC là môt đơn vị tiêu chu ân trong lõi Cortex. Tât ca c a vi đi êu khi ên
đêu dựa trên lõi Cortex se có cung môt câu truc ngăt.
NVIC cũng được thiêt kê đê có m ôt đô trê khi đap ưng ngăt rât thâp. Đây

là môt đăc điêm cua chinh ban than bô NVIC và c ua tâp l ênh Thumb-2, nó cho
phep thực thi cac lênh nhiêu chu kì như lênh tai, lênh lưu dữ liêu.


Đô an hê thông nhung
1.10.Ngăt ngoai (EXTI)
Bô đi êu khiên ngăt ngoai có 19 ngăt và kêt nói vào bang vector ng ăt
thông qua bô NVIC. 16 ng ăt được kêt nói thông qua chân c ua công CPIO và tao
ngăt khi phat khi có xung lên (rasing) hoăc xuông (falling) hoăc c a hai. 3 ng ăt
con lai được nôi vơi “RTC alarm”, “USB wake up” và “Power voltage detect”.
NVIC cung câp ban vector ngăt riêng bi êt dành cho cac ngăt tư 0-4, ng ăt
RTC, ngăt Power detect và ngăt USB wake up. Cac ngăt ngo ai con l ai chia làm 2
nhóm 5-10 và 11-15 được cung câp them 2 bang ngăt b ô sung. Cac ng ăt ngo ai
rât qua trọng trong quan lý tiêu thu năng l ượng cua STM32. Chung có th ê đ ược
sư dung đê đanh thưc nhân vi xư li tư chê đô STOP khi ca 2 nguôn tao xung nh ịp
chinh ngưng hoat đông. EXTI có thê t ao ra cac ngăt đ ê thoat kh oi s ự khi ên wait
cua chê đô interrupt và thoat khoi sự kiên wait cua chê đô event.

Hình 2.7. Ngăt ngoai EXTI
16 ngăt ngoai có thê đ ược anh xa t ơi bât ky chân nào cua vi xư li thông
qua 4 thanh ghi câu hình điêu khiên. Môi ngăt được điêu khiên b ơi trương 4 bit,
đoan ma sau mô ta cach câu hình ngăt cho chân GPIO.


Đô an hê thông nhung

1.11. Sơ đô phân cưng cơ ban
Môt mach reset bên ngoài không cân thiêt kees c ua STM32. Tuy nhiên,
trong qua trình phat triên chân nRST có thê đ ược kêt nói v ơi m ôt nut reset đ ơn
gian, đông thơi chân nRST cũng được kêt nôi đên công JTAG, đê công c u phat

triên có thê tao ra tin hiêu reset vi điêu khiên. STM32 có môt sô cac ngu ôn reset
nôi có thê phat hiên cac điêu kiên vân hành bị lôi:


Đô an hê thông nhung
Hình 2.8. Sơ đô phân cưng mach Cortex-M3

1.12.Cac công I/O đa dụng
STM32 có 5 công I/O đa dung vơi 80 chân điêu khiên

Cac công I/O được đanh sô t ư A->E và m ưc điên ap tiêu thu ơ 5V. Nhi êu
chân ngoai có thê đ ược câu hình như là Input/Output tương tac v ơi cac thi êt b ị
ngoai vi riêng cua ngươi dung như USART hay I2C. Thêm nữa có thê câu hình cac
chân này như là nguôn ngăt ngoai kêt hợp vơi công GPIO khac
Môi công GPIO đêu có 2 thanh ghi 32-bit điêu khi ên. Như vây ta có 64-bit
đê câu hình 16 chân cua môt công GPIO. Như vây, môi chân cua c ông GPIO se có
4 bit đê đi êu khiên: 2 bit se quy định hương ra vào dữ li êu, 2 bit con l ai se quy
định đăc tinh dữ liêu.
Đê d ê dàng đ ọc và ghi dữ li êu trên công GPIO, STM32 cung câp 2 thanh
ghi Input và Output data. Kĩ thuât bit banding được h ô tr ợ nh ằm thao tac bit trên
thanh ghi dữ liêu.


Đô an hê thông nhung

II. CAM BIÊN SIÊU ÂM SRF05
SRF05 là môt bươc phat triên tư SRF04, được thiêt kê đê làm tăng tinh
linh hoat, tăng pham vi, ngoài ra con gi am b ơt chi phi. SRF05 là hoàn toàn t ương
thich vơi SRF04. Khoang cach là tăng tư 3 met đên 4 met. M ôt ch ê đ ô ho at đ ông
mơi, SRF05 cho phep sư dung môt chân duy nhât cho c a kich ho at và ph an h ôi,

do đó tiêt kiêm có gia trị trên chân điêu khiên cua ban. Khi chân ch ê đ ô không
kêt nôi, SRF05 cac hoat đông riêng biêt chân kich ho at và và chân h ôi ti êp, nh ư
SRF04. SRF05 bao gôm môt thơi gian trê trươc khi xung phan hôi đ ê mang lai
điêu khiên châm hơn chẳng han như bô điêu khiên th ơi gian cơ ban Stamps và
Picaxe đê thực hiên cac xung lênh.
Sơ đô chân cam biên:

Hinh 2.9. Sơ đô chân cam biên


Đô an hê thông nhung
2.1.Chê đô 1
Tương ưng SRF04 – tach biêt kich hoat và ph an hôi. Chê đô nay sư dung
riêng biêt chân kich hoat và chân phan hôi, và là ch ê đ ô đ ơn gi an nh ât đ ê s ư
dung. Tât ca cac chương trình điên hình cho SRF04 se làm vi êc cho SRF05 ơ ch ê
đô này. Đê sư dung chê đô này, chi cân chân chê đô không kêt nôi – SRF05 có
môt nôi dưng trên chân này. Tư đó ta nh ân thây: Đ ê cho sf05 ho at đ ông thì c ân
câp 1 xung mưc cao có đô r ông >=10us trên chân Trig. Sau khi nh ân đ ược xung
tư chân Tri thì srf05 se tao ra 8 xung đê phat siêu âm, sau khi hoàn thành vi êc
phat 8 xung này thì srf05 se keo chân echo lên m ưc 1, đ ô r ông cua m ưc 1 trên
chân echo tương ưng vơi khoan cach cua vât can vơi srf05, nêu ko có vât can thì
nó se được tra vê mưc 0 sau 30ms( ơ đây nhiêu ban hiêu sai là khi có v ât c an
thì srf05 mơi tra vê 1 xung mưc cao có đô r ông tư 100uS->30ms t ương ưng v ơi
khoang cach). Đăc biêt là srf05 chi có thê nhân xung trên chân Tri tôi đa là 20Hz,
cho nên viêc kich xung trên chân Tri phai phu hợp thì srf05 m ơi ho at đ ông chinh
xac.

Hình 2.10. SRF05 hoat đông ơ chê đô 1



Đô an hê thông nhung
2.2.Chê đô 2
Dung môt chân cho ca kick ho at và phan hôi. C hê đô này sư dung môt
chân duy nhât cho ca tin hiêu kich hoat và hôi ti êp, và được thi êt k ê đ ê l ưu cac
gia trị trên chân lên bô điêu khiên nhung. Đê sư dung chê đô này, chân ch ê đ ô
kêt nôi vào chân mat. Tin hiêu hôi tiêp se xuât hi ên trên cung m ôt chân v ơi tin
hiêu kich hoat. SRF05 se không tăng dong phan hôi cho đên 700uS sau khi k êt
thuc cac tin hiêu kich hoat. Ban đa có thơi gian đê kich ho at pin xoay quanh và
làm cho nó trơ thành môt đâu vào và đê có pulse đo ma cua b an đa s ăn sàng.
Lênh PULSIN được tìm ra và được dung phô biên hiên nay đê điêu khi ên tự
đông.

Hình 2.11. SRF05 hoat đông ơ chê đô 2
Đê sư dung chê đô 2 vơi cac Stamps BS2 cơ ban, ban chi cân sư dung
PULSOUT và PULSIN trên cung môt chân:
SRF05 PIN 15 sư dung cho ca hai và kick hoat Echo
Range VAR Word xac định pham vi biên 16 bit.
SRF05 =0 băt đâu bằng pin thâp
PULSOUT SRF05 5 đưa ra kick hoat pulse 10us
PULSIN SRF0, 1, range Echo đo thơi gian


Đô an hê thông nhung
Range = range/29 đê chuyên đôi sang cm
Tinh khoang cach :
Gian đô định thơi SRF05 thê hiên trên đây cho môi chê đô. Ban chi cân
cung câp môt đoan xung ngăn 10uS kich hoat đâu vào đê băt đ âu đo khoang
cach. Cac SRF05 se gưi cho ra môt chu ky 8 burst cua siêu âm ơ 40khz và tăng cao
dong phan hôi cua nó (hoăc kich hoat chê đô dong 2). Sau đó ch ơ ph an h ôi, và
ngay sau khi phat hiên nó giam cac dong phan hôi l ai. Dong ph an h ôi là m ôt

xung có chiêu rông là tỷ lê vơi khoang cach đên đôi tượng. Bằng cach đo xung,
ta hoàn toàn có thê đê tinh toan khoang cach ttheo inch / centimet ho ăc b ât c ư
điêu gì khac. Nêu không phat hiên gì ca SRF05 giam th âp h ơn dong ph an h ôi
cua nó sau khoang 30ms. SRF04 cung cap môt xung phan h ôi tỷ lê v ơi khoang
cach. Nêu đô rông cua pulse được đo trong hê uS, sau đó chia cho 58 se cho
khoang cach theo cm, hoăc chia cho 148 se cho khoang cach theo inch. Us/58=
cm hay us/148= inch.
SRF05 có thê được kich hoat nhanh chóng vơi mọi 50mS, hoăc 20 lân m ôi
giây. Ban nên chơ 50ms trươc khi kich hoat kê tiêp, ngay ca khi SRF05 phat hi ên
môt đôi tượng gân và xung phan hôi ngăn hơn. Điêu này là đê đam bao cac siêu
âm “beep” đa phai mơ và se không gây ra sai phan hôi ơ lân đo kê ti êp.
III. Môt sô linh kiên khac
3.1. IC câu H (L293D)
L293D là IC câu H điêu khiên đông cơ
L293D gôm 4 kênh điêu khiên có thê điêu khiên 2 đông cơ DC hoăc 1
đông cơ bươc 4 pha (5 dây). Đê điêu khiên đông cơ DC, ban se sư dung 2 kênh
cua L293D cho 1 đông cơ.
L293D đa được tich hợp săn đi ôt bao vê vi điêu khi ên ch ông l ai dong
cam ưng khi đông cơ khơi đông hoăc tăt. Vì vây, ban chi cân găn motor vào
L293D và cac chân cua vi điêu khi ên tương ưng, là có th ê làm cho đ ông c ơ ch ay
ngay. Dong L293 có 2 loai: L293B/E và L293D, dong L293B có kh a năng ch ịu t ai


Đô an hê thông nhung
cao hơn (1A so vơi 600mA cua L293D) nhưng không có đi ôt bao v ê vi đi êu
khiên.
Vơi môi motor, ban cân 3 chân tư vi điêu khiên kêt nôi vơi L293D, trong
đó có 1 chân điêu khiên tôc đô đông cơ dung xung PWM, 2 chân con l ai là logic 0
hoăc 1 dung điêu chinh chiêu quay cua motor.
Tin hiêu điêu khiên được xư lý đôc lâp vơi nhau vơi tưng đâu ra. Vi du:

ban có thê điêu khiên 2 đông cơ DC chay vơi tôc đô khac nhau, hương khac
nhau, 1 đông cơ dưng con 1 đông cơ chay...
Môi kênh cua L293D chịu được tai 600mA và dong đinh là 1A.
Đê sư dung cac đông cơ công suât cao hơn, ban chi vi êc găn song song 2
hoăc nhiêu L293 lai vơi nhau. Vơi 2 IC L293, ban se có tai ch ịu được là 1.2A và
tai đinh là 2A.
Ngoài ra, L293D có chưc năng tự đông ngăt khi bị nóng qua mưc nhằm
bao vê IC.
Lưu ý: tuyêt đôi không bao giơ làm châp mach cac ngõ ra motor c ua
L293D, nêu không ban se làm chay môt bên câu H ngay lâp tưc.

Hình 2.12. Sơ đô chân L293D


×