11731_Điều khiển động cơ và giao tiếp máy tính

luận văn tốt nghiệp

HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐIỆN TỬ II

ĐỒ ÁN MÔN HỌC

HỆ THỐNG NHÚNG
VÀ GIAO TIẾP MÁY TÍNH

NGÀNH KỸ THUẬT ĐIỆN-ĐIỆN TỬ
NIÊN KHÓA: 2007-2012

CHUYÊN ĐỀ:
ĐIỀU KHIỂN ĐỘNG CƠ
VÀ GIAO TIẾP M ÁY T ÍNH

GV. hƣớng dẫn:

THS. Phạm Thế Duy
THS. Tôn Thất Bảo Đạt

Nhóm thực hiện:

LỚP :
Nhóm : Lê Đức Thuận
Lê Văn Kiểm
Lê Văn Hoá
Đặng Vân Nam
Phạm Xuân kỳ
D07DTA1

TP.HỒ CHÍ MINH -2011

ỜI MỞ Đ U
Em xin chân thành cảm ơn Th.s Phạm Thế Duy & Th.s Tôn Thất Đạt
đã tận tình hƣớng dẫn, hỗ trợ cho chúng em về ý tƣởng, tài liệu trong suốt quá
trình thực hiện đề t i Ngày nay trong mọi lĩnh vực khoa học kỹ thuật luôn
xuất hiện khái niệm Kỹ thuật số vi xử lý v điều khiển, với sự trợ giúp
của máy tính kỹ thuật vi xử lý v điều khiển đã có sự pháttriển mạnh mẽ
đặc biệt là sự phát triển nhanh chóng của các họ vi xử lý v điều khiển
với những tính năng mới Để phục vụ tốt cho môn học chúng em thực
hiện đề t i: Đo v Điều khiển Tốc Độ Động Cơ với mục đích tích luỹ
kiến thức đặc biệt là những kinh nghiệm trong quá trình lắp mạch thực tế
song do thời gian và kiến thức có hạn, nên mạch thiết kế còn nhiều thiếu
sót. Chúng em rất mong nhận đƣợc sự góp ý của các thầy cô để có thể
nâng cao chất lƣợng của bài thiết kế, chúng em xin chân thành cảm ơn !

Tp. Hồ Chí Minh, 5 / 2011
Sinh viên:

MỤC LỤC

LỜI MỞ Đ U .
CHƢƠNG I: CÁC PHƢƠNG PHÁP ĐIỀU KHIỂN ĐỘNG CƠ

CHƢƠNG II: VI ĐIỀU KHIỂN ATMEGA16

