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
Sơ
đồ
khối
cấu
trúc
vi
điêu
khiển
AVR
2.2.2.Cấu
trúc
bộ
nhớ
và
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
Sơ
đồ
khối
cấu
trúc
vi
điêu
khiển
AVR
2.2.2.Cấu
trúc
bộ
nhớ
và
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