You are on page 1of 16

TRƯỜNG ĐẠI HỌC CẦN THƠ

KHOA CÔNG NGHỆ

HỌC PHẦN: KĨ THUẬT VI ĐIỀU KHIỂN (CN581)


BÁO CÁO ĐỒ ÁN
ĐỀ TÀI: TÌM HIỂU VỀ CẢM BIẾN SIÊU ÂM VÀ
THIẾT KẾ ROBOT TRÁNH VẬT CẢN

NHÓM 21
Giáo viên hướng dẫn: Nhóm sinh viên thực hiện:

Nguyễn Khắc Nguyên Mai Trọng Hữu B1913028


Nguyễn Hoàng Linh B1913045
Đào Hữu Đức B1913016
Tống Thế Kiệt B1912941
MỤC LỤC
1. GIỚI THIỆU ĐỀ TÀI......................................................................................................1
a. Tên và mục tiêu của đề tài..............................................................................................1
b. Các tính năng cơ bản......................................................................................................1
c. Phương pháp thực hiện...................................................................................................1
2. THỰC HIỆN.....................................................................................................................1
a. Mô hình hệ thống............................................................................................................1
i. Mô tả sơ lược về hệ thống...........................................................................................1
ii. Mô hình hệ thống dạng khối......................................................................................1
b. Thiết kế phần cứng mạch điện.......................................................................................2
i. Mô tả sơ lược hoạt động của mạch điện......................................................................2
ii. Sơ đồ khối phần cứng mạch điện...............................................................................2
iii. Thiết kế chi tiết.........................................................................................................2
iv. Sơ đồ nguyên lý tổng hợp của toàn mạch.................................................................5
c. Thiết kế phần mềm điều khiển.......................................................................................6
i. Chức năng của phần mềm...........................................................................................6
ii. Lưu đồ chương trình chính.........................................................................................6
iii. Lưu đồ chương trình con chính yếu..........................................................................7
iv. Đoạn code chương trình............................................................................................7
3. KẾT QUẢ THỰC HIỆN...............................................................................................13
a. Mô hình thực tế.............................................................................................................13
b. Kết quả thực hiện.........................................................................................................13
c. Nhận xét hệ thống.........................................................................................................13
d. Hướng phát triển...........................................................................................................14
4. TÀI LIỆU THAM KHẢO.............................................................................................14
5. PHỤ LỤC........................................................................................................................14
a. Quá trình thực hiện đề tài.............................................................................................14
b. Phân chia công việc......................................................................................................14
ĐỀ TÀI: THIẾT KẾ ROBOT TRÁNH VẬT CẢN

1. GIỚI THIỆU ĐỀ TÀI


a. Tên và mục tiêu của đề tài
Tên đề tài: Tìm hiểu về cảm biến siêu âm và thiết kế robot tránh vật cản
Mục tiêu: Hiểu về cấu tạo, hoạt động, chức năng cũng như các ứng dụng cơ bản của cảm biến
siêu âm trong thí nghiệm và trong các lĩnh vực thực tế, thiết kế thành công một mô hình robot
nhỏ có khả năng di chuyển và tránh vật cản.
b. Các tính năng cơ bản
Có thể di chuyển và chuyển hướng khi phát hiện vật cản phía trước ứng dụng phổ biến trong
robot lau nhà, xe thông minh, … Ngoài ra có thể kết hợp thêm các loại cảm biến khác để dạng
chức năng của sản phẩm.
c. Phương pháp thực hiện
Sử dụng cảm biến siêu âm để đo khoảng cách va chạm giữa robot với vật cản phía trước và hiển
thị khoảng cách đó ra LED 7 đoạn, từ dữ liệu khoảng cách được đọc từ cảm biến ra lệnh cho
robot tiếp tục di chuyển, rẽ trái, rẽ phải hay dừng lại nhờ khối động cơ gắn với bánh xe phía dưới
robot.

2. THỰC HIỆN
a. Mô hình hệ thống
i. Mô tả sơ lược về hệ thống
- Sản phẩm cấu tạo bao gồm các thành phần: một cảm biến siêu âm HC-SR 04, một chip vi điều
khiển msp430f2232, LED 7 đoạn, giá đỡ, khối động cơ và bánh xe của xe điều khiển mô hình
loại nhỏ. Nguyên tắc hoạt động khi khởi động xe bắt đầu di chuyển đồng thời cảm biến siêu âm
cũng hiển thị khoảng cách so với vật cản phía trước lên LED 7 đoạn nếu như khoảng cách dưới
50cm thì robot bắt đầu chuyển hướng và di chuyển theo hướng mới và như vậy robot cứ tiếp tục
di chuyển.
ii. Mô hình hệ thống dạng khối