2.1 Giới thiệu chung
2.2 Cấu trúc nhân AVR
2.2.1 ALU
2.2.2 Thanh ghi trạng thái
2.2.3 Con trỏ ngăn xếp (SP
2.2.4 Quản lý ngắt.
2.3 Cấu trúc bộ nhớ
2.3.1 Bộ nhớ chƣơng trình (Bộ nhớ Flash)
2.3.2 Bộ nhớ dữ liệu SRAM
2.3.2 Bộ nhớ dữ liệu SRAM.
2.3.3 Bộ nhớ dữ liệu EEPROM
2.4 Các cổng vào ra (I/O)
2.4.1 Thanh ghi DDRx .
2.4.2 Thanh ghi PORTx .
2.4.3 Thanh ghi PINx..
2.5 Bộ định thời.
2.5.1 Các thanh ghi
2 5 2 Đơn vị đếm ..
2 5 3 Đơn vị so sánh ngõ ra.
2.5.4 Mô tả các thanh ghi…
2.6 USART..
2.6.1 Tạo xung clock .
2 6 2 Định dạng khung truyền .
2.6.3 Khởi tạo USART
2.6.4 Truyền thông dữ liệu-bộ truyền USART….
2.6.5 Nhận dữ liệu-bộ nhận USART .
2.7 Bộ biến đổi A/D
2.7.1 ADMUX: Multiplexer select register
2.7.2 ADCSR-ADC control and status register

2.7.3 Thanh ghi dữ liệu ACDH và ADCL

2.7.4 Nguyên tắc hoạt động và lập trình điều khiển..
CHƢƠNG III: GIAO TIẾP VI ĐIỀU KHIỂN VỚI MÁY TÍNH

3.1 Chuẩn RS232
3.2 Cổng COM

3.3 Truyền thông giữa hai nút

CHƢƠNG IV: THIẾT KẾ PHẦN CỨNG CHO ĐỀ TÀI
4.1 Sơ đồ thiết kế tổng quát..
4.2 Một số linh kiện sử dụng trong mạch
4.2.1 Cảm biến nhiệt độ lm35
4.2.2 IC max 232.
4.2.3 Màn hình hiển thị( LCD 16×2).
4.3 Tính toán thiết kế cho các khối
4.3.1 Khối xử lý trung tâm
4.3.2 Khối phím điều khiển
4.3.3 Khối hiển thị.
4.3.5 Khối mạch thu phát hồng ngoại.
4.3.6 khối mạch khuếch đại vi sai dòng điện.
4.3.7 khối mạch cảm biến điện áp
4.3.8 khối mạch công suất….

CHƢƠNG V: LẬP TRÌNH CHO VI ĐIỀU KHIỂN

6

CHƢƠNG I: CÁC PHƢƠNG PHÁP ĐIỀU KHIỂN ĐỘNG CƠ
1 Giới thiệu chung
Điều khiển tốc độ là một yêu cầu cần thiết tất yếu của các máy sản xuất. Ta biết rằng
hầu hết các máy sản xuất đòi hỏi có nhiều tốc độ, tùy theo từng công việc, điều kiện làm việc mà
ta lựa chọn các tốc độ khác nhau để tối ƣu hoá quá trình sản xuất. Muốn có Đƣợc các tốc độ khác
nhau trên máy ta có thể thay đổi cấu trúc cơ học của máy nhƣ tỉ số truyền hoặc thay đổi tốc độ
của chính động cơ truyền động. Ở đây chúng tôi chỉ khảo sát theo phƣơng pháp thay đổi tốc độ
động cơ truyền động.Tốc độ làm việc của động cơ do ngƣời điều khiển quy định đƣợc gọi là tốc
độ đặt. Trong quá trình làm việc, tốc độ động cơ có thể bị thay đổi vì tốc độ của động cơ phụ
thuộc rấ tnhiều vào các thông số nguồn, mạch và tải nên khi các thông số thay đổi thì tốc độ của
động cơ sẽ bị thay đổi theo. Tình trạng đó gây ra sai số về tốc độ và có thể không cho phép Để
khắc phục ngƣời ta dùng những phƣơng pháp ổn định tốc độ Độ ổn định tốc độ còn ảnh hƣởng
quan trọng đến giải điều chỉnh (phạm vi điều chỉnh tốc độ) và khả năng quá tải của động cơ Độ
ổn định càng cao thì giải điều chỉnh càng có khả năng mở rộng và mô men quá tải càng lớn.

Có rất nhiều phƣơng pháp để điều chỉnh tốc độ động cơ nhƣ:

Điều chỉnh tham số.

Điều chỉnh điện áp nguồn.

Điều chỉnh cấu trúc sơ đồ.
Ở đây chúng tôi chỉ đề cập đến các phƣơng pháp điều khiển tốc độ động cơ một chiều

2 Các phƣơng pháp điều khiển động cơ một chiều

2.1 điều chỉnh tốc độ bằng cách điều chỉnh điện áp

Cách điều khiển này ta có thể thay đổi tốc độ động cơ DC khi thay đổi điện áp đặt vào
hai đầu của động cơ thì tốc độ củng thay đổi theo Ƣu điểm của phƣơng pháp n y l mạch điện
rất dễ thực hiện mạch điện đơn giản đạt hiệu quả cao khi cho động cơ hoạt động với công suât
lớn Nhƣợc điểm của phƣơng pháp n y động cơ dễ mất mô men khi thay đổi tốc độ từ cao xuống
thấp do đó đạt hiệu quả không cao khi cho động cơ chạy ở tốc độ thấp và có tải đi kèm

Hình 1.2.1 Điều khiển tốc độ động cơ bằng điện áp
7

2.2 Điều khiển tốc độ động cơ bằng xung pwm

Đối với loại động cơ kích từ độc lập dùng nam châm vĩnh cữu, để thay đổi tốc độ, ta thay
đổi điện áp cung cấp cho roto. Việc cấp áp 1 chiều thay đổi thƣờng khó khăn, do vậy ngƣời ta
dùng phƣơng pháp điều xung (PWM) Ƣu điểm của biện pháp n y điều khiển tƣơng đối chính
xác tốc độ động cơ, thay đổi đƣợc tốc độ mà không làm giảm mô men của động cơ Nhƣợc điểm
của phƣơng pháp n y l mạch điều khiển phức tạp xung điều khiển đƣợc số hóa, do đó mạch
điều khiển loại n y có giá th nh cao hơn

Hình 1 2 2 Điều khiển động cơ bằng pwm
8

CHƢƠNG II: VI ĐIỀU KHIỂN ATMEGA 16

2.1
Giới thiệu chung
ATmega16 l vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng thực hiện mỗi lệnh
trong vòng một chu kỳ xung clock, ATmega16 có thể đạt đƣợc tốc độ 1MIPS trên mỗi MHz (1
triệu lệnh/s/MHz).
Dƣới đây l sơ đồ khối của ATmega16

9

Hình 2.2.1: Sơ đồ cấu trúc ATmega16
10

ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khi ghi, 512
byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32 đƣờng vào ra
chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao tiếp nối tiếp 2 dây, 8 kênh
ADC 10 bit,….
ATmega 16 hỗ trợ đầy đủ các chƣơng trình v công cụ phát triển hệ thống nhƣ: trình dịch C,
macro assemblers, chƣơng trình mô phỏng/sửa lỗi, kit thử nghiêm,…
2.2 Cấu trúc nhân AVR
CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chƣơng trình Do đó
nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều khiển các thiết bị
ngoại vi và quản lý ngắt.

Hình 2.2.2: Cấu trúc tổng quát
AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ v các bus cho chƣơng trình v dữ liệu.
Các lệnh đƣợc thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ chƣơng trình đƣợc lƣu trong
bộ nhớ Flash.

11

2.2.1 ALU
ALU làm việc trực tiếp với các thanh ghi chức năng chung Các phép toán đƣợc thực hiện
trong một chu kỳ xung clock. Hoạt động của ALU đƣợc chia làm 3 loại: đại số, logic và theo bit.
2.2.2 Thanh ghi trạng thái
Đây l thanh ghi trạng thái có 8 bit lƣu trữ trạng thái của ALU sau các phép tính số học và
logic

Hình 2.2.3 : Thanh ghi trạng thái SREG

C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ đƣợc thiết lập)
Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0)
N: Negative Flag (Nếu kết quả của phép toán là âm)
V: Two’s complement overflow indicator (Cờ n y đƣợc thiết lập khi tràn số bù 2)
V, For signed tests (S=N XOR V)S: N
H: Half Carry Flag
T: Transfer bit used by BLD and BST instructions(Đƣợc sử dụng l m nơi chung gian trong
các lệnh BLD,BST).
I: Global Interrupt Enable/Disable Flag (Đây l bit cho phép to n cục ngắt. Nếu bit này ở
trạng thái logic 0 thì không có một ngắt n o đƣợc phục vụ.)
2.2.3 Con trỏ ngăn xếp (SP)
Là một thanh ghi 16 bit nhƣng cũng có thể đƣợc xem nhƣ hai thanh ghi chức năng đặc biệt 8
bit Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E). Có
nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp.

