Xem mẫu

  1. 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
  2. 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 ……………………………………………………………………………..
  3. 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.
  4. 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
  5. 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
  6. 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í.
  7. + 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ở.
  8. Đặ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ở )
  9. 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)
  10. 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
  11. 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.
  12. PHẦN III: SƠ ĐỒ KHỐI VÀ SƠ ĐỒ NGUYÊN LÍ SƠ ĐỒ KHỐI 1. 2. SƠ ĐỒ NGUYÊN LÍ
  13. 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
  14. 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
  15. 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
  16. // 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
  17. // 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;
  18. 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 {
  19. 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
  20. 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