1
b. Thiết kế phần cứng mạch điện
i. Mô tả sơ lược hoạt động của mạch điện
- Khi cấp nguồn cảm biến siêu âm tiến hành đo khoảng cách truyền dữ liệu lên vi điều khiển
bằng phương pháp quét led hiển thị giá trị lên led 7 đoạn sau đó giá trị được so sánh với giá định
trước và tiến hành ra lệnh cho động cơ di chuyển theo từng trường hợp định trước.
ii. Sơ đồ khối phần cứng mạch điện

iii. Thiết kế chi tiết


 Sơ đồ khối 1

- Khối điều khiển: điều khiển trung tâm, quyết định các hoạt động của các khối còn lại.
- Sơ đồ nguyên lý kết nối:

2
 Sơ đồ khối 2

- Cảm biến siêu âm: dùng để đo khoảng cách từ robot đến vật cản
- Chú thích chân:
 Chân số 1 là chân Vcc
 Chân số 2 là chân ECHO
 Chân số 3 là chân TRI
 Chân số 4 là chân GND
- Cách kết nối
 Chân Vcc nối lên nguồn 5v
 Chân GND nối mass
 Chân ECHO nối với chân P1.4 của vi điều khiển
 Chân TRI nối với chân P1.5 của vi điều khiển
- Thông số kĩ thuật
 Điện áp làm việc: 5VDC
 Dòng điện: 15mA
 Tần số: 40 KHz
 Khoảng cách phát hiện: 3cm – 4m
 Tín hiệu đầu ra: xung mức cao 5V, mức thấp 0V
 Góc cảm biến: không quá 15 độ
 Độ chính xác lên đến 3mm
 Chế độ kết nối: VCC / Trig (T-Trigger) / Echo (R-Receive) / GND
 Sơ đồ khối 3

- Khối LED 7 đoạn: dùng để hiển thị khoảng cách mà cảm biến siêu âm đo được
3
- Led 7 đoạn sử dụng là loại led anode chung nên 4 chân led 7 đoạn kết nối với MSP430 ứng
với các chân kết nối vào port 1 (1.0, 1.1, 1.2, 1.3)
- Sơ đồ nguyên lý kết nối

 Sơ đồ khối 4

- Khối LM293 và động cơ DC: dùng để thay đổi hướng di chuyển của robot khi gặp vật cản
-Thống số kĩ thuật
 Điện áp hoạt động: 4-36V
 Cấp dòng: 600mA
 Dòng đỉnh 1.2A
 Dùng để điều khiển động cơ, robot, motor\
 Kiểu DIP16
 Input: TTL Logic
- Sơ đồ nguyên lý kết nối

4
iv. Sơ đồ nguyên lý tổng hợp của toàn mạch

5
c. Thiết kế phần mềm điều khiển
i. Chức năng của phần mềm
- Khi hệ thống bắt đầu hoạt động Timer được sử dụng để tạo ra xung PWM dùng để đo khoảng
cách và tính toán thời gian quét led để hiển thị khoảng cách ra led.
- Khi nhận được khoảng cách từ cảm biến trả về sẽ tiến hành so sánh với khoảng cách định trước
là 50cm và tiến hành ra lệnh động cơ di chuyển nếu khoảng cách lớn hơn 50cm thì robot di
chuyển tiến về trước ngược lại khoảng cách nhỏ hơn 50cm thì có một led đơn sáng lên báo cho
biết gần khoảng cách va chạm động cơ bên trái dừng, động cơ bên phải quay ngược, nên lúc này
sẽ lùi và quay đầu sang phải nếu như khoảng cách tiếp tục nhỏ hơn 50cm thì động cơ cứ chuyển
hướng đến khi nào khoảng cách lớn hơn 50cm thì tiếp tục di chuyển.
- Vòng lặp chương trình giúp hệ thống luôn hoạt động giống với mô tả trên.
ii. Lưu đồ chương trình chính

iii. Lưu đồ chương trình con chính yếu

