Bài tập lớn Thiết kế robot dò dường

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.

docx21 trang | Chia sẻ: oanh_nt | Lượt xem: 3122 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Bài tập lớn Thiết kế robot dò dường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 . 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: 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 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 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) Đặc điểm phần động cơ và IC L293B Độ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 Để đ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 KHỐI ĐIỀU KHIỂN ĐỘNG CƠ KHỐI XỬ LÝ TRUNG TÂM (ATmega32) KHỐI CẢM BIẾN KHỐI NGUỒN 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. 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. 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 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 #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 { PORTA=0b00000101; // trái tiến , phải lùi delay_ms(10); } while (PINB.0==1&&PINB.1==1&&PINB.2==1&&PINB.3==1) // het duong PORTA=0b00000101; // quay đầu 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 Các trang web datasheetcatalogue.com, diendandientu.com, hocavr.com, google.com..... Tài liệu hướng dẫn làm bài tập lớn của khoa.