Tải bản đầy đủ (.doc) (128 trang)

Nghiên cứu, chế tạo mạch cảnh báo và xử lý tốc độ Robot tự hành khi gặp chướng ngại vật

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 (3.21 MB, 128 trang )

MỤC LỤC

MỤC LỤC..............................................................................................................1
DANH MỤC BẢNG BIỂU........................................................................................13
DANH MỤC HÌNH ...............................................................................................25
LỜI CẢM ƠN.......................................................................................................37
DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT.......................................................38
LỜI MỞ ĐẦU.......................................................................................................41
CHƯƠNG 1:TỔNG QUAN VỀ CẢM BIẾN.................................................................41
1.1.Tổng quan về cảm biến.................................................................................41
1.1.1.Khái niệm...................................................................................................41
1.1.2.Phân loại....................................................................................................42
1.1.2.1.Cảm biến tích cực....................................................................................42
Hình 1.1: Hiệu ứng nhiệt điện..........................................................................43
Hình 1.2: Hiệu ứng áp điện..................................................................................43
Hình 1.3: Hiệu ứng cảm ứng điện từ....................................................................43
Hình 1.4: Hiệu ứng quang điện............................................................................44
Hình 1.5: Hiệu ứng Hall.......................................................................................44
1.1.2.2.Cảm biến thụ động..................................................................................46
Hình 1.6: Sơ đồ ứng dụng Cds.............................................................................46
1.2.Một số vấn đề khi thiết kế và sử dụng cảm biến..............................................46
1.2.1.Các đại lượng ảnh hưởng tới cảm biến.........................................................46
1.2.2.Sai số của phép đo.....................................................................................47
1.2.3.Độ nhạy của cảm biến................................................................................47
1.2.4.Độ nhanh- thời gian hồi đáp........................................................................48
1.2.5.Giới hạn sử dụng........................................................................................48
1.3.Giới thiệu chung về các loại cảm biến siêu âm.................................................48
1.3.1.Một số loại cảm biến siêu âm:.....................................................................48
1



Hình 1.7: Một số loại cảm biến siêu âm...............................................................48
1.3.2.Cảm biến siêu âm và nguyên tắc TOF..........................................................48
1.3.3.Tầm quét của cảm biến siêu âm..................................................................49
1.3.4.Thông số kỹ thuật củatừng loại loại cảm biến siêu âm..................................52
Hình 1.10: Cảm biến siêu âm SRF05.....................................................................52
Bảng 1.1: Thông số kỹ thuật của SRF05...............................................................52
Hình 1.11: Cảm biến siêu âm SRF10.....................................................................53
Bảng 1.2: Thông số kỹ thuật của SRF10...............................................................53
Hình 1.12: Cảm biến siêu âm SRF235...................................................................54
Bảng 1.3: Thông số kỹ thuật của SRF235.............................................................54
Hình 1.13: Cảm biến siêu âm SRF08.....................................................................54
Bảng 1.4: Thông số kỹ thuật của SRF08...............................................................55
1.3.5.Một số ứng dụng của cảm biến siêu âm.......................................................56
1.3.5.1.Dùng trong đo chất lỏng..........................................................................56
Hình 1.14: Ứng dụng của cảm biến siêu âm đo chất lỏng......................................56
1.3.5.2.Đo độ cao, hay vị trí của phiến gỗ trên dây chuyền....................................56
Hình 1.15: Ứng dụng của cảm biến siêu âm đo khoảng cách, độ cao, vị trí.............56
1.3.5.3.Phát hiện chiều cao..................................................................................57
Hình 1.16: Ứng dụng của cảm biến siêu âm Phát hiện chiều cao............................57
1.3.5.4.Phát hiện xe............................................................................................57
Hình 1.17: Ứng dụng của cảm biến siêu âm Phát hiện xe......................................57
1.4.Cảm biến siêu âm SRF05...............................................................................58
1.4.1.Khái niệm...................................................................................................58
Hình 1.18: Cảm biến siêu âm SRF05.....................................................................58
1.4.2.Các chế độ của SRF05................................................................................58
1.4.2.1.Chế độ 1-Tách biệt kích hoạt và phản hồi (Tương ứng với SRF04)..............58
Hình 1.19: Chế độ 1 của SRF05...........................................................................59
1.4.2.2.Chế độ 2 – Dùng một chân cho cả kích hoạt và phản hồi...........................59
Hình 1.21: Giản đồ định thời SRF05, chế độ 2.......................................................60
2



1.4.3.Tính toán khoảng cách................................................................................60
Hình 1.22:Thay đổi chùm tia và độ rộng chùm SRF05...........................................62
1.4.4.Hoạt động phát và nhận phản hồi sóng âm cơ bản của SRF05......................62
Hình 1.23: Nguyên tắc cơ bản của sonar..............................................................63
Hình 1.24: Một số đặc điểm khác của cảm biến siêu âm SRF05..............................63
Hình 1.25: Vùng phát hiện của SRF05..................................................................64
CHƯƠNG II: Các Họ Vi Điều Khiển và LCD Hiển Thị..............................................65
2.1.Tổng quan về họ vi điều khiển AVR................................................................65
Hình
2.1