12

Hình 2.2.4 :Thanh ghi con trỏ ngăn xếp

2.2.4 Quản lý ngắt
Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng cho
đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận đƣợc một byte nó sẽ báo cho CPU
biết thông qua cờ RXC,hợc khi nó đã truyền đƣợc một byte thì cờ TX đƣợc thiết lập…
Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại v lƣu vị trí đang
thực hiên chƣơng trình (con trỏ PC) v o ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện
chƣơng trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy
PC từ ngăn xếp ra và tiếp tục thực hiện chƣơng trình m trƣớc khi có ngăt nó đang thực hiện.
Trong trƣờng hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lƣu các cờ báo ngắt đó lại
và thực hiện lần lƣợt các ngắt theo mức ƣu tiên Trong khi đang thực hiện ngắt mà xuất hiện ngắt
mới thì sẽ xảy ra hai trƣờng hợp Trƣờng hớp ngắt này có mức ƣu tiên cao hơn thì nó sẽ đƣợc
phục vụ. Trƣờng hợp nó có mức ƣu tiên thấp hơn thì nó sẽ bị bỏ qua.
Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên Để truy nhập vào
SRAM thông thƣờng thì ta dùng con trỏ X,Y,Z v để truy nhập vào SRAM theo kiểu ngăn xếp
thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit v đƣợc truy nhập nhƣ hai thanh ghi 8
bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E.
Khi chƣơng trình phục vu ngắt hoặc chƣơng trình con thì con trỏ PC đƣợc lƣu v o ngăn xếp
trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push.
Ngƣợc lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 v khi thực hiện lệnh RET hoặc
RETI thì con trỏ ngăn xếp sẽ tăng 2 Nhƣ vậy con trỏ ngăn xếp cần đƣợc chƣơng trình đặt trƣớc
giá trị khởi tạo ngăn xếp trƣớc khi một chƣơng trình con đƣợc gọi hoặc các ngắt đƣợc cho phép
phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các
thanh ghi.

