Ứng dụng họ vi điều khiển 8051 ghép nối 4 led 7 thanh dể hiển thị số đo tốc độ động cơ dùng encoder có 100(xung/vòng). Khoảng đo(0-2500)v/p. - Pdf 96

BÀI TẬP LỚN VI ĐIỀU KHIỂN
Bộ Công Thương
Trường ĐHCN Hà Nội
Cộng hòa xã hội chủ nghĩa Việt Nam
Độc Lập – Tự do – Hạnh phúc
BÀI TẬP LỚN
MÔN:VXL VÀ VĐK
Họ và tên HS-SV : Nhóm 8
1.Nguyễn Văn Tài Mã SV: 0541240070
2. Đỗ Văn Quang Mã SV: 0541240075
3. Nguyễn Văn Hải Mã SV: 0541240016
4. Nguyễn Huy Hiệp Mã SV: 0541240033
5.Phạm Đình Quynh Mã SV: 0541240062
6. Mầu Tiến Huân Mã SV: 0541240030
7.Dư Mạnh Huy Mã SV: 05412400
Lớp : ĐH TĐH1
Khoá: 5 Khoa : Điện
Giáo viên hướng dẫn

Phạm Văn Hùng
BÀI TẬP LỚN VI ĐIỀU KHIỂN

Đề bài:
Ứng dụng họ vi điều khiển 8051 ghép nối 4 led 7 thanh dể hiển thị số đo tốc độ
động cơ dùng encoder có 100(xung/vòng). Khoảng đo(0-2500)v/p.
BÀI TẬP LỚN VI ĐIỀU KHIỂN
Mục lục
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ớicủ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

biệt là lĩnh vực tin học và tự động hoá.
Năm 1971, hãng Intel đã cho ra đời bộ vi xử lý( microprocessor ) đầu tiên
trên thế giới tên gọi là Intel – 4004/4 bit, nhằm đáp ứng nhu cầu cấp thiết của
một công ty kinh doanh là hãng truyền thông BUSICOM. Intel-4004 là kết quả
của một ý tưởng quan trọng trong kĩ thuật vi xử lý số. Đó là một kết cấu logic
mà có thể thay đổi được chức năng của nó bằng chương trình ngoài chứ không
phát triển theo hướng tạo ra một cấu trúc cứng chỉ thực hiện một số chức năng
nhất định như trước đây. Sau đó, các bộ vi xử lý mới liên tục được đưa ra thị
trường ngày càng được phát triển, hoàn thiện hơn trong các thế hệ về sau.
Vào năm 1972, hãng Intel đưa ra bộ vi xử lý 8 bit đầu tiên với tên Intel
8008/8 bit. Từ năm 1974 – 1975, Intel chế tạo các bộ vi xử lý 8-bit 8080 và
8085A. Cũng vào khoảng thời gian này, một loạt các hãng khác trên thế giới
cũng đã cho ra đời các bộ vi xử lý tương tự như : 6800 của Motorola với 5000
Tranzitor, signetics 6520, 1801 của RCA, kế đến là 6502 của hãng MOS
Technology và Z80 của hãng Zilog.
1.2.Các bộ vi điều khiển
1.2.1. Các bộ vi điều khiển và các bộ xử lý nhúng.
Trong mục này chúng ta bàn về nhu cầu đối với các bộ vi điều khiển
(VĐK ) và so sánh chúng với các bộ vi xử lý cùng dạng chung Pentium và các
bộ vi xử lý 86 khác. Chúng ta cùng xem xét vai trò của các bộ vi điều khiển
trong thị trường các sản phẩm nhúng. Ngoài ra, chúng ta còn cung cấp một số
tiêu chuẩn vể cách lựa chọn một bộ vi điều khiển như thế nào.
1.2.2.Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung
Sự khác nhau giữa một bộ vi điều khiển và một bộ vi xử lý là gì? Bộ xử lýở đây
là cá bộ vi xử lý công dụng chung như họ Intel là 86(8086, 80286, 80386,
BÀI TẬP LỚN VI ĐIỀU KHIỂN
80486 và Pentium) hoặc họ Motorola là 680 là ( 68000, 68010, 68020, 68030,
68040 vv ) Những bộ vi xử lý này không có RAM, ROM và không có các
cổng vào ra trên chíp.Với lý do đó mà chúng được gọi chung là các bộ vi xử lý
công dụng chung.

