Beruflich Dokumente
Kultur Dokumente
H CH MINH
TRNG I HC BCH KHOA
KHOA IN IN T
TP.HCM 12/2012
PH LC
Tm tt ti
3.1
3.2
M hnh ton hc
3.3
Mc tiu iu khin
11
3.4
11
12
1. ng c DC
12
2. iu ch rng xung
12
3. Mch cu H
13
4. Cm bin siu m
14
4.1
Gii thiu
14
4.2
16
4.3
17
5. Vi iu khin MSP430
21
5.1
Gii thiu s lc
21
5.2
MSP430 G2553
22
30
33
33
PH LC CODE
Tm tt ti
Trong thi i cng nghip ngy nay, Robot ngy cng c s dng ph
bin trong sn xut cng nh trong cuc sng ca con ngi. Robot c mt v tr
quan trng kh c th thay th c, n gip con ngi lm vic trong cc iu kin
nguy him, kh khn. Ngoi ra, Robot cn c dng vo cc lnh vc thm
him khng gian, qun s, gii tr
Lnh vc Robot di ng ang ngy cng chim c s quan tm ca cc
nh nghin cu v x hi. T tnh hnh thc t , vic xy dng cc chng
trnh hot ng cho cc Robot l iu thit yu c bit i vi cc Robot di
ng. Bi ton Robot di ng bm tng (wall-following problem) l mt trong cc
bi ton thng gp ca Robot kiu phn x (reactive paradigm), n c gii
bng nhiu cch khc nhau.
Trong phm vi ti ny em s tm hiu thut ton v thi cng Robot di chuyn
theo mp tng (Wall Following Robot) da vo cm bin siu m.
n iu khin t ng 1
Page 4
n iu khin t ng 1
Robot d mn
Page 5
n iu khin t ng 1
Robot ct c
Robot ht bi Trilobite
GVHD: Nguyn Thin Thnh
Page 6
n iu khin t ng 1
2.
Page 7
n iu khin t ng 1
Page 8
n iu khin t ng 1
3.2
M hnh ton hc
r (t ) : vn tc gc bnh phi.
l (t ) : vn tc gc bnh tri.
r: bn knh mi bnh robot
L: khong cch 2 bnh
R: khong cch t tm robot ti tm vn tc tc thi.
ICC: tm vn tc tc thi.
Page 9
n iu khin t ng 1
(t )
y (t ) v(t ) sin (t )
0
t
(t ) (t )
0
(t ) 0
(t ) r
1
1
2 (vr vl ) cos
(v v ) sin
2 r l
(v v ) / L
r
l
1
cos
2
1
sin
2
1/ L
1
cos
2
1
sin
2
1/ L
vr
vl
Page 10
n iu khin t ng 1
3.3
Mc tiu iu khin
Page 11
n iu khin t ng 1
ng c DC
DC ng c l ng c in hot ng vi
dng mt chiu. ng c DC s dng rng ri
trong cc ng dng dn c cng nh cc ngnh
cng nghip. Thng thng ng c DC ch chy
mt tc khi kt ni vi ngun in, nhng
chng ti vn c th kim sot tc v hng ca
ng c vi s h tr ca cc mch in t vi
phng php PWM.
ng c DC trong cc hnh thc ca ng c dn s thng hot ng vi in p
thp, c s dng vi ti trng nh. Trong cng nghip, ng c DC c s dng
trong cc lnh vc i hi phi c m-men xon ln hn trn my tnh hoc yu cu thay
i trong phm vi tc .
2.
iu ch rng xung
Page 12
n iu khin t ng 1
3.
Mch cu H
Page 13
n iu khin t ng 1
iu khin ng c ta
iu khin cng lc 2 cng
tc (FET) 2 pha ngc
nhau.
High Side
Left
High
Side
Right
Lower
Left
Lower
Right
Quadrant Description
On
Off
Off
On
Off
On
On
Off
On
On
Off
Off
Off
Off
On
On
4.
Cm bin siu m
4.1
Gii thiu
Page 14
n iu khin t ng 1
Page 15
n iu khin t ng 1
4.2
Trong :
d l khong cch cn o,
v l vn tc sng siu m trong mi trng truyn sng,
t l thi gian t lc sng c pht i n lc sng c ghi nhn li.
u im v nhc im ca cm bin siu m:
u im:
Khong cch m cm bin c th pht hin ln ti 15m.
Sng phn hi ca cm bin khng ph thuc vo mu sc ca b mt i
tng hay tnh cht phn x nh sng ca i tng.
V d:b mt knh trong sut ,b mt gm mu nu,b mt plastic
mu trng hay b mt cht liu nhm sng trng l nh nhau.
Tn hiu p ng ca cm bin tim cn analog l t l tuyn tnh vi
khong cch.iu ny c bit l tng cho cc ng dng nh theo di cc
mc vt cht,mc chuyn ng cu i tng.
Page 16
n iu khin t ng 1
Nhc im:
Cm bin siu m yu cu i tng c mt din tch b mt ti thiu (gi
tr ny ty thuc vo tng loi cm bin).
Sng phn hi cm bin nhn c c th chu nh hng ca sng m
thanh tp m.
Cm bin tim cn siu m yu cu mt khong thi gian sau mi ln sng
pht i sn sng nhn sng phn hi. Kt qu cm bin tim cn siu m
nhn chung chm hn cc cm bin khc.
Vi cc i tng c mt vt cht thp nh bt hay vu qun o rt kh
pht hin vi khong cch ln.
Cm bin tim cn siu m gii hn bi khong cch pht hin nh nht.
4.3
Page 17
n iu khin t ng 1
Page 18
n iu khin t ng 1
Page 19
n iu khin t ng 1
Page 20
n iu khin t ng 1
5.
Vi iu khin MSP430
5.1
Gii thiu s lc
MSP 430 l h vi iu khin cu trc RISC 16-bit c sn xut bi cng ty
Texas Instruments.
MSP l ch vit tt ca MIXED SIGNAL MICROCONTROLLER. L dng vi
iu khin siu tit kim nng lng, s dng ngun thp, khong in p ngun cp t
1.8V 3.6V.
MSP 430 kt hp cc c tnh ca mt CPU hin i v tch hp sn cc module
ngoi vi. c bit Chp MSP 430 l gii php thch hp cho nhng ng dng yu cu trn
tn hiu.
Nhng c tnh ca dng MSP 430 bao gm:
in p ngun: 1.8V 3.6 V.
Mc tiu th nng lng cc thp:
- Ch hot ng: 270 A ti 1MHz, 2,2 V.
- Ch ch: 0.7 A.
- Ch tt (RAM vn c duy tr): 0.1 A.
Thi gian nh thc t ch Standby nh hn 1s.
Cu trc RISC-16 bit, Thi gian mt chu k lnh l 62.5 ns
Cu hnh cc module Clock c bn:
- Tn s ni ln ti 16 MHz vi 4 hiu chnh tn s +- 1%.
- Thch anh 32 KHz.
- Tn s lm vic ln ti 16 MHz.
- B cng hng.
- Ngun to xung nhp bn ngoi.
- in tr bn ngoi.
Timer_A 16 bit vi 3 thanh ghi hnh, 3 thanh ghi so snh rng 16 bit
Timer_B 16 bit vi 3 thanh ghi hnh, 3 thanh ghi so snh rng 16 bit
Giao din truyn thng ni tip:
- H tr truyn thng ni tip nng cao UART, t ng d tm tc
Baud.
- B m ha v gii m IrDA (Infrared Data Associatio).
- Chun giao tip ng b SPI.
- Chun giao tip I2C.
B chuyn i ADC 10 bit, 200 ksps vi in p tham chiu ni, Ly mu
v cht. T ng qut knh, iu khin chuyn i d liu.
Page 21
n iu khin t ng 1
MSP430 G2553
Page 22
n iu khin t ng 1
Page 23
n iu khin t ng 1
PXSEL
0
1
0
1
Page 24
n iu khin t ng 1
Cc ngt P1 v P2:
Mi chn ca port P1 v P2 u c kh nng ngt. Cc ngt c cu hnh bi cc
thanh ghi PxIFG, PxIE v PxIES. Tt c cc chn ca port P1 mt nguyn nhn tng
ng vi mt vector ngt. Tt c cc chn ca port 2 c nhiu hn mt nguyn nhn khc
nhau tng ng vi 1 vector. C th s dng thanh ghi PxIFG xc nh nguyn nhn
cc ngt port P1 v P2.
a) Thanh ghi c ngt P1IFG v P2IFG:
- Mi bit ca thanh ghi PxIFGx l mt c ngt tng ng vi chn xut/ nhp v
khi c cnh xung tn hiu ti cc chn. Tt c cc c ngt ca thanh ghi PxIFGx i hi
mt ngt tng ng vi cc bit PxIE v GIE c set. Mi c ngt i hi phi reset
bng phn mm. Phn mm cng c th set c ngt:
+ Bit =0 Khng c ngt no ang ch.
+ Bit =1 C 1 ngt ang ch c phc v.
Ch : Khi thay i thanh ghi PxOUT v PxDIP c ngha l bn ang set c ngt
tng ng.
b) Thanh ghi la chn ngt theo sn xung P1IES, P2IES:
Mi bit ca thanh ghi PxIES la chn ngt theo cnh ln hay cnh xung
tng ng vi mi chn xut/ nhp:
+ Bit = 0 C ngt c set khi c cnh ln ca xung.
+ Bit = 1 C ngt c set khi c cnh xung ca xung.
c) Thanh ghi cho php ngt P1IE v P2IE:
Mi bt PxIE cho php hay cm ngt v lin quan n c ngt tng ng:
+ Bit = 0: Cm ngt.
+ Bit = 1: Cho php ngt.
Page 25
n iu khin t ng 1
B nh thi
MSP340G2553 c hai b nh thi 16 Bit l Timer_A0 v Timer_A1.
L mt b Timer/Counter 16 bit. Vi 3 thanh ghi lu tr v 3 thanh ghi so snh.
L mt Timer a chc nng. m thi gian, so snh, PWM . Timer_A cng c kh nng
ngt khi counter m trn hoc mi thanh ghi m trn. Cc c tnh chnh ca Timer_A
bao gm:
+ L mt Timer/counter 16 Bit khng ng b vi 4 ch hot ng.
+ C th la chn v cu hnh ngun xung
+ Hai thanh ghi c th cu hnh capture/compare
+ Cu hnh u ra vi ch PWM
+ Cht ng vo v ng ra khng ng b
S khi ca TimerA:
Page 26
n iu khin t ng 1
ngun t LFXTCL, thng dng cho h thng ph vi clock hot ng thp tit kim
nng lng.
SMCLK (Submaster clock): thng dng cho ngoi vi, ly ngun t DCO hoc
XT2.
2. Timer/Counter:
Cc ch hot ng:
Stop : Tt Timer A.
Page 27
n iu khin t ng 1
3. Capture/Compare:
Chc nng Capture dng ghi li mt s kin theo thi gian. C th hot ng
vi c ngun tn hiu ni v tn hiu ngoi. Ty thuc vo gi tr config cho Timer A m
b Capture c th xt cnh ln, cnh xung hoc c hai cnh ca tn hiu. Khi s kin
Capture xy ra th:
Page 28
n iu khin t ng 1
Page 29
n iu khin t ng 1
MCH CNG
SUT
NG C
SRF05 (v tr)
M hnh phn cng:
Page 30
n iu khin t ng 1
3.2
Lu gii thut:
Khi mi khi ng, robot s pht sng siu m thu v v tr ca n, nu xm < xf robot
s r tri ( trnh vt cn ), nu xm > xf robot s thc hin bm theo mp tng bng lut
iu khin logic m.
Cc thng s:
x_ref:
xf:
x_right:
xm:
SRF05
xm > xf
Logic m
Y
Turn Left
Motor
GVHD: Nguyn Thin Thnh
Page 31
n iu khin t ng 1
SRF05
N
Turn Left
Y
x_right > x_ref
Turn Right
Tc
ng c
Page 32
n iu khin t ng 1
Page 33
PH LC CODE:
#include "MSP430G2553.h"
#include <stdbool.h>
////////////////Defines////////////////
#define MOTOR_LEFT
BIT1 // P2.1
#define MOTOR_RIGHT
BIT4 // P2.4
#define MOTOR_LEFT_DIR BIT6 //P2.0
#define MOTOR_RIGHT_DIR BIT7 //P2.2
#define
#define
#define
#define
SRF05_LEFT
SRF05_FRONT
TRIGER
TRIGER2
BIT1
BIT2
BIT0
BIT4
//P1.1
//P1.2
//P1.0
//P1.4
BIT1 + BIT4;
BIT0 + BIT2 + BIT1 + BIT4;
~(BIT1|BIT4|BIT0|BIT2); //clear P2.1 and P2.4
and TA1.2 are outputs for PWM on P2.1 and P2.4
// SRF05
P1DIR = 0x00;
P1DIR |= TRIGER + TRIGER2 + MOTOR_LEFT_DIR + MOTOR_RIGHT_DIR ; // OUT
TRIGER
P1OUT &= ~(TRIGER | TRIGER2| MOTOR_LEFT_DIR | MOTOR_RIGHT_DIR) ; // OUT
TRIGER
P1IE |= SRF05_LEFT + SRF05_FRONT ;
P1IFG &= ~ (SRF05_LEFT | SRF05_FRONT );
P1SEL = SRF05_LEFT + SRF05_FRONT;
//
// ---------------------------------------------TA1CCR0 = 8000 - 1;
// Tan so PWM 2000Hz
TA1CCR1 = 0; // right motor
TA1CCR2 = 0; // left nmotor
TA1CCTL1 = OUTMOD_7;
// Reset/Set mode
TA1CCTL2 = OUTMOD_7;
//( 0-> TA1CCR1 set, TA1CCR1 -> TA1CCR0 reset )
TA1CTL |= TASSEL_2 + MC_1; // Start timerA1 in up mode , SMCLK= 16MHz
// cai dat cam bien SRFF05
TACCTL0 = CM_3 + SCS + CCIS_0 + CAP +CCIE; // both edge + CCI0A (P1.1)//
+ Capture Mode + Interrupt
TACCTL1 = CM_3 + SCS + CCIS_0 + CAP +CCIE; // both edge + CCI1A (P1.2)//
+ Capture Mode + Interrupt
TA0CTL |= TASSEL_2 + MC_2 + ID_3;//+ ID_3; // Start timerA0 in CONT mode
// CAPTURE , SMCLK
TA0CCR0 = 0;
}
void ultrasonic (void)
{
// Ultrasonic sensor 1 // phat xung do khoang cach
P1OUT |= TRIGER + TRIGER2;
__delay_cycles(10); // tao xung 10us de do khoang cach, CLOCK = 8Mhz
P1OUT &= ~(TRIGER | TRIGER2);
}
void go_left(int valuepwm)
{
TA1CCR1 = 1000;
TA1CCR2 = valuepwm;
}
void go_right(int valuepwm)
{
TA1CCR1 = valuepwm;
TA1CCR2 = 1000;
}
void go_forward()
{
TA1CCR1 = 7000 ;
TA1CCR2 = 7000 ;
}
/* void go_resever()
{
P1OUT |= MOTOR_LEFT_DIR + MOTOR_RIGHT_DIR
TA1CCR1 = 8000-1 ;
TA1CCR2 = 8000-1 ;
} */
void stop()
{
TA1CCR1 = 0 ;
TA1CCR2 = 0 ;
}
void go_right_90()
{
TA1CCR1 = 8000;
TA1CCR2 = 0;
// delay 1s;
}
void go_left_90(int valuepwm)
{
TA1CCR1 = 0;
TA1CCR2 = valuepwm;
}
; // OUT TRIGER
else
{
stop();
}
ultrasonic();
__delay_cycles(10000);
}
}
// ---------------------- KHU VUC NGAT ----------------------------------------unsigned int RisingEdge[2];
unsigned int FallingEdge[2];
unsigned int PulseTimes[2];
unsigned short First;
unsigned short First2;
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer0_A0 (void)
{
if
{
(First == 0)
RisingEdge[0] = TA0CCR0;
First = 1;
}
else
{
FallingEdge[0] = TA0CCR0;
PulseTimes[0] = FallingEdge[0] - RisingEdge[0];
First = 0;
TA0CCR0 = 0; //
x_current = (PulseTimes[0])/58; // left_front distance SMCLK = 2Mhz
}
}
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer0_A1 (void)
{
volatile unsigned short ta0iv;
ta0iv = TA0IV; // Reading TA1IV clears it
if( ta0iv == TA0IV_TACCR1 )
{
if( First2 == 0)
{
RisingEdge[1] = TA0CCR1;
First2 =1;
}
else
{
FallingEdge[1] = TA0CCR1;
PulseTimes[1] = FallingEdge[1] - RisingEdge[1];
First2 = 0;
TA0CCR1 = 0; //
front_distance = (PulseTimes[1])/58;
}
}
}