đồ
khối
cấu
trúc
vi
điêu
khiển
AVR
2.2.2.Cấu
trúc
bộ
nhớ

cổng
vào
ra
A. Cấu trúc bộ nhớ..............................................................................................69

2.2.3.Cách hoạt động..........................................................................................74
2.2.4 Bộ định thời của AT mega8 ........................................................................76
2.2.5.Các bộ phận ngoại vi khác...........................................................................86
2.3.LCD VÀ HIỂN THỊ..........................................................................................93
2.3.1.Phân loại LCD.............................................................................................93
Hình 2.6: Hình dạng thực tế LCD 16x2.................................................................94
2.3.2.Giới thiệu sơ đồ chân LCD 16x2...................................................................94
Bảng 2.19: Sơ đồ chân LCD 16x2.........................................................................94
Hình 2.7: Sơ đồ chân LCD 16x2...........................................................................95
2.3.3.Tập lệnh của LCD.......................................................................................95
2.3.3.1.Khả năng hiển thị của LCD.......................................................................95
2.3.3.2.Tập lệnh của LCD....................................................................................96
Bảng 2.20: Mã lệnh của LCD................................................................................96
Bảng 2.21: Tập lệnh của LCD...............................................................................96
2.3.4.Nguyên tắc hiển thị kí tự trên LCD...............................................................97
2.3.4.1.Nguyên lý hoạt động của LCD...................................................................97
2.3.4.2.Nguyên tắc hiển thị kí tự trên LCD............................................................98
2.3.4.3.Các bit viết tắt trong mã lệnh LCD............................................................98
Bảng 2.22: Các bit viết tắt trong mã lệnh LCD......................................................98
3


CHƯƠNG 3: THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH DÙNG CẢM BIẾN SIÊU ÂM.........100
3.1.Ý tưởng thiết kế..........................................................................................100
3.2.Xây dựng sơ đồ khối tổng quát.....................................................................100
Hình 3.1:Sơ đồ khối tổng quát...........................................................................101
3.3.Nguyên lý hoạt động của mạch....................................................................101
3.3.1.Nguyên tắc chung.....................................................................................101
3.3.2.Nguyên lý hoạt động chi tiết của mạch.......................................................102
Hình 3.2: Sơ đồ hoạt động chi tiết của mạch.......................................................103

3.4.Sơ đồ mạch nguyên lý.................................................................................104
Hình 3.3: Sơ đồ nguyên lý mạch........................................................................105
3.5.Chức năng từng khối...................................................................................105
3.5.1.Khối Nguồn..............................................................................................106
Hình 3.4: Khối nguồn........................................................................................106
3.5.2.Khối cảm biến siêu âm SRF05....................................................................106
Hình 3.5: Khối cảm biến siêu âm SRF05.............................................................107
Hình 3.6: Giản đồ định thời SRF05, chế độ 1............................108
3.5.3.Khối xử lý.................................................................................................108
3.5.4.Khối hiển thị.............................................................................................109
Hình 3.8: Khối hiển thị dùng LCD 16x2...............................................................110
3.5.5.Khối Động cơ............................................................................................110
Hình 3.9: Khối Động Cơ.....................................................................................111
3.6.Thiết kế mạch in và thi công........................................................................111
3.6.1.Sơ đồ mạch in..........................................................................................112
Hình 3.10: Sơ đồ mạch in đo khoảng cách dùng cảm biến siêu âm.......................112
3.6.2.Lắp ráp và hoàn thiện mạch......................................................................113
3.6.2.1.Chuẩn bị................................................................................................113
3.6.2.2.Lắp ráp.................................................................................................113
3.6.3. Hình ảnh sản phẩm thực tế......................................................................113
Hình 3.10: Sản Phẩm thực tế.............................................................................114
KẾT LUẬN.........................................................................................................115
4


CHƯƠNG TRÌNH ĐIỀU KHIỂN............................................................................117
/*****************************************************......................117
Project :............................................................................................................117
Version :...........................................................................................................117
Date


: 17/04/2016..........................................................................................117

Author : NeVaDa..............................................................................................117
Company :........................................................................................................117
Comments:.......................................................................................................117
Chip type

: ATmega8L.........................................................................117

Program type

: Application.....................................................................117

AVR Core Clock frequency: 8,000000 MHz...........................................................117
Memory model

: Small............................................................................117

External RAM size

: 0...................................................................................117

Data Stack size

: 256.................................................................................117

*****************************************************/......................117
#include <mega8.h>.........................................................................................117
#include <delay.h>...........................................................................................117

#include <alcd.h>.............................................................................................117
#include <stdio.h>...........................................................................................118
#include <stdlib.h>...........................................................................................118
#define tien 1.................................................................................................118
#define lui

