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

ROBOT LAU NHÀ DÙNG PIC (có code và layout)

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 (690.36 KB, 31 trang )

Trang 1/32

ĐỒ ÁN 2

ROBOT LAU NHÀ


Trang 2/32

MỤC LỤC


Trang 3/32

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


Trang 4/32

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


Trang 5/32

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

Programmable Interface Controller

LCD


Liquid Crystal Display

PWM

Pulse-width Modulation

CMOS

Complementary Metal-Oxide-Semiconductor

VCC

Voltage Collector Collector

GND

Ground

IC

Integrated Circuit

ENA

Enable A

ENB

Enable B


VEE

Contrast Voltage

RS

Register Select

RW

Read/Write

LED

Light-emitting Diode

CCP

Compare/Capture/PWM


Trang 6/32

CHƯƠNG 1.

-

GIỚI THIỆU TỔNG QUAN ĐỀ TÀI

1.1 Giới thiệu

Quá trình công nghiệp 4.0 đang phát tri ển mạnh mẽ trong n ền công
nghiệp hóa của nước ta. Các mô hình tự động hóa hiện nay đang được đ ầu
tư và phát triển. Trong đó, Robot là một mô hình tự động rất được quan

-

tâm do ưu điểm mang nhiều tính ứng dụng.
Đề tài hướng đến nghiên cứu giải thuật cho một Robot có thể di chuy ển
thực thi đúng nhiệm vụ đề ra.
1.1.1 Yêu cầu đặt ra
Giải thuật cho Robot có thể di chuyển trong phạm vi định s ẵn.

-

1.1.2 Hướng giải quyết
Sử dụng động cơ để Robot có thể di chuyển. Dùng các cảm biến đ ể xác
định các ô gạch và né vật cản.

-

Vẽ lưu đồ giải thuật và lập trình. Dùng trình biên dịch PIC C Compiler và
thi công phần cứng mô tả giải thuật cho Robot

-

1.2 Nguyên lý chung
Robot di chuyển thẳng trong các dãy ô gạch, có th ể tự căn ch ỉnh đ ể không
bị lệch sang dãy ô gạch khác. Khi phát hiện thấy tường là vật cản, Robot
xử lý tránh đụng tường và di chuyển sang dãy khác ti ếp tục th ực thi công
việc.


Hình 1-1: Mô hình di chuyển của Robot.


Trang 7/32

Robot được gắn thêm một LCD nhằm theo dõi các thông s ố khi Robot th ực

-

thi công việc. Điều này giúp ta kiểm tra được các sai sót của Robot trong
quá trình làm việc.
-


Trang 8/32

CHƯƠNG 2.

-

TỔNG QUAN VỀ CÁC LINH KIỆN

2.1 PIC16F877A
Vi điều khiển PIC16F877A là một vi điều khiển được chế tạo v ới công
nghệ CMOS.

Hình 2-1: PIC16F877A.
-


Vi điều khiển PIC16F877A có 40 chân.

Hình 2-2: Sơ đồ chân PIC16F877A.
-

Bảng sau mô tả các đặc tính cơ bản của PIC16F877A:


Trang 9/32

Bảng 2-1: Đặc tính của PIC16F877A.
Tần số hoạt động
Bộ nhớ Flash
EEPROM
Bộ nhớ dữ liệu
Các ports I/O
Timers
PWM
Điện áp hoạt động

20 MHz
8 KB
256 KB
368 KB
5 ports A, B, C, D, E
3 chế độ Timer
2 chân PWM
5 Vdc

2.2 Cảm biến dò line 5 kênh

Cảm biến dò line được dùng để xác định các ô gạch mà Robot đã đi qua.

Hình 2-3: Cảm biến dò line 5 kênh.
-

Sơ đồ chân:










-

VCC: Chân cấp nguồn.
GND: Chân nối đất.
S1: Chân tín hiệu của cảm biến kênh dò line 1.
S2: Chân tín hiệu của cảm biến kênh dò line 2.
S3: Chân tín hiệu của cảm biến kênh dò line 3.
S4: Chân tín hiệu của cảm biến kênh dò line 4.
S5: Chân tín hiệu của cảm biến kênh dò line 5.
CLP: Chân tín hiệu của công tắc hành trình.
NEAR: Chân tín hiệu của cảm biến hồng ngoại.