6
iv. Đoạn code chương trình
#include <msp430f2232.h>
#define PDAT P3OUT
#define CTR P1OUT
#define led BIT0
#define K BIT7

void timer();
void PWM_init();
void DCtienvetruoc();
void luisangphai();
void scanled();
void toDisplay(int num);
void delayms(int ms);

//-------Khai bao doc cam bien-----------------


int miliseconds;
int distance;
long sensor;
//-------Khai bao bien cho led 7 doan-----------------
char tbl7seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
char buff[4]={0,0,0,0};
char idx=0;
int num = 0;

void main(void)
{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT

P1DIR = 0x0f; //P1.0 den 1.3 la output


P3DIR = 0xFF; // P3 la oupput cho led7
7
P4DIR = BIT0; // P4.0 la ouput cho den

// khai bao port cho motor ben phai


P2DIR |= BIT0 + BIT1 + BIT2; // P2.0,P2.1,P2.2 all output cho
P2OUT &= ~BIT0 + BIT1 + BIT2; // Clear P2.0,P2.1,P2.2
// khai bao port cho motor ben trai
P2DIR |= BIT3 + BIT4 + BIT6; // P2.3,P2.4,P2.6 all output
P2OUT &= ~BIT3 + BIT4 + BIT6; // Clear P2.3,P2.4,P2.6

P2SEL &= ~(BIT6 + BIT0); //sudunghetport2

timer(); // khoi dong timer doc cam bien va quet led


PWM_init(); // khoi dong Pwm cho dong co
_BIS_SR( GIE); // cho phep ngat toan cuc ca Pwm va timer
while(1){

P1DIR |= BIT5; // P1.5 la ouput trigger


P1OUT |= BIT5; // set trigger muc cao
__delay_cycles(10); // for 10us
P1OUT &= ~BIT5; // dung cho trigger ve muc thap
P1DIR &= ~BIT4; // cho pin P1.2 input (ECHO)
P1IFG = 0x00; // clear flag
P1IE |= BIT4; // cho phep interupt ECHO
P1IES &= ~BIT4; // cho echo muc cao
delayms(100); // delay 1ms

distance = sensor/58; // doi thoi gian cam bien doc duoc ra cm


toDisplay(distance); // dua ra led7

if(distance <= 50 && distance != 0){


delayms(100);
P4OUT |= BIT0; // khoang cach duoi 50cm den bao
luisangphai(); //tien hanh cho dong co lui sang phai
8
}
else {
delayms(100);
P4OUT &= ~BIT0; //den bao hieu tat
DCtienvetruoc(); //neu cam bien do khoang cach >50 xe tien ve truoc

}
}//end while
}// end main

//--------------cau hinh timer do khoang cach va quet led---------//


void timer ()
{
DCOCTL = 0;
BCSCTL1 = CALBC1_1MHZ; // 1mhz
DCOCTL = CALDCO_1MHZ; // 1mhz

CCTL0 = CCIE; // CCR0 interrupt enabled


CCR0 = 1000; // 1ms at 1mhz
TACTL = TASSEL_2 + MC_1 + TAIE; // SMCLK, upmode/Enable Timer
Interrupt TAIV
}

//------------------cau hinh PWM------------//

void PWM_init()
{

CCTL1 = CCIE; // Enable interrupt for CCR1


CCR1 = 200; // Load value 20%C0

9
//-------------------khai bao vector ngat--------------//

#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
if(P1IFG&BIT4) // neu co vector ngat
{
if(!(P1IES&BIT4)) // neu khong co echo canh len
{
TACTL|=TACLR; // clears timer A
miliseconds = 0;
P1IES |= BIT4; // cho echo canh len
}
else
{
sensor = (long)miliseconds*1000 + (long)TAR; // do khoang cach bang thoi gian
dem duoc

}
P1IFG &= ~BIT4; //clear flag
}
}

//-------------------- khai bao ngat timer---------------//

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
scanled();
miliseconds++;
}
//-------------- ngat PwM ------------//
#pragma vector = TIMER0_A1_VECTOR