13

2.3 Cấu trúc bộ nhớ
AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chƣơng trình Ngo i ra
ATmega16 còn có thêm bộ nhớ EEPROM để lƣu trữ dữ liệu
2.3.1 Bộ nhớ chƣơng trình (Bộ nhớ Flash)
Bộ nhớ Flash 16KB của ATmega16 dùng để lƣu trữ chƣơng trình Do các lệnh của AVR có
độ dài 16 hoặc 32 bit nên bộ nhớ Flash đƣợc sắp xếp theo kiểu 8KX16. Bộ nhớ Flash đƣợc chia
làm 2 phần, phần d nh cho chƣơng trình boot v phần d nh cho chƣơng trình ứng dụng.

Hình 2.2.5: Bản đồ bộ nhớ chương trình

2.3.2 Bộ nhớ dữ liệu SRAM
1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu
SRAM nội Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô
nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội.
14

Hình 2.2.6: Bản đồ bộ nhớ dữ liệu SRAM

2.3.3 Bộ nhớ dữ liệu EEPROM
ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lƣợng 512 byte, v đƣợc sắp xếp theo từng
byte, cho phép các thao tác đọc/ghi từng byte một.
2.4 Các cổng vào ra (I/O)
Vi điều khiểnATmega16có 32 đƣờng vào ra chia làm bốn nhóm 8 bit một Các đƣờng vào ra
này có rất nhiều tính năng v có thể lập trình đƣợc. Ở đây ta sẽ xét chúng là các cổng vào ra số.
Nếu xét trên mặt này thì các cổng vào ra này là cổng vào ra hai chiều có thể định hƣớng theo
từng bit. Và chứa cả điện trở pull-up (có thể lập trình đƣợc). Mặc dù mỗi port có các đặc điểm
riêng nhƣng khi xét chúng l các cổng vào ra số thì dƣờng nhƣ điều khiển vào ra dữ liệu thì hoàn
to n nhƣ nhau Chúng ta có thanh ghi v một địa chỉ cổng đối với mỗi cổng, đó l : thanh ghi dữ
liệu cổng (PORTA, PORTB, PORTC, PORTD), thanh ghi dữ liệu điều khiển cổng (DDRA,
DDRB, DDRC, DDRD) và cuối cùng l địa chỉ chân vào của cổng (PINA, PINB, PINC, PIND).
2.4.1 Thanh ghi DDRx
Đây l thanh ghi 8 bit (ta có thể đọc và ghi các bit ở thanh ghi này) và có tác dụng điều khiển
hƣớng cổng PORTx (tức là cổng ra hay cổng vào). Nếu nhƣ một bit trong thanh ghi n y đƣợc set
15

thì bit tƣơng ứng đó trên PORTx đƣợc định nghĩa nhƣ một cổng ra Ngƣợc lại nếu nhƣ bit đó
không đƣợc set thì bit tƣơng ứng trên PORTx đƣợc định nghĩa l cổng vào.
2.4.2 Thanh ghi PORTx
Đây cũng l thanh ghi 8 bit (các bit có thể đọc v ghi đƣợc) nó là thanh ghi dữ liệu của cổng
Px v trong trƣờng hợp nếu cổng đƣợc định nghĩa l cổng ra thì khi ta ghi một bit lên thanh ghi
n y thì chân tƣơng ứng trên port đó cũng có cùng mức logic Trong trƣờng hợp mà cổng đƣợc
định nghĩa l cổng vào thì thanh ghi này lại mang dữ liệu điều khiển cổng. Cụ thể nếu bit n o đó
của thanh ghi n y đƣợc set (đƣa lên mức 1) thì điện trở kéo lên (pull-up) của chân tƣơng ứng của
port đó sẽ đƣợc kích hoạt. Ngƣợc lại nó sẽ ở trạng thái hi-Z. Thanh ghi này sau khi khởi động Vi
điều khiểnsẽ có giá trị là 0x00.
2.4.3 Thanh ghi PINx
Đây l thanh ghi 8 bit chứa dữ liệu vào của PORTx (trong trƣờng hợp PORTx đƣợc thiết lập
là cổng vào) và nó chỉ có thể đọc mà không thể ghi v o đƣợc.
Tóm lại:
1 Để đọc dữ liệu từ ngoài thì ta phải thực hiện các bƣớc sau:
 Đƣa dữ liệu ra thanh ghi điều khiển DDRxn để đặt cho PORTx (hoặc bit n trong port) đó