2.3 Cảm biến siêu âm HC-SR04
Cảm biến siêu âm được dùng để phát hiện vật cản ở phía trước và bên

trái của Robot, nhằm giúp Robot tránh được vật cản.


Trang 10/32

Hình 2-4: Cảm biến siêu âm HC-SR04.
-

-

Sơ đồ chân:
• VCC: Chân cấp nguồn.
• TRIG: Chân ngõ vào phát xung tín hiệu.
• ECHO: Chân ngõ ra nhận xung tín hiệu được trả về.
• GND: Chân nối đất.
2.4 Mạch điều khiển động cơ L298
Mạch có chức năng điều khiển tốc độ động cơ, đáp ứng cho s ự di chuy ển
của Robot. Mạch sử dụng nguồn cấp 12V ở ngõ vào, sau đó qua m ột IC ổn
áp sẽ cấp 5V cho hai động cơ ở ngõ ra của mạch.

Hình 2-5: Mạch điều khiển động cơ L298.
-

Sơ đồ chân:
• IN1 và IN2: Chân điều khiển động cơ thứ nhất.


Trang 11/32








IN3 và IN4: Chân điều khiển động cơ thứ hai.
ENA: Chân điều chỉnh điện áp cho động cơ thứ nhất.
ENB: Chân điều chỉnh điện áp cho động cơ thứ hai.
OUT 1 và OUT 2: Ngõ ra điện áp dương và âm cho động cơ thứ nhất.
OUT 3 và OUT 4: Ngõ ra điện áp dương và âm cho động cơ thứ hai.
2.5 Các linh kiện khác
Ngoài các linh kiện chính sử dụng cho Robot, bên cạnh đó còn các lo ại
linh kiện khác hỗ trợ cho Robot.

-

2.5.1 Màn hình LCD
Dùng để hiển thị các thông số của Robot nhằm mục đích theo dõi, giảm sai
sót cho Robot trong quá trình hoạt động.

Hình 2-6: Màn hình LCD.
-

Sơ đồ chân:
• VCC: Chân cấp nguồn.
• VSS: Chân nối mass tương tự như GND.
• VEE: Chân điều chỉnh độ tương phản.
• RS: Chân chọn thanh ghi sẽ được ghi dữ liệu.
• RW: Chân chọn chế độ viết hoặc đọc.
• E: Chân cho phép ghi tương tự chân EN.

• D4 đến D7: Chân dữ liệu Data 4 đến Data 7.
• LED+ và LED- : Tắt bật màn hình LED.
2.5.2 Mạch ổn áp LM2596


Trang 12/32

Mạch được sử dụng để ổn áp cho hai động cơ, nhằm giảm sai sót trong
quá trình điều chỉnh tốc độ động cơ.

Hình 2-7: Mạch ổn áp LM2596.

CHƯƠNG 3.

SƠ ĐỒ KHỐI VÀ LƯU ĐỒ GIẢI THUẬT

3.1 Sơ đồ khối

Hình 3-1: Sơ đồ khối.
-

Khối nguồn bao gồm:
• Mạch nguồn ổn áp LM2596.
- Khối cảm biến bao gồm:
• Cảm biến dò line 5 kênh.
• Cảm biến siêu âm HC-SR04.
- Khối điều khiển động cơ bao gồm:
• Mạch điều khiển động cơ L298.



Trang 13/32

3.2 Lưu đồ giải thuật

Hình 3-2: Lưu đồ giải thuật.

-

3.3 Nguyên lý hoạt động
Mạch nguồn LM2596:


Trang 14/32