10
__interrupt void TimerA(void)
{
switch(TAIV)
{
case 0x002: // CCR1 interrupt
P2OUT |= BIT0; // P2.0 = 1 ,1&2_EN = 1,Right Motor bat dau chay
P2OUT |= BIT6; // P2.6 = 1 ,3&4_EN = 1,Left Motor bat dau chay
break;

case 0x004:
break;

case 0x00A: //TAR overflow interrupt


P2OUT &= ~BIT0; // P2.0 = 0 ,1&2_EN = 0,Right Motor dung
P2OUT &= ~BIT6; // P2.6 = 0 ,3&4_EN = 0,Left Motor dung
break;
}
}

//------------ham tien dong co ve truoc----------//

void DCtienvetruoc(){
// DC phai tien
P2OUT |= BIT1; // P2.1 = 1,
P2OUT &= ~BIT2; // P2.2 = 0

// DC trai tien
P2OUT |= BIT3; // P2.3 = 1,
P2OUT &= ~BIT4; // P2.4 = 0,
}

//------------ham lui dong co ket hop chuuyen huong sang phai----------//

void luisangphai(){
11
// DC phai qua nguoc
P2OUT &= ~BIT1; // P2.1 = 0,
P2OUT |= BIT2; // P2.2 = 1

// Dc trai dung
P2OUT &= ~BIT3; // P2.3 = 0,
P2OUT &= ~BIT4; // P2.4 = 0,
}
//-------------------ham delay--------//

void delayms(int ms) {


for(int i=0; i<ms ; i++)
__delay_cycles(1000);
}

//----------------ham quet led---------//


void scanled(){

char ch;
CTR = 0x00;
ch = buff[idx]; // lay du lieu tu Buff
PDAT = tbl7seg[ch]; // chuyen ma 7 doan

CTR = (1<<idx); // dieu khien 1 LED tuong ung sang

idx++; // tang con tro quet => LED tiep theo


if (idx>=4) idx = 0; // Reset con tro quet
}
//----------------ham cap nat led--------//
void toDisplay(int num){
buff[0] = num/1000;
buff[1] = (num%1000)/100;
buff[2] = ((num%1000)%100)/10;
buff[3] = num%10;
12
}
//=======================================het=========================

3. KẾT QUẢ THỰC HIỆN


a. Mô hình thực tế
- Do dịch bệnh nhóm chỉ thực hiện mô phỏng trên protues nên chỉ có hình ảnh mạch điện trên
protues

b. Kết quả thực hiện


- Mạch hoạt động ổn định, giá trị hiển thị lên led khớp so với cảm biến và động cơ cũng di
chuyển như mong muốn cho thấy mạch hoạt động tương đối tốt.
c. Nhận xét hệ thống
- Ưu điểm: Hệ thống đo chính xác khoảng cách và điều khiển động cơ tiến hay lùi giống yêu cầu
đặt ra.
- Nhược điểm: Nhóm chưa điểu khiển được tốc độ động cơ và đây cũng là dạng mô phỏng nên
chưa thấy được robot hoạt động trên địa hình thực tế có nhìu vật cản thì còn nhược điểm gì về
hoạt động của hệ thống.
d. Hướng phát triển
- Ngoài việc sử dụng đơn thuần robot di chuyển tranh vật cản thì ta có thể thay đổi hình dạng và
kết hợp các thiết bị ngoại vi khác để làm robot lau nhà, … ngoài ra hiện nay cảm biến siêu âm
kết hợp vi điều khiển còn ứng dụng rộng rãi trong nhìu lĩnh vực.

4. TÀI LIỆU THAM KHẢO


[1] https://www.mouser.vn/ProductDetail/TexasInstruments/MSP430F2232TRHAR?
qs=iSMark9AYDXbmoraPweWaQ==

13
[2]
https://www.ti.com/product/MSP430F2232
[3]
https://www.hackster.io/powerberry/like-a-bat-with-hc-sr04-829486

5. PHỤ LỤC
a. Quá trình thực hiện đề tài
-Thời gian: Nhóm thực hiện đề tài ngay khi báo cáo giữa kỳ đến nay cũng khoảng hơn 40 ngày.
-Thuận lợi: Các thành viên đồng lòng và tập trung nên mọi việc được giải quyết nhanh gọn và
hiệu quả.
-Khó khăn: do tình hình dịch nên nhóm chỉ có thể làm việc online, và không thể làm mô hình
thực tế.
b. Phân chia công việc
-Nhóm làm việc chung với cách làm việc là sau một tuần nhóm sẽ họp 1 lần để tiến hành thảo
luận về trao đổi sau đó tổng kết để thực hiện đề tài.

14

You might also like