l đầu vào (xóa thanh ghi DDRx hoặc bit).
 Sau đó kích hoạt điện trở pull-up bằng cách set thanh ghi PORTx ( bit).
 Cuối cùng đọc dữ liệu từ địa chỉ PINxn (trong đó x: l cổng và n là bit).
Để đƣa dữ liệu từ vi điều khiển ra các cổng cũng có các bƣớc ho n to n tƣơng tự Ban đầu ta
cũng phải định nghĩa đó l cổng ra bằng cách set bit tƣơng ứng của cổng đó… v sau đó l ghi
dữ liệu ra bit tƣơng ứng của thanh ghi PORTx.
2.5 Bộ định thời
Bộ định thời (timer/counter0) là một module định thời/đếm 8 bit, có các đặc điểm sau:
 Bộ đếm một kênh
 Xóa bộ định thời khi trong mode so sánh (tự động nạp)
 PWM
 Tạo tần số
 Bộ đếm sự kiện ngoài
 Bộ chia tần 10 bit
 Nguồn ngắt tràn bộ đếm và so sánh

16

Sơ đồ cấu trúc của bộ định thời:

Hình 2.2.7: Sơ đồ cấu trúc bộ định thời

2.5.1 Các thanh ghi
TCNT0 và OCR0 là các thanh ghi 8 bit. Các tín hiệu yêu cầu ngắt đều nằm trong thanh ghi
TIFR. Các ngắt có thể đƣợc che bởi thanh ghi TIMSK.
Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock ngoài trên
chân T0. Khối chọn xung clock điều khiển việc bộ định thời bộ đếm sẽ dùng nguồn xung n o để
tăng giá trị của nó. Ngõ ra của khối chọn xung clock đƣợc xem là xung clock của bộ định thời
(clkT0).
Thanh ghi OCR0 luôn đƣợc so sánh với giá trị của bộ định thời/bộ đếm. Kết quả so sánh có
thể đƣợc sử dụng để tạo ra PWM hoặc biến đổi tần số ngõ ra tại chân OC0.
2.5.2 Đơn vị đếm
Phần chính của bộ định thời 8 bit là một đơn vị đếm song hƣớng có thể lập trình đƣợc. Cấu
trúc của nó nhƣ hình dƣới đây:
17

Hình 2.2.8: Đơn vị đếm

Count: tăng hay giảm TCNT0 1
Direction: lựa chọn giữa đếm lên v đếm xuống
Clear: xóa thanh ghi TCNT0
ClkT0: xung clock của bộ định thời
TOP: báo hiệu bộ định thời đã tăng đến giá trị lớn nhất
BOTTOM: báo hiệu bộ định thời đã giảm đến giá trị nhỏ nhất (0)
2.5.3 Đơn vị so sánh ngõ ra

Hình 2.2.9: Sơ đồ đơn vị so sánh ngõ ra

18

Bộ so sánh 8 bit liên tục so sánh giá trị TCNT0 với giá trị trong thanh ghi so sánh ngõ ra
(OCR0). Khi giá trị TCNT0 bằng với OCR0, bộ so sánh sẽ tạo một báo hiệu. Báo hiệu này sẽ đặt
giá trị cờ so sánh ngõ ra (OCF0) lên 1 vào chu kỳ xung clock tiếp theo. Nếu đƣợc kích hoạt
(OCIE0=1), cờ OCF0 sẽ tạo ra một ngắt so sánh ngõ ra và sẽ tự động đƣợc xóa khi ngắt đƣợc
thực thi. Cờ OCF0 cũng có thể đƣợc xóa bằng phần mềm.
2.5.4 Mô tả các thanh ghi
 Thanh ghi điều khiển bộ định thời/bộ đếm TCCR0

Hình 2.2.10: Thanh ghi điều khiển bộ định thời