• Mạch nguồn LM2596 được sử dụng để ổn áp cho ngõ vào của m ạch
điều khiển động cơ L298, nhằm giữ ổn định cho điện áp ở ngõ ra của
hai động cơ không bị nhiều sai lệch.
- Cảm biến dò line 5 kênh:
• Cảm biến dò line 5 kênh cho phép ngõ ra là các giá trị Digital, gắn v ới hai
giá trị là 0 hoặc 1.
• Robot sẽ sử dụng kênh 2 và kênh 4 của cảm biến nhằm mục đích xác
định độ sai lệch, mất cân bằng khi Robot di chuyển. Robot tiếp tục sẽ
dụng kênh 3 để biết số lượng ô đã đi qua.
• LCD sẽ hiển thị hai thông số trên Robot. Hai thông s ố này có đ ược khi
kênh 2 và kênh 4 quét qua vạch line ngăn cách giữa hai ô. Ta xem nh ư hai
thông số từ kênh 2 và kênh 4 tương ứng với khoảng th ời gian “ time” và
“time1” khi cảm biến chuyển từ line trắng sang line đen.
• Ta đặt một biến “delta_t” là sai số so sánh giữa hai khoảng th ời gian
“time” và “time1”. Từ đó “delta_t” được tính theo công thức sau:
delta_t = time – time1

• Ta có delta_t << 0, điều đó nói lên time1 >> time nghĩa là khoảng thời
gian kênh 4 chuyển từ line trắng sang line đen nhanh h ơn kênh 2; đ ồng
nghĩa Robot đang di chuyển lệch về bên trái. Tương tự ngược lại nếu
delta_t >> 0, thì thời gian kênh 2 nhanh hơn kênh; đồng nghĩa Robot
đang di chuyển lệch về bên phải.
• Dựa vào điều kiện và kết quả trên, Robot sẽ tự động đi ều ch ỉnh tốc đ ộ
động cơ để tự cân chỉnh sao cho “ delta_t” có sai lệch nhỏ và gần về 0;
đồng nghĩa Robot đang đi thẳng không bị lệch quá nhi ều v ề bên trái
hoặc bên phải.
- Cảm biến siêu âm HC-SR04:
• Ta bật timer 1 của vi điều khiển ở chế độ ngắt với bộ chia 1. Ta kích
một xung nhỏ vào chân Trig của cảm biến. Khi chân Echo ở mức 0. Ta
xét giá trị timer 1 bằng 0, sau đó khi chân Echo ở mức 1, ta l ấy giá tr ị
timer 1. Giá trị nhận được từ timer 1 ta đặt là một biến “ x”. Từ đó, ta suy
ra công thức tính khoảng cách:


Trang 15/32

• Từ giá trị “kc” được tính như trên, Robot có thể xác định được khoảng
cách từ vị trí của chính nó đến tường. Từ đó Robot có th ể tự đ ộng x ử lý
để tránh va chạm vào tường.
- Mạch điều khiển động cơ L298:
• Ta thiết lập timer 2 của vi điều khiển để tạo một xung và thi ết lập chân
CCP1 và CCP2 như một PWM. Sau đó, ta điều chỉnh độ rộng xung cho
chân ENA và ENB.
• Dựa vào việc điều chỉnh độ rộng xung, tốc độ của hai động cơ sẽ thay
đổi nhằm điều chỉnh cho Robot có thể di chuyển tốt nhất.
- Các giá trị hiển thị trên LCD:
• LCD hiển thị giá trị xung trên các động cơ.

• LCD hiển thị khoảng cách từ cảm biến siêu âm.
• LCD hiển thị các biến giá trị: time, time1, delta_t.


Trang 16/32

CHƯƠNG 4.

THI CÔNG PHẦN CỨNG

4.1 Schematic và layout của mạch vi điều khiển PIC16F877A

Hình 4-1: Schematic mạch cấp nguồn cho PIC16F877A.

Hình 4-2: Schematic vi điều khiển PIC16F877A.


Trang 17/32

Hình 4-3: Layout mạch nguồn và PIC16F877A.
4.2 Mô hình mô phỏng Robot lau nhà

Hình 4-4: Khung Robot được thiết kế bằng phần mềm Corel.


Trang 18/32


Trang 19/32


Hình 4-5: Mô hình mô phỏng Robot lau nhà.


Trang 20/32

CHƯƠNG 5.

ĐÁNH GIÁ VÀ KẾT LUẬN

-

5.1 Thực nghiệm
Như đã nêu ở phần nguyên lý hoạt động, Robot có thể tự điều chỉnh khi

