Tải bản đầy đủ (.docx) (25 trang)

ROBOT DI CHUYỂN TRONG RÃNH dùng arduino ( có code và mạch in )

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.3 MB, 25 trang )

ĐỒ ÁN 2

ROBOT DI CHUYỂN TRONG RÃNH

MỤC LỤC


DANH MỤC CÁC HÌNH VẼ

DANH MỤC CÁC BẢNG BIỂU


DANH MỤC CÁC TỪ VIẾT TẮT
DC

Direct Curent

IC

Itegrated Circuit

VCC

Voltage Common Collector


ĐỒ ÁN 1

4



ĐỒ ÁN 2
Trang 5/21

CHƯƠNG 1
GIỚI THIỆU CHUNG
Trong đồ án lần này em xin giới thiệu robot di chuyển trong rãnh, robot của
em yêu cầu là di chuyển được trong đường có vách chắn 2 bên (rãnh).
Nguyên lý thiết kế robot: sử dụng sensor đo khoảng cách 2 bên hông của xe
robot, sau đó xử lí tín hiệu sensor để điều khiển xe robot có thể di chuyển.
Trong quá trình thiết kế thì em có thực hiện phần cứng là mô hình xe robot.

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 6/21

CHƯƠNG 2
TỔNG QUAN VỀ ROBOT DI CHUYỂN TRONG RÃNH
2.1

CẤU TRÚC

Cấu trúc của robot gồm:
-

Hai bánh xe sau được nối với hai motor truyền động cho xe.
Một bánh xe tự do phía trước.
Khối mạch chủ Arduino UNO R3 dùng chíp Atmega328 để tiếp nhận tín
hiệu từ cảm biến và phát lệnh cho khối mạch Diver L298N điều khiển hoạt


2.2

động của xe.
Hệ thống đo khoảng cách (sensor) gồm 2 cảm biến siêu âm.
SƠ ĐỒ KHỐI HỆ THỐNG
CẢM BIẾN

KHỐI XỬ LÍ

ĐIỀU KHIỂN ĐỘNG CƠ

BỘ NGUỒN

Hình 2.1 Sơ đồ khối hệ thống
Chức năng từng khối:
-

Khối cảm biến: Dùng 2 cảm biến siêu âm đo khỏng cách và truyền dữ liệu

-

thu được vào khối mạch xử lí.
Khối xử lí: Nhận dữ liệu từ cảm biến và phát tín hiệu cho khối mạch điều

-

khiển động cơ L298N điều khiển 2 motor bánh xe.
Khối điều khiển động cơ: nhận tín hiệu phát từ khối xử lí, điều khiển 2 motor


-

truyền động.
Khối nguồn: Sử dụng nguồn pin 12v DC trực tiếp cấp cho toàn bộ hệ thống.

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 7/21

2.3

HỆ THỐNG ĐIỀU KHIỂN

Board mạch chủ dùng chíp Atmega328

Hình 2.2 Chíp Atmega328
2.4

CẤU TẠO VÀ NGUYÊN LÍ HOẠT ĐỘNG CÁC LINH KIỆN

2.4.1 Cảm biến siêu âm (HY - SRF05)

Hình 2.3 Cảm biến siêu âm HY-SRF05

Các chân cảm biến:

ROBOT DI CHUYỂN TRONG RÃNH



ĐỒ ÁN 2
Trang 8/21

-

VCC : Đây là chân cấp nguồn cho cảm biến (nguồn 5V, nguồn càng

-

sạch cảm biến càng chính xác).
Trig : Chân này là chân phát xung để kích hoạt cảm biến hoạt động.
Echo: Chân này sẽ trả về tín hiệu xung khi sóng siêu âm phản xạ lại.
Đo độ rộng xung này ta sẽ tính ra khoảng cách từ cảm biến đến vật

-

cản.
OUT: Chân này sử dụng để lựa chọn mode hoạt động của cảm biến.
GND: Chân này cấp GND cho cảm biến.