Bit 7-FOC0: So sánh ngõ ra bắt buộc
Bit này chỉ tích cực khi bit WGM00 chỉ định chế độ làm việc không có PWM Khi đặt bit
này lên 1, một báo hiệu so sánh bắt buộc xuất hiện tại đơn vị tạo dạng sóng.
Bit 6, 3-WGM01:0: Chế độ tạo dạng sóng
Các bit n y điều khiển đếm thứ tự của bộ đếm, nguồn cho giá trị lớn nhất của bộ đếm (TOP)
và kiểu tạo dạng sóng sẽ đƣợc sử dụng.
Bit 5:4-COM01:0: Chế độ báo hiệu so sánh ngõ ra
Các bit n y điều khiển hoạt động của chân OC0. Nếu một hoặc cả hai bit COM01:0 đƣợc đặt
lên 1, ngõ ra OC0 sẽ hoạt động.
Bit 2:0: CS02:0: Chọn xung đồng hồ
Ba bit n y dùng để lựa chọn nguồn xung cho bộ định thời/bộ đếm

19

 Thanh ghi bộ định thời/bộ đếm

Hình 2.2.11: Thanh ghi bộ định thời
Thanh ghi bộ định thời/bộ đếm cho phép truy cập trực tiếp (cả đọc và ghi) vào bộ đếm 8 bit.

 Thanh ghi so sánh ngõ ra-OCR0

Hình 2.2.12: Thanh ghi so sánh ngõ ra
Thanh ghi này chứa một giá trị 8 bit và liên tục đƣợc so sánh với giá trị của bộ đếm
 Thanh ghi mặt nạ ngắt

Hình 2.2.13: Thanh ghi mặt nạ ngắt TIMSK

Bit 1-OCIE0: Cho phép ngắt báo hiệu so sánh
Bit 0-TOIE0: Cho phép ngắt tràn bộ đếm

 Thanh ghi cờ ngắt bộ định thời

Hình 2.2.14: Thanh ghi cờ ngắt bộ định thời

Bit 1-OCF0: Cờ so sánh ngõ ra 0
Bit 0-TOV0: Cờ tràn bộ đếm
Bit TOV0 đƣợc đặt lên 1 khi bộ đếm bị tr n v đƣợc xóa bởi phần cứng khi vector ngắt
tƣơng ứng đƣợc thực hiện Bit n y cũng có thể đƣợc xóa bằng phần mềm.
20

2.6 USART
Bộ truyền nhận nối tiếp đồng bộ và bất đồng bộ là một thiết truyền thông nối tiếp có các chức
năng chính nhƣ sau:
 Hoạt động song công (các thanh ghi truyền và nhận nối tiếp độc lập với nhau).
 Hoạt động đồng bộ hoặc bất đồng bộ
 Bộ tạo tốc độ baud có độ chính xác cao
 Hỗ trợ khung truyền nối tiếp với 5, 6, 7, 8, hoặc 9 bit dữ liệu và 1 hoặc 2 bit stop
 Kiểm tra chẵn lẻ
 Phát hiện tràn dữ liệu
 Phát hiện lỗi khung
 Lọc nhiễu, bao gồm phát hiện bit start lỗi và bộ lọc thông thấp số
 Ngắt khi kết thúc truyền, thanh ghi truyền hết dữ liệu và kết thúc nhận
 Chế độ truyền thông đa vi xử lý
 Chế độ truyền đồng bộ tốc độ cao
Sơ đồ khối của bộ USART nhƣ sau:

Hình 2.15:. Sơ đồ khối bộ USART

USART bao gồm 3 phần chính: bộ tạo xung clock, bộ truyền và bộ nhận Các thanh ghi điều
khiển đƣợc sử dụng chung giữa các phần này.
21

2.6.1 Tạo xung clock
Bộ tạo xung clock tạo ra xung đồng hồ căn bản cho bộ truyền và bộ nhận. USART hỗ trợ 4
chế độ hoạt động xung clock: bất đồng bộ, bất đồng bộ tốc độ cao, truyền đồng bộ master và
truyền đồng bộ slave Sơ đồ khối của bộ tạo xung clock nhƣ sau:

Hình 2.16: Đơn vị tạo xung clock
.
TXCLK: xung đồng hộ bộ truyền
RXCLK: xung đồng hồ bộ nhận
XCKI: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master
XCKO: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng bộ
slave
FOSC: tần số từ chân XTAL
2.6.2 Định dạng khung truyền
USART chấp nhận tất cả 30 tổ hợp của các định dạng khung truyền sau đây:
 1 bit start
 5, 6, 7, 8, hoặc 9 bit dữ liệu
 Có hoặc không có bit chẵn lẻ
 1 hoặc 2 bit stop
