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

Cảm biến chuyển động đo khoảng cách dùng ATMEGA8 và SRF04

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.12 MB, 25 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
**********************
BÁO CÁO KĨ THUẬT VI XỬ LÝ
Cảm biến chuyển động đo khoảng cách
dùng ATMEGA8 và SRF04

Lớp:
KSTN ĐTVT K56
Giáo viên hướng dẫn:
Nguyễn Hoàng Dũng
Nhóm sinh viên thực hiện:
Đỗ Anh Dân 20111261
Nguyễn Bá Dũng 20112561


Hà Nội 05-2014
MỤC LỤC
Chương I: Giới thiệu chung
1. Giới thiệu về Atmega 8
1.1 Đặc điểm
1.2 Sơ đồ khối ATmega8
1.3 Sơ đồ chân ATmega8
1.4 Mô tả chức năng các chân Atmega8
2. Giới thiệu về SRF04
2.1 Thông số kĩ thuật
2.2 Chế độ hoạt động
2.3 Chức năng các chân
2.4 Nguyên tắc hoạt động
2.5 Tính toán và xác định khoảng cách
3. Giới thiệu về LCD
3.1 Chức năng chân LCD


3.2 Sơ đồ khối LCD
Chương II: Thiết kế mạch
1. Phân tích yêu cầu đề tài
2. Xây dựng sơ đồ khối của mạch
3. Phân tích chức năng,thông số kĩ thuật từng khối
4. Xây dựng sơ đồ nguyên lý toàn mạch
5. Mạch in
6. Đo đạc,kiểm tra,đánh giá chất lượng của mạch
Chương III: Lập trình và mô phỏng
1. Lập trình
2. Mô Phỏng
Chương IV: Kết luận
1. Ưu điểm
2. Nhược điểm
Chương V: Tài liệu tham khảo
Chương I: Giới thiệu chung
1. Giới thiệu về ATmega 8
1.1 Đặc điểm:
Vi điều khiển Atmega8 của hãng ATMEL là một loại vi điều khiển AVR mới với kiến
trúc rất phức tạp.
Atmega 8 là bộ vi điều khiển RISC 8 bit tiêu thụ năng lượng nhưng đạt hiệu suất rất
cao, dựa trên kiến trúc RISC AVR. Bằng việc thực hiện các lệnh trong một chu kỳ xung
nhịp, Atmega8 đạt được tốc độ xử lý dữ liệu lên đến 1triệu lệnh/giây ở tần số 1MHz.
Atmega8 còn cho phép người thiết kế hệ thống tối ưu hoá mức độ tiêu thụ năng lượng
mà vẫn đảm bảo tốc độ xử lý.
Atmega 8 đã tích hợp đầy đủ các tính năng như bộ chuyển đổi ADC 10bit, bộ so sánh,
bộ truyền nhận nối tiếp, bộ định thời, bộ đếm thời gian thực, bộ điều chế độ rộng xung
… Do đó ta phải nghiên cứu và khai thác triệt để các tính năng này để ứng dụng hiệu
quả vào những mạch trong thực tế.
Atmega8 sử dụng kiến trúc RISC (Reduced Instruction Set Computer) AVR.

 Atmega8 với kiến trúc RISC có chỉ tiêu chất lượng cao và tiêu thụ năng lượng ít:
- 130 lệnh hầu hết được thực hiện trong một chu kỳ xung nhịp.
- 32 thanh ghi làm việc đa năng.
- Tốc độ xử lý lệnh lên đến 16 triệu lệnh/giây ở tần số 16MHz.
 Bộ nhớ dữ liệu và bộ nhớ chương trình không tự mất dữ liệu:
- 8K byte bộ nhớ Flash lập trình được ngay trên hệ thống, có thể nạp xoá 10000 lần.
- 512 byte bộ nhớ EEFROM lập trình được ngay trên hệ thống, có thể ghi xóa
100000 lần.
- 1K byte bộ nhớ SRAM.
- Có thể giao tiếp với 8K byte bộ nhớ ngoài.
- Khóa bảo mật phần mềm lập trình được.
- Giao diện nối tiếp SPI để lập trình ngay trên hệ thống.
 Các tính năng ngoại vi:
