LỜI NÓI ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta
đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện
tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nỏi bật như sự chính xác cao, tốc
độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người
đạt hiệu quả cao.
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành được lại là
một điều rất phức tạp. Các bộ vi điều khiển theo thời gian cùng với sự phát triển của công
nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4 bit đơn giản đến các bộ vi
điều khiển 32 bít, rồi sau này là 64 bit. Điện tử đang trở thành một ngành khoa học đa
nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi không ngừng từ các lĩnh vực công nông - lâm - ngư nghiệp cho đến các nhu cầu trong hoạt động đời sống hàng ngày.
Một trong những ứng dụng thiết thực trong đó là ứng dụng về đo và hiển thị tốc độ
động cơ. Đây là một ứng dụng rất phổ biến được áp dụng trong nhiều lĩnh vực và dây
chuyền sản xuất. Với bài tập lớn lần này chúng em được giao về việc hiển thị tốc độ động
cơ lên led 7. Từ đó chúng ta có thể giám sát được tốc độ động cơ rồi có các quyết định
điều khiển phù hợp với yêu cầu. Cụ thể trong bào tập này, chúng em sẽ ghép nối vi điều
khiển 89C51RD2 với 4 led 7 thanh để hiển thị tốc độ động cơ, sử dụng encoder có
100(xung/vòng). Chúng em trình bày nội dung cụ thể của bài tập lớn như sau. Kính mong
cô xem và cho nhận xét để đánh giá bài tập lớn được đầy đủ hơn.
Chúng em xin chân thành cảm ơn!
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
CHƯƠNG 2. Giới thiệu tổng quan về họ vi điều khiển 8051:
AT89C51 là một vi điều khiển 8 bít, chế tạo theo công nghệ CMOS chất lượng cao,
công suất thấp với 4 KB PEROM (Flash Programeable and erasable read only memory)
Các đặc điểm của 8951 được tóm tắt như sau:
- 4KB bộ nhớ, có thể lập trình lại nhanh, có khả anwng ghi xóa tới 1000 chu kỳ
- Tần số hoạt động từ 0Hz đến 24 MHz
- 3 mức khóa bộ nhớ lập trình
- 2 bộ Timer/Counter 16 bít
- 128 byte RAM nội
- 4 PORT xuất/nhập(I/O) 8 Bít
- Giao tiếp nối tiếp
- 64 KB vùng nhớ mã hóa
- 64 KB vùng nhớ dũ liệu ngoài
- Xử lý Boolean (hoạt động trên bit đơn)
- 210 vị trí nhớ có thể vị bit
- 4 ms cho hoạt động nhân hoặc chia
2.1.1. Cấu trúc vi điều khiển AT89C51
Hình 1. Cấu trúc bên trong của AT89C51
2
Bài tập lớn Vi xử lý
Nhóm 17
Hình 2. Sơ dồ chân AT89C51
2.1.2. chức năng các chân của AT89C51
- Port 0(P0.0-P0.7 Hay chân 32-39): Ngoài chức năng xuất nhập ra, port còn là bus đa
hợp dữ liệu và địa chỉ (AD0-AD7). Chức năng này sẽ được sử dụng khi AT89C51 giao
tiếp với thiết bị ngoài có cấu trúc bus.
3
Bài tập lớn Vi xử lý
Nhóm 17
Hình 3. Port P0
- Port 1(P1.0-P1.7 hay chân 1-8): có chức năng nhập xuất theo bit và byte. Ngoài ra, 3
chân P1.5, P1.6, P1.7 được dung để nạp ROM theo chuẩn ISP, 2 chân P1.0 và P1.1
được dùng cho bộ timer 2.0
Hình 4. Port P1
- Port 2(P2.0-P2.7 hay chân 21-28): là một port có công dụng kép. Là đường xuất nhập
hoặc là byte cao của bus địa chỉ đối với các thiết kế dung bộ nhớ mở rộng.
4
Bài tập lớn Vi xử lý
Nhóm 17
Hình 5. Port 2
- Port 3(P3.0-P3.7 Hay chân 10-17): mỗi chân trên port 3 ngoài chức năng xuất nhập ra
còn có 1 số chức năng đặc biệt được ghi trong bảng sau:
Bít
Tên
Chức năng chuyển đổi
P3.0
RXD
Dữ liệu nhận cho port nốối têốp
P3.1
TXD
Dữ liệu truyêền cho port nốối têốp
P3.2
INT0
Dữ liệu truyêền cho port nốối têốp
P3.3
INT1
Ngăốt bên ngoài 0
P3.4
T0
Ngăốt bên ngoài 1
P3.5
T1
Ngõ vào của Timer/Counter 0
P3.6
WR
Xung ghi bộ nhớ dữ liệu ngoài
P3.7
RD
Xung đọc bộ nhớ dữ kiệu ngoài
Bảng 1.Chức năng các chân port 3
5
Bài tập lớn Vi xử lý
Nhóm 17
Hình 6. Port 3
- RST (Reset- 9 chân): mức tích cực của chân này là mức 1, để reset ta phải đưa
mức 1(5v) đến chân này với thời gian tối thiểu 2 chu kỳ máy ( tương đương 2ms đối
với thạch anh 12MHz)
- XTAL 1, XTAL 2: AT89S52 có một bộ giao động trên chip, nó thường được nối
với một bộ dao động thạch anh có tần số lướn nhất 33MHz, thông thường là 12MHz.
+EA (Address Access): EA thường được mắc lên mức cao(+5V) hoặc mức thấp
Hình 7. Bộ dao động ngoài
(GND). Nếu ở mức cao, bộ vi điều khiển thì thành chương trình từ ROM nội. Nếu ở mức
thấp, chương trình chỉ dduwwocj thi hành từ bộ nhớ mở rộng.
6
Bài tập lớn Vi xử lý
Nhóm 17
CHƯƠNG 3. Giới thiệu tổng quan về encoder
Encoder mục đích dùng để quản lý vị trí góc của một đĩa quay, đĩa quay có thể là bánh
xe, trục động cơ, hoặc bất kỳ thiết bị quay nào cần xác định vị trí góc.
Encoder được chia làm 2 loại, absolute Encoder và incremental Encoder tuyệt đối và
Encoder tương đối. Chữ Encoder tuyệt đối dịch theo nguyên văn, nhưng vì tiếng Việt
mình cái gì cũng có 2 loại, thì loại còn lại được dịch ngược lại với loại kia. Cho nên dịch
là Encoder tương đối cho incremental Encoder.
Nếu dịch sát nghĩa, khi ta đọc absolute Encoder, có nghĩa là Encoder tuyệt đối, tức là
tín hiệu ta nhân được, chỉ rõ rang vị trí của Encoder, chúng ta không cần xử lý gì them,
cũng biết chính xác vị trí của Encoder. Còn incremental Encoder, là loại Encoder chỉ có
1, 2, hoặc tối đa là 3 vòng lỗ. các bạn hình dung thế này, nếu bây giờ các bạn có nhiều lỗ
hơn, các bạn sẽ có được thông tin chi tiết hơn, có nghĩa là đĩa quay ¼ vòng, 1/8 vòng,
hoặc 1/n vòng, tùy theo số lỗ nằm trên incremental Encoder. Cứ mỗi lần đi qua một lỗ,
chúng ta phải lập trình để thiết bị đo đếm lên 1. Do vậy Encoder loại này có tên
incremental Encoder (Encoder tăng lên 1 đơn vị).
Hình 8. Incremental Encoder
7
Bài tập lớn Vi xử lý
Nhóm 17
3.1.1. Nguyên lý hoạt động cơ bản của Encoder:
Nguyên lý cơ bản của Encoder, đó là một đĩa tròn xoay, quay quanh trục. Trên đĩa có
các lỗ (rãnh). Người ta dùng một đèn led để chiếu lên mặt đĩa. Khi đĩa quay, chỗ không
có lỗ (rãnh), đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ xuyên qua.
Khi đó, phía mặt bên kia của đĩa, người ra đặt một con mắt thu. Với các tín hiệu có, hoặc
không có ánh sang chiếu qua, người ta ghi nhận được đèn led có chiếu qua lỗ hay không.
KHi trục quay, giả sử trên dĩa chỉ có một lỗ duy nhất, cứ mỗi lần con mắt thu nhận được
tín hiệu đèn led, thì có nghãi là đĩa đã quay được một vòng. Đây là nguyên lý rất cơ bản
của Encoder.
Tuy nhiên, những vấn đề được đặt ra là làm sao để xác định chính xác hơn vị trí của
đĩa quay ( mịn hơn) và làm thế nào để xác định được đĩa đang quay theo chiều nào? Đó
chính là vấn đề để chúng ta tìm hiểu về Encoder. Hình sau sẽ minh họa nguyên lý cơ bản
của hoạt động Encoder.
Hình 9. Nguyên lý hoạt động của Encoder led
Các bạn thấy trong hình, có một đĩa mask, không quay, đó là đĩa cố định, thực ra là để
che khe hẹp ánh sang đi qua, giúp việc đọc Encoder được chính xác hơn mà thôi. Chúng
ta không đề cập đến đĩa mặt nạ này ở đây.
8
Bài tập lớn Vi xử lý
Nhóm 17
3.1.2. Hoạt động của Encoder (Invremetal Encoder)
Ta thấy rằng, cứ mỗi lần quay qua một lỗ, thì Encoder sẽ tăng một đơn vị trong biến
đếm.
Tuy nhiên, một vấn đề là làm sao để biết được Encoder quay hết một vòng? Nếu cứ
đếm vô hạn nhưu thế này, thì chúng ta không thể biết được khi nào nó quay hết một vòng.
Nếu bây giờ các bạn đếm số lỗ Encoder để biết nó đã quay một vòng, thì nếu với Encoder
1000 lỗ chắc chắn các bạn sẽ đếm đến sang luôn. Chưa kể mỗi lần có những rung động
nào đó mà ta khong quản lý được, Encoder sẽ bị sai một xung. Khi đó, nếu hoạt động lâu
dài, sai số này sẽ tích lũy, ngày hôm nay sai một xung, ngày hôm say sai một xung. Đến
cuối cùng, có thể động cơ quay 2 vòng rồi các bạn mới đếm được 1 vòng.
Để tránh điều tai hại này xảy ra người ta đưa them một lỗ định vị để đếm số vòng đã
quay của Encoder.
Như vậy, cho dù có lệch xung, mà chúng ta thấy rằng Encoder đi ngang qua lỗ định vị
này, thì chúng ta sẽ biết là Encoder đã bị đếm sai ở đâu đó. Nếu vì một rung động nàx`o
đó, mà chúng ta không thấy
Encoder đi qua lỗ định vị, vậy thì xung từ số xung, và việc đi qua lỗ định vị, chúng ta
sẽ biết rõ hiện tượng sai của Encoder.
Hình 10. Encoder có lỗ định vị
9
Bài tập lớn Vi xử lý
Nhóm 17
Thêm vào đó, một vấn đề lớn nữa là, làm sao chúng ta biết Encoder đang xoay theo
chiều nào? Bởi vì cho dù xoay theo chiều nào, thì tín hiệu Encoder cũng chỉ là các xung
lẻ và xoay theo hai chiều đều giống nhau.
Chính vì vậy, người ta đặt them một lỗ ở giữa vòng lỗ thứ 1 và lỗ định vị như hình sau:
Chú ý tằng, vị trí góc của các lỗ vòng 1 và các lỗ vòng 2 lệch nhau. Các cạnh của lỗ
vòng 2 nằm ngày giữa các lỗ vòng 1 và ngược lại.
Chúng ta sẽ khảo sát tiếp vấn đề Encoder trong phần tín hiệu xung để hiểu rõ hơn về
Encoder. Tuy nhiên, các bạn sẽ thấy một điều rằng, thay vì làm 2 vòng Encoder, và dùng
2 đèn LED đặt thẳng hang, thì người ta chỉ cần làm 1 vòng lỗ, và đặt 2 đèn LED lệch
nhau.
Kết quả, các bạn sẽ thường thấy các Encoder có dạng như hình bên dưới:
Hình 11. Encoder thông dụng hiện nay
10
Bài tập lớn Vi xử lý
Nhóm 17
CHƯƠNG 4. Giới thiệu về một số linh kiện khác
CHƯƠNG 5. Led 7 thanh
5.1.1.1 Tổng quát
Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình trên và them một
led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.
8 led đơn trên led 7 đoạn có Anode(cực+)
Hình 12. Led
hoặc
7 thanh
Cathode(cực -) được nối chung với
nhau vào một điểm ,được đưa chân ra ngoài để kết nối với mạch điện. 8 cực còn lại trên
mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch
điện.Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với các + Vcc,các
chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn,led chỉ sáng khi tín
hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung
này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạn thái
sáng tắt của các led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1.
Hình 13. Cấu tạo Led 7 thanh Anode chung và cathode chung
11
Bài tập lớn Vi xử lý
Nhóm 17
Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo dòng qua
mỗi led đơn trong khoảng 10mA – 20mA để bảo vệ led.Nếu kết nối với nguồn 5V có thể
hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều khiển.
Các điện trở 330Ω là các điện trở bên ngoài được kết nối để giới hạn dòng điện qua led
nếu led 7 đoạn được nối với nguồn 5V.Chân nhận tín hiệu a điều khiển led a sáng tắt, ngõ
vào b để điều khiển led b.Tương tự với các chân và các led còn lại.
b. Kết nối với Vi điều khiển
Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng 1 Port
nào đó của Vi điều khiển để điều khiển led 7 đoạn.Như vậy led 7 đoạn nhận một dữ liệu 8
bit từ Vi điều khiển để điều khiển hoạt động sáng tắt của từng led đơn trong nó,dữ liệu
được xuất ra điều khiển led 7 đoạn được gọi là “mã hiển thị led 7 đoạn”. Có hai kiểu mã
hiển thị led 7 đoạn: mã dành cho led 7 đoạn có Anode (cực +) chung và mã dành cho led
7 đoạn có Cathode(cực -) chung. Chẳng hạn, để hiển thị sô 1 cần làm cho các led ở vị trí
b và c sáng, nếu sử dụng led 7 đoạn có Anode chung thì phải đặt vào hai chân b và c điện
áp là 0V(mức 0) các chân còn lại được đặt điện áp là 5V(mức 1), nếu sử dụng led 7 đoạn
có Cathode chung thì điện áp(hay mức logic) hoàn toàn ngược lại, tức là phải đặt vào
chân b và c điện áp là 5V( mức 1).
Bảng mã hiển thị led 7 đoạn :
Phần cứng được kết nối với 1 Port bất kì cả Vi điều khiển, để thuận tiện cho việc
xử lý về sau phần cứng nên được kết nối như sau : Px.0 nối với chân a, Px.1 nối với
chân b, lần lượt theo thứ tự cho đến Px.7 nối với chân h.
Dữ liệu xuất có dạng nhị phân như sau : hgfedcba
12
Bài tập lớn Vi xử lý
Nhóm 17
Ký tự hiển thị
Mã nhị phân
Mã hexa
Hgfedcba
0
11000000
C0
1
11111001
F9
2
10100100
A4
3
10110000
B0
4
10010010
99
5
11000010
92
6
11000010
82
7
11111000
F8
8
10000000
80
9
10010000
90
A
10001000
88
B
10000011
83
C
11000110
C6
D
10100001
A1
E
10000110
86
F
10001110
8E
-
10111111
BF
Bảng 2. Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Anode chung
(các led đơn sáng ở mức 0)
Ký tự hiển thị
Mã nhị phân
Mã hexa
Hgfedcba
0
00111111
3F
1
00000110
06
2
01011011
5B
3
01001111
4F
4
01100110
66
5
01101101
6D
6
00111101
7D
7
00000111
07
8
01111111
7F
9
01101111
6F
13
Bài tập lớn Vi xử lý
Nhóm 17
A
01110111
77
B
01111100
7C
C
00111001
39
D
01011110
5E
E
01111001
79
F
01110001
71
-
01000000
40
Bảng 3. Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Cathode chung
(các led đơn sáng ở mức 1)
5.1.2. Tụ điện.
Tụ điện là một linh kiện thụ động cấu tạo của tụ điện là hai bản cực bằng kim loại ghép
cách nhau một khoảng d ở giữa hai bản tụ là dung dịch hay chất điện môi cách điện có
điện dung C. Đặc điểm của tụ là cho dòng điện xoay chiều đi qua, ngăn cản dòng điện
một chiều.
Khi tụ nạp điện thì tụ sẽ bắt đầu
nạp
điện
tăng dần đến điện áp UDC theo
Hình
14.điện
Mộttừsố
loạiáptụ0V
điện
hàn số mũ đối với thời gian t. Điện áp tức thời trên hai đầu tụ được tính theo công thức:
UC(t) = UDC(1-
e
−t
τ
)
Khi tụ xả điện thì điện áp trên tụ từ trị số VCD sẽ giảm dần đến 0V theo hàm số mũ
đốivới thời gian t. Điện áp trên hai đầu tụ khi xả được tính theo công thức:
14
Bài tập lớn Vi xử lý
Nhóm 17
UC(t)=UDC.
e
−t
τ
Trong đó :
t : thời gian tụ nạp,đơn vị là giây (s).
e = 2,71828
τ
= RC (đơn vị là –s)
Công thức tính điện dung của tụ :
C=ε.S/d
ε : là hằng số điện môi
s : là điện tích bề mặt tụ m2
d : là bề dày chất điện môi
5.1.3. Điện trở
Điện trở là linh kiện thụ động có tác dụng cản trở cả dòng và áp.Điện trở được sử dụng
rất nhiều trong các mạch điện từ.
Hình 15. Một số lại điện trở
Điện trở của dây dẫn có trị số điện trở lớn hay nhỏ tùy thuộc vào vật liệu làm dây, tỷ lệ
thuân với chiều dài và tỷ lệ nghịch với tiết diện dây dẫn .Công thức tính:
15
Bài tập lớn Vi xử lý
Nhóm 17
R=ρl/S hoặc R = U/I
Trong đó:
ρ : là điện trở suất của vật liệu , Ωm hay Ωm
S : là tiết diện của dây,
m
2
hay m
m
m
2
/m
2
l: là chiều dài của dây (m)
R: điện trở,Ohm(Ω)
5.1.4. Thạch anh dao động.
Thạch anh dao động có nhiệm vụ tạo ra các xung điều khiển thích hợp phục vụ cho vi
điều khiển, ở đây chúng ta sử dụng thạch anh dạo động loại 12MHZ.
Hình 16. Hình dạng thực của thạch anh dao động
5.1.5. Điện trở treo
Các điện trở treo được thay thế bằng điện trở thanh 9 chân, sử dụng điện trở thanh giúp
việc thiết kế mạch đơn giản hơn điện trở thanh 9 chân thực chất là 8 điện trở cùng giá trị
với mỗi đầu của điện trở được nối với nhay và đầu chung này được đưa ra ngoài bằng
một chân nữa. Khi nhìn trên điện trở thanh, phía nào có dấu chấm tròn thì ngoài cùng của
phía đó là chân chung.Thông thường chân chung này được nối với ngồn Vcc.
16
Bài tập lớn Vi xử lý
Nhóm 17
Hình 17. Hình ảnh thực tế của điện trở treo
Điện trở treo có nhiệm vụ tạo điện áp ở từng mức theo yêu cầu theo giá trị đặt tại các
chân của nó.
17
Bài tập lớn Vi xử lý
Nhóm 17
CHƯƠNG 6. THIẾT KẾ HỆ THỐNG
CHƯƠNG 7. Tính toán lựa chọn thiết bị
- Hệ thống gồm có vi điều khiển 89C51RD2, mạch truyền thông chuẩn RS_232(vi
mạch MAX232), 4 led 7 thanh, cảmbiến đo tốc độ động cơ, loa cảnh báo ngưỡng cao,
thấp, nút ấn RUN and STOP.
- Dùng transistor NPN phục vụ cho quá trình quét led
- Dùng 1 chiết áp để thay đổi điện áp cấp nguồn cho động cơ để thay đổi tốc độ của
động cơ.
CHƯƠNG 8. Xây dựng mạch nguyên lý
Theo yêu cầu của bài toán là hiển thị số đo tốc độ động cơ dùng encoder lên led 7 thanh
nên ta có thể sử dụng mạch nguyên lý như hình dưới.
Hình 18. Sơ đồ nguyên lý
Thuyết minh hoạt động của mạch:
18
Bài tập lớn Vi xử lý
Nhóm 17
Sau khi cấp nguồn mạch và động cơ, ấn RUN động cơ bắt đầu chạy và vi điều khiển
thực hiện đo tốc độ động cơ và hiển thị lên mà hình 4 led 7 thanh. Cứ 1s vi điều khiển sẽ
cập nhật tốc độ động cơ 1 lần. Chu trình kết thúc khi ấn nút STOP, hệ thống sẽ lưu lại giá
trị cuối cùng đo được.
CHƯƠNG 9. Xây dựng thuật toán
Đếm xung (dùng ngắt ngoài
0)
Ngắt Timer 1
Tăng count
Đếm 1s
Hiển thị tốc độ
RETI
RETI
19
Bài tập lớn Vi xử lý
Nhóm 17
Main
Sai
Run=0
Hiển thị
Đúng
-Timer 1: chế độ 16bit (1s đo lại tốc
L4 = số hàng nghìn, trễ 0.1ms
độ 1 lần)
-Khởi động các ngắt ngoài, timer
L3 = số hàng trăm, trễ 0.1ms
L2 = số hàng chục, trễ 0.1ms
Đo tốc độ
f = 3*count/5
L1 = số hàng đơn vị, trễ 0.1ms
RETI
Hiển thị
Sai
f>2400 hoặc f<100
Đúng
Loa báo động
Đúng
Stop=0
Sai
End
20
Bài tập lớn Vi xử lý
Nhóm 17
- Xem thêm -