Báo cáo bài tập lớn vi xử lý Đề tài: điều khiển tốc độ động cơ điện một chiều Thực hiện: nhóm 8 lớp ĐT4 – K50 - ĐHBKHN 1- Nguyễn Hoài Nghĩa 2- Vũ Văn Huỳnh 3 - Trần Quang Hiến 4 - Nguyễn Văn Hợp Mục lục Lời mở đầu 1- Mục đích 2- Giới thiệu qua về bộ vi điều khiển AT89C51 3- Nội dung thực hiện a. Sơ đồ thuật toán. b. Sơ đồ nguyên lý và các linh kiện sử dụng. c. Bản vẽ layout. d. Mã nguồn cho chương trình. 4 - Kết quả . 5 - Ứng dụng cho robot dò đường khi mạch có thêm bộ sensor. 6 - Kết luận 7 - Tài liệu tham khảo
1
Lời mở đầu . Hiện nay, chúng ta đang là những sinh viên năm thứ 3 khoa điện tử viễn thông trường Đại Học Bách Khoa Hà Nội, chỉ còn 2 năm nữa là bạn ra trường vậy bạn đã trang bị cho mình được những gì rồi. Năm nay chúng ta đã được đi thực tập xưởng để làm quen với các thiết bị điện tử, trọng hơn cả là chúng ta học môn vi xử lý và chúng ta được giao làm một bài tập lớn theo nhóm. Bài tập này có ý nghĩa rất lớn với chúng ta, nó giúp ta tự mình làm ra những mạch ứng dụng, tuy đơn giản nhưng nó giúp ta biết cách làm việc theo nhóm và tự tìm hiểu nhiều hơn về các loại vi điều khiển, vi xử lý mà sẽ gắn liền với các bạn trong tương lai sau này. Ở bài tập lớn này nhóm chúng tôi dùng bộ vi điều khiển AT89C51 để điều khiển tốc độ động cơ điện một chiều. Do mới chập chững những bước đi đầu tiên nên bài tập của nhóm không thể tránh khỏi những sai xót. Mong nhận được sự chỉ dẫn của giáo viên và các bạn để chúng tôi rút kinh nghiệm trong những bài sau. Nhóm thực hiện.
2
1.
Mục đích :
Bài tập của chúng tôi thiết kế và chế tạo một mạch để điều khiển tốc độ của động cơ điện một chiều.Cụ thể hơn, mạch này điều chỉnh tốc độ của động cơ điện một chiều để nó có thể làm việc ở 4 chế độ là chạy theo chiều thuận với 100% tốc độ, chạy theo chiều thuận với 50% tốc độ, chạy theo chiều ngược với 100% tốc độ, chạy theo chiều ngược với 50% tốc độ.Ta điều chỉnh tốc độ của mạch bằng 4 nút bấm có ở trên mạch. Mạch này có thể được ứng dụng để chế tạo các robot dò đường khi ta thiết kế thêm các cặp led phát và thu để dò đường, kết hợp với lắp thêm các khối sensor, khi đó tốc độ động cơ được điều chỉnh phụ thuộc vào khối lắp thêm này. Đồng thời khi đó, ta có thể thông qua việc điều chỉnh tốc độ và chiều của động cơ để điều khiển robot chạy theo những hành trình xác định. 2. Giới thiệu qua về bộ vi điều khiển AT89C51: AT89C51 lµ mét bé vi xö lý 8 bit, lo¹i CMOS, cã tèc ®é cao vµ c«ng suÊt thÊp víi bé nhí Flash cã thÓ lËp tr×nh ®îc. Nã ®îc s¶n xuÊt víi c«ng nghÖ bé nhí kh«ng bay h¬i mËt ®é cao cña h·ng Atmel, vµ t¬ng thÝch víi hä MCS-51TM vÒ ch©n ra vµ tËp lÖnh.
3
S¬ ®å khèi cña AT89C51 AT89C51 cã c¸c ®Æc trng c¬ b¶n nh sau: 4 K byte Flash, 128 byte RAM, 32 ®êng xuÊt nhËp, hai bé ®Þnh thêi/®Õm 16-bit, mét cÊu tróc ng¾t hai møc u tiªn vµ 5 nguyªn nh©n ng¾t, mét port nèi tiÕp song c«ng, m¹ch dao ®éng vµ t¹o xung clock trªn chip. AT89C51 ®îc thiÕt kÕ víi logic tÜnh cho ho¹t ®éng cã tÇn sè gi¶m xuèng 0 vaø hç trî hai chÕ ®é tiÕt kiÖm n¨ng lîng ®îc lùa chän b»ng phÇn mÒm. ChÕ ®é nghØ dõng CPU trong khi vÉn cho phÐp RAM, c¸c bé ®Þnh thêi/®Õm, port nèi tiÕp vµ hÖ thèng ng¾t tiÕp tôc ho¹t ®éng. ChÕ ®é nguån gi¶m duy tr× néi dung cña RAM nhng 4
kh«ng cho m¹ch dao ®éng cung cÊp xung clock nh»m v« hiÖu ho¸ c¸c ho¹t ®éng kh¸c cña chip cho ®Õn khi cã reset cøng tiÕp theo.
2.1 M« t¶ c¸c ch©n :
C¸c cÊu h×nh ch©n ra cña AT89C51 Nh vËy AT89C51 cã tÊt c¶ 40 ch©n víi c¸c chøc n¨ng nh sau: - Vcc (40) Ch©n cung cÊp ®iÖn (5V) - GND (20) Ch©n nèi ®Êt (0V) - Port 0 (32-39) Port 0 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 0 cßn ®îc cÊu h×nh lµm bus ®Þa chØ (byte thÊp) vµ bus d÷ liÖu ®a 5
hîp trong khi truy xuÊt bé nhí d÷ liÖu ngoµi vµ bé nhí ch¬ng tr×nh ngoµi. Port 0 còng nhËn c¸c byte m· trong khi lËp tr×nh cho Flash vµ xuÊt c¸c byte m· trong khi kiÓm tra ch¬ng tr×nh (C¸c ®iÖn trë kÐo lªn bªn ngoµi ®îc cÇn ®Õn trong khi kiÓm tra ch¬ng tr×nh). - Port 1(1-8) Port 1 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 1 còng nhËn byte ®Þa chØ thÊp trong thêi gian lËp tr×nh cho Flash. - Port 2 (21-28) Port 2 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 2 t¹o ra c¸c byte cao cña bus ®Þa chØ trong thêi gian t×m n¹p lÖnh tõ bé nhí ch¬ng tr×nh ngoµi vµ trong thêi gian truy xuÊt bé nhí d÷ liÖu ngoµi sö dông c¸c ®Þa chØ 16-bit. Trong thêi gian truy xuÊt bé nhí d÷ liÖu ngoµi sö dông c¸c ®Þa chØ 8-bit, Port 2 ph¸t c¸c néi dung cña thanh ghi chøc n¨ng ®Æc biÖt P2. Port 2 còng nhËn c¸c bÝt ®Þa chØ cao vµ vµi tÝn hiÖu ®iÒu khiÓn trong thêi gian lËp tr×nh cho Flash vµ kiÓm tra ch¬ng tr×nh. - Port 3 (10-17) Port 3 lµ Port xuÊt nhËp 8-bit hai chiÒu. Port 3 còng cßn lµm c¸c chøc n¨ng kh¸c cña AT89C51. C¸c chøc n¨ng nµy ®îc liÖt kª nh sau: C h©n P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
Tªn RxD TxD INT0 INT1
T0 T1 WR RD
Chøc n¨ng Ngâ vµo Port nèi tiÕp Ngâ ra Port nèi tiÕp Ngâ vµo ng¾t ngoµi 0 Ngâ vµo ng¾t ngoµi 1 Ngâ vµo bªn ngoµi cña bé ®Þnh thêi 1 Ngâ vµo bªn ngoµi cña bé ®Þnh thêi 0 §iÒu khiÓn ghi bé nhí d÷ liÖu ngoµi §iÒu khiÓn ®äc bé nhí d÷ liÖu ngoµi
Port 3 còng nhËn mét vµi tÝn hiÖu ®iÒu khiÓn cho viÖc lËp tr×nh Flash vµ kiÓm tra ch¬ng tr×nh. - RST (9) Ngâ vµo reset. Møc cao trªn ch©n nµy trong 2 chu kú 6
m¸y trong khi bé dao ®éng ®ang hoat ®éng sÏ reset AT89C51. RST
M¹ch reset t¸c ®éng b»ng tay vµ tù ®éng reset khi khëi ®éng m¸y - ALE/ PROG (30) ALE laø moät xung ngoõ ra ñeå choát byte thaáp cuûa ñòa chæ trong khi truy xuaát boä nhôù ngoaøi. Chaân naøy cuõng laøm ngoõ vaøo xung laäp trình ( PROG ) trong thôøi gian laäp trình cho Flash. Khi hoaït ñoäng bình thöôøng, xung ngoõ ra ALE lu«n coù taàn soáä khoâng ñoåi laø 1/6 taàn soá cuûa maïch dao ñoäng, coù theå ñöôïc duøng cho caùc muïch ñích ñònh thôøi töø beân ngoaøi vµ taïo xung clock. Tuy nhieân, löu yù laø moät xung ALE seõ bò boû qua trong moãi moät chu kyø truy xuaát boä nhôù döõ lieäu ngoaøi. Khi caàn, hoaït ñoäng ALE coù theå ñöôïc voâ hieäu hoaù baèng caùch set bit 0 cuûa thanh ghi chöùc naêng ñaëc bieät coù ñòa chæ 8Eh. Khi bit naøy ñöôïc set, ALE chæ tích cöïc trong thôøi gan thöïc hieän leänh MOVX hoaëc MOVC. Ngöôïc laïi, chaân naøy seõ ñöôïc keùo leân cao. Vieäc set bit khoâng cho pheùp hoaït ñoäng choát byte thaáp cuûa ñòa chæ seõ khoâng coù taùc duïng neáu boä vi ñieàu khieån ñang ôû cheá ñoä thöïc thi chöông trình ngoaøi. - PSEN (29) PSEN (Program Store Enable) laø xung ñieàu khieån truy xuaát boä nhôù chöông trình ngoaøi. Khi AT89C52 ñang thöïc thi chöông trình töø boä nhôù chöông trình ngoaøi, PSENñöôïc kích hoaït hai laàn moãi chu kyø maùy, nhöng hai hoaït ñoäng PSEN seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi. - EA /Vpp (31)
7
EA (External Access Enable) laø chaân cho pheùp truy xuaát boä nhôù
chöông trình ngoaøi (baét ñaàu töø ñòa chæ töø 0000H ñeán FFFFH).
EA = 0 cho pheùp truy xuaát boä nhôù chöông trình ngoaøi, ngîc l¹i EA =1 seõ thöïc thi chöông trình beân trong
chip
Tuy nhieân, löu yù raèng neáu bit khoaù 1 (lock-bit 1) ñöôïc laäp trình, EA seõ ñöôïc choát beân trong khi reset. Chaân naøy cuõng nhaän ñieän aùp cho pheùp laäp trình Vpp=12V khi laäp trình Flash (khi ñoù ®iÖn aùp laäp trình 12V ñöôïc choïn). - XTAL1 và XTAL2 XTAL1 vaø XTAL2 laø hai ngoõ vaøo vaø ra cuûa moät boä khueách ñaïi ñaûo cuûa maïch dao ñoäng, ñöôïc caáu hình ñeå duøng nhö moät boä dao ñoäng treân chip.
Khoâng coù yeâu caàu naøo veà chu kyø nhieäm vuï cuûa tín hieäu xung clock beân ngoaøi do tín hieäu naøy phaûi qua moät flip-flop chia hai tröôùc khi ñeán maïch taïo xung clock beân trong, tuy nhieân caùc chi tieát kyõ thuaät veà thôøi gian möùc thaáp vaø möùc cao, ñieän aùp cöïc tieåu vaø cöïc ñaïi caàn phaûi ñöôïc xem xeùt.
2.2 C¸c chÕ ®é ®Æc biÖt : 2.2.1 ChÕ ®é nghỉ : Trong cheá ñoä nghæ, CPU töï ñi vaøo traïng thaùi nguû trong khi taát caû caùc ngoaïi vi beân trong chip vaãn tích cöïc. Cheá ñoä naøy ñöôïc ñieàu khieån bôûi phaàn meàm. Noäi dung cuûa RAM treân chip vaø cuûa taát caû caùc thanh ghi chöùc naêng ñaëc bieät vaãn khoâng ñoåi trong khi thôøi gian toàn taïi cheá ñoä naøy. Cheá ñoä nghæ coù 8
theå ñöôïc keát thuùc bôûi moät ngaét baát kyø naøo ñöôïc pheùp hoaëc baèng caùch reset cöùng. Ta caàn löu yù raèng khi cheá ñoä nghæ ñöôïc keát thuùc bôûi moät reset cöùng, chip vi ñieàu khieån seõ tieáp tuïc bình thöôøng vieäc thöïc thi chöông trình töø nôi chöông trình bò taïm döøng, trong voøng 2 chu kyø maùy tröôùc khi giaûi thuaät reset meàm naüm quyeàn ñieàu khieån. ÔÛ cheá ñoä nghæ, phaàn cöùng treân chip caãm truy xuaát RAM noäi nhöng cho pheùp truy xuaát caùc chaân cuûa caùc port. Ñeå traùnh khaû naêng coù moät thao taùc ghi khoâng mong muoán ñeán moät chaân port khi cheá ñoä nghæ keát thuùc baèng reset, leänh tieáp theo yeâu caàu cheá ñoä nghæ khoâng neân laø leänh ghi ñeán chaân port hoaëc ñeán boä nhôù ngoaøi.
2.2.2 ChÕ ®é nguån gi¶m : Trong cheá ñoä naøy, maïch dao ñoäng ngöøng hoaït ñoäng vaø leänh yeâu caàu cheá ñoä nguoàn giaûm laø leänh sau cuøng ñöôïc thöïc thi. RAM treân chip vaø caùc thanh ghi chöùc naêng ñaëc bieät vaãn duy trì caùc giaù trò cuûa chuùng cho ñeán khi cheá ñoä nguoàn giaûm keát thuùc. Chæ coù moät caùch ra khoûi cheá ñoä nguoàn giaûm, ñoù laø reset cöùng. Vieäc reset seõ xaùc ñònh laïi caùc thanh ghi chöùc naêng ñaëc bieät nhöng khoâng laøm thay ñoåi RAM treân chip. Vieäc reset khoâng neân xaûy ra (chaân reset ôû möùc tích cöïc) tröôùc khi Vcc ñöôïc khoâi phuïc laïi möùc ñieän aùp bình thöôøng vaø phaûi keùo daøi traïng thaùi tích cöïc cuûa chaân reset ñuû laâu ñeå cho pheùp maïch dao ñoäng hoaït ñoäng trôû laïi vaø ñaït traïng thaùi oån ñònh. Traïng thaùi cuûa caùc chaân trong thôøi gian toàn taïi cheá ñoä nghæ va cheá ñoä nguoàn giaûm ñöôïc cho trong baûng sau: C heá ñoä
Boä nhôù
A LE
PS EN
P P ORT O ORT 1
9
P ORT 2
PORT 3
Chöông trình N ghæ
Beân trong
1
1
Döõ lieäu
Döõ lieäu
Döõ lieäu
Döõ lieäu
N ghæ
Beân ngoaøi
1
1
Thaû noåi
Döõ lieäu
Döõ lieäu
Döõ lieäu
N guoà n
Beân trong
0
0
Döõ lieäu
Döõ lieäu
Döõ lieäu
Döõ lieäu
Beân ngoaøi
0
0
Thaû noåi
Döõ lieäu
Döõ lieäu
Döõ lieäu
giaû m
2.3 C¸c bÝt kho¸ bé nhí ch¬ng tr×nh : Treân chip coù ba bit khoaù, caùc bít naøy coù theå khoâng cho pheùp laäp trình hoaëc cho pheùp laäp trình, caùc bit naøy cho ta theâm moät soá ñaëc tröng nöõa cuûa AT89C51 nhö sau. Khi bit khoaù 1 LB1 ñöôïc laäp trình, möùc logic ôû chaân EA ñöôïc laáy maãu vaø ñöôïc choát trong khi reset. Neáu vieäc caáp nguoàn cho chip khoâng coù coâng duïng reset, maïch choát ñöôïc khôûi ñoäng baèng moät giaù trò ngaãu nhieân vaø giaù trò naøy ñöôïc duy trì cho ñeán khi coù taùc ñoäng reset. Ñieàu caàn thieát laø giaù trò ñöôïc choát cuûa EA phaûi phuø hôïp vôi möùc logic hieän haønh ôû chaân naøy. Caùc bit khoùa chöông trình C heá ñoä 1
LB 1
LB
LB3
U
U
Loaïi baûo veä
2 U
Khoâng coù ñaëc tröng khoùa chöông trình
10
2
P
U
U
Caùc leänh MOVC ñöôïc thöïc thi töø boä nhôù chöông trình ngoaøi khoâng ñöôïc pheùp tìm naïp leänh töø boä nhôù noäi, EA ñöôïc laáy maãu vaø ñöôïc choát khi reset, hôn nöõa vieäc laäp trình treân Flash bò caám
3
P
P
U
Nhö cheá ñoä 2, caám theâm vieäc kieåm tra chöông trình
4
P
P
P
Nhö cheá ñoä 3, caám theâm vieäc thöïc thi chöông trình ngoaøi
3. Nội dung thực hiện : a. Sơ đồ thuật toán : * Nguyên tắc băm xung (điều chỉnh tốc độ động cơ).
Giả sử ta muốn băm xung với tần số f=5 kHz, tương ứng với chu kì T=0.2 ms. (Trong thực tế, ta thường lấy giá trị của f: 2-5 kHz). Ta sử dụng TIMEMO để tạo ngắt trong vòng 0.2 μs. Khi đó thời gian được chia làm các đoạn có độ dài chừng 0.2 ms. Trong 1 chu kỳ như vậy, ta lại tiếp tục chia làm 10 phần với các trạng thái khác nhau. Quy ước: Bit 0 - chạy động cơ. Bit 1 - dừng động cơ.
Trong 10 phần đã chia, giả sử có 5 trạng thái ở bit 0 và 5 trạng thái ở bit 1. Khi ra xung ra có dạng :
11
Và điện áp xuất ra trung bình bằng ½ điện áp max.
Ta thu được tốc độ động cơ : 5/10 . Tương tự như vậy, khi tỉ lệ các trạng thái 0 và 1 của tín hiệu đưa ra từ chân vi điều khiển khác nhau, ta sẽ có điện áp trung bình xuất ra cung cấp cho động cơ là khác nhau và do đó động cơ sẽ hoạt động với các vận tốc khác nhau. * Sơ đồ thuật toán :
b. Sơ đồ nguyên lý và các linh kiện sử dụng : *. Các khối sử dụng trong mạch: nguôn dông co D 6 nguon D I O DJ E1 3 1 C 7 2 C AP N P C O N 2 dat
Nguồn động cơ để cung cấp nguồn 12v cho. động cơ. bao
hiêu D 1
R 3 v R
LE D
Đèn led báo hiệu có điện áp 5v.
12
nguon nuoi opto nguon J18 1 C 18
o p to
3 C A P N 2P
dat
7812
C 19 CAP NP
nguôn nuôi vi J2 1 3 2
C 9
v 7805
C 1 C AP N P D 7 C AP N P D IO D E
g C 2 C A SP W N 2 P
S W P U S H B U TTO N
J1 2 1 C O N 2
Nguồn cung cấp điện áp 5v cho vi điều khiển.
13
SW 3 p 1 .0
1
2 SW 4 S W K E Y -Y M 0 6 1 2 SW 5
p 1 .1
1
p 1 .2
1
S W K E2 Y - Y M 0 6 1 SW 6
p 1 .3
1
S W K E2 Y - Y M 0 6 1
nút bâm
g
S W K E Y -Y M 0 6 1
Nút bấm để chọn chế độ chương trình.
J22 1 2 3 4 5 6 7 8 9 10 11 v H EAD ER 11
D D D D D DL DL DL L L R 36
1 1 2 2 2 E2 E2 E2 E E
8 9 0 1 2 D3 5D 4D D D
DL E2 76D LED
R 37 R E S IS T O R R E S IS T O R
v p p p p p p p p
2 2 2 2 2 2 2 2
.0 .1 .2 .3 .4 .5 .6 .7
J19 p 3 .0 p 3 .1 p 3 .2 p 3 .3 p 3 .4 p 3 .5 p 3 .6 p 3 .7
p 0 .7 p 0 .6
1 2 3 4 5 6 7 8
16 15 14 13 12 11 10 9
g
LED
C O N 16A
LED
Giàn header nối ra ngoài nhằm để kết nối.
14
p 2 .5 p 2 .6 p 2 .7 p 0 .7 p 0 .6 D 10 v
J4
R1 1
R5 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
J3 H E A D E R 10X2
R2 2 3 4 5 6 7 8 9 10
R6
D IO D E
1 2 3 4 5 6 7 8 9 10
20 19 18 17 16 15 14 13 12 11
a1
R9
a2
R 10
a3
R 14
a4
R
a5
R
R E S IS T O R S IP 1 0
1
20 19 18 17 16 15 14 13 12 11
o p to
D9
o p to R 13 R 12
D IO D E
a6
R 11
a7
R 23
a8
R 24
a9
R
a10
R
R E S IS T O R S IP 1 0 H E A D E R 10X2 p 2 .4 p 2 .3 p 2 .2
khoi opto
p 2 .1 p 2 .0
Đây là khối cách ly chính của mạch có tác dụng cách ly khối nguồn điều khiển của mạch và khối công suất. Ở đây sử dụng con P521 để cách ly.
15
3 2 1 C ON 3
dat
J7
dat
J5
R 31 R E S IS TO R nguon 3
a2
LS1 4
1 8
4
3
o p to
1 2
5 7
1 8
D 4
J11
2
6
C ON 2
R ELAY D PD T
D 2
nguon
a6
1 2
5 7
LS3
C ON 3
J9
2
6 o p to
R 33 R E S IS T O R
3 2 1
C ON 2
R ELAY D PD T
D IO D E
Q3 2N 1069
dat
D IO D E
Q1 2N 1069
dat
a5
a1
J6
R 32 R E S IS TO R
dat 3 2 1
o p to
LS2
C ON 3
nguon
3 6 1 8
D 3
D IO D E
1 2
5 7
R 34 R E S IS TO R
3 2 1
J10
2
a4
dat
J8 4
C ON 3
C ON 2
LS4 a8
nguon
o p to
J12
2
6
R ELAY D PD T D 5
Q2 2N 1069
4
3
1 2
5 7
1 8
C ON 2
R ELAY D PD T
dat D IO D E
Q4 2N 1069
dat
a3 a7
J16
dat 3 2 1
R 35 R E S IS TO R LS5
C ON 3 o p to
nguon
a10
3 6 1 8
D 11 D IO D E
Q5 2N 1069
4
J17
2
1 2
5 7
C ON 2
R ELAY D PD T
dat
khôi khuêch dai
a9
Đây là khối khuếch đại gồm 5 bộ động cơ.
16
c h a n v i1 c h a n v i2 c h a n v i3 c h a n v i4 c h a n v i5 VCC
c h a n v i6
v
9
P 1 .1 P 1 .2 P 1 .3 P 1 .4 P 1 .5 P 1 .6 P 1 .7 XTA L1 XTA L2 RST AT89C 51
C AP N P
P 2 .7 /A 1 5 P 2 .6 /A 1 4 P 2 .5 /A 1 3 P 2 .4 /A 1 2 P 2 .3 /A 1 1 P 2 .2 /A 1 0 P 2 .1 /A 9 P 2 .0 /A 8
A L E /P R O G
Y1 C R Y S TA L
p 0 .6 p 0 .7
2 3 4 5 6 7 8 9 10
1 R E S IS T O R S IP 1 0
PSEN
2 3 4 5 6 7 8 19 18
P 3 .0 /R X D P 1 .0
0 .0 /A D 0 0 .1 /A D 1 0 .2 /A D 2 0 .3 /A D 3 0 .4 /A D 4 0 .5 /A D 5 0 .6 /A D 6 0 .7 /A D 7 E A /V P P
39 38 37 36 35 34 33 32 31
28 27 26 25 24 23 22 21
p 2 .7 p 2 .6 p 2 .5 p 2 .4 p 2 .3 p 2 .2 p 2 .1 p 2 .0
30
p 1 .3 p 1 .0 p 1 .1 p 1 .4 p 1 .5 p 1 .6 p 1 .7
VCC
10 1
GND
p 3 .0 p 1 .2
P P P P P P P P
P 3 .7 /R D P 3 .6 /W R P 3 .5 /T 1 P 3 .4 /T 0 P 3 .3 /IN T 1 P 3 .2 /IN T 0 P 3 .1 /T XD
29
C AP N P C4
17 16 15 14 13 12 11
20
C3
p 3 .7 p 3 .6 p 3 .5 p 3 .4 p 3 .3 p 3 .2 p 3 .1
R 29 40
U1
g v SW 1
R 15
C5 CAP NP
S W P U S H B U T T OR N
R4 R g
khoi vi dieu khiên Đây là khối vi điều khiển AT89C51.
17
*. Các linh kiện sử dụng trong mạch: - Dùng L7812CV cho khối nguồn nuôi opto. - Dùng L7805CV cho khối nguồn nuôi vi. - Dùng P521 cho khối opto. - Dùng bộ so sánh LM339N cho khối sensor. - Dùng 2 transistor là IRF540N và C1815 cho khối khuếch đại - Dùng vi điều khiển AT89C51. - Ngoài ra còn có các đèn led, các diot, các tụ điện và các điện trở. c. Bản vẽ layout:
Top.
18
Bottom.
d. Mã nguồn cho chương trình: INCLUDE 89C51.MC ORG 0H JMP MAIN ORG 30H MAIN: VTOC EQU 30H DEM EQU 31H DEMTIMER EQU 32H DC BIT P2.0 ROLE BIT P2.1 CONGTAC1 BIT P1.0 CONGTAC2 BIT P1.3 CONGTAC3 BIT P1.1 CONGTAC4 BIT P1.2 19
;**************************************** ; DC ROLE CHEDO ; 0 0 TIEN ; 0 1 LUI ; 1 X DUNG ;**************************************** MOV TMOD,#00000010B MOV TL0,#0FAH MOV TH0,#0FAH ;************ TIMER********************** SETB ROLE SETB DC SETB CONGTAC1 SETB CONGTAC2 SETB CONGTAC3 SETB CONGTAC4 MOV A,#0 MOV VTOC,#0
; KHI RESET VANTOC=0 DE DONG CO DUNG
RUN: JNB CONGTAC1,TIEN100 JNB CONGTAC2,TIEN50 JNB CONGTAC4,LUI50 JNB CONGTAC3,LUI100 RUNNING: LCALL VANTOC ; GOI DE DUY TRI VAN TOC CHO DC
JMP RUN TIEN100: MOV VTOC,#20 ; VAN TOC TOI DA LA 20/20 SETB ROLE ; CHAY TIEN JMP RUNNING TIEN50: MOV VTOC,#10 SETB ROLE JMP RUNNING
20
LUI100: MOV VTOC,#20 CLR ROLE JMP RUNNING LUI50: MOV VTOC,#10 CLR ROLE JMP RUNNING VANTOC: MOV A,DEMTIMER CJNE A,#20,LAI ; NHAY NEU A KHAC 20; A LA SO DEM TIMER NEU A > 20 ---. A = 0 MOV DEMTIMER,#0 RET LAI: ; VTOC DONG CO TRAI CJNE A,VTOC,HERE1 ; SO SANH A VOI VTOC NEU A < VTOC --- > C = 1 ELSE C = 0 HERE1: JC HERE2 ; C = 1 NHAY DEN BACK VA DONG SETB DC; KHI C BANG 0 JMP label HERE2: CLR C CLR DC LABEL: SETB TR0 ; KHOI DONG TIMER TIMER: JNB TF0,TIMER CLR TR0 CLR TF0 INC DEMTIMER JMP VANTOC END
4.Kết quả thực hiện : Sau lắp động cơ vào mạch nhóm đã test và thấy mạch hoạt động khá ổn định. Mạch đã thực hiện được những yêu cầu cần thiết là thay đổi tốc độ động cơ điện một chiều thông qua 4 nút bấm trên mạch. Ta có thể để động cơ hoạt động ở 1 trong 4 chế độ.
21
5. Ứng dụng cho robot dò đường khi mạch có thêm bộ sensor: INCLUDE 89C51.MC ORG 0H JMP MAIN ORG 30H MAIN: VTRAI EQU 2FH VPHAI EQU 2EH DEM EQU 2CH ;****************************** TRAINGOAI BIT P0.0 ; VAO VACH TRANG BIT = 1 TRAIGIUA BIT P0.1 ; NGOAI VACH BIT = 0 TRAITRONG BIT P0.2 PHAITRONG BIT P0.3 PHAIGIUA BIT P0.4 PHAINGOAI BIT P0.5 ; *********************************** DCTRAI BIT P2.0 ROLETRAI BIT P2.1 DCPHAI BIT P2.6 ROLEPHAI BIT P2.7 CONGTAC BIT P1.0 ;**************************************** ; DC ROLE CHEDO ; 0 0 TIEN ; 0 1 LUI ; 1 X DUNG ;**************************************** MOV TMOD,#00000010B ; KHOI DONG TIMER 0 CHE DO TU NAP MOV TL0,#0F8H MOV TH0,#0F8H ;************ TIMER********************** SETB P2.1 SETB P2.7 ;*************** SETB DCTRAI SETB DCPHAI SETB CONGTAC SETB COT 22
MOV A,#0 MOV DEMTIMER,#0 ;*************************************** STOP: JNB CONGTAC ,START CONGTAC=0->START JMP STOP START: CALL PWM JMP START
;KIEM TRA CONGTAC ; KHICTAC AN :
;********************************PWM***************************** PWM: CALL TESTLED ; XAC DINH VAN TOC CHO 2 BANH CALL VANTOC ; DUY TRI TY LE VAN TOC TUONG UNG RET
;****************KIEM TRA CAC LED DUA RA VAN TOC CHO 2 BANH************** ; TESTLED ; KIEM TRA CAC BONG ; THU TU CAC BONG X X X X X X ;TUONG UNG TNG TG TTR PTR PG PNG ; TRAINGOAI TNG ;TRAIGIUA TG ;TRAITRONG TTR ;PHAITRONG PTR ;PHAIGIUA PG ;PHAINGOAI PNG ; MUC DICH: ; XAC DINH VI TRI CAC BONG DE GAN GIA TRI VAN TOC CHO TUNG BANH ; VOI TUNG DOI DONG CO MA TA CHON GIA TRI VANTOC CHO PHU HOP ;******************************************************************** **** TESTLED: JB TRAITRONG ,LABEL1 ; LABEL1 VAN TOC 2 MOTO BANG NHAU JB PHAITRONG ,LABEL1 JMP TH1
23
TH1: JB TRAIGIUA, LABEL2 ; LB2 PHAI NHANH HON TRAI 1 JMP TH2 TH2: JB PHAIGIUA ,LABEL3 ; LB3 TRAI NHANH HON PHAI 1 JMP TH3 TH3: JB TRAINGOAI,LABEL4 ; LB4 PHAI NHANH HON TRAI2 JMP TH4 TH4: JB PHAINGOAI,LABEL5 ; LB5 TRAI NHANH HON PHAI 2 JMP LABEL6 ; CHAY TU TU LABEL1: MOV VTRAI,#20 ; VAN TOC BANH TRAI(15/20) MOV VPHAI,#20 ; VAN TOC BANH PHAI()15/20 RET LABEL2: MOV VPHAI,#20 MOV VTRAI,#16 RET LABEL3: MOV VPHAI,#16 MOV VTRAI,#20 RET LABEL4: MOV VPHAI,#20 MOV VTRAI,#0 RET LABEL5: MOV VPHAI,#0 MOV VTRAI,#20 RET LABEL6: MOV VPHAI,#10 MOV VTRAI,#10 RET ;****************DUY TRI TI LE UNG TUONG UNG CHO 2 BANH********************* ;VANTOC: ;DUY TRI XUNG CHO 2 BANH THEO TY LE XUNG MA PHAN TEST LED DUA RA ;MOI 1 CHU KI GOM 20X T(TIMER) ;********************************************************************* ******* VANTOC: MOV A,DEMTIMER
24
CJNE A,#20,LAI ; NHAY NEU A KHAC 20; A LA SO DEM TIMER NEU A > 20 ---. A = 0 MOV DEMTIMER,#0 RET LAI: ; VTOC DONG CO TRAI CJNE A,VTRAI,HERE1 ; SO SANH A VOI VTRAI NEU A < VTRAI --- > C = 1 ELSE C = 0 HERE1: JC HERE2 ; C = 1 NHAY DEN BACK VA DONG SETB DCTRAI; KHI C BANG 0 JMP LAI2 HERE2: CLR C CLR DCTRAI JMP LAI2 LAI2: ; VTOC DONG VO PHAI CJNE A,VPHAI,HERE3 HERE3: JC HERE4 SETB DCPHAI JMP LABEL HERE4: CLR C CLR DCPHAI LABEL: SETB TR0 ; KHOI DONG TIMER TIMER: JNB TF0,TIMER CLR TR0 CLR TF0 INC DEMTIMER JMP VANTOC END
6. Kết luận: Sau khi hoàn thành mạch này , tôi nhận thấy mình và các thành viên trong nhóm đã biết thêm nhiều điều về vi điều khiển và các thiết bị điện tử. Tôi thấy để làm được một mạch điện chạy chính xác và ổn định là một điều thật không hề đơn giản. Mặc dù đã có sơ đồ nguyên lý nhưng việc thiết kế mạch, làm mạch in, hàn linh kiện… đòi hỏi các thành viên trong nhóm phải 25
làm việc hết sức nghiêm túc và cẩn thận, chỉ cần có một sai sót nhỏ là có thể dẫn đến những hậu quả khá nghiêm trọng.Từ đó các thành viên cũng học được cách làm việc theo nhóm, biết kết hợp, bổ xung, hỗ trợ nhau trong việc hoàn thành công việc cần đạt được.Tuy đã có cố gắng song không thể đạt được mọi thứ như ý muốn, có điều gì sai sót mong được sự chỉ dạy của thầy cô và các bạn để nhóm chúng tôi rút kinh nghiệm trong những lần sau. Tôi thấy việc làm những bài tập lớn như thế này rất có ích cho sinh viên chúng ta vì vậy tôi mong rằng những kỳ sau sẽ có những bài tập lớn hay hơn nữa để sinh viên chúng ta học tập và rèn luyện trước khi chúng ta ra trường.
7. Tài liệu tham khảo: - Cấu trúc và lập trình họ vi điều khiển 8051, tác giả : Nguyễn Tăng Cường và Phan Quốc, NXB khoa học và kỹ thuật. - Thiết kế hệ thống với họ 8051, tác giả : Tống Văn On, NXB Phương đông. - http://www.dientuvietnam.net - http://www.dientuvienthong.net - http://www.hutonline.net - http://google.com.vn
26