- Hai bộ đếm/ bộ định thời 8 bit với chế độ so sánh và chia tần số tách biệt.
- Một bộ định thời 16 bit với chế độ so sánh, chia tần số tách biệt và chế độ bắt mẫu
(Capture Mode).
- Bộ đếm thời gian thực (RTC) với bộ dao động tách biệt.
- Bộ điều chế độ rộng xung PWM 8 bit.
- Bộ biến đổi ADC bên trong 8 kênh 10 bit.
- 2 bộ USART nối tiếp lập trình được.
- Bộ định thời Watchdog lập trình được với bộ dao động trên chip.
- Một bộ so sánh Analog.
 Các tính năng vi điều khiển đặc biệt:
- Có mạch power - on reset và có thể reset bằng phần mềm.
- Các nguồn ngắt ngoài và trong.
- Có 5 chế độ ngủ: chế độ rỗi, chế độ tiết kiệm điện, chế độ giảm nhiễu ADC, chế độ
chờ và chế độ giảm bớt điện năng
- Tần số làm việc có thể thay đổi được bằng phần mềm.
 Vào ra và các cách đóng vỏ
- 23 đường vào ra lập trình được.

- 32 chân dán kiểu vỏ vuông (TQFP)
 Điện thế làm việc:
- VCC = 2,7V đến 5,5V đối với Atmega8L.
- VCC = 4,5V đến 5,5V đối với Atmega8.
 Vùng tốc độ làm việc:
- 0 đến 8 MHz đối với Atmega8L.
- 0 đến 16 MHz đối với Atmega8.
1.2 Sơ đồ khối Atmega8
1.3 Sơ đồ chân Atmega8
1.4 Mô tả chức năng các chân Atmega8
 VCC: Điện áp nguồn nuôi
 GND: Đất
 Port B (PB0…PB7)
- Port B là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA có
thể điều khiển trực tiếp led đơn.
- Khi các chân Port B là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi
không có dao động.
 Port C (PC0…PC6)
- Port C là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA có
thể điều khiển trực tiếp led đơn.
- Khi các chân Port C là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi
không có dao động.
- Port C cũng đóng vai trò như 8 đường địa chỉ cao từ A8 đến A15 khi kết nối bộ nhớ
SRAM bên ngoài.
 Port D (PD0…PD7)
- Port D là port I/O 8 bit với điện trở kéo lên ở bên trong, cung cấp dòng điện 40mA

có thể điều khiển trực tiếp LED đơn.
- Khi các chân Port D là các lối vào được đặt xuống mức thấp từ bên ngoài, chúng sẽ
là nguồn dòng nếu như các điện trở nối lên nguồn dương được kích hoạt. Các chân
này sẽ ở trạng thái tổng trở cao khi tín hiệu Reset ở mức tích cực hoặc ngay cả khi
không có dao động.
 Reset: Ngõ vào được đặt lại. ATmega8 sẽ được đặt lại khi chân này ở mức thấp trong
hơn 50ns hoặc ngay cả khi không có tín hiệu xung clock. Các xung ngắn hơn không
tạo ra tín hiệu đặt lại.
 AVCC: Cung cấp nguồn cho Port C và bộ chuyển đổi ADC hoạt động. Ngay khi
không sử dụng bộ chuyển đổi ADC thì chân AVCC vẫn phải đươc kết nối tới nguồn
VCC.
 AREF: Đây là chân điều chỉnh điện áp tham chiếu cho chuyển đổi A/D
 XTAL1: Ngõ vào bộ khuếch đại đảo và ngõ vào mạch tạo xung nhịp bên ngoài
 XTAL2: Ngõ ra bộ khuếch đại đảo
 Bộ tạo dao động thạch anh :