Cảm biến siêu âm gồm có 4 phần chính:
-

Bộ phận phát và nhận sóng siêu âm
Bộ phận so sánh
Mạch phát hiện
Mạch ngõ ra

Đo rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biến

và quay trở lại. Sóng siêu âm được truyền đi trong không khí với vận tốc khoảng
343m/s.
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds - us) từ chân
Trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại
được sóng phản xạ ở pin này.
Khoảng cách đo:
-

Nhỏ nhất 2cm
Lớn nhất 450cm
Độ chính xác khi đo 0.2cm

2.4.2 Khối mạch ARDUINO UNO R3

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 9/21

Hình 2.3 Khối mạch Arduino UNO R3
Các thông số của Arduino UNO R3:
Đ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ụ

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 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

SRAM

2 KB (ATmega328)

EEPROM

1 KB (ATmega328)

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 10/21

Bảng 2.1 Thông số khối mạch Arduino UNO R3
2.4.3 Khối mạch điều khiển động cơ L298N
Sử dụng nguồn 12v DC.

Hình 2.4 Module L298N
a.

IC L298
IC L298 là một IC tích hợp nguyên khối gồm 2 mạch cầu H bên trong. Với


điện áp làm tăng công suất nhỏ như động cơ DC loại vừa…
b.

Chức năng của từng chân Module L298N
- 4 chân INPUT: IN1, IN2, IN3, IN4 là các chân nhận tín hiệu điều khiển.
- 4 chân OUTUT: 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. Chân OUT1, OUT2 nối với
motor1 và OUT3, OUT4 nối với motor2.
- Hai chân ENA và ENB dùng để điều khiển tốc độ của động cơ.
2.4.4 Động cơ Motor DC
Động cơ sử dụng nguồn 12v DC. Có sử dụng bộ giảm tốc.

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 11/21

Hình 2.5 Motor 12v DC
2.5

NGUYÊN LÝ HOẠT ĐỘNG CỦA ROBOT
Thiết kế robot di chuyển trong rãnh, mạch tổng quát gồm có 2 cảm biến siêu

âm có tác dụng đo khoảng cách 2 bên trong 1 đường rãnh dài, sau đó khoảng cách
mà cảm biến đo được sẽ đưa dữ liệu về bộ xử lí trung tâm. Bộ xử lí trung tâm khối
mạch Arduino UNO R3 có nhiệm vụ xử lí dữ liệu cảm biến truyền qua, sau khi xử lí
xong bộ xử lí trung tâm sẽ đưa dữ liệu đã xử lí và phát tín hiệu cho khối mạch điều

khiển động cơ và cuối cùng là khối mạch này sẽ quyết định sự truyền động của 2
bánh xe.

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2

2

1

Trang 12/21

3

CHƯƠNG 3
LẬP TRÌNH VÀ MÔ PHỎNG

SENSOR

3.1

LƯU ĐỒ GIẢI THUẬT

BẮT ĐẦU
RẼ PHẢI

RẼ TRÁI
KẾT THÚC


MO
DU
LE

L29
8N

CHẠY TỚI

Hình 3.1 Lưu đồ giải thuật

ROBOT DI CHUYỂN TRONG RÃNH


2

3

ĐỒ ÁN 2

1

Trang 13/21

SENSOR

Trái > Phải

Trái = Phải


Trái < Phải

Hình 3.2 Lưu đồ sensor xử lí
Giải thích lưu đồ:
Lưu đồ Hình 3.1 bắt đầu cảm biến sẽ đo khoảng cách và chờ xử lí ở hình 3.2,
sensor sẽ làm việc trong 3 trường hợp:
-

1: Nếu khoảng cách sensor trái lớn hơn khoảng cách sensor phải thì

-

xe rẽ trái.
2: Nếu khoảng cách sensor trái nhỏ hơn khoảng cách sensor phải thì

