Xem mẫu
- Trường Đại Học Bách Khoa Hà Nội
Khoa Điện Tử Viễn Thông
*************
BÀI TẬP LỚN
MÔN HỌC : KIẾN TRÚC MÁY TÍNH
Đề tài :
THIẾT KẾ ROBOT DÒ DƯỜNG
Giáo viên h ướng dẫn: Nguyễn Đức Minh
Sinh viên th ực hiện:
1. Nguyễn Thê Tr ường
L ớp : CĐĐT3
MSSV: C0920321
2. Vũ Vi ệt Hoàng
L ớp: CĐĐT3
MSSV: C0920307
3. D ương Đình Khánh
L ớp : CĐĐT3
MSSV: C0920311
4. Doãn Văn Tr ường
L ớp: CĐĐT3
MSSV: C0920369
5. Tr ần Dăng Chi ến
L ớp: CĐĐT3
MSSV: C0820102
Hà Nội 10-2011
- MỤC LỤC
Lời nói đầu
……………………………………………………………………………..
Phần I : Giới thiệu đề tài
……………………………………………………………………………..
Phần II : Cấu tạo
…………………………………………………………………….……….
Phần III: Sơ đồ khối và sơ đồ nguyên lí
…………………………………………........................................
Phần IV: Cách làm mạch và nguyên lí hoạt động của mạch
……………………………………………………………………………..
Phần V: Kết luận
……………………………………………………………………………..
- LỜI NÓI ĐẦU
Trong thời đại công nghiệp hiện nay, robot ngày càng được sử dụng phổ
biến trong sản suất cũng như trong cuộc sống con người. Robot đã có m ột v ị
trí quan trọng không thể thay thế được, nó giúp con người làm vi ệc trong
những điều kiện nguy hiểm khó khăn. Ngoài ra robot còn dung trong lĩnh vực
thám hiểm không gian, quân sự, giải trí…Lĩnh vực robot di động đang ngày
càng được sự quan tâm của các nhà nghin cứu và xã hội. Đặc biệt robot dò
đường là vấn đề thiết yếu của robot di động.
- THIẾT KẾ ROBOT DÒ ĐƯỜNG
PHẦN I: GIỚI THIỆU ĐỀ TÀI
1. Mục đích và yêu cầu
Thiết kế robot dò đường đi theo một đường đen vẽ sẵn.
Phần II: Cấu tạo
Vật liệu – linh kiện
1.
. 2 x động cơ một chiều (DC motor )
. 4 x quang trở (3kOhm - 150kOhm)
. 4 x led trắng
. 4 x diode ( ở đây em thay bằng led )
. 1 x IC ATmega32
. 1 x IC LM324
. 1 x IC L293
. 12 x R10k
. 1 x thạch anh 12MHz
. băng dính
. giấy
. Nguồn 9Vol
- Các đặc điểm của hệ vi xử lý ATmega32:
2.
Vi điều khiển (VĐK) là một hệ vi xử lý được tổ chức trong một chíp. Nó bao
gồm:
+ Bộ vi xử lý
+Giao diện SPI đồng bộ.
+ Có 40 chân
+ Có thể ghi xoá được 100,000 lần
+ Có 1024 Bytes EEPROM.
+ Dải tần số hoạt động từ 0MHz đến 16Mhz
+ Có 4 port xuất nhập (I/O) 8 bit
+ Có 2 Kbyte SRAM
+ Điện áp sử dụng 4.5V-5.5V
Hình2.2.1 : Sơ đồ chân của ATmega32
- Hình 2.2.2 : Sơ đồ khối của ATmega32
+ GND(chân 11 và chân 31): Chân nối với 0V.
+ VCC(chân 10): Chân nối với 5V.
+ AVCC(chân 30) và AREF(chân 32): Chân điện thế so sánh nối với 5V.
+ Port A ( chân 33- 40), PortB ( chân 1-8), PortC ( chân 22-29) và PortD
(chân 14-21) : là các chân vào ra của vi xử lí.
- + RST ( chân 9)
Ngõ vào reset. Mức cao trên chân này trong hai chu kỳ máy trong khi bộ dao
động đang hoạt động sẽ reset của ATmega32
+ XTAL1& XTAL2: Là hai ngõ vào ra của hai bộ khuyếch đại đảo của
mạch dao động, được cấu hình để dùng như một bộ tạo dao động trên chip
Hình2.2.3: Bộ tạo dao động
Các đặc điểm của cảm biến
3.
Phần phát sử dụng led siêu sáng như led trắng. Led được nối tiếp với một
điện trở hạn chế dòng 470 Ohm.
Phần thu sử dụng quang trở ( hình dưới). Điện trở phụ thuộc vào ánh
sáng chiếu vào. Khi có ánh sáng mạnh là 150K Ohm còn khi không có ánh áng
là 3K Ohm. Tín hiệu ra của phần thu xác định t ại nút k ết n ối gi ữa quang tr ở
và điện trở.
- Đặc điểm bộ Opamp LM324
4.
LM324 có khả năg khuếch đại tín hiệu từ ngõ ra ph ần thu ( ở đây là
quang trở )
- Ngõ vào bộ Opamp gồm cực (+) và (-), tín hiệu vào cực (+) lấy từ ngõ ra
của phần thu cảm biến, tín hiệu vào cực (-) lấy từ nút kết nối giữa 2 điện trở
10K Ohm mắc nối tiếp ( Cầu phân áp ). Khi đó :
+ nếu V+ > V- thì ngõ ra của Opamp là ~ 5V ( mức logic 1)
+ nếu V+ < V- thì ngõ ra của Opamp là ~ 0V ( mức logic 0)
- 5. Đặc điểm phần động cơ và IC L293B
a. Động cơ DC
Motor DC hoạt động khi ta cấp 1 điện áp DC vào motor và 1 dòng đi ện 1
chiều chạy qua motor, motor sẽ quay theo chiều đó.
Nếu chúng ta đổi chiều điện áp 1 chiều này thì motor sẽ quay ngược lại
- IC L293B
b.
Để điều khiển motor DC ta dùng IC L293b (vì ta dùng động cơ loại nhỏ).
Vs là điện áp đặt vào motor và có thể lên đến 36Vol ( ở đây ta dùng 5Vol ).
Vss là điện áp so sánh ở đây ta cho bằng 5Vol. Dòng lớn nhất của L293B là
1.2A mỗi kênh. Một IC L293B có thể dùng điều khiển được 2 motor. Đầu 2
và 7 điều khiển motor 1. Đầu 10 và 15 điều khiển động cơ 2. Diode D1 và D8
tạo 1 mạch cặp.
- PHẦN III: SƠ ĐỒ KHỐI VÀ SƠ ĐỒ NGUYÊN LÍ
SƠ ĐỒ KHỐI
1.
2. SƠ ĐỒ NGUYÊN LÍ
- IV. CÁCH LÀM MẠCH VÀ NGUYÊN TẮC HOẠT ĐỘNG CỦA MẠCH
Mạch được mắc theo sơ đồ trên.
1. Bộ phận cảm biến
- Khoảng cách giữa 2 led là 1cm và khoảng cách giữa led và quang trở là 1cm.
4 cặp led và quang trở được đặt thẳng hang với nhau. Dùng băng dính đen
quấn quanh để chống nhiễu.
Khi có ánh sáng thì điện trở quang sẽ giảm và ngược lại. Ta sử dụng led
làm nguồn sáng nên khi gặp nền trắng, ánh sang sẽ phản xạ lên quang trở
làm điện trở nó giảm xuống và khi gặp vạch đen thì ánh sang sẽ khó phản xạ
nên quang trở nhận ít ánh sáng làm điện trở tăng. Từ đó robot có thể phân biệt
được vạch đen trên nền trắng ( dưới sự hỗ trợ của IC LM324).
Ở IC LM324 thì khi điện trở ở quang trở giảm khi gặp nền trắng thì cổng
(+) cổng 3, 5, 10, 12 sẽ có điện áp cao hơn cổng (-) cổng 2, 6, 9, 13 ( cổng
2, 6, 9, 13 ta phân áp cố địnhcho nó là 2,5Vol). =>Cổng 1, 7, 8, 14 sẽ ở mức 1
= 5 Vol. Còn khi quang trở gặp vạch đen thì ngược lại cổng 1, 7, 8, 14 sẽ ở
mức 0âm = 0 Vol. Các mức 0 hoặc 1 này sẽ đưa vào ATmega32.
2. Bộ phận điều khiển động cơ
2 động cơ DC có bộ giảm tốc giúp robot dễ nhận vạch hơn. 2 động cơ
được lắp ở phía sau xe và gắn 1 chân ở phía trước.
2 động cơ được điều khiển bởi IC L293B
- 3. Bộ phận xử lí
a.Các chân PORT
Vi xử lí nhận tín hiệu từ IC LM324 ở các PORTB.0, PORTB.1, PORTB.2,
PORTB.3 và xuất ra các PORTA.0, PORTA.1, PORTA.2, PORTA.3 để điều
khiển động cơ tiến hay lùi.
Code
a.
#include
#include
- // Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out
Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0
State0=0
PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In
Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T
State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
- // OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
- MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
while (PINB.0==1&&PINB.1==0&&PINB.2==0&&PINB.3==1)
// khong lech
{
PORTA=0b00001001; // di thang
delay_ms(10);
}
while
(PINB.0==0&&PINB.0==0&&PINB.2==1&&PINB.3==1) //lech
trai 1
{
PORTA=0b00001011;
delay_ms(10); // trai tien , phai dung
}
while
(PINB.0==0&&PINB.1==0&&PINB.2==0&&PINB.3==1) // lech
trai 2
{
PORTA=0b00001010; // trai tien, phai lui
delay_ms(10);
}
while (PINB.0==1&&PINB.1==1&&PINB.2==0&&PINB.3==0)
// lech phai 1
{
- PORTA=0b00001101; // trai dung, phai tien
delay_ms(10);
}
while (PINB.0==1&&PINB.1==0&&PINB.2==0&&PINB.3==0)
// lech phai 2
{
// trái tiến , phải lùi
PORTA=0b00000101;
delay_ms(10);
}
while (PINB.0==1&&PINB.1==1&&PINB.2==1&&PINB.3==1)
// het duong
// quay đầu
PORTA=0b00000101;
delay_ms(10);
}
}
Phần V: Tổng kết
- Sau khi hoàn thành mạch này, em đã nắm được một số kĩ thuật cơ b ản
của phương pháp thiết kế mạch điện tử bằng phần proteus và giúp chúng em
hiểu sâu và rõ hơn cấu tạo của vi xử lý ATmega32 cũng như cách xử lý các
câu lệnh của AVR. Giúp chúng em có nhiều kinh nghiệm th ực t ế thú v ị. Nh ờ
sự hướng dẫn của thầy giáo bọn em cũng có những kết quả nhất đ ịnh v ề
thiết kế và cách làm robot đơn giản và nạp code cho vi xử lý.
Với sự cố gắng của cả nhóm cùng với sự giúp đỡ nhiệt tình của th ầy
Nguyễn Đức Minh, chúng em đã hoàn thành đề tài đáp ứng đủ yêu c ầu và
đúng thời hạn. Tuy nhiên không tránh khỏi một vài thiếu sót chúng em mong
nhận được sự bổ xung góp ý từ thầy cùng các bạn để đề tài này được hoàn
thiện thêm..Em xin chân thành cảm ơn.
TÀI LIỆU THAM KHẢO
nguon tai.lieu . vn