- XTAL1 và XTAL2 lần lượt là lối vào và lối ra của một bộ khuếch đại đảo, bộ
khuếch đại này được bố trí để làm bộ tạo dao động trên chip
- Để điều khiển được bộ Vi Điều Khiển từ một nguồn xung nhịp bên ngoài, chân
XTAL2 để không, chân XTAL1 được nối với tín hiệu dao động bên ngoài.
1.5 Ngắt ngoài trong Atmega8
• Ngắt là tín hiệu khẩn cấp báo hiệu cho vi điều khiển cần dừng chương trình đang thực
thi lại và ưu tiên nhảy đến 1 vị trí khác để thực hiện một nhiệm vụ khẩn cấp nào đó,
nhiệm vụ khẩn cấp đó là 1 chương trình con phục vụ ngắt-hay là trình phục vụ ngắt
ISR(Interrupts Service Routine). Sau khi thực hiện xong trình phục vụ ngắt thì vi điều
khiển sẽ quay lại tiếp tục công việc trước đó.
Bảng tóm tắt các vector ngắt trong ATMega8:
Trong chip ATMega8 có các ngắt phục vụ Reset, External Interrupt, Timer, USART,
ADC, SPI, I2C, được dùng với các mục đích khác nhau
• Ngắt ngoài trong ATMega8
Ngắt ngoài là ngắt được kích hoạt bởi các tác động điện áp đến các chân ngắt ngoài của

vi điều khiển, nên ngắt ngoài là cách hiệu quả để giao tiếp đơn giản giữa người dùng và
vi điều khiển.
Trong chip ATMega8 có 2 ngắt ngoài là INT0 và INT1, và 2 chân ngắt tương ứng là
PD2 và PD3.
Nếu ta kết nối với vi điều khiển như hình trên, khi đó các button dùng để tạo ngắt và khi
đó sẽ có 4 Mode có thể xảy ra khi ta nhấn và nhả button. Khi không nhấn button, thì
trạng thái của chân ngắt là high(vì có điện trở kéo lên; khi vừa nhấn button thì trên chân
ngắt sẽ thay đổi trạng thái từ High->Low và được gọi là cạnh xuống (Falling Edge); sau
đó button được giữ thì thì chân ngắt có trạng thái là Low; sau đó ta nhả nút nhấn thì trên
chân ngắt sẽ thay đổi trạng thái từ Low-> High và được gọi là cạnh lên (Rising Edge).
Dựa vào từng Mode để phục vụ cho từng mục đích khác nhau.
Đối với ngắt ngoài ta cần quan tâm đến 3 thanh ghi: MCUCR, GICR, GIFR và
SREG:
• Thanh ghi MCUCR:
Thanh ghi MCUCR là thanh ghi 8 bit và 4 bit thấp dùng để thiết lập các Mode ngắt.
Trong 4 bit ISC(Interrup Senso Control) thi 2 bit ISC00, ISC01 để thiết lập ngắt INT0
và 2 bit ISC10, ISC11 để thiết lập ngắt INT1. Cách thiết lập cho mỗi ngắt tương tự nhau
và bảng sau đây thiết lập Mode ngắt cho INT1 :
• Thanh ghi GICR (General Interrupt Control Register):
Thanh ghi GICR là thanh ghi 8 bit, nhưng trong ngắt ngoài ta chỉ quan tâm đến 2 bit
cuối là INT0 và INT1. Bit INT0 và INT1 dùng để thiết lập điều khiển ngắt của ngắt
ngoài INT0 và INT1. Khi đó:
• INTx = 1 -> cho phép ngắt INTx.
• INTx = 0 -> không cho phép ngắt INTx.
• Thanh ghi GIFR (General Interrupt Flag Register):
Thanh ghi GIRF là thanh ghi 8 bit, và đối với ngắt ngoài thì ta chỉ sử dụng 2 bit cao
INTF1 và INTF0. Hai bit INTF1 và INTF0 là cờ ngắt tương ứng cho ngắt ngoài INT0
và INT1. Các bit này sẽ được set lên khi có ngắt tương ứng xảy ra.
• Thanh ghi SREG:
Thanh ghi SREG là thanh ghi trạng thái, gồm 8 bit. Trong ngắt ngoài ta chỉ cần quan

tâm đến bit I trong thanh ghi SREG, bit I này dùng để thiết lập cho phép ngắt toàn cục.
1.6 Timer/Counter0 trên Atmega8
Là một bộ định thời, đếm đơn giản với 8 bit. Gọi là đơn giản vì bộ này chỉ có 1 chế độ
hoạt động (mode) so với 5 chế độ của bộ Timer/Counter1. Chế độ hoat động của
Timer/Counter0 thực chất có thể coi như 2 chế độ nhỏ (và cũng là 2 chức năng cơ bản)
đó là tạo ra một khoảng thời gian và đếm sự kiện. Chú ý là trên các chip AVR dòng
mega sau này như Atmega16,32,64…chức năng của Timer/Counter0 được nâng lên như
các bộ Timer/Counter1…
Có 4 thanh ghi được thiết kế riêng cho hoạt động và điều khiển T/C0, đó là:
• TCNT0 (Timer/Counter Register): là 1 thanh ghi 8 bit chứa giá trị vận hành của T/C0.
Thanh ghi này cho phép bạn đọc và ghi giá trị một cách trực tiếp.
• TCCR0 (Timer/Counter Control Register): là thanh ghi điều khiển hoạt động của
T/C0. Tuy là thanh ghi 8 bit nhưng thực chất chỉ có 3 bit có tác dụng đó là CS00,
CS01 và CS02.
Các bit CS00, CS01 và CS02 gọi là các bit chọn nguồn xung nhịp cho T/C0
(Clock Select). Chức năng các bit này được mô tả trong bảng 1.
Bảng 1: chức năng các bit CS0X
• TIMSK (Timer/Counter Interrupt Mask Register): là thanh ghi mặt nạ cho ngắt của tất
cả các T/C trong Atmega8, trong đó chỉ có bit TOIE0 tức bit số 0 (bit đầu tiên) trong
thanh ghi này là liên quan đến T/C0, bit này có tên là bit cho phép ngắt khi có tràn ở
T/C0. Tràn (Overflow) là hiện tượng xảy ra khi bộ giá trị trong thanh ghi TCNT0 đã
đạt đến MAX (255) và lại đếm thêm 1 lần nữa.
Khi bit TOIE0=1, và bit I trong thanh ghi trạng thái được set (xem lại bài 3 về
điều khiển ngắt), nếu một “tràn” xảy ra sẽ dẫn đến ngắt tràn.
• TIFR (Timer/Counter Interrupt Flag Register): là thanh ghi cờ nhớ cho tất cả các bộ
T/C. Trong thanh ghi này bit số 0, TOV0 là cờ chỉ thị ngắt tràn của T/C0. Khi có ngắt
tràn xảy ra, bit này tự động được set lên 1. Thông thường trong điều khiển các T/C vai
trò của thanh ghi TIFR không quá quan trọng.
2. Giới thiệu về SRF04


2.1 Thông số kĩ thuật :
Điện áp 5V DC
Dòng hoạt động < 2mA
Tần số 40KHz
Góc hoạt động < 15
o
Độ phân giải 0,3 cm
Phạm vi hoạt động 2cm - 5cm
Loại 1 chân cho triger/echo hoặc 2 chân tương thích SRF04
Đàu vào kích khởi 10uS min, mức xung TTL
Xung va đập Mức tín hiệu dương, bề rộng đối xứng
Kích thước 43x20x17 (mm)
Điều khiển tự động Không định kích cỡ hoạt động, tự xử lí, hoạt động nhanh
Thời gian hoạt động Thời gian hồi đáp, đưa tín hiệu điều khiển
2.2 Chế độ hoat động :
Chế độ này sử dụng chân kích hoạt và chân phản hồi riêng biệt và là chế độ đơn giản
nhất để sử dụng.
Giản đồ định thời gian
2.3 Chức năng các chân
- Echo Output : chân đầu ra tín hiệu phản hồi về từ cảm biên.
- Triger Output : chân đầu vào kích hoạt
- Mode : chân chế độ ( không được kết nối ở chế độ một)
- Bộ năm chân bên kia : 5 được đóng nhãn là "programming pins" chỉ được sử dụng
một lần duy nhất trong quá trình sản xuất để lập trình cho bộ nhớ Flash trên chip
PIC16F630. Các chân chương trình của PIC16F630 cũng được sử dụng cho các chức
năng khác trên SRF04, nên chắc chắn rằng bạn không kết nối bất cứ cái gì với các chân,
hoặc bạn sẽ làm gián đoạn hoạt động mô-đun
2.4 Nguyên tắc hoạt động
Từ giản đồ định thời ta thấy :
- Để SRF04 hoạt động ta cần cấp một xung ở mức cao có độ rộng ít nhất là 10uS

trên chân TRI
- Sau đó SRF04 sẽ phát ra một chu kì 8 khối tín hiệu siêu âm ở tần số 40KHz và
tăng dòng tín hiệu phản hồi của nó lên ở mức cao. Sau đó nó chờ phản hồi, và ngay
sau khi phát hiện một vật thể nó sẽ giảm dòng phản hồi xuống. do đó dòng phản hồi
sẽ là một xung có độ rộng tỉ lệ với khoảng cách tới vật thể. Bằng cách đo xung , ta
hoàn toàn có thể tính toán khoảng cách. Nếu không phát hiện vật thể thì SRF05 sẽ kéo
dòng phản hồi xuốc mức thấp sau 30ms .
- SRF04 cung cấp một xung phản hồi tỉ lệ với khoảng cách. Nếu đo độ rộng của
xung bởi uS, sau đó chia cho 58 sẽ cho ta khoảng cách tính bằng cm, hoặc chia cho
148 sẽ cho khoảng cách tính bằng inch: uS/58=cm hoặc uS/148=inch.
- SRF04 có thể được kích hoạt nhanh chóng với mỗi 50mS, hay 20 lần / s.
Bạn nên đợi 50ms trước xung kích hoạt kế tiếp, ngay cả khi SRF04 phát hiện vật thể ở
gần và xung phản hồi ngắn hơn. Điều này để đảm bảo rằng siêu âm “beep” đã tắt hẳn
và không làm sai lệch tín hiệu phản hồi trong lần đo tiếp theo
Đặc biệt SRF04 chỉ có thể nhận xung trên chân TRI tối đa 20 Hz,cho nên việc kích
xung trên chân TRI phải phù hợp thì SRF05 mới hoạt động chính xác.
2.5 Tính toán và xác định khoảng cách
Sóng siêu âm được truyền đi trong không khí với vận tốc 343 m/s. Nếu một cảm biến
phát ra sóng siêu âm và thu về các sóng phản xạ đồng thời, đo được khoảng thời gian từ
lúc phát ra tới lúc thu về, thì máy tính có thể xác định được quãng đường mà sóng đã di
chuyển trong không gian. Quãng đường di chuyển của sóng = 2 lần khoảng cách từ cảm
biến tới chướng ngại vật theo hướng phát của sóng siêu âm.
=>khoảng cách từ cảm biến tới chướng ngại vật sẽ được tính theo nguyên lý
d =
Trong đó : d: khoảng cách cần đo
v: vận tốc sóng siêu âm trong môi trường truyền sóng
t: thời gian từ lúc sóng được phát đi đến lúc sóng được ghi nhận lại
 Đối tượng đo :
mức độ sóng âm hồi tiếp phụ thuộc vào cấu tạo của đối tượng và góc phản xạ nó. Một
đối tượng mềm có thể cho ra tín hiệu phản hồi yếu hoặc không có phản hồi .Một đối

tượng ở một góc cân đối thì mới có thể phản hồi tín hiệu một chiều cho cảm biến
nhận.
 Vùng phát hiện của SRF05:
Nếu ngưỡng để phát hiện ra đối tượng được đặt quá gần cảm biến thì sóng âm phản
hồi sẽ rơi vào điểm mù.Còn nếu ngưỡng này đặt ở một khoảng cách quá lớn thì sẽ
không thể thu được sóng âm phản xạ do bị triệt tiêu bởi nhiễu.
Vùng phát hiện của SRF05 nằm trong khoảng 1 mét chiều rộng và không quá 4 mét
xa.
3.Giới thiệu về LCD
3.1 Chức năng chân LCD
Số Chân Tên Chức Năng
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với
GND của mạch điều
khiển
2 Vdd Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này
với VCC=5V của mạch
điều khiển
3 Vee Điểu khiển độ tuơng phản của LCD
4 RS Chân chọn thanh ghi (Register select). Nối chân RS với logic
“0” (GND) hoặc logic
“1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của
LCD (ở chế độ “ghi” -
write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” -
read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR
bên trong LCD.
5 R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với
logic “0” để LCD hoạt
động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc

6 E Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh
chỉ được chấp nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to-low transition) của tín
hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi
phát hiện cạnh lên (low-
to-high transition) ở chân E và được LCD giữ ở bus đến khi nào
chân E xuống mức
thấp.
7-14 BD0-BD7 Tám đường của bus dữ liệu dùng để trao đổi thông tin với
MPU. Có 2 chế độ sử
dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit
MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7
Chi tiết sử dụng 2 giao thức này được đề cập ở phần sau
3.2 Sơ đồ khối LCD
3.2.1 Các thanh ghi
Chíp HD44780 có 2 thanh ghi quan trọng.
Thanh ghi IR: để điều khiển LCD. Nguời dùng phải ra lệnh thông qua đuờng bus tín hiệu,
mỗi lệnh đuợc nhà cung cấp qui định rõ rang. Người dung chỉ việc cung cấp địa chỉ lệnh bằng
cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp
HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó
Thanh ghi DR dung để chứa dữ liệu 8 bit để ghi vao RAM DDRAM hoặc CG RAM. Hoặc
dung để chứa dữ liệu từ hai vùng RAM gửi ra MPU. Nghĩa là, khi MPU ghi thông tin vào
DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc

khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội
củaHD44780 sẽ được chuyển ra DR để truyền cho MPU.
3.2.2 Cờ báo bận BF
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian
để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao
tiếp với bên ngoài và bật cờ BF(thông qua chân DB7 khi có thiết lập RS=0, R/W=1) lên để
báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó sẽ đặt cờ BF lại mức 0.
3.2.3 Bộ đếm địa chỉ AC
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM và
CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo kiểu
rẽ nhánh. Khi một địa chỉlệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2
vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã được bao hàm trong mã lệnh.
Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị và nội dung
của AC được xuất ra cho MPU thông qua DB0-DB6 khi có thiết lập RS=0 và R/W=1 (xem
bảng tóm tắt RS - R/W).
Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà được cập nhật
sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiển thị, bạn phải delay một
khoảng tADDkhoảng 4uS-5uS (ngay sau khi BF=1) trước khi nạp dữ liệu mới. Xem thêm
hình bên dưới
3.2.4 Vùng RAM hiển thị DDRAM
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là một ô kí tự trên
màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ hiển thị tại vị trí tương
ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp. Hình sau đây sẽ trình bày rõ
hơn mối liên hệ này
Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những vùng RAM
còn lại không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích.
Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo mã HEX
3.2.5 Vùng ROM chứa kí tự CGROM: Character Generator ROM
Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự, và định địa
chỉ bằng 8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự kiểu 5x10 (tổng cộng

là 240 thay vì 28= 256 mẫu kí tự). Người dùng không thể thay đổi vùng ROM này.
3.2.6 Vùng RAM chứa kí tự đồ họa CGRAM: (Character Generator RAM)
Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để người dùng có
thể tạo các mẫu kí tự đồ họa riêng. Tuy nhiên dung lượng vùng này rất hạn chế: Ta chỉ có thể
tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh. Để ghi vào CGRAM, hãy xem
hình 6 bên dưới
Chương II: Thiết kế mạch
1. Phân tích yêu cầu đề tài
“Cảm biến “ trong tiếng anh gọi là sensor xuất phát từ chữ sense tức là cảm nhận. Từ
ngàn xưa người tiền sử đã nhờ vào các giác quan xúc giác để cảm nhận, tìm hiểu đặc
điểm của thế giới tự nhiên và học cách sử dụng những hiểu biết đó nhằm mục đích khai
thác thế giưới xung quanh phục vụ cho cuộc sống của họ.

Trong thời đại phát triển của khoa học và kĩ thuật ngày nay con người không chỉ dựa
vào các cơ quan xúc giác của cơ thể để kám phá thế giới. các chức năng xúc giác để
nhận biết các vật thể hiện tượng xảy ra trong thiên nhiên được tăng cường nhờ các phát
triển dụng cụ dung để đô lường và phân tích mà ta gọi là cảm biến.
Cảm biến được định nghĩa như các thiết bị dung để biến đổi các ddaij lượng vật lý và
các đại lượng không điện cần đo thành các đại lượng điện có thể đo được( như dòng
điện,điện thế,điẹn dung , trở kháng…). Nó là thành phần quan trọng nhất trong các thiết
Khối cảm biến siêu âm SRF04 Khối điều khiển ATMEGA8 Khối hiển thị LCD
bị đo hay trong các hệ thống điều khiển tự động . có thể nói: nguyên lý hoạt động của
một cảm biến, trong hiều trường hợp thục tế cũng chính là nguyên lý của phép đo hay
của phương pháp điều khiển tự dộng.
Đã từ lâu cảm biến đã được sử dụng như những bộ phận để cảm nhận và phát hiện,
nhưng chỉ từ vài chục năm trở lại đây chúng mới thể hiện rõ vai trò quan trọng trong các
hoạt động của con người. Nhờ những thành tựu mới của khoa học và công nghệ trong
lĩnh vực vật liệu, thiết bị điện tử và tin học, các cảm biến đã được giảm thiểu kích thước,
cải thiện tính năng và ngày càng mở rộng phạm vi ứng dụng. giườ đây không có một
lĩnh vực nào mà ở đó không sử dụng các cảm biiến. chúng có mặt trong các hệ thống tự

động phức tạp, người máy, kiểm tra chất lượng sản phẩm, tiế kiệm năng lượng, chống ô
nhiễm môi trường. Cảm biến cũng được sử dụng rộng rãi trong lĩnh vực giao thông vận
tải, hang tiêu dung, bảo quản thực phẩm,ô tô, trò chơi điện tử…
Một trong các ứng ụng rất dộng rãi và phổ biến đó là cảm biến vị trí và dịch chuyển.
Vì việc kiểm tra vị trí và dịch chuyển dống vai trò raats quan trọng đối với hoạt động
của nhiều máy móc,công cụ. Hơn nữa, một số đại lượng vật lý có thể đo được thông qua
việc xác định sự dịch chuyển của một vật chịu tác động của đại lượng vật lý đó.
Có nhiều phương pháp để xác định vị trí và dịch chuyển. trong phạm vi môn học,
chúng ta có thể thiết kế được một mạch điện tử đơn giản để đo khoang cách, sử dụng
cảm biến siêu âm. Để làm mạch này cần thiết kế được 3 phần chính : bộ phận cảm biến -
bộ phận xử lý - bộ phận hiển thị.
2. Xây dựng sơ đồ khối của mạch
3 khối chính
3. Phân tích chức năng,thông số kĩ thuật từng khối
 Khối cảm biến siêu âm SRF04
(giới thiệu mục I.2)
 Khối điều khiển ATMEGA8
(giới thiệu mục I.1)
 Khối hiển thị LCD
(giới thiệu mục I.3)
 Khối nguồn
Cung cấp nguồn cho mạch
 Khối cảnh báo
Cảnh báo khi đối tượng không nằm trong khoảng cách an toàn hoặc vận tốc vật lớn
quá mức.
4. Xây dựng sơ đồ nguyên lý toàn mạch
5. Mạch in
6. Đo đạc,kiểm tra,đánh giá chất lượng của mạch
Mạch chạy ổn định,ngoài việc đo được khoảng cách còn đo được vận tốc chuyển động
của vật nếu vật chuyển động(mở rộng).

Chương III: Lập trình và mô phỏng
1. Thuật toán đo khoảng cách:
2. Thuật toán đo vận tốc
3. Lưu đồ chương trình chính
3.1 Các biến sử dụng trong chương trình
 mod (char): biến chọn chế độ
- mod = 1: đo khoảng cách
- mod = 2: đo vận tốc
- mod = 3: set khoảng cách an toàn
 count (int): lưu giá trị đếm của TIMER0 đặc trưng cho độ rộng xung echo do
cảm biến siêu âm trả về
 count_pre (int): tương tự count, sử dụng trong mod 2
 overflow (char): đếm số lần tràn của TIMER0 khi độ rộng xung trả về vượt quá
giới hạn đếm của TIMER0.
 alert (char): giới hạn khoảng cách [mm] gây ra báo động
 limit (int): tương tự alert, nhưng tính theo độ rộng xung
3.2 Các ngoại vi
 Cảm biến siêu âm SRF04
- Nhận xung trigger từ ATMEGA8 kích hoạt đo
- Trả về xung echo tỉ lệ với khoảng cách đo được
 Button 1: nút bấm set mod hoạt động (gây ra ngắt ngoài INT1)
 Button 2: thay đổi biến alert
 Loa và đèn cảnh báo
 LCD
3.3 Lưu đồ
3.3.1 Chương trình chính
3.3.2 Các chương trình ngắt
a) Ngắt tràn TIMER0
b) Ngắt ngoài INT0 (do xung echo SRF04 trả về gây ra)
c) Ngắt ngoài INT1 (do button1 được bấm)

