Đồ án Robot dò line
Giới thiệu .4
I. Tổng quan .4
1. Cấu trúc 4
2. Hệthống điều khiển .4
3. Sơ đồnguyên lý hệthống điều khiển .5
II. Hoạt động 7
1. Đặc tả đường đua .7
2. Hoạt động của động cơServo 10
3. Hoạt động của sensor .11
4. Giải thuật 12
5. Code điều khiển .13
III. Ứng dụng, hạn chếvà hướng giải quyết .28
CR1L=0xff;
}
//-----------------------------------
void set_pwm1A(int duty1A)
{
OCR1AH=0x00;
OCR1AL=(duty1A);
}
//-----------------------------------
void set_pwm1B(int duty1B)
{
OCR1BH=0x00;
OCR1BL=(duty1B);
}
//-----------------------------------
void SPEED(int L, int R)
{
set_pwm1A(R-8);
set_pwm1B(L);
}
//-----------------------------------
Đồ án môn học 1 Page 15
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
/*
>>>>>DAO CHIEU DONG CO<<<<<<
*/
//-----------------------------------
void DAO_A()
{
PORTD.5=~PORTD.5;
PORTD.6=~PORTD.6;
}
//-----------------------------------
void DAO_B()
{
PORTD.7=~PORTD.7;
PORTB.0=~PORTD.0;
}
//-----------------------------------
//**********CHUYEN LINE********/
void CHUYEN_PHAI()
{
while (1)
{
if (PINC==0x0c) x=0;//STRANGE
if (PINC==0x18) x=-18;//LEFT 18
if (PINC==0x06) x= 18;//RIGHT 18
if (PINC==0x00) //CHANGE LANE
{
x= 18;
Đồ án môn học 1 Page 16
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
SPEED(235,160);
while(1)
{
if (PINC.1==1)
{ x=-65;
SPEED(160,200);
delay_ms(90);
break;
}
}
break;
}
}
}
//-----------------------------------
void CHUYEN_TRAI()
{
while(1)
{
if (PINC==0x0c) x=0; //STRANGE
if (PINC==0x18) x=-18; //LEFT 18
if (PINC==0x06) x= 18; //RIGHT 18
if (PINC==0x00) //CHANGE LANE
{
x= -18;
SPEED(160,235);
while(1)
{
Đồ án môn học 1 Page 17
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
if(PINC.4==1)
{
x=65;
SPEED(210,160);
delay_ms(90);
break;
}
}
break;
}
}
}
//-----------------------------------
void BE90()
{
SPEED(190,190);
DAO_A();
DAO_B();
SPEED(220,220);
delay_ms(230);
SPEED(190,190);
DAO_A();
DAO_B();
while(1)
{
if (PINC==0x18) x=-10;//LEFT 10
else if (PINC==0x06) x= 10;//RIGHT 10
else x=x;
Đồ án môn học 1 Page 18
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
//------------------------------------------
if
(PINC==0x3c||PINC==0x38||PINC==0x3e||PINC.5==1)
{
while(1)
{
if(PINC==0x00)
{
x= -65;
DAO_B();
//Be sang trai 90
SPEED(200,245);
delay_ms(280);
SPEED(180,200);
while(1)
{
if(PINC.4==1)
{
DAO_B();
break;
}
}
break;
}
}
break;
}
//------------------------------------------
Đồ án môn học 1 Page 19
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
if
(PINC==0x0f||PINC==0x07||PINC==0x1f||PINC.0==1)
{
while(1)
{
if(PINC==0x00)
{
x= 65;
DAO_A();
//Be sang phai 90
SPEED(245,200);
delay_ms(280);
SPEED(200,180);
while(1)
{
if(PINC.3==1)
{
DAO_A();
break;
}
}
break;
}
}
break;
}
}
Đồ án môn học 1 Page 20
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
}
/************************************************
*****Be goc*****
Phai(0 -> 90); trai(0 -> -90)
1485===>>>Giua
2200 >>> Phai
550 >>> Trai
*************************************************/
//>>>>>>>>>>>>>Ngat tran timer0<<<<<<<<<<<<<<<<<<<//
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x12;
switch (x)
{
case (0):
PORTD.4=1;
delay_us(1485);
PORTD.4=0;
break;
case (10):
PORTD.4=1;
delay_us(1573);
PORTD.4=0;
break;
case (18):
PORTD.4=1;
delay_us(1590);
PORTD.4=0;
Đồ án môn học 1 Page 21
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
break;
case (20):
PORTD.4=1;
delay_us(1620);
PORTD.4=0;
break;
case (25):
PORTD.4=1;
delay_us(1800);
PORTD.4=0;
break;
case (45):
PORTD.4=1;
delay_us(1790);
PORTD.4=0;
break;
case (65):
PORTD.4=1;
delay_us(2040);
PORTD.4=0;
break;
case (-10):
PORTD.4=1;
delay_us(1470);
PORTD.4=0;
break;
case (-18):
PORTD.4=1;
Đồ án môn học 1 Page 22
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
delay_us(1387);
PORTD.4=0;
break;
case (-20):
PORTD.4=1;
delay_us(1347);
PORTD.4=0;
break;
case (-25):
PORTD.4=1;
delay_us(1167);
PORTD.4=0;
break;
case (-45):
PORTD.4=1;
delay_us(1090);
PORTD.4=0;
break;
case (-65):
PORTD.4=1;
delay_us(940);
PORTD.4=0;
break;
}
}
//-----------------------------------------------------------------
void main(void)
Đồ án môn học 1 Page 23
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
{
PORTD.5=1; //Dieu khien cau H1
PORTD.6=0;
//-------------------------
//----DIEU KHIEN DONG CO------
PORTD.7=1; //Dieu khien cau H2
PORTB.0=0;
//-------------------------
PORTB.1=0;
PORTB.2=0;
DDRB=0x07;
DDRC=0x00;
PORTD.4=0;
PORTD.2=1;
PORTD.3=1;
DDRD=0xf0;
//-------------------------
/*>>>>>Setup Timer0<<<<<<<<*/
TCNT0=0x12; //Start at 18 >>> count time = 236*85us=20.06ms
TCCR0=0x05; //MODE CLOCK/1024
//-------------------------
//INTERRUPTS
TIMSK=0x01; //Cho phep ngat ngoai
#asm ("sei")
//-------PWM---------------
setup_pwm();
//-------------------------
while (1)
Đồ án môn học 1 Page 24
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
{
if(PIND.2==0)
{
x= 0;
SPEED(230,230);
delay_ms(50);
SPEED(250,250);
delay_ms(50);
SPEED(230,230);
delay_ms(50);
while(1)
{
switch(PINC)
{
/*********************************************************
>>>>>>>>>>>>>>>>>> NORMAL<<<<<<<<<<<<<<<<<
*********************************************************/
case (0x0c): // (001100)
x=0;
SPEED(215,215);
break;
/*********************************************************/
case (0x18): // (011000)
x=-10;
SPEED(160,205);
break;
/*************************************************************************/
case (0x06): // (000110)
Đồ án môn học 1 Page 25
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
x= 10;
SPEED(205,160);
break;
SPEED(205,160);
break;
/*******************************************************/
case (0x30): // (110000)
x=-25;
SPEED(160,225);
break;
/*********************************************************/
case (0x03): // (000011)
x= 25;
SPEED(225,160);
break;
/********************************************************/
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<
case (0x3c): // (111100)
delay_ms(10);
if(PINC==0x3f)
{
BE90();
break;
}
SPEED(200,200);
DAO_A();
DAO_B();
delay_ms(100);
Đồ án môn học 1 Page 26
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
DAO_A();
DAO_B();
CHUYEN_TRAI();
break;
// ----------------------------------------
//Chuan bi chuyen line trai
case (0x38): // (111000)
delay_ms(10);
if(PINC==0x3f)
{
BE90();
break;
}
SPEED(200,200);
DAO_A();
DAO_B();
delay_ms(100);
DAO_A();
DAO_B();
CHUYEN_TRAI();
break;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
case (0x0f): // (001111)
delay_ms(10);
if(PINC==0x3f)
{
BE90();
break;
Đồ án môn học 1 Page 27
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
}
SPEED(200,200);
DAO_A();
DAO_B();
delay_ms(150);
DAO_A();
DAO_B();
CHUYEN_PHAI();
break;
// -------------------------------------------
//Chuan bi chuyen line phai
case (0x07): // (000111)
delay_ms(10);
if(PINC==0x3f)
{
BE90();
break;
}
SPEED(200,200);
DAO_A();
DAO_B();
delay_ms(150);
DAO_A();
DAO_B();
CHUYEN_PHAI();
break;
//>>>>>> MEET A CROSS <<<<<<<<<<
case (0x3f): // (111111)
Đồ án môn học 1 Page 28
GVHD: TS.Nguyễn Thanh Phương SVTH: Phạm Quốc Gia
ThS. Phạm Quốc Phương Lớp 08DDC-HUTECH
BE90();
break;
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
default:x=x; // DEFAULT
}
}
}
}
}
/*************************END****************************/
III. Ứng dụng, hạn chế và hướng giải quyết:
1. Ứng dụng:
Dựa vào cách hoạt động của robot dò line chúng ta có thể phát triển rộng hơn
để tạo nên những robot có ứng dụng thực tế hơn như robot thay con người đi
vào những nơi nguy hiểm, những robot làm 1 công việc trên 1 hành trình cố
định..v.v.
2. Hạn chế:
- Tốc độ chưa cao.
- Dễ bị trượt khỏi đường khi chạy vận tốc cao, khi bẻ cua, xuống dốc.
3. Khắc phục:
- Tăng số lượng sensor trên cần dò line.
- Dùng động cơ bẻ góc RC Servo có đáp ứng tốt.
- Dùng Vi điều khiển có tốc độ xử lý cao hơn.
- Chất liệu bánh xe bám đường tốt.
********************************END*********************************
File đính kèm:
Đồ án Robot dò line.pdf