-

mất cân bằng nhằm mục đích không di chuyển lệch sang dãy ô khác.
Dưới đây là bảng đánh giá thực nghiệm: Kết quả thu được là độ lệch
delta_t.
Bảng 5-1: Bảng đánh giá thực nghiệm.

Góc lệch
50
100
150
200
-50
-100
-150
-200


-

Lần 1
-9
-14
-15
-21
16
15
25
29

Lần 2
-9
-13
-16
-23
13
21
23
26

Lần 3
-7
-12
-17
-21
13
16

29
25

Lần 4
-9
-12
-15
-19
12
21
30
32

Lần 5
-5
-9
-16
-17
16
14
26
32

Lần 6
-6
-12
-15
-22
14
18

27
31

5.2 Kết quả
Từ các số liệu trên, ta có thể tính toán thay đổi tốc độ của động cơ đ ể
Robot có thể thích nghi và di chuyển sao cho độ lệch delta_t thấp nhất và

-

gần bằng 0.
Robot có thể di chuyển hoàn thành số ô gạch quy định.
Tuy nhiên, Robot vẫn chưa thể tránh được vật cản và quay lại vị trí định
sẵn như nhiệm vụ ban đầu đề ra.

-

5.3 Đánh giá kết quả
Thời gian tìm hiểu và thực hiện đề tài có gi ới hạn, cùng v ới l ượng ki ến
thức giới hạn nên Robot vẫn chưa thể hoàn thành được hoàn toàn n ội

-

dung đồ án.
Robot vẫn còn nhiều giới hạn, độ ổn định của Robot vẫn chưa cao.
Tuy nhiên dựa vào các số liệu và kết quả đạt được Robot hoàn toàn có
hướng phát triển.


Trang 21/32


-

5.4 Hướng phát triển
Có thể sử dụng encoder cho động cơ giúp Robot có thể nâng cao vi ệc di

-

chuyển.
Tối ưu hóa giải thuật để Robot có thể nhớ được đường đi nhằm tránh vật

-

cản và có thể quay lại vị trí định sẵn ban đầu.
Tối ưu hóa phương pháp lập trình giúp cho Robot có th ể th ực hi ện công
việc lưu loát, ổn định và hiệu quả hơn.


Trang 22/32

TÀI LIỆU THAM KHẢO
Internet:
[1]



[2]



Tiếng Việt:

[3]

Giáo trình vi xử lý: “Vi điều khiển PIC” – Nguyễn Đình Phú, năm 2014.


Trang 23/32

PHỤ LỤC A
#include <16f877a.h>
#define LCD_ENABLE_PIN
#define LCD_RS_PIN

PIN_D2

PIN_D0

#define LCD_RW_PIN

PIN_D1

#define LCD_DATA4

PIN_D4

#define LCD_DATA5

PIN_D5

#define LCD_DATA6


PIN_D6

#define LCD_DATA7

PIN_D7

#define cb1

input(PIN_B0)

#define cb2

input(PIN_B1)

#define cbgi

input(PIN_B2)

#define tri1
#define ech1

PIN_C6
input(PIN_B3)

#fuses hs, noput, nowdt,noprotect, nodebug, nobrownout, nolvp, nocpd, nowrt
#use delay(clock=20M)
#use rs232(uart, baud = 9600, parity = n, bits = 8, stop = 1)
#include <lcd.c>
unsigned int16 time = 0;



Trang 24/32

unsigned int16 time1 = 0;
unsigned int16 dem1 = 0;
unsigned int16 dem = 0;
int16 delta_t = 0;
int en = 0;
unsigned int soline = 0;
int engi = 0;
int en1 = 0;
float d1 = 0;
float kct = 0;

void detect_line()
{
if( cb2 == 1 && en == 0)
{
dem++;
en = 1;
}
if(cb2 == 0);
{


Trang 25/32

en = 0;

}


if( cb1 == 1 && en1 == 0)
{
dem1++;
en1 = 1;
}
if(cb1 == 0);
{
en1 = 0;

}

if(cbgi == 1 && engi == 0)
{
soline++;
engi = 1;
}
if(cbgi == 0)


×