Một khung truyền bắt đầu với một bit start, theo sau đó l bit có trọng số thấp nhất (LSB) của dữ
liệu (có thể lên tới 9 bit), kết thúc bằng bit có trọng số lớn nhất (MSB) và bit stop.

22

Hình 2.17: Định dạng khung truyền

St: bit start (mức thấp)
(n): bit dữ liệu (0 đến 8)
P: bit chẵn lẻ
Sp: bit stop (mức cao)
IDLE: không có dữ liệu truyền (mức cao trong suốt thời gian idle)
2.6.3 Khởi tạo USART
Quá trình khởi tạo USART bao gồm việc thiết lập tốc độ baud, thiết lập định dạng khung và
kích hoạt bộ truyền và bộ nhận.
2.6.4 Truyền thông dữ liệu-bộ truyền USART
Bộ truyền USART đƣợc kích hoạt bằng cách thiết lập bit TXEN trong thanh ghi UCSRB.
Khi bộ truyền đƣợc kích hoạt, chân TxD hoạt động nhƣ ngõ ra của bộ truyền nối tiếp. Tốc độ
baud, chế độ hoạt động v định dạng khung truyền phải đƣợc thiết lập trƣớc khi thực hiện truyền
dữ liệu.
 Truyền khung 5 đến 8 bit dữ liệu
Việc truyền dữ liệu đƣợc thiết lập bằng cách nạp dữ liệu truyền vào bộ đệm truyền. Dữ liệu
trong bộ đệm sẽ đƣợc đƣa v o thanh ghi dịch khi thanh ghi dịch đã sẵn sàng gửi một khung mới.
 Truyền khung 9 bit dữ liệu
Nếu sử dụng 9 bit dữ liệu, bit thứ 9 phải đƣợc ghi vào bit TXB8 trong thanh ghi UCSRB trƣớc
khi byte còn lại đƣợc ghi vào UDR.
2.6.5 Nhận dữ liệu-bộ nhận USART
Bộ nhận USART đƣợc kích hoạt bằng cách đặt bit RXEN trong thanh ghi UCRSB lên 1. Khi
bộ nhận đƣợc kích hoạt, chân RxD hoạt động nhƣ ngõ v o của bộ nhận nối tiếp. Tốc độ baud,
chế độ hoạt động v định dạng khung truyền phải đƣợc thiết lập trƣớc khi thực hiện truyền dữ
liệu.

 Nhận khung với 5 đến 8 bit dữ liệu
Bộ nhận bắt đầu nhận dữ liệu khi nó phát hiện một bit start hợp lệ. Mỗi bit theo sau bit start
sẽ đƣợc lấy mẫu tại tốc độ baud hoặc tốc độ đồng hồ XCK, v đƣợc dịch vào trong thanh ghi
23

dịch của bộ nhận cho đến khi phát hiện một bit stop đầu tiên. Nội dung của thanh ghi dịch sau đó
đƣợc đƣa v o bộ đệm. Bộ đệm của bộ nhận có thể đƣợc đọc bằng cách đọc UDR.
 Nhận khung với 9 bit dữ liệu
Nếu nhận dữ liệu 9 bit, bit thứ 9 phải đƣợc đọc từ bit RXB8 trong thanh ghi UCSRB trƣớc
khi đọc các bit thấp trong UDR
2.7 Bộ biến đổi A/D

Vi điều khiểnATmega16 có một bộ biến đổi ADC tích hợp trong chip với các đặc điểm:
 Độ phân giải 10 bit
 Sai số tuyến tính: 0.5LSB
 Độ chính xác +/-2LSB
 Thời gian chuyển đổi:65-260μs
 8 Kênh đầu vào có thể đƣợc lựa chọn
 Có hai chế độ chuyển đổi free running và single conversion
 Có nguồn báo ngắt khi hoàn thành chuyển đổi
 Loại bỏ nhiễu trong chế độ ngủ

24

Hình 2.18:. Sơ đồ bộ biến đổi A/D
Tám đầu vào của ADC là tám chân của PORTA v chúng đƣợc chọn thông qua một MUX.
Để điều khiển hoạt động vào ra dữ liệu của ADC và CPU chúng ta có 3 thanh ghi: ADMUX
l thanh ghi điều khiển lựa chọn kênh đầu vào cho ADC, ADCSRA l thanh ghi điều khiển và
thanh ghi trạng thái của ADC, ADCH và ADCL là 2 thanh ghi dữ liệu.
2.7.1 ADMUX: Multiplexer select register
Đây l thanh ghi điều khiển 8 bit.

