ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÀI TẬP LỚN HỆ THỐNG VI XỬ LÝ ELT3048 2 Đề tài ROBOT DÒ LINE, TÍCH HỢP CẢM BIẾN NHIỆT ĐỘ, CẢNH BÁO CHÁY Nhóm thực hiện 1 19020563 Nguyễn Ngọc Khang 2 19020558 Bùi Ngọc Huy 3 19020612 Nguyễn Ngọc Sơn 4 19020516 Nguyễn Hữu Đạt Giảng viên hướng dẫn 1 Nguyễn Ngọc An 2 Phạm Xuân Lộc MỤC LỤC Giới thiệu tổng quan 2 Thiết kế và thi công mô hình robot 2 Tổng quan về phần cứng của Robot 2 Lựa chọn thiết bị 3 Lựa chọn động cơ 3 Lựa chọn cảm biến 4 Lựa chọn v.
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ BÀI TẬP LỚN HỆ THỐNG VI XỬ LÝ ELT3048 Đề tài: ROBOT DỊ LINE, TÍCH HỢP CẢM BIẾN NHIỆT ĐỘ, CẢNH BÁO CHÁY Nhóm thực hiện: 19020563 Nguyễn Ngọc Khang 19020558 Bùi Ngọc Huy 19020612 Nguyễn Ngọc Sơn 19020516 Nguyễn Hữu Đạt Giảng viên hướng dẫn: Nguyễn Ngọc An Phạm Xuân Lộc MỤC LỤC I II Giới thiệu tổng quan Thiết kế thi cơng mơ hình robot Tổng quan phần cứng Robot 2 Lựa chọn thiết bị a Lựa chọn động b Lựa chọn cảm biến c Lựa chọn vi xử lý cho Robot Thiết kế mạch điện tử III a Mạch cảm biến hồng ngoại b Module hạ áp c Mạch điều khiển động 10 d Mạch hiển thị LCD 11 e Vi điều khiển Arduino Uno 12 Thuật toán điều khiển Cơ chế di chuyển, dò line 12 12 a Cơ chế dò line 12 b Cơ chế di chuyển 14 c Cơ chế ngắt 15 Đọc giá trị nhiệt độ qua truyền thông UART, lưu vào nhớ EEPROM 15 Hiển thị liệu LCD 16 Cảm biến khí ga, phát cháy 17 IV I Kết luận 18 Kết đạt 18 Các chức sử dụng PIC 18 Hướng phát triển 19 Giới thiệu tổng quan - Robot dị line loại Robot có khả theo đường vẽ có sẵn vật cản, đồ để Robot nhận biết di chuyển - Robot dò line ứng dụng nhỏ, sở để phát triển dự án lớn tối tân Có thể kể đến loại Robot vận chuyển cơng nghiệp, Robot dị đường tránh vật cản, - Robot dò line kết việc ứng dụng kiến thức vi xử lý, kết nối phần cứng, thiết kế thuật toán điều khiển - Do điều kiện thực tế, Robot phải thực nhiệm vụ mơi trường độc hại, từ nhóm tích hợp thêm chức đo nhiệt độ đo khí gas từ phát cảnh báo II Thiết kế thi cơng mơ hình robot Mục trình bày thiết kế phần cứng Robot, giới thiệu sơ lược chip 16F877A, giao tiếp với EEPROM, UART phương pháp thiết kế mạch điện cho Robot Tổng quan phần cứng Robot Robot thiết kế hình gồm thành phần sau: - Khung xe nhựa mica - Động DC dùng để truyền động cho bánh xe - Hệ thống cảm biến sử dụng mơ hình cảm biến hồng ngoại, LM35, cảm biến MQ2 Mô tả Thông số Động DC 9V 90rmp Bánh xe Đường kính 65mm Khối lượng kg Chiều dài 25 cm Chiều rộng 21 cm Chiều cao 14 cm Bảng 2.1: Thông số kỹ thuật robot Hình 2.1: Sơ đồ khối hệ thống robot - Khối điều khiển gồm chip PIC16F877A có nhiệm vụ nhận tín hiệu từ cảm biến hồng ngoại, cảm biến khí gas, nhận tín hiệu từ giao tiếp UART, xuất liệu LCD thông qua giao thức I2C, xử lý thuật tốn điều khiển xuất tín hiệu điều khiển Chip xử lý ATmega328 (Kit Arduino Uno R3) nhận tín hiệu từ cảm biến đo nhiệt độ LM35 xử lý liệu, sau truyền chip PIC16F877A qua UART để in hình LCD - Khối điều khiển động gồm IC L296 IC logic có nhiệm vụ nhận tín hiệu từ khối điều khiển để điều khiển hai động - Khối nguồn sử dụng Pin Li-Poly Lựa chọn thiết bị a Lựa chọn động - Có loại động thích hợp cho đề tài động bước, động DC động Servo Các yếu tố quan trọng cần thiết để lựa chọn động động có kích thước nhỏ để phù hợp với Robot, tốc độ moment đủ lớn để truyền động cho bánh xe + Động bước có moment lớn có tốc độ thấp kích thước lớn + Động Servo có tốc độ lớn hạn chế momen quay phạm vi độ + Động DC phong phú chủng loại, có kích thước nhỏ, tốc độ moment phù hợp với yêu cầu ⇒ Như vậy, chọn động DC phù hợp Nhóm chọn động DC có thơng số sau: 9VDC, 90 Rpm b Lựa chọn cảm biến ● Cảm biến hồng ngoại để phát vật cản dò line - Dùng để dừng xe có vật cản phát line ta sử dụng loại module cảm biến hồng ngoại khác Do ảnh hưởng số yếu tố khách quan nên nhóm dùng mạch cảm biến hồng ngoại TH081 (có cặp IR tích hợp cơng tắc hành trình) để dò line mạch cảm biến hồng ngoại để dừng gặp vật cản - Hình 2.2: Cảm biến dị line TH081 ● Cảm biến khí gas để đo nồng độ khí ga - Nhóm chọn sử dụng cảm biến cảm biến khí ga MQ2 - Cảm biến khí gas MQ-2 sử dụng phần tử SnO2 có độ dẫn điện thấp khơng khí sạch, khí dễ cháy tồn tại, cảm biến có độ dẫn điện cao hơn, nồng độ chất dễ cháy cao độ dẫn điện SnO2 cao tương ứng chuyển đổi thành mức tín hiệu điện Hình 2.3: Cảm biến khí ga MQ2 ● Cảm biến LM35 để đo nhiệt độ - Do yếu tố độ tiện dụng chi phí nên nhóm chọn cảm biến đo nhiệt độ LM35 Hình 2.4: Cảm biến nhiệt độ LM35 c Lựa chọn vi xử lý cho Robot - Việc thiết kế mạch điện đóng vai trò quan trọng đến hoạt động Robot Thiết kế mạch điện phải xem xét đến nhiều yếu tố liên quan khả Robot yêu cầu tập lớn Nhóm sử dụng chip họ vi điều khiển Microchip, cụ thể chip PIC16F877A Vi xử lý cắm đế tích hợp thạch anh 20 MHz Hình 2.5: Vi điều khiển PIC16F877A ● Sơ đồ chân vào chip PIC16F877A Hình 2.6: Sơ đồ chân vào chip PIC16F877A ● Sơ đồ khối PIC16F877A Hình 2.7: Sơ đồ khối PIC16F877A - Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368x8 byte RAM nhớ liệu EEPROM với dung lượng 256x8 byte - Số PORT I/O với 33 pin I/O - Các đặc tính ngoại vi bao gồm khối chức sau: ➢ Timer0: đếm bit với chia tần số bit ➢ Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep ➢ Timer2: đếm bit với chia tần số, postscaler ➢ Hai Capture/so sánh/điều chế độ rộng xung ➢ Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C ➢ Chuẩn giao tiếp nối tiếp USART với bit địa ➢ Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR,CS bên ngồi ➢ Các đặc tính Analog: kênh chuyển đổi ADC 10 bit Hai so sánh Bên cạnh vài đặc tính khác vi điều khiển như: + Bộ nhớ Flash với khả ghi xóa 100.000 lần + Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần + Dữ liệu nhớ EEPROM lưu trữ liệu lên đến 40 năm + Khả tự nạp chương trình với điều khiển phần mềm ➢ Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân ➢ Watchdog Timer với dao động ➢ Chức bảo mật mã chương trình ➢ Chế độ Sleep ➢ Có thể hoạt động với nhiều dạng Oscillator khác Thiết kế mạch điện tử a Mạch cảm biến hồng ngoại Hình 2.8: Module cảm biến dị line TH081 Hình 2.9: Sơ đồ nguyên lý cảm biến hồng ngoại Hình 2.10: Cơ chế hoạt động cảm biến hồng ngoại - Thanh cảm biến dò line TCRT5000 + tránh vật cản Line Follower Sensor BFD-1000 thiết kế với cảm biến hồng ngoại TCRT5000 hướng xuống giúp phát line, cảm biến hồng ngoại đặt phía trước với cơng tắc hành trình báo hiệu vật cản - Thơng số kỹ thuật: + Điện áp hoạt động: 3.3~5VDC + Khoảng cách phát hiện: 0.5 ~ 40mm + Ngõ dạng tín hiệu số dễ dàng cho vi điều khiển + Có LED hiển thị ngõ cho cảm biến + Tích hợp cảm biến dò line TCRT5000, cảm biến tránh vật cản hồng ngoại công tắc hành trình báo chạm vật + Ngõ gồm chân tín hiệu cảm biến dạng số ngõ vào cấp nguồn cho thiết bị + Kích thước: 128 x 45 x 12mm b Module hạ áp Hình 2.11: Module hạ áp DC-DC XL4015 5A 4-38V - B3H15 - Mạch giảm áp DC-DC Buck XL4015 5A có chỉnh dịng sử dụng để giảm áp DC mạch giảm áp xung thơng thường, mạch tích hợp IC Opamp so sánh đầu biến trở chỉnh hạn mức dòng điện - Module hỗ trợ hạ áp từ 12V xuống 5V để nuôi vi điều khiển cảm biến, hạ xuống 9V để nuôi động DC c Mạch điều khiển động - Mạch cầu H: Hình 2.12: Mạch cầu H - Mạch cầu H mạch điện giúp đảo chiều dòng điện qua đối tượng Đối với đối tượng động DC mục đích điều khiển cho phép dịng điện qua động chạy từ A đến B từ B đến A từ giúp đảo chiều quay động - Do đối tượng điều khiển đề tài động có điện áp cơng suất nhỏ nên nhóm chọn mạch cầu H đổi chiều động IC L296 Hình 2.13: Nguyên lý hoạt động mạch cầu H 10 d Mạch hiển thị LCD Hình 2.14: LCD 1602 Có Tích Hợp Module Chuyển Đổi I2C - Module LCD I2C có tích hợp mạch điều khiển hình 16x02 giao tiếp I2C sử dụng IC điều khiển hình kí tự gồm 16 cột dòng giúp tiết kiệm dây nối với vi điều khiển (hoặc Arduino) cho khả hiển thị nhanh với nhiều chức - Mạch điều khiển dùng cho hình 16x02 Thơng thường, để điều khiển hiển thị ký tự từ vi điều khiển xuất hình 16x02 cần tới 7-8 dây nối đến chân vi điều khiển - Giao tiếp I2C sử dụng dây tín hiệu: SDA SCL giúp tiết kiệm chân vi điều khiển Tốc độ truyền liệu lên đến 400Kbps Dữ liệu truyền nhận đảm bảo tính tồn vẹn sử dụng chế phản hồi (ACK) byte liệu - Mạch hiển thị LCD có chức hiển thị nhiệt độ, cảnh báo có khí gas - Mạch chuyển đổi I2C sử dụng đến PCF8574 Trên linh kiện có biến trở để thay đổi độ tương phản ký tự hình, Jumper để bật/tắt đèn Địa mặc định Module 0x4E, thay đổi cách hàn mối nối A0 → A2 11 e Vi điều khiển Arduino Uno Hình 2.15: Arduino UNO - Arduino UNO thực chức nhận liệu từ cảm biến nhiệt độ LM35, xử lý liệu truyền vi xử lý PIC16F877A sau hiển thị qua LCD III Thuật toán điều khiển Cơ chế di chuyển, dò line - a Cơ chế dò line Cơ chế dò line thực cảm biến hồng ngoại Cảm biến hồng ngoại bao gồm đèn LED hồng ngoại riêng lẻ điốt quang hồng ngoại Ánh sáng hồng ngoại đèn LED phát chiếu vào bề mặt phản xạ trở lại Điốt quang hồng ngoại Sau đó, điốt quang tạo điện áp đầu tỷ lệ với mức phản xạ bề mặt (giá trị cao cho "bề mặt sáng" thấp cho "bề mặt tối") Ở sử dụng line đen nên giá trị cảm biến nhận line ‘0’ - Module cảm biến TH081 gồm cảm biến hồng ngoại TCRT5000 hướng xuống Line dán cho có cảm biến đặt tâm tương ứng với đường line có cảm biến nhận line Mặt khác độ rộng Line phải đủ rộng phép cảm biến bắt Line trường hợp robot bị lệch - Đầu mảng cảm biến nhận giá trị sau: 12 ● 11110 ● 11100 ● 11101 ● 11001 ● 11011 ● 10011 ● 10111 ● 00111 ● 01111 - Năm cảm biến cho phép tạo biến “error” giúp kiểm sốt vị trí robot đường Line - Xét trường hợp tối ưu, robot có cảm biến nhận Line Đầu mảng cảm biến là: 1 1, trường hợp “error” Nếu robot lệch sang trái, “error” phải tăng lên giá trị tích cực (+1) ngược lại robot di chuyển sang trái, “error” tăng lên giá trị tiêu cực (-1) Các giá trị “error” tương ứng với trạng thái cảm biến là: ● 1 1 ⇒ error = ● 1 0 ⇒ error = ● 1 1 ⇒ error = ● 1 0 ⇒ error = ● 1 1 ⇒ error = ● 0 1 ⇒ error = -1 ● 1 1 ⇒ error = -2 ● 0 1 ⇒ error = -3 ● 1 1 ⇒ error = -4 - Mảng LFSensor có phần tử sử dụng để lưu trạng thái cảm biến từ tính tốn giá trị “error” tương ứng thơng qua hàm void readLFSensors() 13 b Cơ chế di chuyển - Hình 3.1: Mô tả chế di chuyển Động điều khiển xung PWM - Ở trạng thái “error” = 0, động bánh trái bánh phải điều khiển với tốc độ tối đa (duty cycle 100%) - Ở trạng thái “error” nhỏ 0, robot bị lệch sang bên phải so với line nên robot phải quay sang trái để trở lại line Ở bánh phải quay với tốc độ tối đa (duty cycle 100%) bánh trái quay với tốc độ nhỏ - Ngược lại, trạng thái “error” lớn 0, robot bị lệch sang bên trái so với line nên robot phải quay sang trái để trở lại line Ở bánh trái quay với tốc độ tối đa (duty cycle 100%) bánh phải quay với tốc độ nhỏ - Ngồi thuật tốn PID cần phải đặt giá trị Kp, Kd, Ki phù hợp với địa hình , mơi trường nơi mà xe hoạt động để đạt giá trị tốc độ mong muốn cách nhanh ổn định - Cơ chế điều khiển PWM thực hàm: 14 void calculatePID( ) void motorPIDcontrol( ) c Cơ chế ngắt - Sử dụng cảm biến hồng ngoại đằng trước Module TH081 để phát vật cản, qua dừng động cách đặt chân Enable động ‘0’ - Trong trường hợp cảm biến hồng ngoại không hoạt động khơng đủ nhạy, nhóm sử dụng thêm cơng tắc ngắt hành trình Qua va chạm với vật cản công tắc tác động lên chân RB0 vi xử lý, đồng thời đẩy cờ T0IF lên qua Interrupt thực làm dừng hẳn động Hình 3.2: Module cảm biến dị line TH081 Đọc giá trị nhiệt độ qua truyền thông UART, lưu vào nhớ EEPROM a Cảm biến nhiệt độ - Việc đo nhiệt độ thực thông qua board Arduino Uno, nối với cảm biến nhiệt độ LM35 Đầu tiên, board thực đo giá trị hiệu điện cổng A0, thông qua hàm analogRead() Hàm trả giá trị số nguyên - 1023 tương ứng với 5V Giá trị chia cho 2.046 Kết gửi qua cổng TXD, giao thức UART, thông qua hàm Serial.write() - Lý chia số nguyên trả cho 2.046: Giá trị điện áp Max 5000mV, ứng với số nguyên 1023, tức nhiệt độ lớn đo 500 độ C Mà LM35 thay đổi độ C thay đổi 10mV → Cho số nguyên trả từ hàm analogRead(), 15 để chuyển đổi sang nhiệt độ: N / (10 * 1023 / 5000) = N / 2.046 b Trao đổi liệu với PIC16F877A - Việc trao đổi liệu thực qua giao thức UART Module USART để chế độ truyền tốc độ cao, không đồng (BRGH = 1, SYNC = 0) Để việc trao đổi xác, thiết bị cần phải có Baud Rate → Ta đặt Baud Rate 9600 bit/s → Đặt SPBRG = 129, theo công thức cho datasheet c Lưu liệu vào EEPROM - Sau lấy liệu nhiệt độ từ LM35, chúng lưu vào EEPROM, để sau lấy hiển thị LCD Data EEPROM PIC16F877A gồm có 256 nhớ, chứa byte liệu Trong chương trình, hai hàm dùng để thực trình đọc & viết vào EEPROM EEPROM_Read() EEPROM_Write() - Thao tác đọc đơn giản, hầu hết cơng đoạn VXL làm hộ Với liệu nhiệt độ, người dùng cần đặt EEPGD = 0, đưa địa nhớ vào ghi bit EEADR, cuối đặt bit RD = để đọc liệu ghi EEDATA - Với thao tác viết vào phức tạp Sau đợi cho chu kì viết trước hồn tất (bằng cách kiểm tra bit WR), người dùng chọn chế độ viết EEPGD = 0, đưa liệu địa viết vào EEDATA & EEADR Tiếp đó, người dùng thực bước: + Đặt WREN = phép ghi liệu vào EEPROM + Tắt Global Interrupt, bật, để tránh gây hỏng hóc q trình thực câu lệnh đặc biệt phía sau + Lần lượt viết 0x55 & 0xAA vào EECON2 + Đặt WR = để bắt đầu viết + Khi viết xong, bật lại Interrupt cần, ngắt WREN & WR để hồn thành q trình viết liệu vào EEPROM 16 Hiển thị liệu LCD - Dữ liệu nhiệt độ lưu vào EEPROM hiển thị bảng mạch LCD Việc giao tiếp PIC16F877A LCD thực thông qua I2C - giao thức giao tiếp tương tự UART; với linh kiện trung gian mở rộng I/O PCF8574 - giúp giảm số lượng chân cắm cần đến Cấu trúc gói tin I2C sau: - Nếu UART, cần có pin RX TX để nhận phát, I2C, có hai chân: SCL để tạo xung đồng hồ riêng cho trình truyền tin I2C, chân SDA để truyền liệu Cả đường SCL SDA mức logic không dùng đến Khi bắt đầu truyền tin, SDA hạ xuống 0, tiếp SCL hạ xuống Quá trình kết thúc ngược lại, SCL nâng lên 1, tiếp đó, SDA nâng lên Sau bit Start, bên truyền gửi bit, bit đầu địa cần đến, bit thao tác cần thực với Slave Slave so sánh địa nhận với địa mình, hạ điện áp SDA xuống 0, tương ứng với bit ACK Sau Master bắt đầu gửi liệu; Cứ byte nhận được, nhận thành công, Slave lại kéo điện áp SDA xuống chu kì đồng hồ Bên nhận nhận bit ứng với khoảng thời gian SCL mức điện áp Cảm biến khí ga, phát cháy - Thực thông qua module ADC, với linh kiện hỗ trợ cảm biến khí gas MQ2 - Dữ liệu trả chân RA0 PIC, khí gas lớn 300 ppm phát cảnh báo - Phát cảnh báo cách hú còi in hình LCD cảnh báo mức khí gas có khơng gian hoạt động (Warning + giá trị khí gas đo được) - Sử dụng hàm xuất ADC_read() liệu LCD để in “Warning + //giá trị khí gas đo được” 17 IV Kết luận Kết đạt - Đề tài thiết kế thành cơng phần điện, phần khí, chương trình phần mềm cho robot - Hình 4.1 Hình ảnh robot thực tế Xét yếu tố xây dựng nhóm thực chưa thực yếu tố sau: + Thiết kế thành công phần mềm điều khiển cho robot, sử dụng số tính vi xử lý PIC (chi tiết mục 2) + Thiết kế phần khí phần điện có kích thước nhỏ, phức tạp nhiên tính thẩm mỹ chưa cao Các chức sử dụng PIC - PWM: Dùng để điều khiển động xe - UART: Trao đổi liệu nhiệt độ đo từ LM35 bảng mạch Arduino Uno PIC16F877A - EEPROM: Lưu liệu nhiệt độ thu từ UART để hiển thị hình LCD - I2C: Giao tiếp PIC16F877A hình LCD, thông qua PCF8574 - ADC: Đọc liệu từ cảm biến khí ga MQ2 - Timer: Timer2 sử dụng cho PWM, Timer để tạo delay, Timer để ngắt 18 - Interrupt: Cảm biến hồng ngoại phát vật cản dừng động Khi cảm biến hồng ngoại phát vật cản không hoạt động, lúc cơng tắc hành trình xe hoạt động thời điểm xe chạm vào vật cản, từ cờ ngắt TMR0IF đẩy lên tạo Interrupt Hướng phát triển - Sau thực xong đề tài, thiếu sót giới hạn nhóm sinh viên thực đề tài hạn chế mặt kỹ thuật thiết bị, để đề tài hoạt động tốt, mang tính thích nghi cao mơi trường thực tế cần phải phát triển số vấn đề sau: + Về phần cứng (phần điện cảm biến) dùng cảm biến siêu âm để dò chướng ngại vật thay cho việc dùng cảm biến hồng ngoại + Kết hợp với cảm biến siêu âm để xây dựng thuật toán tránh vật cản line + Tùy thuộc vào ứng dụng môi trường hoạt động mà thay đổi khối cảm biến (nhiệt độ khí gas) để phục vụ mục đích khác + Gửi cảnh báo nguy hiểm qua sóng vơ tuyến RF, wifi, GSM 19 ... thông qua giao thức I2C, xử lý thuật tốn điều khiển xuất tín hiệu điều khiển Chip xử lý ATmega328 (Kit Arduino Uno R3) nhận tín hiệu từ cảm biến đo nhiệt độ LM35 xử lý liệu, sau truyền chip PIC16F877A... cách hàn mối nối A0 → A2 11 e Vi điều khiển Arduino Uno Hình 2.15: Arduino UNO - Arduino UNO thực chức nhận liệu từ cảm biến nhiệt độ LM35, xử lý liệu truyền vi xử lý PIC16F877A sau hiển thị qua... khả Robot yêu cầu tập lớn Nhóm sử dụng chip họ vi điều khiển Microchip, cụ thể chip PIC16F877A Vi xử lý cắm đế tích hợp thạch anh 20 MHz Hình 2.5: Vi điều khiển PIC16F877A ● Sơ đồ chân vào chip