0..................................................................................................118

#define DC1L PORTB.0......................................................................................118
#define DC1R PORTD.7.....................................................................................118
#define DC2L PORTD.6.....................................................................................118
#define DC2R PORTD.5.....................................................................................118

5


#define TRIGER

PORTD.3.......................................................................118

#define ECHO

PIND.2...........................................................................118

unsigned int distance; // Bien luu gia tri thoi gian...............................................118
char range_ok;
unsigned int range;

// Bien luu thông tin phép do hoàn thành...........................118
// Bien luu giá tri khoang cách..........................................118


unsigned char chuoi[32];...................................................................................118
interrupt [EXT_INT0] void ext_int0_isr(void).......................................................118
{......................................................................................................................119
distance=TCNT0;

// Ðoc gia tri Timer 0..................................................119

range=(int)(distance)*13/6; // Tinh toan kc ra cm.............................................119
TCNT0 = 0;
TCCR0 = 0x00;

// Xóa du lieu trong Timer 0...........................................119
// Ngung Timer0, Timer 0 chi hoat dong khi MCU yêu cau

do khoang cách.................................................................................................119
range_ok=1;

// hoàn thành phép do..................................................119

}......................................................................................................................119
void StartRange()..............................................................................................119
{......................................................................................................................119
TRIGER=1;.......................................................................................................119
delay_ms(10);

// Tao 1 xung it nhat 10ms...........................................119

TRIGER=0;


// Bat dau goi lenh do do..............................................119

while(!(ECHO));

// Ðoi chan echo keo len muc cao.................................119

TCCR0=0x05;

// Cho phep Timer 0 hoat dong....................................119

}......................................................................................................................119
void hienthi(unsigned int so)..............................................................................119
{......................................................................................................................119
lcd_gotoxy(0,0);................................................................................................119

6


sprintf(&chuoi[0],"kc:%3d ",so);.......................................................................120
lcd_puts(chuoi);................................................................................................120
}......................................................................................................................120
void dc_trai (unsigned char toc_do1,unsigned char chieu1)..................................120
{......................................................................................................................120
OCR1AH=0;......................................................................................................120
OCR1AL=toc_do1;.............................................................................................120
if (chieu1 == tien)

{DC1L=0;DC1R=1;}.........................................................120

if (chieu1 == lui )


{DC1L=1;DC1R=0;}...........................................................120

}......................................................................................................................120
void dc_phai (unsigned char toc_do2,unsigned char chieu2)................................120
{......................................................................................................................120
OCR1BH=0;......................................................................................................120
OCR1BL=toc_do2;.............................................................................................120
if (chieu2 == tien)

{DC2L=0;DC2R=1;}.........................................................120

if (chieu2 == lui )

{DC2L=1;DC2R=0;}...........................................................120

}......................................................................................................................120
void stop_trai().................................................................................................120
{......................................................................................................................120
DC1L=0;DC1R=0;.............................................................................................121
OCR1AH=0;......................................................................................................121
OCR1AL=0;.......................................................................................................121
}......................................................................................................................121
void stop_phai()................................................................................................121
{......................................................................................................................121
DC2L=0;DC2R=0;.............................................................................................121

7



OCR1BH=0;......................................................................................................121
OCR1BL=0;.......................................................................................................121
}......................................................................................................................121
void stop_robot()...............................................................................................121
{......................................................................................................................121
stop_trai();.......................................................................................................121
stop_phai();......................................................................................................121
}......................................................................................................................121
void setup(void)................................................................................................121
{......................................................................................................................121
PORTB=0x00;...................................................................................................121
DDRB=0x0f;......................................................................................................122
PORTC=0x00;...................................................................................................122
DDRC=0x00;.....................................................................................................122
PORTD=0x00;...................................................................................................122
DDRD=0xF8;.....................................................................................................122
// Timer/Counter 0 initialization..........................................................................122
// Clock source: System Clock............................................................................122
// Clock value: Timer 0 Stopped.........................................................................122
TCCR0=0x00;...................................................................................................122
TCNT0=0x00;...................................................................................................122
// Timer/Counter 1 initialization..........................................................................122
// Clock source: System Clock............................................................................122
// Clock value: Timer1 Stopped..........................................................................122
// Mode: Normal top=0xFFFF.............................................................................122
// OC1A output: Discon......................................................................................122

8



// OC1B output: Discon......................................................................................122
// Noise Canceler: Off........................................................................................122
// Input Capture on Falling Edge........................................................................122
// Timer1 Overflow Interrupt: Off.......................................................................122
// Input Capture Interrupt: Off...........................................................................123
// Compare A Match Interrupt: Off.....................................................................123
// Compare B Match Interrupt: Off.....................................................................123
TCCR1A=0xA1;.................................................................................................123
TCCR1B=0x0C;.................................................................................................123
TCNT1H=0x00;.................................................................................................123
TCNT1L=0x00;..................................................................................................123
ICR1H=0x00;....................................................................................................123
ICR1L=0x00;.....................................................................................................123
OCR1AH=0x00;.................................................................................................123
OCR1AL=0x00;.................................................................................................123
OCR1BH=0x00;.................................................................................................123
OCR1BL=0x00;.................................................................................................123
// Timer/Counter 2 initialization..........................................................................123
// Clock source: System Clock............................................................................123
// Clock value: Timer2 Stopped..........................................................................123
// Mode: Normal top=0xFF.................................................................................123
// OC2 output: Disconnected..............................................................................123
ASSR=0x00;......................................................................................................123
TCCR2=0x00;...................................................................................................123
TCNT2=0x00;...................................................................................................124
OCR2=0x00;.....................................................................................................124

9



// External Interrupt(s) initialization....................................................................124
// INT0: On.......................................................................................................124
// INT0 Mode: Falling Edge................................................................................124
// INT1: Off.......................................................................................................124
GICR|=0x40;.....................................................................................................124
MCUCR=0x02;...................................................................................................124
GIFR=0x40;......................................................................................................124
// Timer(s)/Counter(s) Interrupt(s) initialization..................................................124
TIMSK=0x00;....................................................................................................124
// USART initialization........................................................................................124
// USART disabled.............................................................................................124
UCSRB=0x00;...................................................................................................124
// Analog Comparator initialization......................................................................124
// Analog Comparator: Off.................................................................................124
// Analog Comparator Input Capture by Timer/Counter 1: Off..............................124
ACSR=0x80;.....................................................................................................125
SFIOR=0x00;....................................................................................................125
// ADC initialization............................................................................................125
// ADC disabled.................................................................................................125
ADCSRA=0x00;.................................................................................................125
// SPI initialization.............................................................................................125
// SPI disabled..................................................................................................125
SPCR=0x00;......................................................................................................125
// TWI initialization............................................................................................125
// TWI disabled.................................................................................................125
TWCR=0x00;....................................................................................................125

10



// Alphanumeric LCD initialization.......................................................................125
// Connections specified in the...........................................................................125
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:.....................125
// RS - PORTC Bit 5...........................................................................................125
// RD - PORTC Bit 4...........................................................................................125
// EN - PORTC Bit 3...........................................................................................125
// D4 - PORTC Bit 2...........................................................................................126
// D5 - PORTC Bit 1...........................................................................................126
// D6 - PORTC Bit 0...........................................................................................126
// D7 - PORTB Bit 5...........................................................................................126
// Characters/line: 16.........................................................................................126
lcd_init(16);......................................................................................................126
// Global enable interrupts.................................................................................126
#asm("sei")......................................................................................................126
}......................................................................................................................126
void main(void).................................................................................................126
{......................................................................................................................126
setup();............................................................................................................126
range_ok=0;.....................................................................................................126
while (1)...........................................................................................................126
{......................................................................................................................126
StartRange();....................................................................................................126
hienthi(range);..................................................................................................126
if

(range>=100)...........................................................................................126

{......................................................................................................................126
lcd_gotoxy(0,0);................................................................................................126


11


sprintf(&chuoi[0],"Sai so 10 %");......................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if

(range>=50&&range<100)........................................................................127

{......................................................................................................................127
lcd_gotoxy(0,0);................................................................................................127
sprintf(&chuoi[0],"Sai so 5 %");........................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if

(range<50)...............................................................................................127

{......................................................................................................................127
lcd_gotoxy(0,0);................................................................................................127
sprintf(&chuoi[0],"Sai so 2 %");........................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if

(range>=30)

{dc_trai(250,1);dc_phai(250,1);}...............................127


else if (range>=25&&range<30) {dc_trai(200,1);dc_phai(200,1);}.....................127
else if (range>=20&&range<25) {dc_trai(150,1);dc_phai(150,1);}.....................127
else if (range>=15&&range<20) {dc_trai(100,1);dc_phai(100,1);}.....................127
else

stop_robot();...................................................................127

}......................................................................................................................127
}......................................................................................................................128
TÀI LIỆU THAM KHẢO.......................................................................................128

12


DANH MỤC BẢNG BIỂU
MỤC LỤC..............................................................................................................1
DANH MỤC BẢNG BIỂU........................................................................................13
DANH MỤC HÌNH ...............................................................................................25
LỜI CẢM ƠN.......................................................................................................37
DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT.......................................................38
LỜI MỞ ĐẦU.......................................................................................................41
CHƯƠNG 1:TỔNG QUAN VỀ CẢM BIẾN.................................................................41
1.1.Tổng quan về cảm biến.................................................................................41
1.1.1.Khái niệm...................................................................................................41
1.1.2.Phân loại....................................................................................................42
1.1.2.1.Cảm biến tích cực....................................................................................42
Hình 1.1: Hiệu ứng nhiệt điện..........................................................................43
Hình 1.2: Hiệu ứng áp điện..................................................................................43
Hình 1.3: Hiệu ứng cảm ứng điện từ....................................................................43
Hình 1.4: Hiệu ứng quang điện............................................................................44

Hình 1.5: Hiệu ứng Hall.......................................................................................44
1.1.2.2.Cảm biến thụ động..................................................................................46
Hình 1.6: Sơ đồ ứng dụng Cds.............................................................................46
1.2.Một số vấn đề khi thiết kế và sử dụng cảm biến..............................................46
1.2.1.Các đại lượng ảnh hưởng tới cảm biến.........................................................46
1.2.2.Sai số của phép đo.....................................................................................47
1.2.3.Độ nhạy của cảm biến................................................................................47
1.2.4.Độ nhanh- thời gian hồi đáp........................................................................48
1.2.5.Giới hạn sử dụng........................................................................................48
1.3.Giới thiệu chung về các loại cảm biến siêu âm.................................................48
1.3.1.Một số loại cảm biến siêu âm:.....................................................................48
13


Hình 1.7: Một số loại cảm biến siêu âm...............................................................48
1.3.2.Cảm biến siêu âm và nguyên tắc TOF..........................................................48
1.3.3.Tầm quét của cảm biến siêu âm..................................................................49
1.3.4.Thông số kỹ thuật củatừng loại loại cảm biến siêu âm..................................52
Hình 1.10: Cảm biến siêu âm SRF05.....................................................................52
Bảng 1.1: Thông số kỹ thuật của SRF05...............................................................52
Hình 1.11: Cảm biến siêu âm SRF10.....................................................................53
Bảng 1.2: Thông số kỹ thuật của SRF10...............................................................53
Hình 1.12: Cảm biến siêu âm SRF235...................................................................54
Bảng 1.3: Thông số kỹ thuật của SRF235.............................................................54
Hình 1.13: Cảm biến siêu âm SRF08.....................................................................54
Bảng 1.4: Thông số kỹ thuật của SRF08...............................................................55
1.3.5.Một số ứng dụng của cảm biến siêu âm.......................................................56
1.3.5.1.Dùng trong đo chất lỏng..........................................................................56
Hình 1.14: Ứng dụng của cảm biến siêu âm đo chất lỏng......................................56
1.3.5.2.Đo độ cao, hay vị trí của phiến gỗ trên dây chuyền....................................56

Hình 1.15: Ứng dụng của cảm biến siêu âm đo khoảng cách, độ cao, vị trí.............56
1.3.5.3.Phát hiện chiều cao..................................................................................57
Hình 1.16: Ứng dụng của cảm biến siêu âm Phát hiện chiều cao............................57
1.3.5.4.Phát hiện xe............................................................................................57
Hình 1.17: Ứng dụng của cảm biến siêu âm Phát hiện xe......................................57
1.4.Cảm biến siêu âm SRF05...............................................................................58
1.4.1.Khái niệm...................................................................................................58
Hình 1.18: Cảm biến siêu âm SRF05.....................................................................58
1.4.2.Các chế độ của SRF05................................................................................58
1.4.2.1.Chế độ 1-Tách biệt kích hoạt và phản hồi (Tương ứng với SRF04)..............58
Hình 1.19: Chế độ 1 của SRF05...........................................................................59
1.4.2.2.Chế độ 2 – Dùng một chân cho cả kích hoạt và phản hồi...........................59
Hình 1.21: Giản đồ định thời SRF05, chế độ 2.......................................................60
14


1.4.3.Tính toán khoảng cách................................................................................60
Hình 1.22:Thay đổi chùm tia và độ rộng chùm SRF05...........................................62
1.4.4.Hoạt động phát và nhận phản hồi sóng âm cơ bản của SRF05......................62
Hình 1.23: Nguyên tắc cơ bản của sonar..............................................................63
Hình 1.24: Một số đặc điểm khác của cảm biến siêu âm SRF05..............................63
Hình 1.25: Vùng phát hiện của SRF05..................................................................64
CHƯƠNG II: Các Họ Vi Điều Khiển và LCD Hiển Thị..............................................65
2.1.Tổng quan về họ vi điều khiển AVR................................................................65
Hình
2.1

đồ
khối
cấu

trúc
vi
điêu
khiển
AVR
2.2.2.Cấu
trúc
bộ
nhớ

cổng
vào
ra
A. Cấu trúc bộ nhớ..............................................................................................69
2.2.3.Cách hoạt động..........................................................................................74
2.2.4 Bộ định thời của AT mega8 ........................................................................76
2.2.5.Các bộ phận ngoại vi khác...........................................................................86
2.3.LCD VÀ HIỂN THỊ..........................................................................................93
2.3.1.Phân loại LCD.............................................................................................93
Hình 2.6: Hình dạng thực tế LCD 16x2.................................................................94
2.3.2.Giới thiệu sơ đồ chân LCD 16x2...................................................................94
Bảng 2.19: Sơ đồ chân LCD 16x2.........................................................................94
Hình 2.7: Sơ đồ chân LCD 16x2...........................................................................95
2.3.3.Tập lệnh của LCD.......................................................................................95
2.3.3.1.Khả năng hiển thị của LCD.......................................................................95
2.3.3.2.Tập lệnh của LCD....................................................................................96
Bảng 2.20: Mã lệnh của LCD................................................................................96
Bảng 2.21: Tập lệnh của LCD...............................................................................96
2.3.4.Nguyên tắc hiển thị kí tự trên LCD...............................................................97
2.3.4.1.Nguyên lý hoạt động của LCD...................................................................97

2.3.4.2.Nguyên tắc hiển thị kí tự trên LCD............................................................98
2.3.4.3.Các bit viết tắt trong mã lệnh LCD............................................................98
Bảng 2.22: Các bit viết tắt trong mã lệnh LCD......................................................98
15


CHƯƠNG 3: THIẾT KẾ MẠCH ĐO KHOẢNG CÁCH DÙNG CẢM BIẾN SIÊU ÂM.........100
3.1.Ý tưởng thiết kế..........................................................................................100
3.2.Xây dựng sơ đồ khối tổng quát.....................................................................100
Hình 3.1:Sơ đồ khối tổng quát...........................................................................101
3.3.Nguyên lý hoạt động của mạch....................................................................101
3.3.1.Nguyên tắc chung.....................................................................................101
3.3.2.Nguyên lý hoạt động chi tiết của mạch.......................................................102
Hình 3.2: Sơ đồ hoạt động chi tiết của mạch.......................................................103
3.4.Sơ đồ mạch nguyên lý.................................................................................104
Hình 3.3: Sơ đồ nguyên lý mạch........................................................................105
3.5.Chức năng từng khối...................................................................................105
3.5.1.Khối Nguồn..............................................................................................106
Hình 3.4: Khối nguồn........................................................................................106
3.5.2.Khối cảm biến siêu âm SRF05....................................................................106
Hình 3.5: Khối cảm biến siêu âm SRF05.............................................................107
Hình 3.6: Giản đồ định thời SRF05, chế độ 1............................108
3.5.3.Khối xử lý.................................................................................................108
3.5.4.Khối hiển thị.............................................................................................109
Hình 3.8: Khối hiển thị dùng LCD 16x2...............................................................110
3.5.5.Khối Động cơ............................................................................................110
Hình 3.9: Khối Động Cơ.....................................................................................111
3.6.Thiết kế mạch in và thi công........................................................................111
3.6.1.Sơ đồ mạch in..........................................................................................112
Hình 3.10: Sơ đồ mạch in đo khoảng cách dùng cảm biến siêu âm.......................112

3.6.2.Lắp ráp và hoàn thiện mạch......................................................................113
3.6.2.1.Chuẩn bị................................................................................................113
3.6.2.2.Lắp ráp.................................................................................................113
3.6.3. Hình ảnh sản phẩm thực tế......................................................................113
Hình 3.10: Sản Phẩm thực tế.............................................................................114
KẾT LUẬN.........................................................................................................115
16


CHƯƠNG TRÌNH ĐIỀU KHIỂN............................................................................117
/*****************************************************......................117
Project :............................................................................................................117
Version :...........................................................................................................117
Date

: 17/04/2016..........................................................................................117

Author : NeVaDa..............................................................................................117
Company :........................................................................................................117
Comments:.......................................................................................................117
Chip type

: ATmega8L.........................................................................117

Program type

: Application.....................................................................117

AVR Core Clock frequency: 8,000000 MHz...........................................................117
Memory model


: Small............................................................................117

External RAM size

: 0...................................................................................117

Data Stack size

: 256.................................................................................117

*****************************************************/......................117
#include <mega8.h>.........................................................................................117
#include <delay.h>...........................................................................................117
#include <alcd.h>.............................................................................................117
#include <stdio.h>...........................................................................................118
#include <stdlib.h>...........................................................................................118
#define tien 1.................................................................................................118
#define lui

0..................................................................................................118

#define DC1L PORTB.0......................................................................................118
#define DC1R PORTD.7.....................................................................................118
#define DC2L PORTD.6.....................................................................................118
#define DC2R PORTD.5.....................................................................................118

17



#define TRIGER

PORTD.3.......................................................................118

#define ECHO

PIND.2...........................................................................118

unsigned int distance; // Bien luu gia tri thoi gian...............................................118
char range_ok;
unsigned int range;

// Bien luu thông tin phép do hoàn thành...........................118
// Bien luu giá tri khoang cách..........................................118

unsigned char chuoi[32];...................................................................................118
interrupt [EXT_INT0] void ext_int0_isr(void).......................................................118
{......................................................................................................................119
distance=TCNT0;

// Ðoc gia tri Timer 0..................................................119

range=(int)(distance)*13/6; // Tinh toan kc ra cm.............................................119
TCNT0 = 0;
TCCR0 = 0x00;

// Xóa du lieu trong Timer 0...........................................119
// Ngung Timer0, Timer 0 chi hoat dong khi MCU yêu cau

do khoang cách.................................................................................................119

range_ok=1;

// hoàn thành phép do..................................................119

}......................................................................................................................119
void StartRange()..............................................................................................119
{......................................................................................................................119
TRIGER=1;.......................................................................................................119
delay_ms(10);

// Tao 1 xung it nhat 10ms...........................................119

TRIGER=0;

// Bat dau goi lenh do do..............................................119

while(!(ECHO));

// Ðoi chan echo keo len muc cao.................................119

TCCR0=0x05;

// Cho phep Timer 0 hoat dong....................................119

}......................................................................................................................119
void hienthi(unsigned int so)..............................................................................119
{......................................................................................................................119
lcd_gotoxy(0,0);................................................................................................119

18



sprintf(&chuoi[0],"kc:%3d ",so);.......................................................................120
lcd_puts(chuoi);................................................................................................120
}......................................................................................................................120
void dc_trai (unsigned char toc_do1,unsigned char chieu1)..................................120
{......................................................................................................................120
OCR1AH=0;......................................................................................................120
OCR1AL=toc_do1;.............................................................................................120
if (chieu1 == tien)

{DC1L=0;DC1R=1;}.........................................................120

if (chieu1 == lui )

{DC1L=1;DC1R=0;}...........................................................120

}......................................................................................................................120
void dc_phai (unsigned char toc_do2,unsigned char chieu2)................................120
{......................................................................................................................120
OCR1BH=0;......................................................................................................120
OCR1BL=toc_do2;.............................................................................................120
if (chieu2 == tien)

{DC2L=0;DC2R=1;}.........................................................120

if (chieu2 == lui )

{DC2L=1;DC2R=0;}...........................................................120


}......................................................................................................................120
void stop_trai().................................................................................................120
{......................................................................................................................120
DC1L=0;DC1R=0;.............................................................................................121
OCR1AH=0;......................................................................................................121
OCR1AL=0;.......................................................................................................121
}......................................................................................................................121
void stop_phai()................................................................................................121
{......................................................................................................................121
DC2L=0;DC2R=0;.............................................................................................121

19


OCR1BH=0;......................................................................................................121
OCR1BL=0;.......................................................................................................121
}......................................................................................................................121
void stop_robot()...............................................................................................121
{......................................................................................................................121
stop_trai();.......................................................................................................121
stop_phai();......................................................................................................121
}......................................................................................................................121
void setup(void)................................................................................................121
{......................................................................................................................121
PORTB=0x00;...................................................................................................121
DDRB=0x0f;......................................................................................................122
PORTC=0x00;...................................................................................................122
DDRC=0x00;.....................................................................................................122
PORTD=0x00;...................................................................................................122
DDRD=0xF8;.....................................................................................................122

// Timer/Counter 0 initialization..........................................................................122
// Clock source: System Clock............................................................................122
// Clock value: Timer 0 Stopped.........................................................................122
TCCR0=0x00;...................................................................................................122
TCNT0=0x00;...................................................................................................122
// Timer/Counter 1 initialization..........................................................................122
// Clock source: System Clock............................................................................122
// Clock value: Timer1 Stopped..........................................................................122
// Mode: Normal top=0xFFFF.............................................................................122
// OC1A output: Discon......................................................................................122

20


// OC1B output: Discon......................................................................................122
// Noise Canceler: Off........................................................................................122
// Input Capture on Falling Edge........................................................................122
// Timer1 Overflow Interrupt: Off.......................................................................122
// Input Capture Interrupt: Off...........................................................................123
// Compare A Match Interrupt: Off.....................................................................123
// Compare B Match Interrupt: Off.....................................................................123
TCCR1A=0xA1;.................................................................................................123
TCCR1B=0x0C;.................................................................................................123
TCNT1H=0x00;.................................................................................................123
TCNT1L=0x00;..................................................................................................123
ICR1H=0x00;....................................................................................................123
ICR1L=0x00;.....................................................................................................123
OCR1AH=0x00;.................................................................................................123
OCR1AL=0x00;.................................................................................................123
OCR1BH=0x00;.................................................................................................123

OCR1BL=0x00;.................................................................................................123
// Timer/Counter 2 initialization..........................................................................123
// Clock source: System Clock............................................................................123
// Clock value: Timer2 Stopped..........................................................................123
// Mode: Normal top=0xFF.................................................................................123
// OC2 output: Disconnected..............................................................................123
ASSR=0x00;......................................................................................................123
TCCR2=0x00;...................................................................................................123
TCNT2=0x00;...................................................................................................124
OCR2=0x00;.....................................................................................................124

21


// External Interrupt(s) initialization....................................................................124
// INT0: On.......................................................................................................124
// INT0 Mode: Falling Edge................................................................................124
// INT1: Off.......................................................................................................124
GICR|=0x40;.....................................................................................................124
MCUCR=0x02;...................................................................................................124
GIFR=0x40;......................................................................................................124
// Timer(s)/Counter(s) Interrupt(s) initialization..................................................124
TIMSK=0x00;....................................................................................................124
// USART initialization........................................................................................124
// USART disabled.............................................................................................124
UCSRB=0x00;...................................................................................................124
// Analog Comparator initialization......................................................................124
// Analog Comparator: Off.................................................................................124
// Analog Comparator Input Capture by Timer/Counter 1: Off..............................124
ACSR=0x80;.....................................................................................................125

SFIOR=0x00;....................................................................................................125
// ADC initialization............................................................................................125
// ADC disabled.................................................................................................125
ADCSRA=0x00;.................................................................................................125
// SPI initialization.............................................................................................125
// SPI disabled..................................................................................................125
SPCR=0x00;......................................................................................................125
// TWI initialization............................................................................................125
// TWI disabled.................................................................................................125
TWCR=0x00;....................................................................................................125

22


// Alphanumeric LCD initialization.......................................................................125
// Connections specified in the...........................................................................125
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:.....................125
// RS - PORTC Bit 5...........................................................................................125
// RD - PORTC Bit 4...........................................................................................125
// EN - PORTC Bit 3...........................................................................................125
// D4 - PORTC Bit 2...........................................................................................126
// D5 - PORTC Bit 1...........................................................................................126
// D6 - PORTC Bit 0...........................................................................................126
// D7 - PORTB Bit 5...........................................................................................126
// Characters/line: 16.........................................................................................126
lcd_init(16);......................................................................................................126
// Global enable interrupts.................................................................................126
#asm("sei")......................................................................................................126
}......................................................................................................................126
void main(void).................................................................................................126

{......................................................................................................................126
setup();............................................................................................................126
range_ok=0;.....................................................................................................126
while (1)...........................................................................................................126
{......................................................................................................................126
StartRange();....................................................................................................126
hienthi(range);..................................................................................................126
if

(range>=100)...........................................................................................126

{......................................................................................................................126
lcd_gotoxy(0,0);................................................................................................126

23


sprintf(&chuoi[0],"Sai so 10 %");......................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if

(range>=50&&range<100)........................................................................127

{......................................................................................................................127
lcd_gotoxy(0,0);................................................................................................127
sprintf(&chuoi[0],"Sai so 5 %");........................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if


(range<50)...............................................................................................127

{......................................................................................................................127
lcd_gotoxy(0,0);................................................................................................127
sprintf(&chuoi[0],"Sai so 2 %");........................................................................127
lcd_puts(chuoi);................................................................................................127
}......................................................................................................................127
if

(range>=30)

{dc_trai(250,1);dc_phai(250,1);}...............................127

else if (range>=25&&range<30) {dc_trai(200,1);dc_phai(200,1);}.....................127
else if (range>=20&&range<25) {dc_trai(150,1);dc_phai(150,1);}.....................127
else if (range>=15&&range<20) {dc_trai(100,1);dc_phai(100,1);}.....................127
else

stop_robot();...................................................................127

}......................................................................................................................127
}......................................................................................................................128
TÀI LIỆU THAM KHẢO.......................................................................................128

24


DANH MỤC HÌNH
MỤC LỤC..............................................................................................................1

DANH MỤC BẢNG BIỂU........................................................................................13
DANH MỤC HÌNH ...............................................................................................25
LỜI CẢM ƠN.......................................................................................................37
DANH MỤC CÁC KÍ HIỆU, CÁC CHỮ VIẾT TẮT.......................................................38
LỜI MỞ ĐẦU.......................................................................................................41
CHƯƠNG 1:TỔNG QUAN VỀ CẢM BIẾN.................................................................41
1.1.Tổng quan về cảm biến.................................................................................41
1.1.1.Khái niệm...................................................................................................41
1.1.2.Phân loại....................................................................................................42
1.1.2.1.Cảm biến tích cực....................................................................................42
Hình 1.1: Hiệu ứng nhiệt điện..........................................................................43
Hình 1.2: Hiệu ứng áp điện..................................................................................43
Hình 1.3: Hiệu ứng cảm ứng điện từ....................................................................43
Hình 1.4: Hiệu ứng quang điện............................................................................44
Hình 1.5: Hiệu ứng Hall.......................................................................................44
1.1.2.2.Cảm biến thụ động..................................................................................46
Hình 1.6: Sơ đồ ứng dụng Cds.............................................................................46
1.2.Một số vấn đề khi thiết kế và sử dụng cảm biến..............................................46
1.2.1.Các đại lượng ảnh hưởng tới cảm biến.........................................................46
1.2.2.Sai số của phép đo.....................................................................................47
1.2.3.Độ nhạy của cảm biến................................................................................47
1.2.4.Độ nhanh- thời gian hồi đáp........................................................................48
1.2.5.Giới hạn sử dụng........................................................................................48
1.3.Giới thiệu chung về các loại cảm biến siêu âm.................................................48
1.3.1.Một số loại cảm biến siêu âm:.....................................................................48
25


×