Hình 2.19: Thanh ghi ADMUX

Với 4 bit đƣợc định nghĩa l MUX3, MUX2, MUX1,v MUX0, ứng với các tổ hợp logic ta
có thể chọn kênh đầu vào. Cụ thể:

Các bit REFS1 v REFS0 dùng để chọn giá trị điện áp tham khảo cho ADC, nhƣ sau:

Chú ý: Nếu nhƣ ta thay đổi kênh trong thời điểm m ADC đang chuyển đổi thì khi quá trình
chuyển đổi đã ho n thành thì kênh vào mới đƣợc thay đổi.
2.7.2 ADCSR-ADC control and status register
25

Đây l thanh ghi điều khiển v lƣu trạng thái của ADC.

Hình 2.30: Thanh ghi điều khiển và trạng thái ADC
Bit 7-ADEN:ADC enable
Đây l bit điều khiển hoạt động của ADC.Khi bit n y đƣợc set 1 thì ADC có thể hoạt động và
ngƣợc lại.Nếu nhƣ ta ngừng hoạt động của ADC trong khi nó đang chuyển đổi thì nó sẽ kết thúc
quá trình chuyển đổi.Mặc dù chƣa chuyển đổi xong.

Bit 6-ADSC: ADC start conversion
Trong chế độ chuyển đổi đơn thì bit này phải đƣợc set lên 1 để bắt đầu chuyển đổi.Trong chế
độ chuyển đổi tự do thì bit này cần đƣợc set lên 1 để bắt đầu lần chuyển đổi đầu tiên.Bit này
đƣợc giữ sốt trong quá trình chuyển đổi v đƣợc xóa khi mà chuyển đổi xong.
Bit 5-ADATE :ADC Auto Trigger enable
Khi bit n y đƣợc set thì ADC sẽ bắt đầu chuyển đổi mỗi khi có một nguồn kích hoạt xuất
hiện. Việc lựa chọn nguồn kích hoạt đƣợc thực hiện bằng cách set các bit trong thanh ghi SFIOR.
Bit 4-ADIF: ADC interrupt Flag
Bit n y đƣợc set lên 1 bởi phần cứng khi quá trình chuyển đổi đã ho n th nh v thanh ghi dữ
liệu đã đƣợc cập nhật Bit n y đƣợc xóa bằng phần cứng nếu nhƣ ngắt n y đƣợc phép v đƣợc
phục vụ. Hoặc nó có thể đƣợc xóa bằng cách ghi giá trị logic “0”v o cờ này. Cụ thể khi ngắt bị
cấm ta có thể sử dụng các lệnh sbi v cbi để tác dụng lên bit này
Bit 3-ADIE:ACD interrupt Enable
Nếu bit này set 1 và ngắt toàn cục đƣợc cho phép thì ngắt n y đƣợc phép phục vụ (khi
chuyển đổi xong dữ liệu) và nếu bị xóa thì ngƣợc lại.
Bit 2.1.0-ADPS2…ADPS0: Bit lựa chọn xung nhịp(Tốc độ)
Nguồn xung đƣợc lấy từ nguồn xung của Vi điều khiển(XTAL) v đƣợc chia tần thông qua
bộ chia tần.
Các bit ADPS có nhiệm vụ chọn số chia cho bộ chia tần theo bảng sau:
26

2.7.3 Thanh ghi dữ liệu ACDH và ADC
Thanh ghi này chứa dữ liệu chuyển đổi từ tƣơng tự sang số, đƣợc sắp xếp nhƣ hình dƣới đây

Hình 2.31: Thanh ghi dữ liệu ADC

2.7.4 Nguyên tắc hoạt động và lập trình điều khiển
ADC có nhiệm vụ chuyển đổi tín hiệu điện áp tƣơng tự thành tín hiệu số có độ phân giải 10
bit.Với giá trị nhỏ nhất của điện áp đặt ở chân AGND và giá trị cực đại của điện áp tƣơng tự
đƣợc mắc v o chân AREF Tám kênh tƣơng tự đầu v o đƣợc chọn lựa thông qua ADMUX và
ADMUX n y đƣợc điều khiển bởi thanh ghi ADMUX.

Đánh giá post

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *