MỞ ĐẦUNgày nay, sự phát triển mạnh mẽ của khoa học đời sống, cuộc sống của con người đã thay đổi ngày một tốt hơn, với những trang thiết bị hiện đại phục vụ trong công cuộc công nghiệp h
Trang 1ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 3
ĐỀ TÀI: XE DÒ VÀ DI CHUYỂN THEO LINE
Sinh viên thực hiện : TRẦN CHÁNH HOÀNG
NGUYỄN VĂN VIỆT
Giảng viên hướng dẫn : TS HUỲNH NGỌC THỌ
Đà nẵng, ngày 1 tháng 8 năm 2020
Trang 2ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỒ ÁN CƠ SỞ 1
ĐỀ TÀI: XE DÒ VÀ DI CHUYỂN THEO LINE
Đà Nẵng, ngày 1 tháng 8 năm 2020
Trang 3MỞ ĐẦU
Ngày nay, sự phát triển mạnh mẽ của khoa học đời sống, cuộc sống của con người đã thay đổi ngày một tốt hơn, với những trang thiết bị hiện đại phục vụ trong công cuộc công nghiệp hóa, hiện đại hóa Đặc biệt góp phần không nhỏ đó là ngành kĩ thuật điện – điện tử trong sự nghiệp xây dựng đất nước Những thiết bị điện, điện tử được phát triển và ứng dụng rộng rãi trong đời sống hàng ngày Từ những thời gian đầu phát triển vi xử lý đã cho thấy sự
ưu việt của nó và cho tới ngày nay tính ưu việt đó ngày càng được khẳng định thêm Những thành tựu của nó đã có thể biến được những cái tưởng chừng như không thể thành những cái có thể, góp phần nâng cao đời sống vật chất
và tinh thần cho con người
Để góp phần làm sáng tỏ hiệu quả của những ứng dụng trong thực tế của môn vi điều khiển, sau một thời gian học tập được các thầy cô trong khoa giảng dạy về các kiến thức chuyên ngành, cùng với sự nỗ lực của bản thân,
chúng em đã “ Thiết kế mô hình xe dò và di chuyển theo line” nhưng do
thời gian, kiến thức và kinh nghiệm của chúng em còn có hạn nên sẽ không thể tránh khỏi những sai sót Chúng em rất mong được sự giúp đỡ và tham khảo ý kiến của thầy cô và các bạn nhằm đóng góp phát triển thêm đề tài
Trang 4
LỜI CẢM ƠN
Chúng em xin cảm ơn đến Huỳnh Ngọc Thọ đã nhiệt tình hướng dẫn và giúp đỡ chúng em hoàn thành đề tài này Chúng em xin chân thành cảm ơn ban giám hiệu, văn phòng khoa và các thầy cô bộ môn đã tận tình giảng dạy và trang
bị những kiến thức cơ bản, cần thiết cho chúng em trong quá trình học tập tại trường Xin cảm ơn tất cả các bạn trong lớp đã đóng góp ý kiến cho đề tài này Mặc dù đã rất cố gắng, nhưng trong một khoảng thời gian cho phép, cũng như hạn chế về mặt kiến thức của chúng em nên đề tài này không thể tránh khỏi nhiều thiếu sót Chính vì vậy, chúng em rất mong nhận được sự góp ý của các thầy giáo, cô giáo cũng như của bạn bè để hoàn thành đề tài này tốt hơn.
Trang 5NHẬN XÉT
(Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6
MỤC ĐÍCH Chương 1 Giới thiệu 9
1.1 Tổng quan 9
1.2 Mục đích đề tài 9
1.3 Phương pháp nghiên cứu 9
1.4 Yêu cầu hệ thống 9
1.4.1 Yêu cầu phần mềm 9
1.4.2 Yêu cầu phần cứng 9
1.5 Cấu trúc 10
Chương 2 Giới thiệu Arduino và các thành phần của mạch 11
2.1 Giới thiệu về ARDUINO 11
2.1.1 Sơ lược về Arduino UNO R3 11
2.1.2 Một vài thông số của Arduino UNO R3 12
2.1.3 Cổng kết nối với Arduino UNO R3 12
2.2 Giới thiệu về mạch điều khiển L298N 13
2.2.1 Sơ lược về L298N 13
2.2.2 Thông số kỹ thuật của mạch điều khiển động cơ L298N 13
2.2.3 Tóm tắt các chức năng các chân của L298N 14
2.3 Cảm biến thu phát hồng ngoại 14
2.3.1 Giới thiệu 14
2.3.2 Thông số kỹ thuật 15
2.3.3 Nguyên lý hoạt động 15
Chương 3 Lập trình và mô phỏng 16
3.1 Lập trình cho Arduino UNO R3 16
3.1.1 Hướng dẫn lập trình Arduino UNO R3 16
3.1.2 Source Code Arduino cho mạch 17
3.2 Mô phỏng 19
3.3 Kết quả thực hiện 20
Chương 4 Kết luận và Hướng phát triển 21
4.1 Ưu- nhược điểm 21
4.2 Hướng phát triển đề tài 21
Trang 7DANH MỤC HÌNH
Hình 1 Mô hình mạch ARDUINO UNO R3 10
Hình 2 Sơ đồ các cổng kết nối Arduino UNO R3 11
Hình 3 Các chân của L298N 13
Hình 4 Mạch cảm biến thu phát hồng ngoại 14
Hình 5 Giao diện Arduino IDE 15
Hình 6 Mô phỏng hoạt động của xe dò line 18
Hình 7 Mô hình xe dò line 19
Trang 8Chương 1 Giới thiệu
1.1 Tổng quan
Robot đã ra đời rất sớm thay thế con người làm những việc nặng nhọc và độc hại Trong thời đại công nghiệp hiện nay, robot ngày càng được ứng dụng rộng rãi trong sản xuất cũng như trong đời sống Do yêu cầu ngày càng cao và phức tạp, robot cần có sự thay đổi linh hoạt và đáp ứng nhanh, nhất là mobile robot
Mobile robot là một loại robot có khả năng tự dịch chuyển, tự vận động có khả năng hoàn thành công việc được giao Trong đó robot dò line là loại robot có thể tự xác định vị trí tương đối của mình và di chuyển bám theo một quỹ đạo(line
từ, line màu) đã định sẵn
Hiện nay, robot dò line đã và đang được ứng dụng rộng rãi và ngày càng hoàn thiện trong lĩnh vực thăm dò đại dương, tự hành trên không, trong các môi trường kho bãi, nhà xưởng để vận chuyển hàng hóa thay con người hoặc dùng để nghiên cứu kỹ thuật trong các cuộc thi ở các quy mô khác nhau
1.2 Mục đích đề tài
Robot dò line vừa có nhiều ứng dụng trong thực tế vừa dễ dàng để sinh viên vận dụng những kiến thức tiếp thu được trên giảng đường vào nó Với những kết cấu cơ khí đơn giản nhưng lại có thể kết hợp được với khá nhiều thành phần điện tử(encoder, sensor xác định đường line, sensor đo khoảng cách, ) nên những Robot này rất phù hợp để sinh viên học tập và nghiên cứu thêm về Vi điều điều một cách cụ thể
1.3 Phương pháp nghiên cứu
Tham khảo qua các tài liệu trên Internet đồng thời giải quyết những vẫn đề trên các nhóm cộng đồng Arduino để hoàn thành sản phẩm 1 cách tốt nhất
1.4 Yêu cầu hệ thống
1.4.1 Yêu cầu phần mềm
Thiết kế được xe dò đường, mạch giao tiếp xe chạy được
1.4.2 Yêu cầu phần cứng
Xe chạy đúng đường, chạy với tốc độ ổn định nhất mà xe có thể đạt được
Trang 91.5 Cấu trúc
Cấu trúc của xe gồm:
- Hai bánh xe được nối với hai motor truyền động cho xe
- Một bánh xe chuyển động
- Hai cục pin 18650 Lion
- Một giá đỡ pin 18650
- Một công tắc nguồn
- Một bộ khung xe
- Hai cảm biến hồng ngoại
- Một module điều khiển động cơ L298
- Một mạch Arduino UNO R3
- Dây cái và dây đực
Trang 10Chương 2 Giới thiệu Arduino và các thành phần
của mạch
2.1 Giới thiệu về ARDUINO
2.1.1 Sơ lược về Arduino UNO R3
Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường nói tới chính là dòng Arduino UNO Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3)
Hình 1 Mô hình mạch ARDUINO UNO R3
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,…
Trang 112.1.2 Một vài thông số của Arduino UNO R3
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
2.1.3 Cổng kết nối với Arduino UNO R3
Hình 2 Sơ đồ các cổng kết nối Arduino UNO R3
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển
ATmega328 (mặc định thì các điện trở này không được kết nối)
Trang 12Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi
bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên
board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác
2.2 Giới thiệu về mạch điều khiển L298N
2.2.1 Sơ lược về L298N
Module điều khiển động cơ (Motor Driver) sử dụng chip cầu H L298N giúp điều khiển tốc độ và chiều quay của động cơ DC một cách dễ dàng, ngoài ra module L298N còn điều khiển được 1 động cơ bước lưỡng cực Mạch cầu H của
IC L298N có thể hoạt động ở điện áp từ 5V đến 35V
Module L298N có tính hợp một IC nguồn 78M05 để tạo ra nguồn 5V để cung cấp cho các thiết bị khác
2.2.2 Thông số kỹ thuật của mạch điều khiển động cơ L298N
● Driver: L298N tích hợp hai mạch cầu H
● Điện áp điều khiển: +5V ~ +35V
● Dòng tối đa cho mỗi cầu H: 2A
● Điện áp tín hiệu điều khiển: +5V ~ +7V
● Dòng tín hiệu điều khiển: 0 ~ 36mA
● Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
● Nhiệt độ vận hành: -25 ℃~ +130 ℃
Trang 132.2.3 Tóm tắt các chức năng các chân của L298N
- 4 chân INPUT: IN1, IN2, IN3, IN4 được nối lần lượt với các chân 5, 7, 10, 12 của L298 Đây là các chân nhận tín hiệu điều khiển
- 4 chân OUTPUT: OUT1, OUT2, OUT3, OUT4 (tương ứng với các chân
INPUT) được nối với các chân 2, 3, 13, 14 của L298 Các chân này sẽ được nối với động cơ
- Hai chân ENA và ENB dung để điều khiển các mạch cầu H trong L298 Nếu ở mức logic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt động, nếu ở mức logic “0” thì mạch cầu H không hoạt động
Điều khiển chiều quay với L298:
-Khi ENA = 0: Động cơ không quay với mọi đầu vào
-Khi ENA = 1:
+ INT1 = 1; INT2 = 0: động cơ quay thuân
+ INT1 = 0; INT2 = 1: động cơ quay nghịch
+ INT1 = INT2: động cơ dừng ngay tức thì
(tương tự với các chân ENB, INT3, INT4)
Hình 3 Các chân của L298N
Trang 142.3 Cảm biến thu phát hồng ngoại
2.3.1 Giới thiệu
Module cảm biến một cặp truyền và nhận tia hồng ngoại Tia hồng ngoại phát
ra từ led phát với một tần số nhất định, khi phát hiện hướng truyền có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi so sánh, đèn báo hiệu sẽ sáng lên, đồng thời đầu cho tín hiệu số đầu ra Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V Độ nhạy sáng của cảm biến được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử dụng Module cảm biến có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại vật và dò đường
2.3.2 Thông số kỹ thuật
● Module phát hiện vật cản trong khoảng cách từ 2 - 30cm
● Góc phát hiện: 35°
● Khi phát hiện vật cản, tín hiệu đầu ra OUT ở mức thấp và đèn led màu xanh sáng
● Có thể điều chỉnh khoảng cách bằng biến trở Chỉnh chiết áp để tăng khoảng cách theo chiều kim đồng hồ, và ngược lại để giảm khoảng cách
● Cổng ra OUT có thể điều khiển trực tiếp 1 Rơ le 5V hoặc cổng IO của MCU
● Điện áp cung cấp: 3 - 5V DC
● Dòng điện tiêu thụ: 23 mA (3,3V), 43 mA (5V)
2.3.3 Nguyên lý hoạt động
Module Thu Phát Hồng Ngoại V1 được tích hợp bộ phát hồng ngoại và bộ thu hồng ngoại Bộ phát hồng ngoại là một diode phát sáng (LED) phát ra các tia hồng ngoại Do đó, chúng được gọi là IR LED Mặc dù LED IR trông giống như một đèn LED bình thường, bức xạ phát ra từ IR LED là sóng hồng ngoại nên con người không thể nhìn thấy bằng mắt thường được Bộ thu hồng ngoại cũng được gọi là cảm biến hồng ngoại khi chúng phát hiện các tia từ bộ phát hồng ngoại Bộ thu hồng ngoại có dạng photodiode và phototransistors Photodiode hồng ngoại khác với điốt thông thường vì chúng chỉ phát hiện ra bức xạ hồng ngoại Khi led phát hồng ngoại phát ra bức xạ, nó đến được vật thể và một số bức xạ phản xạ lại led thu hồng ngoại Dựa trên cường độ thu của led thu hồng ngoại, đầu ra của cảm biến sẽ được xác định là mức cao hoặc thấp
Hình 4 Mạch cảm biến thu phát hồng ngoại
Trang 15Chương 3 Lập trình và mô phỏng
3.1 Lập trình cho Arduino UNO R3
3.1.1 Hướng dẫn lập trình Arduino UNO R3
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiring lại là một biến thể của C/C++ Một số người gọi nó là Wiring, một số
khác thì gọi là C hay C/C++ Riêng mình thì gọi nó là “ngôn ngữ Arduino”, và
đội ngũ phát triển Arduino cũng gọi như vậy Ngôn ngữ Arduino bắt nguồn từ C/ C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu Nếu học tốt chương trình Tin học 11 thì việc lập trình Arduino sẽ rất dễ thở đối với bạn
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình
Arduino được gọi là Arduino IDE (Intergrated Development Environment) như
hình dưới đây
Hình 5 Giao diện Arduino IDE
Trang 163.1.2 Source Code Arduino cho mạch
#include <AFMotor.h>
int ENA = 9; //ENA connected to digital pin 9
int ENB = 3; //ENB connected to digital pin 3
int MOTOR_A1 = 7; // MOTOR_A1 connected to digital pin 7
int MOTOR_B1 = 5; // MOTOR_B1 connected to digital pin 5
int RIGHT = A0; // RIGHT sensor connected to analog pin A0
int LEFT = A1; // LEFT sensor connected to analog pin A1
// the setup function runs once when you press reset or power the board
void setup() {
pinMode(ENA, OUTPUT); // initialize ENA pin as an output
pinMode(ENB, OUTPUT); // initialize ENB pin as an output
pinMode(MOTOR_A1, OUTPUT); // initialize MOTOR_A1 pin as an output pinMode(MOTOR_B1, OUTPUT); // initialize MOTOR_B1 pin as an output pinMode(RIGHT, INPUT); // initialize RIGHT pin as an input
pinMode(LEFT, INPUT); // initialize ENA pin as an input
}
// the loop function runs over and over again forever
void loop() {
if (analogRead(RIGHT)<=35 && analogRead(LEFT)<=35) //compare the both sensor to decide the direction
{
//MOVE FORWARD//
analogWrite(ENA, 100); // set right motors speed
analogWrite(ENB, 100); // set left motors speed
//run right motors clockwise
digitalWrite(MOTOR_A1, LOW);
//run left motors clockwise
digitalWrite(MOTOR_B1, HIGH);
}
else if (analogRead(RIGHT)<=35 && !analogRead(LEFT)<=35) //compare the both sensor to decide the direction
{
//MOVE RIGHT//
Trang 17
analogWrite(ENA, 255); //set right motors speed
analogWrite(ENB, 255); //set left motors speed
//run right motors clockwise
digitalWrite(MOTOR_A1, LOW);
//run left motors anti-clockwise
digitalWrite(MOTOR_B1, LOW);
}
else if (!analogRead(RIGHT)<=35 && analogRead(LEFT)<=35) //compare the both sensor to decide the direction
{
//MOVE-LEFT//
analogWrite(ENA, 255); //set right motors speed
analogWrite(ENB, 255); //set left motors speed
//run right motors anti-clockwise
digitalWrite(MOTOR_A1, HIGH);
//run left motors clockwise
digitalWrite(MOTOR_B1, HIGH);
}
else if (!analogRead(RIGHT)<=35 && !analogRead(LEFT)<=35) //compare the both sensor to decide the direction
{
//STOP//
analogWrite(ENA, 0); //set right motors speed
analogWrite(ENB, 0); //set left motors speed
//stop right motors
digitalWrite(MOTOR_A1, LOW);
//stop left motors
digitalWrite(MOTOR_B1, LOW);
}
}