-

xe rẽ phải.
3: Nếu cả 2 sensor đo bằng khoảng cách thì xe chạy tới.

Sau khi cảm biến đo xong sẽ truyền dữ liệu về bộ xử lí (Arduino), nhận dữ
liệu xong lúc này Arduino sẽ phát tín hiệu điều khiển cho Module L298N. Lúc này
module L298N sẽ thực thi theo đúng tín hiệu mà sensor đã đo được và sẽ điều khiển
2 motor quay đúng theo yêu cầu.
3.2

MÔ PHỎNG

3.2.1 Test cảm biến siêu âm với arduino


Hình 3.3 Nối dây test cảm biến với arduino

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 14/21

Hình 3.4 Vật cản bên phía cảm biến bên trái
Hiển thị kết quả đo trên máy tính bằng phần mềm arduino.

Hình 3.5 Kết quả đo khi có vật cản bên cảm biến trái

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 15/21

Hình 3.6 Vật cản bên phía cảm biến phải

Hình 3.7 Kết quả đo khi có vật cản bên cảm biến phải

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 16/21


Hình 3.8 Vật cản 2 bên cảm biến

Hình 3.9 Kết quả đo ở 2 cảm biến

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 17/21

3.2.2 Test mạch điều khiển động cơ với arduino
Sử dụng pin 12v DC cấp nguồn cho mạch điều khiển động cơ.

Hình 3.10 Bắt đầu test mạch điều khiển động cơ

Hình 3.11 Động cơ truyền động nhờ mạch điều khiển

ROBOT DI CHUYỂN TRONG RÃNH


Motor2

Motor1
ĐỒ ÁN 2
Trang 18/21

CHƯƠNG 4
THỰC THI PHẦN CỨNG
4.1


SƠ ĐỒ THIẾT KẾ PHẦN CỨNG

Bánh xe1

Module

Hình 4.1 Sơ đồ thiết kế phần cứng
Mạch có 2 cảm biến siêu âm (Sensor1, Sensor2) có tác dụng đo khoảng cách Bánh xe2
2 bên trong đường có vách chắn 2 bên, 2 cảm biến lấy nguồn từ arduino, sau đó
khoảng cách mà cảm biến đo được sẽ đưa dữ liệu về Module Arduino. Module
Arduino có nhiệm vụ xử lí dữ liệu cảm biến truyền qua, sau khi xử lí xong sẽ đưa
dữ liệu đã xử lí và phát tín hiệu cho Module L298N khối mạch này nối với 2 motor
sẽ quyết định sự truyền động của 2 bánh xe.
4.2 TEST MÔ HÌNH
Cấp nguồn cho mô hình, tiến hành nạp code cho module arduino. Dựng vách
ngăn 2 bên cho mô hình xe robot vào khoảng giữa vách ngăn.

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 19/21

Hình 4.2 Test mô hình xe robot

Hình 4.3 Nạp code cho arduino
Tiến hành đặt xe robot vào rãnh, quá trình thực thi mô hình thực tế.

ROBOT DI CHUYỂN TRONG RÃNH



ĐỒ ÁN 2
Trang 20/21

CHƯƠNG 5
KẾT LUẬN
5.1

ƯU ĐIỂM VÀ NHƯỢC ĐIỂM
- Ưu điểm: Mạch robot di chuyển trong rãnh giúp cho việc mở rộng mô hình

kinh doanh trong lĩnh vực sáng tạo robot.
- Nhược điểm: Mạch hoạt động bằng PIN nên xảy ra tình trạng nhanh hết
nguồn, giá linh kiện trong mạch đắt, mạch chạy bền nhưng không tránh khỏi lỗi lập
trình. Tốc độ quay của mô hình ảnh hưởng bởi 2 motor.
5.2

ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN
Đồ án 2 là một bài tập lớn, một thử thách lớn đối với sinh viên, tuy vậy với