Họ vi điều khiển 8051(còn gọi là C51) là một trong những họ vi điều
khiển thông dụng nhất. Bộ vi điều khiển này có 128 byte RAM,4K byte
ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều
rộng 8 bit) vào ratất cả được đặt trên một chíp. Lúc ấy nó được
coi là một “hệ thống trên chíp”. 8051 là một bộ xử lý 8 bit có nghĩa là
CPU chỉ có thể làm việc với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn
hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4
cổng vào-ra I/O mỗi cổng rộng 8bit. Mặc dù 8051 có thể có một ROM
trên chíp cực đại là 64 K byte,nhưng các nhà sản xuất lúc đó đã
cho xuất xưởng chỉ với 4K byte ROM trên chíp 8051 đã trở nên phổ
biến sau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ
dạng biến thể nào của 8051 mà họ thích với điều kiện họ phải để mã
lại tương thích với 8051.Điều này dẫn đến sự ra đời nhiều phiên bản
của 8051 với các tốc độ khác nhau và dung lượng ROM trên chíp
khác nhau được bán bởi hơn nửa các nhà sản xuất. Điềunày quan trọng
là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lương
nhớ ROM trên chíp, nhưng tất cả chúng đều tương thích với 8051 ban đầu về
các lệnh. Điều này có nghĩa là nếu ta viết chương trình của mình cho
một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà
không phân biệt nó từ hãng sản xuất nào.
2.2.Sơ đồ cấu trúc chung của họ 8051
• Interrupt control : Điều khiển ngắt.
• Other registers : Các thanh ghi khác.
• ROM : là loại bộ nhớ không mất dữ liệu khi mất nguồn cung cấp, được gọi là
nhớ chương trình bên trong .
• RAM : là bộ nhớ dữ liệu bên trong có dung lượng 128Byte dùng để lưu trữ dữ
liệu như biến số, hằng số, bộ đệm truyền thông.
• Timer 2, 1 , 0 : Bộ định thời 2 , 1 , 0
• CPU : Đơn vị điều khiển trung tâm.
• Oscillator : Mạch dao động.

8051 có 4 cổng vào ra song song có tên lần lượt là P0, P1, P2, P3 tất cả
các cổng này đều là cổng ra vào 2 chiều 8 bit. Các bít của mỗi cổng là một chân
trên chíp như vậy mỗi cổng sẽ có 8 chân trên chíp. Hướng dữ liệu dùng cổng đó
làm cổng ra hay cổng vào là độc lập giữa các cổng và giữa các chân trong cùng
1 cổng.
Các chân P0 không có điện trở treo cao (pullup resistor) bên trong, mạch
lái tạo mức cao chi có khi sử dụng cổng này với tính năng là bus dồn kênh địa
chỉ/ dữ liệu. Như vậy với chức năng ra thông thường, P0 là cổng ra open drain,
với chức năng vào, P0 là cổng cao trở. Nếu muốn sử dụng cổng P0 làm cổng
vào /ra thông dụng thì ta phải thêm trở tử 4K7 đến 10K. Các cổng P1, P2, P3
đều có điện trở pullup bên trong, do đó có thể dùng với chức năng cổng vào/ra
thông thường mà không cần thêm điện trở bên ngoài.
• Cổng truyền thông nối tiếp ( Serial Port) :
Cổng nối tiếp trong 8051 chủ yếu được dùng trong các ứng dụng có yêu
cầu truyền thông với máy tính, hoặc với 1 vi điều khiển khác. Liên quan đến
cổng nối tiếp chủ yếu có 2 thanh ghi : SCON và SBUF. Ngoài ra, một thanh ghi
khác là thanh ghi PCON (không đánh địa chỉ bít) có bít 7 tên là SMOD quy
định tốc độ truyền của cổng nối tiếp có gấp đôi lên (SMOD=1) hay không
(SMOD=0).
Cổng có đặc điểm :
- Truyền song công : có nghĩa là tại một thời điểm có thể vừa truyền vừa nhận dữ
liệu.
- Phương thức truyền không đồng bộ: là dữ liệu được truyền đi theo từng kí tự.
- Bộ đệm truyền nhận dữ liệu đều có tên là SBUF
- SCON là thanh ghi bit được dùng để lập trình việc đóng khung dữ liệu, xác định
chế độ làm việc của cổng truyền thông nối tiếp.
Bảng dưới đây mô tả chi tiết các bit khác nhau của thanh ghi SCON :
Bit Tên Địa chỉ Chức năng
7 SM0 9FH Xác định chế độ cổng nối tiếp (bit 0)
6 SM1 9EH Xác định chế độ cổng nối tiếp (bit 1)