4. Giải thích công thức
4.1 Chuyển đổi từ giá trị đếm của TIMER sang khoảng cách
Theo datasheet SRF04, nếu chu kì đém của TIMER là T = 1us thì khoảng
cách tính theo cm là:
TIMER0 của ATMEGA8 được khởi tạo với chu kì đếm T1 = 32 us
 count1 = count / 32
 count = count1 * 32
thay vào (1) ta có d = 32 * count1 / 58 [cm]
 d = 16 * count1 / 29 [cm] = 160 * count1 / 29 [mm]
16 * count1 / 3
4.2 Chuyển đổi giá trị đếm của TIMER sang tốc độ
Tương tự ta có :
d = 16 * | count – count_pre|
Chương IV: Kết luận
d = 16 * count / 3
 Ưu điểm
- khoảng cách mà cảm biến có thể phát hiện lên tới 1m.
- sóng phản hồi không phụ thuộc vào màu sắc,bề mặt của vật thể hay tính chất phản xạ
ánh sang của đối tượng.
- tín hiệu đáp ứng của cảm biến analog là tỉ lệ tuyến tính với khoảng cách. Điều này đặc
biệt lí tưởng cho các ứng dụng như theo dõi các mức vật chất, mức độ chuyển động của
đối tượng.
- mạch điện tử đơn giản, xử lý tín hiệu dễ ràng.
 Nhược điểm