bài tập lớn này nó giúp cho sinh viên vận dụng một cách cụ thể kiến thức mà sinh
viên đã được học trong suốt quá trình học tập. Đây cũng là một cách học theo
phương pháp tự nghiên cứu tìm tòi và phát triển tư duy.
Thông qua đồ án lần này giúp em có thể vận dụng mạch Robot này thực tiễn,
còn nhỏ so với những loại Robot khác, nhưng sẽ phát triển hơn và cải tiến hơn từ
mạch nhỏ này.
Mạch nếu thêm phần điều khiển vào 2 bánh xe trước thì việc rẽ trái, rẽ phải
sẽ được tốt hơn.

ROBOT DI CHUYỂN TRONG RÃNH



ĐỒ ÁN 2
Trang 21/21

TÀI LIỆU THAM KHẢO
-

arduino.vn
mcu.banlinhkien.vn/threads/dieu-khien-dong-co-dc-voi-module-l298-

-

v1.171/
luanvan.net.vn/luan-van/do-an-thiet-ke-robot-do-line-25788/
arduinovn.info/do-khoang-cach-voi-cam-bien-sieu-am-vaarduino.html

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 22/21

PHỤ LỤC
CODE
#define trig_trai 8
#define echo_trai 9
#define trig_phai 10
#define echo_phai 11
#define in1 2

#define in2 3
#define ena 5
#define in3 4
#define in4 7
#define enb 6
Long xung_trai, xung_phai;
Float kc_trai, kc_phai;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode (trig_trai, OUTPUT);
pinMode (echo_trai, INPUT);
pinMode (trig_phai, OUTPUT);
pinMode (echo_phai, INPUT);
pinMode (in1, OUTPUT);
pinMode (in2, OUTPUT);
pinMode (ena, OUTPUT);
pinMode (in3, OUTPUT);
pinMode (in4, OUTPUT);
pinMode (enb, OUTPUT);

ROBOT DI CHUYỂN TRONG RÃNH


ĐỒ ÁN 2
Trang 23/21

}
void tien_trai (byte td)
{

digitalWrite (in1, HIGH);
digitalWrite (in2, LOW);
analogWrite (enb, td);
}
void tien_phai (byte td)
{
digitalWrite (in3, HIGH);
digitalWrite (in4, LOW);
analogWrite (enb, td);
}
void lui_trai (byte td)
{
digitalWrite (in1, LOW);
digitalWrite (in2, HIGH);
analogWrite (ena, td);
}
void lui_phai (byte td)
{
digitalWrite (in3, LOW);
digitalWrite(in4, HIGH);
analogWrite (enb, td);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite (trig_trai, HIGH);
Delay (1);

ROBOT DI CHUYỂN TRONG RÃNH



ĐỒ ÁN 2
Trang 24/21

digitalWrite (trig_trai, LOW);
xung_trai = pulseIn (echo_trai, HIGH);
kc_trai = (float) (xung_trai/58.0);
digitalWrite (trig_phai, HIGH);
Delay (1);
digitalWrite (trig_phai, LOW);
xung_phai = pulseIn (echo_phai, HIGH);
kc_phai = (float) (xung_phai/58.0);
Serial.print (kc_trai);
Serial.println ("cm");
Serial.print (kc_phai);
Serial.println ("cm");
Delay (10);
If (kc_trai = kc_phai)
{
tien_trai (255);
tien_phai (255);
delay (500);
};
If (kc_trai > kc_phai)
{
tien_trai (50);
tien_phai (255);
}
else

ROBOT DI CHUYỂN TRONG RÃNH



ĐỒ ÁN 2
Trang 25/21

{
tien_trai (255);
tien_phai (100);
Delay (500);
};
If (kc_trai = kc_phai >100)
{
lui_trai (100);
lui_phai (100);
Delay (500);
};
}
6.17%

ROBOT DI CHUYỂN TRONG RÃNH


×