hai thiết bị đầu cuối (DTE, Data Terminal Equipment).mặc dù tính năng hạn chế
nhưng chuẩn RS232 có từ lâu đời nhất vì thế nên nó được sử dụng rộng rãi.
Ngày nay mỗi máy tính cá nhân có vài cổng RS232( cổng com) có thể sử dụng
nối các thiết bị ngoại vi hoặc với các máy tính khác.
3.1.1.Ưu điểm của giao diện nối tiếp RS232
+ Khả năng chống nhiễu của các cổng nối tiếp cao
+ Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
+ Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối
tiếp
3.1.2.Những đặc điểm cần lưu ý trong chuẩn RS232
+ Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +-15V. Hiện nay đang được cố
định trở kháng tải trong phạm vi từ-7000Ω- 3000Ω
+ Mức logic 1 có điện áp nằm trong khoảng -3V đến -15V, mức logic 0
từ -3V đến 15V
+ Tốc độ truyền nhận dữ liệu cực đại là 100kbps ( ngày nay có thể lớn hơn)
+ Các lối vào phải có điện dung nhỏ hơn 2500pF
+ Trở kháng tải phải lớn hơn 3000 ôm nhưng phải nhỏ hơn 7000 ôm
+ Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng
nối tiếp RS232 không vượt qua 15m nếu chúng ta không sử model
+ Các giá trị tốc độ truyền dữ liệu chuẩn :
50,75,110,750,300,600,1200,2400,4800,9600,19200,28800,38400 56600,1
15200 bps
3.2.Quá trình dữ liệu
3.2.1.Quátrình truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ.
Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền
gửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được
gửi đến trong lần truyền bit tiếp the . Bit này luôn bắt đầu bằng mức 0 Tiếp
theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII( có thể là
BÀI TẬP LỚN VI ĐIỀU KHIỂN

hợp không mắc lỗi vì thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa
lỗi này không được sử dụng trong trường hợp có khả năng một vài bit bị mắc
lỗi.
3.3.IC MAX232
Max232 là IC chuyên dùng cho giao tiếp giữa RS232 và thiết bị ngoại vi.
Max232 là IC của hãng Maxim. Đây là IC chay ổn định và được sử dụng phổ
biến trong các mạch giao tiếp chuẩn RS232. Giá thành của Max232 phù hợp
(12K hay 10K) và tích hợp trong đó hai kênh truyền cho chuẩn RS232. Dòng
BÀI TẬP LỚN VI ĐIỀU KHIỂN
tín hiệu được thiết kế cho chuẩn RS232 . Mỗi đầu truyền ra và cổng nhận tín
hiệu đều được bảo vệ chống lại sự phóng tĩnh điện ( hình như là 15KV). Ngoài
ra Max232 còn được thiết kế với nguồn +5V cung cấp nguồn công suất nhỏ.
Chương IV:ECONDER VÀ LED BẢY THANH
4.1.econder
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.
Tạm dịch là encoder tuyệt đối và encoder tương đối. 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õ ràng vị trí của encoder, chúng ta không cần xử lý gì
thêm, 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 một lỗ
trên một cái đĩa quay, thì cứ mỗi lần đĩa quay 1 vòng, các bạn sẽ nhận
được tín hiệu, và các bạn đã biết đĩa quay một vòng. 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 1/4 vong, 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

vòng.
Quay lại bài toán cơ bản về bit và số bit, chúng ta xem xét vấn đề theo
một cách hoàn toàn toán học nhé:
Với một số nhị phân có 2 chữ số, chúng ta sẽ có 00, 01, 10, 11, tức là 4
trạng thái. Điều đó có nghĩa là với 2 chữ số, chúng ta có thể chia đĩa
encoder thành 4 phần bằng nhau. Và khi quay, chúng ta sẽ xác định
được độ chính xác đến 1/4 vòng.
Tương tự như vậy, nếu với một số có n chữ số, chúng ta sẽ xác định
được độ chính xác đến 1/(2^n) vòng.
Thế làm sao để xác định 2^n trạng thái này của đĩa encoder?
Các bạn xem hình sau:
BÀI TẬP LỚN VI ĐIỀU KHIỂN
Ở đây, tôi đưa ra ví dụ với đĩa encoder có 2 vòng đĩa. Các bạn sẽ thấy
rằng, ở vòng trong cùng, có một rãnh rộng bằng 1/2 đĩa. Vòng phía
ngoài, sẽ có 2 rãnh nằm đối diện nhau.
Như vậy, chúng ta cần 2 đèn led để phát xuyên qua 2 vòng lỗ, và 2 đèn
thu.
Giả sử ở vòng lỗ thứ nhất (trong cùng), đèn đọc đang nằm ở vị trí có lỗ
hở, thì tín hiệu nhận được từ con mắt thu sẽ là 1. Và ở vòng lỗ thứ hai,
thì chúng ta đang ở vị trí không có lỗ, như vậy con mắt thu vòng 2 sẽ
đọc được giá trị 0.
Và như vậy, với số 10, chúng ta xác định được encoder đang nằm ở góc
phần tư nào, cũng có nghĩa là chúng ta quản lý được độ chính xác của
đĩa quay đến 1/4 vòng. Trong ví dụ trên, nếu đèn LED đọc được 10, thì
vị trí của LED phải nằm trong góc phần tư thứ hai, phía trên, bên trái.
Kết quả, nếu đĩa encoder có đến 10 vòng lỗ, thì chúng ta sẽ quản lý
được đến 1/(2^10) tức là đến 1/1024 vòng. Hay người ta nói là độ phân
giải của encoder là 1024 xung trên vòng (pulse per revolution - ppr).
Sau đây là ví dụ abosulte encoder 8 vòng lỗ:
BÀI TẬP LỚN VI ĐIỀU KHIỂN


Hoạt động của incremental encoder
Thật đơn giản, incremental encoder, sẽ tăng 1 đơn vị khi một lần lên
xuống của cạnh xung.
Các bạn xem hình encoder sau:
Các bạn 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ư 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ờ đếm số lỗ encoder để
biết nó đã quay một vòng, thì nếu với encoder 1000 lỗ sẽ đếm rất lâu.
Chưa kể, mỗi lần có những rung động nào đó mà ta không 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 sau 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 vào thêm một lỗ
định vị để đếm số vòng đã quay của encoder.
BÀI TẬP LỚN VI ĐIỀU KHIỂN
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ào đó, mà chúng ta không thấy encoder đi
qua lỗ định vị, vậy thì 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.
Đây là hình encoder có lỗ định vị:
Tuy nhiên, 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 đơn lẻ và xoay theo hai chiều đều giống
nhau.Chính vì vậy, người ta đặt thêm một vòng lỗ ở giữa vòng lỗ thứ 1
và lỗ định vị như hình sau:
BÀI TẬP LỚN VI ĐIỀU KHIỂN


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status