- Cảm biến siêu âm yêu cầu đối tượng có một diện tích bề mặt tối thiểu (phụ thuộc vào
từng loại cảm biến)
- Sóng phản hồi mà cảm biến siêu âm nhận được có thể chịu ảnh hưởng của sóng âm
thanh tạp âm
- Cảm biến siêu âm yêu cầu một khoảng thời gian sau mỗi lần sóng phát đi để sẵn sàng
nhận sóng phản hồi. Kết quả nhìn chung chậm hơn các cảm biến khác

- Cảm biến siêu âm có giưới hạn khoảng cách phát hiện nhỏ nhất.
-S thay đổi của môi trường như nhiệt độ (vận tốc âm thanh phụ thuộc vào nhiệt độ),áp
suất, sự chuyển động không đều của không khí, bụi bẩn bay trong không khí gây ảnh
hưởng đến kết quả đo.
Nhiệt độ của bề mặt đối tượng làm ảnh hưởng đến phạm vi hoạt động của cảm biến, làm
méo dạng sóng ,làm cho khoảng cách phát hiện ngắn lại và kết quả không chính xác.
- Bề mặt phẳng phản hồi năng lượng của sóng siêu âm tốt hơn mặt gồ ghề,tuy nhiên bề
mặt trơng phẳng lại có đòi hỏi khắt khe về vị trí góc tạo thành giữa cảm biến và mặt
phẳng đối tượng.
Chương V: Tài liệu tham khảo
www.atmel.com/
datasheets / LCD /
/>

×