Programarea Mcu
Programarea Mcu
16
.
.
.
.
24
24
28
31
33
.
.
.
.
.
.
40
40
43
44
46
49
51
54
54
59
68
70
70
77
85
9 Memoria EEPROM
92
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
99
99
102
103
106
CUPRINS
113
113
114
115
13 Roboi autonomi
13.1 Comportamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Vehiculele Braitenberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.3 Analiza strilor finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
117
119
120
123
14 Senzori de navigat, ie
14.1 Navigat, ia inert, ial si senzori inert, iali . .
14.2 Accelerometre . . . . . . . . . . . . . . . .
14.2.1 Accelerometre piezorezistive . . .
14.2.2 Accelerometre piezoelectrice . . .
14.2.3 Accelerometre capacitive . . . . .
14.2.4 Accelerometre termice . . . . . . .
14.2.5 Semnalul de ies, ire . . . . . . . . .
14.2.6 nclinometre . . . . . . . . . . . . .
14.3 Giroscoape . . . . . . . . . . . . . . . . . .
14.3.1 Giroscoape mecanice . . . . . . . .
14.3.2 Giroscoape cu fibr optic . . . .
14.3.3 Giroscoape cu structur vibrant
.
.
.
.
.
.
.
.
.
.
.
.
127
128
129
133
134
135
135
136
138
139
139
139
140
.
.
.
.
.
142
142
143
144
145
152
15 Manipulatoare robotice
15.1 Sisteme de coordonate omogene
15.2 Structur . . . . . . . . . . . . . .
15.3 Cinematica . . . . . . . . . . . . .
15.3.1 Cinematica direct . . . .
15.3.2 Cinematica invers . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Capitolul 1
Programarea microcontrolerelor
PICmicroTM prin tehnica ICSPr
Programarea de tip ISP (In-System Programming) este o tehnic pentru programarea unui microcontroler dup ce acesta a fost dispus pe placa de circuit. Tehnica
ICSP (In-Circuit Serial Progrmming) reprezint o evoluie a tehnicii ISP dezvoltat
de ctre firma Microchip n scopul programrii microcontrolerelor PICmicroTM OTP i
Flash. Utilizarea a doar doi pini de intrare/ieire pentru transferul serial al datelor
este mult mai uoar i mai puin intruziv dect operarea normal a microcontrolerului.
Programatorul reprezint instrumentul hardware care permite transferul un program
ntr-un microcontroler. Acesta poate fi ntlnit ntr-o varietate de tipuri i forme. Procesul de scriere al unui program ncepe din momentul n care asamblorul genereaz
codul hex compus din instruciuni n cod main. Codul hex este preluat intr-un fiier
i transferat direct n memoria microcontrolerului. Pentru acesta este necesar dispozitivul hardware (programatorul) care este conectat att la computerul generator al
codului hex (prin interfa serial RS232 sau USB), ct i la un numr de pini specifici ai microcontrolerului. Fiecare serie de microcontrolere sau de capsul are un set
diferit de pini (figura 1.5) care poart denumirea de interfa/conector ICSP.
Interfaa ICSP conine 6 conexiuni distincte, dup cum urmeaz:
1. VPP - Tensiune de programare (de obicei 13 V);
2. VCC - Tensiune de alimentare (de obicei 5 V);
3. GND - Mas (0 V);
4. PGD - Semnal de date (de obicei pinul RB7);
5. PGC - Semnal de ceas (de obicei pinul RB6);
6. PGM - Activarea LVP (Low Voltage Programming) (de obicei pinul RB3 sau RB4).
Ordinea conexiunilor este fcut pentru a evita problemele ce pot aprea la conectarea
invers a conectorului ICSP. Astfel, conexiunile VCC i GND pot fi conectate la PGC i
PGD, fr a aprea probleme.
3
Circuit imprimat
Microcontroler
VDD
VDD
MCLR/VPP
Conector ICSP
VDD
VSS
PGD
PGC
VPP
VDD
GND
PGD
PGC
Ctre circuit
Rezistene de separare
Tensiunea / semnalul de programare (VPP ) se conecteaz la pinul MCLR al microcontrolerului. n timpul programrii sau a verificrii, acest semnal ia valoarea de
programare (13.5 V) sau VCC +3.5 V i semnaleaz nceputul procesului.
Microcontrolerele mai vechi utilizeaz acest pin pentru conectare direct la circuitul
de programare care actualizeaz memoria Flash. Prin urmare, curentul acestui semnal
trebuie s fie relativ mare. n cazul microcontrolerelor noi, tensiunea de programare
este generat intern, astfel nct semnalul de programare generat de ctre programator are doar rol de semnalizare.
Tensiunea de alimentare (VCC /VDD ) alimenteaz circuitul electronic n care opereaz
microcontrolerul utiliznd, n cele mai multe din cazuri, un stabilizator de tensiune (de
tip 7805 sau echivalent). Curentul furnizat de ctre stabilizator este limitat (100 mA).
Semnalul de date (PGD) i semnalul de ceas (PGC) sunt cele dou semnale care
efectueaz transferul de date propriu-zis. Iniial semnalul PGD este trecut n mod 1L
sau 0L , dup care programatorul pornete semnalul de ceas pentru transferul datelor.
Semnalul de date mai este utilizat i de ctre microcontroler, n modul verificare (fiind,
prin urmare, bidirecional).
Semnalul de programare LVP (PGM) este meninut n stare 0L pentru preveirea
intrrii microcontrolerului n modul de programare LVP (Low Voltage Programming).
Meninerea se face, de obicei, cu ajutorul unei rezistene de 10k cuplate la mas (rezisten de tip pull down). n cazul n care microcontrolerul nu se programeaz n modul
LVP, semnalul este ignorat.
Microcontrolerele sunt setate din fabric n modul LVP, astfel nct la prima utilizare
ele pot fi programate n acest mod. Ieirea din modul LVP se face prin utilizarea unui
programator cu tensiune de programare ridicat.
Molex KK
Molex SL/C-Grid
RJ-11
Programator PICkit 2
r
we t
rge
Ta
sy
Bu
Po
Conector ICSP
Pin
Descriere
MCLR/VPP
VDD
VSS (GND)
PGD (ICSPDAT)
PGC (ICSPCLK)
PGM (Auxiliar)
Aplucaia software pentru programarea microcontrolerelor permite ncrcarea fiierelor HEX i scrierea acestora n memoria program a circuitului. n prealabil utilizatorul
trebuie s se asigure c microcontrolerul a fost detectat corespunztor, codul acestuia fiind indicat n fereastra aplicaiei (figura 1.4). Detectarea dispozitivului dup
conectarea programatorului la acesta (n cazul n care este necesar) se face prin intermediul opiunii Tools/Check Communication din meniul aplicaiei.
Bara de meniu
Configuraia
microcontrolerului
Fereastra de stare
Bara de progres
Tensiunea VDD
Sursa memoriei
Memoria program
Memoria de date
EEPROM
Programatorul permite alimentarea circuitului electronic n care funcioneaz microcontrolerul prin bifarea opiunii On din meniul VDD PICkit 2. Acest lucru semnific,
practic, furnizarea de ctre programatorul hardware a tensiunii de alimentare VDD de 5
V. Acest mod este semnalizat, de asemenea, prin aprinderea LEDului indicator Target
al programatorului hardware. n cazul n care programatorul nu furnizeaz tensiunea
VDD , aceasta trebuie s fie dat de ctre alimentarea circuitului aplicaiei microcontrolerul.
Opiunea MCLR din meniul VDD PICkit 2 are rolul de a menine microcontrolerul
n stare de resetare nainte i dup programarea sa pentru a mpiedica execuia codului.
Programarea propriu-zis poate fi efectuat, dup ncrcarea fiierului HEX dorit,
fie prin intermediul butonului grafic Write al interfeei software, fie prin apsarea butonului rou al dispozitivului hardware. n ultima dintre opiuni, trebuie bifat opiunea
Programmer/Write on PICkit Button din meniul aplicaiei software. n cazul n care
se dorete reprogramarea automat a microcontrolerului de fiecare dat cnd fiierul
HEX este actualizat, se poate utiliza opiunea Auto Import Hex + Write Device din
interfaa grafic a programatorului.
6
Microcontrolere cu 8 pini
(seria PIC10F)
Microcontrolere cu 18 pini
DIP 18
DIP 8
VDD
GP2/T0CKI/FOSC4
GP1/PGC
RA2
18
RA1
RA3
17
RA0
RA4/T0CKI
16
OSC1
N/C
MCLR/VPP
15
OSC2
GP0/PGD
VSS (GND)
14
VDD
RB0/INT
13
RB7/PGD
RB1
12
RB6/PGC
RB2
11
RB5
RB3
10
RB4
GP3/MCLR/VPP
VSS (GND)
6
5
PIC16F88
PIC10F22X
N/C
DIP 8
1
2
GPIO4
GPIO3/MCLR/VPP
PIC12F675
VDD
GPIO5
VSS (GND)
GPIO0/PGD
GPIO1/PGC
GPIO2
PIC12F
DIP 20
1
20
VSS (GND)
RA5/OSC1
19
RA0/PGD
RA4/OSC2
18
RA1/PGC
17
RA2/T0CKI/INT
16
RC0
15
RC1
14
RC2
VDD
DIP 14
VSS (GND)
RA3/MCLR/VPP
RA5/OSC1
13
RA0/PGD
RC5
RA4/OSC2
12
RA1/PGC
RC4
RA3/MCLR/VPP
11
RA2/T0CKI/INT
RC3
RC5
10
RC0
RC5
13
RB4
RC4
RC1
RC7
12
RB5
RC3
RC2
RB7
10
11
RB6
DIP 40
1
40
RB7/PGD
RA0
39
RB6/PGC
RE3/MCLR/VPP
DIP 28
PIC16F690
14
PIC16F684
VDD
RB7/PGD
RA1
38
RB5
RA0
27
RB6/PGC
RA2
37
RB4
RA1
26
RB5
RA3
36
RB3/PGM
RA2
25
RB4
RA4/T0CKI
35
RB2
RA3
24
RB3/PGM
RA5
34
RB1
RA4/T0CKI
23
RB2
RE0
33
RB0/INT
RA5
22
RB1
RE1
32
VDD
VSS
21
RB0/INT
RE2
10
31
VSS (GND)
RA7/OSC1
20
VDD
VDD
11
30
RD7
RA6/OSC2
10
19
VSS (GND)
VSS
12
29
RD6
RC0/T0CKI
11
18
RC7
RA7/OSC1
13
28
RD5
RC1
12
17
RC6
RA6/OSC2
14
27
RD4
RC2
13
16
RC5
RC0/T1CKI
15
26
RC7
RC3
14
15
RC4
RC1
16
25
RC6
RC2
17
24
RC5
RC3
18
23
RC4
RD0
19
22
RD3
RD1
20
21
RD2
PIC16F887
28
PIC16F886
RE3/MCLR/VPP
Fig. 1.5: Pinii de programare ICSPr pentru diferite tipuri de capsule DIP/SOIC ale microcontrolerelor
Microchip.
Capitolul 2
Memorie
Module timer
PIC12F675
Da
4 (10-bit ADC)
Pini de intrare/ieire
Pini de intrare
Da
Comparator analogic
Interfa ICSP
Da
Numr de instruciuni
33
Capsule
1
2
GP4/AN4/T1G/OSC2/CLKOUT
GP3/MCLR/VPP
PIC12F675
VDD
GP5/T1CKI/OSC2/CLKIN
VSS
GP0/AN0/CIN+/PGD
GP1/AN1/CIN-/VREF/PGC
GP2/AN2/T0CKI/INT/COUT
1N4148
10k
D1
PIC12F675
7805
6-18 VDC
C1
10u
5 VDC
R1
1
2
ICSP
1
C2
10k
C3
100n
100n
4
7
6
8
5
VPP
VDD
GND
PGD
PGC
R3
220
LED1
Schema cea mai simpl de realizat o reprezint conectarea unui LED la unul din
porturile de ieire disponibile, setate s opereze n modul digital. n funcie de tipul
LEDului i, implicit, de tensiunea direct (VD ) i de curentul direct (ID ), valoarea rezistenei de limitare R3 se va alege conform relaiei (2.1).
R3 =
VDD VD
.
ID
(2.1)
Figura 2.4 conine valorile tensiunii directe i curentul direct nominal n funcie de
tipul i culoarea LEDului utilizat. Valorile sunt generale, putnd varia n funcie de
tipul particular al unui LED. De exemplu, pentru un LED de culoare roie, rezistena
R3 va avea valoarea minim:
R3 =
5 2.2
= 140.
0.02
(2.2)
n schema din figura 2.3 la portul GP2 al microcontrolerului este conectat un LED
9
Caracteristici
optice
Caracteristici
electrice
IR
Red
Orange
Yellow
White
Green
Blue
UV
840
640
610
590
n/a
560
470
400
n/a
220-8000
220-2000
170-4000
5500
400
250-4000
40
15-30
12-30
12-30
12-30
12-50
12-50
12-50
10-20
1.7 V
2.2 V
2.0 V
2.3 V
3.3 V
2.2 V
3.4-4.0 V
3.8 V
50 mA
20 mA
prin intermediul unei rezistene de 220 ohmi. Pentru controlul aprinderii sau stingerii
acestuia, este necesar ca portul s fie setat n modul de operare ca ieire.
Porturile de I/O (intrare/ieire) sunt controlate direct prin intermediul a doi regitrii
cu funcie special. Registrul TRISIO stabilete dac fiecare din cei 6 pini lucreaz
ca pin de intrare sau ca pin de ieire. Valoarea bitului din registru asociat pinului va
fi, prin urmare, 0 dac pinul respectiv este pin de ieire sau 1 dac pinul este pin de
intrare. Registrul GPIO stocheaz valoarea informaiei prezente la fiecare din cei 6
pini. n cazul n care un pin este de ieire, valoarea informaiei este scris de ctre
microcontroler n bitul asociat pinului (mod scriere), iar n cazul n care pinul este de
intrare, informaia este primit din exterior, bitul asociat pinului fiind citit de ctre
microcontroler (mod citire).
TRISIO
GPIO
U (0)
U (0)
R/W (1)
R/W (1)
R (1)
R/W (1)
R/W (1)
R/W (1)
TRISIO5
TRISIO4
TRISIO3
TRISIO2
TRISIO1
TRISIO0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
U (0)
U (x)
R/W (x)
R/W (x)
R/W (x)
R/W (x)
R/W (x)
R/W (x)
GPIO5
GPIO4
GPIO3
GPIO2
GPIO1
GPIO0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
De exemplu, pinul GP2 opereaz ca pin de ieire. Prin urmare, bitul TRISIO2 va
avea valoarea 0, iar bitul GPIO2 va fi modificat prin program n valoarea 1 dac se
dorete ca LEDul s fie aprins sau n valoarea 0 dac LEDul este stins. Valorile binare
1 sau 0 au semnificaie electric la ieirea pinului (5V sau 0V).
void main() {
TRISIO.B2=0;
GPIO.B2=1;
}
n momentul n care valoarea lui GP2 este stabilit de ctre program, LEDul va fi
aprins continuu. Dac, n schimb, se dorete aprinderea sa periodic, valoarea la ieire
trebuie modificat cu o anumit pauz i periodic. De exemplu, pentru o aprindere cu
perioada de 20 ms i un factor de umplere de 20%, neglijnd timpii necesari modificrii
valorilor i timpul buclei, perioadele de pauz vor fi de 4 ms n stare aprins i 16 ms
n stare stins.
10
R2
1N4148
10k
D1
PIC12F675
7805
6-18 VDC
C1
10u
5 VDC
R1
1
2
ICSP
1
C2
10k
C3
100n
100n
R4
10k
4
7
6
8
2
VPP
VDD
GND
PGD
PGC
R3
220
K1
LED1
void main() {
TRISIO.B2=0;
while (1) {
GPIO.B2=1;
delay_ms(4);
GPIO.B2=0;
delay_ms(16);
}
}
//
//
//
//
//
//
Pinul
Bucla
Pinul
Pauza
Pinul
Pauza
Schema electric din figura 2.3 poate fi modificat prin conectarea unui buton la
pinul GP5 (figura 2.6). Butonul K1 are rolul de a comanda stingerea LEDului atunci
cnd acesta este apsat. Prin urmare, n stare neapsat, pinul GP5 trebuie s fie
alimentat la 5V (valoarea binar 1) prin intermediul rezistenei de pull-up R4 . La
apsarea butonului, pinul va fi conectat la mas. Microcontrollerul va citi continuu
valoarea pinului de intrare GP5 i va modifica valoarea lui GP2 n concordan.
void main() {
TRISIO.B2=0;
TRISIO.B5=1;
while (1) {
GPIO.B2=GPIO.B5;
}
}
//
//
//
//
Pinul
Pinul
Bucla
Pinul
Unele din porturile de I/O sunt prevzute cu rezistene interne de pull-up (weak
pull-up) care prestabilesc valoarea de intrare la 1 prin conectarea intrrii la tensiunea
de alimentare. n cazul utilizrii rezistenelor de tip weak pull-up, schema electric
poate fi simplificat prin eliminarea rezistenei de pull-up externe R4 (figura 2.7).
Activarea rezistenelor interne de tip weak pull-up se efectueaz, n cazul microcontrolerului 12F675, prin intermediul unui registru dedicat WPU (figura 2.8). Dintre cei 6
11
R2
1N4148
10k
D1
PIC12F675
7805
6-18 VDC
C1
5 VDC
R1
C2
10u
10k
C3
100n
100n
4
7
6
ICSP
8
5
VPP
VDD
GND
PGD
PGC
R3
220
K1
LED1
Fig. 2.7: Schema electric 2.6 modificat pentru activarea weak pull-up.
pini care pot opera ca intrri, toi sunt prevzui cu posibilitatea activrii individuale
a rezistenelor de tip weak pull-up, cu excepia pinului GP3.
WPU
U (0)
U (0)
R/W (1)
R/W (1)
U (0)
R/W (1)
R/W (1)
R/W (1)
WPU5
WPU4
WPU2
WPU1
WPU0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Fig. 2.8: Registrul de control al rezistenelor de tip weak pull-up ale microcontrollerului PIC12F675.
n cazul n care pinul GP5 are activat rezistena de tip weak pull-up, microcontrolerul va citi implicit valoarea 1 atunci cnd butonul nu este apsat. Activarea se face
software, din programul microcontrolerului, activnd bitul corespunztor din registrul
WPU i activnd, de asemenea, global, lucrul cu rezistenele interne de pull up setnd
la 0 bitul GPPU al registrului OPTION_REG.
OPTION_REG.B7=0;
WPU.B5=1;
// _GPPU activat
// Pinul GP2 are activat weak pull-up
Dac unul din pini opereaz ca ieire, atunci rezistena intern de pull-up este
dezactivat automat.
Problema precedent poate fi complicat prin folosirea butonului K1 ca un comutator continuu care, la orice apsare a sa, s inverseze starea de funcionare a LEDului.
Prin urmare, orice nou apsare a butonului modific starea precedent a LEDului.
void main() {
TRISIO.B2=0;
TRISIO.B5=1;
GPIO.B2=1;
while (1) {
12
//
//
//
//
Pinul
Pinul
Pinul
Bucla
if (GPIO.B5==0)
// Conditie de apasare buton
GPIO.B2=~GPIO.B2; // Inversarea valorii pinul GP2
}
}
n acest moment, din cauza imperfeciunilor contactelor metalice i a timpului mare
de reacie al microcontrolerului, o singur apsare fizic a butonului va produce o
multitudine de comutri care vor perturba logica de funcionare a schemei (figura 2.9).
Acest lucru este cunoscut n limba englez sub denumirea de switch bouncing. Pentru
eliminarea efectelor sale, se utilizeaz mai multe artificii la nivel hardware sau software.
//
//
//
//
//
//
13
VCC
apsare
eliberare
5V
R2
VK
D1
0V
5V
R1
VK
VOUT
VIN
VIN
0V
10k
C1
K1
5V
VOUT
100n
0V
IOC
U (0)
U (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
IOC5
IOC4
IOC3
IOC2
IOC1
IOC0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Activarea individual a ntreruperilor se face cu ajutorul biilor registrului IOC, pentru fiecare din cei 6 pini setai n modul intrare (figura 2.11). Implicit, toate ntreruperile
sunt dezactivate. De asemenea, este necesar activarea global a ntreruperilor prin
setarea valorii 1 a bitului GPIE din registrul INTCON.
14
De fiecare dat cnd valoarea unui pin de intrare este modificat, microcontrolerul
genereaz o ntrerupere, iar bitul GPIF al registrului INTCON ia valoarea 1. n acel
moment se oprete execuia codului, se salveaz poziia curent i se face saltul ctre
subrutina de ntrerupere. Revenirea din subrutin se face fie prin setarea valorii 0 a
bitului GPIF, fie prin scrierea sau citirea unei valori din registrul GPIO.
void interrupt() {
GPIO.B2=~GPIO.B2;
INTCON.GPIF=0;
}
// Procedura de intreupere
// Modificarea valorii portului GP2
// Revenirea din intrerupere
void main() {
INTCON.GPIE=1;
IOC.B5=1;
}
// Programul principal
// Activarea intreruperilor portului
// Activarea intreruperii pinului GP5
Chiar i n cazul lucrului cu ntreruperi trebuie utilizate tehnici de debouncing pentru evitarea generarrii unor ntreruperi multiple.
APLICAII:
1. S se creeze o aplicaie de tip semafor cu 3 LEDuri.
2. Pornind de la schema din figura 2.6, s se creeze un program care s permit
aprinderea unui LED att timp ct butonul este apsat.
3. Pornind de la schema din figura 2.3, s se creeze un program care s permit
aprinderea unui LED cu o perioad de 20 ms i factor de umplere de 50%.
4. S se creeze o schem electric i aplicaia software care s permit aprinderea
alternativ a dou LEDuri cu ajutorul unui singur buton.
5. O schem conine un LED verde, un LED rou i un buton. La interval de 1
secund LEDul rou se aprinde pentru o perioad de 300 ms. n cazul n care butonul
este apsat n acest interval, LEDul verde se aprinde timp de 1 secund. S se creeze
schema electric i aplicaia software.
15
Capitolul 3
C1
OSC1
Logic intern
RF
XTAL
SLEEP
RS
OSC2
C2
Logic intern
PIC16Fxxx
Fig. 3.1: Schema electric de operare a microcontrolerelor PICmicro cu cristal de cuar sau rezonator
ceramic extern.
cuar sau rezonatorul ceramic i cele dou condensatoare cuplate la mas. Rezistena de reacie RF din interior are valori cuprinse ntre 2 i 10 M. Atunci cnd sunt
utilizate cristale de cuar de tip AT, este necesar includerea unei rezistene serie
suplimentare RS de ordinul a civa M (figura 3.1). Valorile mari ale capacitilor
mresc stabilitatea oscilatorului dar mresc, de asemenea, timpul de stabilizare al osclaiilor. Valorile tipice ale componentelor externe sunt prezentate n figura 3.2.
n cazul n care generarea unui semnal de ceas foarte precis nu este critic, se
poate utiliza un oscilator RC extern (figura 3.3). Valoarea frecvenei depinde de o serie de factori, precum tensiunea de alimentare, valorile componentelor REXT i CEXT i
temperatura de funcionare. De asemenea, frecvena FOSC =1/ROSC COSC variaz de la
o component la alta. Pentru valori ale rezistenei REXT sub 2.2 k oscilatorul devine
instabil, iar pentru valori peste 1 M oscilatorul devine foarte sensibil la zgomot i
umiditate. Se recomand valori cuprinse ntre 3.3 k i 100 k. Valoarea recomandat
a capacitii CEXT este mai mare de 20 pF din motive de zgomot i stabilitate. n modul
de lucru cu oscilator RC extern, se poate selecta individual dac pinul OSC2, neutilizat
n acest caz, poate fi folosit ca pin liber de tip I/O sau poate furniza la ieire frecvena
FOSC /4.
Rezonator ceramic
LP
XT
HS
Cristal de cuar
C1
C2
C1
C2
32 kHz
68-100 pF
68-100 pF
200 kHz
15-30 pF
15-30 pF
100 kHz
68-100 pF
150-200 pF
455 kHz
15-68 pF
15-68 pF
2 MHz
15-68 pF
15-68 pF
15-30
- pF
15-30
- pF
4 MHz
15-68 pF
15-68 pF
15-30
- pF
15-30
- pF
8 MHz
10-68 pF
10-68 pF
15-30 pF
15-30 pF
10 MHz
10-68 pF
10-68 pF
15-30 pF
15-30 pF
16 MHz
10-22 pF
10-22 pF
15-30
- pF
15-30
- pF
20 MHz
15-30
- pF
15-30
- pF
Fig. 3.2: Valori uzuale ale condensatoarelor din compunerea oscilatoarelor externe.
17
VDD
REXT
CLKIN
FOSC
CEXT
FOSC/4
CLKOUT
PIC16Fxxx
10k
4k7
74AS04
74AS04
XTAL
PIC16Fxxx
CLKIN
10k
10k
20pF
20pF
Fig. 3.4: Scheme electrice de operare cu oscilator Pierce extern de tip paralel.
Circuitul Pierce serie (figura 3.4) opereaz, ca i cel paralel, pe frecvena fundamental a cristalului de cuar. Similar, inversorul 74AS04 realizeaz inversarea de faz,
iar rezistenele de 330 k reazlizeaz reacia negativ pentru asigurarea funcionrii
inversoarelor n regiunea liniar.
18
330k
74AS04
74AS04
PIC16Fxxx
CLKIN
0.1uF
XTAL
Fig. 3.5: Scheme electrice de operare cu oscilator Pierce extern de tip serie.
U (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
TUN5
TUN4
TUN3
TUN2
TUN1
TUN0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
OSCTUNE
OSCCON
U (0)
R/W (0)
R/W (0)
R/W (0)
R (0)
R/W (0)
R/W (0)
R/W (0)
IRCF2
IRCF1
IRCF0
OSTS
IOFS
SCS1
SCS0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Oscilator
primar
OSC2
FOSC2:FOSC0
SCS1:SCS0
Sleep
Oscilator
secundar
T1OSC
IRCF2:IRCF0
8 MHz
4 MHz
Oscilator
intern
2 MHz
8 MHz
(INTOSC)
Postscaler
Oscilator
31.25 kHz
Periferice
Ctre Timer1
Activare
oscilator
T1OSCEN
T1OSI
01
1 MHz
500 kHz
250 kHz
125 kHz
31.25 kHz
31.25 kHz
(INTRC)
10
Oscilator intern
CPU
111
110
101
100
011
MUX
T1OSO
00
MUX
OSC1
010
001
000
WDT, FSCM
Oscilator
intern
Oscilator
primar
Timer1
SCS1:SCS0
IRCF2:IRCF0
FOSC2:FOSC0
31.25 kHz
10
000
125 kHz
10
001
250 kHz
10
010
500 kHz
10
011
1 MHz
10
100
2 MHz
10
101
4 MHz
10
110
8 MHz
10
111
00
111
EXTRC
00
110
00
101
INTRC
00
100
ECIO
00
011
HS
00
010
XT
00
001
LP
00
000
T1OSC
01
20
RA2/AN2/CVREF/VREF-
18
RA1/AN1
17
RA0/AN0
16
RA7/OSC1/CLKI
RA5/MCLR/VPP
15
RA6/OSC2/CLKO
14
VDD
13
RB7/AN6/PGD/T1OSI
PIC16F88
RA3/AN3/VREF+/C1OUT
RA4/AN4/T0CKI/C2OUT
VSS
RB0/INT/CCP1
RB1/SDI/SDA
12
RB6/AN5/PGC/T1OSO/T1CKI
RB2/SDO/RX/DT
11
RB5/SS/TX/CK
RB3/PGM/CCP1
10
RB4/SCK/SCL
PIC16F87
Ceas
Memorie
Periferice
Module timer
Pini de intrare/ieire
Pini de intrare
Rezistene de pull-up interne
Comparatoare analogice
Modul AUSART
Module CCP (PWM)
PIC16F88
Da
7 (10-bit ADC)
15
1
Da (Port B)
2
Da
1
Interfa ICSP
Da
Numr de instruciuni
35
Capsule
PIC16F88
C1
15pF
15
XTAL
8MHz
16
C2
15pF
17
ICSP
4
14
5
13
12
VPP
VDD
GND
PGD
PGC
R1
220
LED1
Fig. 3.12: Schema electric pentru verificarea modurilor de funcionare a semnalului de ceas (PIC16F88).
Fig. 3.13: Semnalul de ceas generat de controler la ieirea OSC2 (stnga) i semnalul generat la ieirea
RA0 (dreapta) (PIC16F88).
PIC16F88
DS32kHz
13
12
32.767 kHz
16
ICSP
4
14
5
13
12
VPP
VDD
GND
PGD
PGC
R1
220
LED1
Fig. 3.14: Schema electric pentru verificarea modului de funcionare cu generator extern (PIC16F88).
//
//
//
//
Porturi digitale
Portul B in mod iesire
Initializare port B
Inversare valoare port
Fig. 3.15: Semnalul de ceas generat de circuitul DS32kHz la intrarea OSC1 (stnga) i semnalul generat
la ieirea RB0 (dreapta) (PIC16F88).
23
Capitolul 4
Timere
Timerele reprezint module care pot fi utilizate ca i contoare de timp sau numrtoare. Pot fi definite pe 8 sau 16 bii, acest numr fiind, de fapt, numrul de bii al
numrtorului. Timere conin un prescaler care divizeaz frecvena de intrare n timer
cu un factor definit prin intermediul biilor unui registru. Microcontrolerele din familia
PICmicro pot avea, n funcie de model, pn la trei timere interne de uz general, denumite Timer0 (8 bii), Timer1 (16 bii) i Timer2 (8 bii), precum i un timer de tip
Watchdog.
4.1
Timer0
Modulul Timer0 este definit sub forma unui numrtor pe 8 bii (registrul TMR0)
care este conectat la un prescaler programabil pe 8 bii (biii PS2:PS0 ai registrului OPTION_REG). ntreruperile sunt generate atunci cnd numrtorul d overflow
(trece de la valoarea 0xFF la 0x00) (dac bitul TMR0IE este setat). Incrementarea
numrtorului se poate face pe frontul cresctor sau cel descresctor al semnalului de
ceas utilizat (bitul T0SE).
Calculul perioadei de timp cu care sunt generate ntreruperi de ctre timerul 0 se
face pornind de la formula 4.1.
4
TTimer0 =
PS (256 TMR0).
(4.1)
FOSC
Indiferent de sursa semnalului de ceas (extern sau intern), aceasta este utilizat
de timer sub forma frecvenei de execuie a instruciunilor, FOSC /4. Prescalerul PS este
ales cu ajutorul biilor PS2:PS0 ai registrului OPTION_REG. Factorul de multiplicare
este reprezentat de diferena 256-TMR0. Registrul TMR0 pe 8 bii este prencrcat
nainte de pornirea timerului.
Selectarea unui prescaler cu raportul de 1:16 implic reducerea frecvenei semnalului de ceas FOSC /4 la valoarea FOSC /4/16. Ulterior, dac registrul TMR0 este la
valoarea sa implicit 0, frecvena este, la rndul ei divizat cu factorul 256 (numrul de
impulsuri necesar ajungerii numrtorului TMR0 de la valoarea 0 la 255), rezultnd n
final, frecvena ntreruperilor de FOSC /4/16/256. Dac, n schimb, registrul TMR0 este
preiniializat cu o anumit valoare, numrarea nu va mai ncepe de la 0 ci de la acea
valoare. Prin urmare, frecvena ntreruperilor va fi de FOSC /4/16/(256-TMR0).
24
CAPITOLUL 4. TIMERE
CLKO (= FOSC/4)
Magistral date
8
M
U
X
1
0
RA4/T0CKI/C2OUT
M
U
X
Sync
2
cicluri
Reg. TMR0
T0SE
T0CS
PSA
Prescaler
31.25 kHz
Prescaler
pe 16 bii
Prescaler pe 8 bii
M
U
X
8
MUX 8-la-1
PS2:PS0
PSA
1
MUX
PSA
WDT
Time-out
INTCON
OPTION_REG
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
GIE
PEIE
TMR0IE
INT0IE
RBIE
TMR0IF
INT0IF
RBIF
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
RBPU
INTEDG
T0CS
T0SE
PSA
PS2
PS1
PS0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Timer0
WDT
PS2
PS1
PS0
1:2
1:1
1:4
1:2
1:8
1:4
1:16
1:8
1:32
1:16
1:64
1:32
1:128
1:64
1:256
1:128
PSA=0
PSA=1
4.1. TIMER0
TTimer0 =
4
16 (256 12) = 0.000128 16 244 = 0.499712s.
31250
(4.2)
De reinut faptul c exist mai multe soluii posibile pentru rezolvarea aceleiai
probleme, iar acestea nu sunt ntotdeauna exacte.
n momentul generrii unei ntreruperi, bitul TMR0IF devine 1. Pentru a reveni din
ntrerupere, la sfritul rutinei de ntrerupere acest bit trebuie resetat la 0.
Scrierea registrului TMR0 necesit 2 cicluri de instruciune, astfel nct la valoarea
TMR0 calculat trebuie adugat 2 (n exemplu anterior, n loc de valoarea calculat
12 se va utiliza 14). De asemenea, timpii suplimentari necesari execuiei celorlate instruciuni din rutina de ntrerupere trebuie adugai, de asemenea, la valoarea iniial
a registrului TMR0.
n cazul n care prescalerul este legat la Watchdog (PSA=1), el este decuplat de la
Timer0, nefiind luat n considerare (PS=1).
// Ex.3.3: Aprindere LED 1 Hz cu oscilator intern de 31.25 kHz si Timer0
void interrupt() {
PORTA.B0=!PORTA.B0;
TMR0=14;
INTCON.TMR0IF=0;
}
void main() {
OSCCON.IRCF2=0;
OSCCON.IRCF1=0;
OSCCON.IRCF0=0;
26
//
//
//
//
Rutina de intrerupere
Inversare bit RA0
Valoare presetata TMR0
Resetare flag intrerupere
OPTION_REG.PS2=0;
OPTION_REG.PS1=1;
OPTION_REG.PS0=1;
OPTION_REG.T0CS=0;
OPTION_REG.PSA=0;
// Prescaler 1:16
// (PS2:PS1=011)
ANSEL=0;
TRISA=0;
PORTA=0;
// Porturi digitale
// Portul A in mod iesire
// Initializare port A
INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=1;
CAPITOLUL 4. TIMERE
(4.3)
FOSC
Precizia este mai mic dect soluia fr variabil contor.
/* Ex.3.4: Aprindere LED 1 Hz cu oscilator intern de 31.25 kHz, Timer0
si variabila contor */
char cnt=15;
void interrupt() {
cnt--;
if (cnt==0) {
PORTA.B0=!PORTA.B0;
cnt=15;
}
TMR0=255;
INTCON.TMR0IF=0;
}
// Rutina de intrerupere
void main() {
ANSEL=0;
TRISA=0;
PORTA=0;
// Verificare contor
// Inversare bit RA0
// Reinitializare contor
// Preincarcare TMR0
// Resetare flag intrerupere
// Porturi digitale
// Portul A in mod iesire
// Initializare port A cu 0
OSCCON.IRCF2=0;
OSCCON.IRCF1=0;
OSCCON.IRCF0=0;
OPTION_REG.PS2=1;
OPTION_REG.PS1=1;
OPTION_REG.PS0=1;
OPTION_REG.T0CS=0;
OPTION_REG.PSA=0;
// Prescaler 1:256
// (PS2:PS1=111)
// Utilizare ceas intern Fosc/4
// Prescaler legat la Timer0
INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=1;
27
4.2. TIMER1
Setare bit TMR1IF pe 1
la Overflow
TMR1H
Semnal de ceas
sincronizat
TMR1
TMR1L
1
TMR1ON
On/Off
T1SYNC
T1OSC
1
T1OSO/T1CKI
Activare
oscilator
T1OSCEN
Ceas
intern
FOSC/4
T1OSI
Prescaler
1, 2, 4, 8
Sincronizare
det
0
2
T1CKPS1:T1CKPS0
Semnal ceas Q
TMR1CS
n ambele situaii, trebuie luat n calcul din start valoarea frecvenei de ceas deoarece
prin divizarea acesteaia se obin perioadele dorite de timp ale ntreruperilor. Dac divizarea nu se poate face exact, ctul nefiind un numr ntreg, perioada dorit nu poate
fi obinut exact, ci prin aproximare. n exemplul precedent, un semnal de ceas de 31.25
kHz nu se poate fi divizat exact pentru obinerea unei perioade de 500 ms, ci doar se
poate obine o aproximare la 499.712 ms.
4.2
Timer1
Modulul Timer1 (figura 4.3) este definit sub forma unui numrtor pe 16 bii compus
din doi regitrii a cte 8 bii, TMR1H i TMR1L. ntreruperea este generat la trecerea
de la valoarea 0xFFFF la valoarea 0x0000, dac este activat bitul TMR1IE al registrului T1CON i timerul este pornit (TMR1ON=1).
Timerul 1 poate fi utilizat, de asemenea, ca generator al semnalului de ceas atunci
cnd microcontrolerul se afl n modul SLEEP, n conjucie cu SCS1:SCS0 i cnd bitul
T1RUN este setat 1. De asemenea, la pinii T1OSO i T1OSI ai microcontrolerului se
poate conecta un oscilator extern secundar care poate fi activat cu bitul T1OSCEN
setat 1. De reinut c acest mod de lucru este destinat n principal utilizrii cristalelor
de cuar de mic putere, de pn la 32.768 kHz.
Selecia semnalului de ceas pentru numrtorul timerului se face cu bitul TMR1CS,
fie de la surs extern (setat 1), fie de la surs intern (setat 0). Atunci cnd se opereaz cu semnal de ceas extern, acesta poate fi sincronizat cu semnalul de ceas intern
setnd bitul T1SYNC la valoarea 0 (modul de lucru sincronizat al timerului 1).
T1CON
U (0)
R (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
T1RUN
T1CKPS1
T1CKPS0
T1OSCEN
T1SYNC
TMR1CS
TMR1ON
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
28
CAPITOLUL 4. TIMERE
TMR1H = 194
TMR1 = 49911
TMR1L = 247
0
Bit 15
Bit 8
Bit 7
1
Bit 0
(4.4)
FOSC
n cazul timerului 1, scrierea registrului TMR1 nu necesit timp suplimentar. Prencrcarea efectiv a registrului TMR1 se face prin scrierea separat a celor doi octei,
TMR1L i TMR1H care compun cei 16 bii ai ntregului registru (figura 4.5).
PIC16F88
17
R1
220
ICSP
1
4
14
5
13
12
5
R2
LED1
10k
VPP
VDD
GND
PGD
PGC
FOSC=1MHz
Fig. 4.6: Schema electric pentru verificarea funcionrii timerului 1 cu ceas extern (PIC16F88).
Valoarea prescalerului se stabilete cu ajutorul biilor T1CKPS1 i T1CKPS0 ai registrului T1CON. Valorile posibile sunt 1:1 (00), 1:2 (01), 1:4 (10) i 1:8 (11).
// Ex.3.5: Aprindere LED 1 Hz cu oscilator intern de 1 MHz si Timer1
void interrupt() {
PORTA.B0=!PORTA.B0;
TMR1H=194;
TMR1L=247;
PIR1.TMR1IF=0;
}
//
//
//
//
29
4.2. TIMER1
void main() {
ANSEL=0;
TRISA=0;
PORTA=0;
// Porturi digitale
// Portul A in mod iesire
// Initializare port A cu 0
OSCCON.IRCF2=1;
OSCCON.IRCF1=0;
OSCCON.IRCF0=0;
TMR1H=194;
TMR1L=247;
T1CON.TMR1CS=0;
T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1ON=1;
T1CON.NOT_T1SYNC=1;
//
//
//
//
//
INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=0;
PIE1.TMR1IE=1;
//
//
//
//
// Porturi digitale
// Portul A in mod iesire
// Initializare port A cu 0
CAPITOLUL 4. TIMERE
TMR1H=11;
TMR1L=220;
T1CON.TMR1CS=1;
T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1ON=1;
T1CON.B3=1;
//
//
//
//
//
INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=0;
PIE1.TMR1IE=1;
4.3
Timer2
Modulul Timer2 (figura 4.8) este compus dintr-un prescaler i un postscaler. Semnalul de ceas utilizat este doar cel intern (FOSC /4), care poate fi divizat de un prescaler
(controlat prin biii T2CKPS1 i T2CKPS0 ai registrului T2CON) cu factorii 1:1 (00),
1:4 (01) sau 1:16 (10).
T2CON
U (0)
R (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
TOUTPS3
TOUTPS2
TOUTPS1
TOUTPS0
TMR2ON
T2CKPS1
T2CKPS0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Timerul 2 conine dou registre pe 8 bii, TMR2 i PR2. Registrul TMR2 este incrementat de la 0 pn ajunge la aceiai valoare care exist prencrcat n PR2 i
se genereaz un impuls, iar registrul TMR2 se reseteaz la valoarea 0. Resetarea
registrului TMR2 necesit un ciclu de instruciune, astfel nct acesta trebuie luat n
consideraie la calculul valorii prencrcate n registrul PR2 prin scdere cu o unitate.
Impulsurile de reset ajung la un postscaler pe 4 bii al crui factor de divizare este
stabilit, prin intermediul biilor TOUTPS3-TOUTPS0, ntre 1:1 (0000) i 1:16 (1111).
(4.5)
FOSC
Pentru generarea unor ntreruperi cu frecvena de 2 Hz, utiliznd un semnal de ceas
FOSC =500 kHz i setnd la valorile maxime prescalerul (1:16) i, respectiv, postscalerul
31
4.3. TIMER2
Setare bit
TMR2IF pe 1
Ieire
TMR2
Reset
Postscaler
1:1 la 1:16
EQ
TMR2 reg
Comparator
Prescaler
1:1, 1:4, 1:16
FOSC/4
2
T2CKPS1:0
PR2 reg
TOUTPS3:0
4
16 244 16 = 0.499712s.
500000
32
// Porturi digitale
// Portul A in mod iesire
// Initializare port A cu 0
PR2=243;
// Preincarcare PR2
OSCCON.IRCF2=0;
OSCCON.IRCF1=1;
OSCCON.IRCF0=1;
T2CON.TOUTPS3=1;
T2CON.TOUTPS2=1;
T2CON.TOUTPS1=1;
T2CON.TOUTPS0=1;
// Postscaler 1:16
// (TOUTPS3:TOUTPS0=1111)
T2CON.T2CKPS1=1;
T2CON.T2CKPS0=0;
// Prescaler 1:16
// (T2CKPS1:T2CKPS0=10)
T2CON.TMR2ON=1;
// Pornire Timer2
CAPITOLUL 4. TIMERE
INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=0;
PIE1.TMR2IE=1;
n cazul timerului 2, spre deosebire de timerele 0 i 1, nu mai este necesar rescrierea registrului cu valoarea de prencrcare la fiecare generare de ntrerupere.
Pentru exemplificarea valorilor individuale, fiecare bit a fost explicitat n cod cu denumirea i valoarea sa. n practic, biii care aparin unui singur registru pot fi scrii
cu ajutorul unei singure instruciuni. Dac ceilali bii ai portului A nu sunt utilizai,
inversarea valorii bitului RA0 se poate face prin inversarea ntregului port.
void interrupt() {
PORTA=~PORTA;
PIR1.TMR2IF=0;
}
// Inversare port A
// Resetare flag intrerupere
void main() {
ANSEL=0;
TRISA=0;
PORTA=0;
PR2=243;
T2CON=0b01111110;
INTCON=0b11000000;
PIE1.TMR2IE=1;
}
//
//
//
//
//
//
//
4.4
Porturi digitale
Portul A in mod iesire
Initializare port A cu 0
Preincarcare PR2
Setari Timer2
Setari intreruperi globale
Interuperere Timer2 activa
Watchdog Timer
0
Prescaler PS
1
PSA
WDTPS3:0
PS2:0
la TMR0
1
PSA
WDTEN (din CONFIG)
SWDTEN (din WDTCON)
WDT Time-out
control WDTCON. Atunci cnd modulul este activat hardware, SWDTEN nu are efect,
activarea software putnd fi folosit doar dac cea hardware a fost iniial dezactivat.
WDTCON
U (0)
U (0)
U (0)
R/W (0)
R/W (1)
R/W (0)
R/W (0)
R/W (0)
WDTPS3
WDTPS2
WDTPS1
WDTPS0
SWDTEN
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
1
WDTPS PS.
31250
(4.6)
(4.7)
1
131072
128 1024 =
= 4.194304s.
31250
31250
(4.8)
CAPITOLUL 4. TIMERE
//
//
//
//
Oscilator intern
(SCS1-SCS0=10)
Ceas intern 1 MHz
(IRCF2:IRCF0=100)
ANSEL=0;
TRISA=0;
PORTA=0;
OPTION_REG.PSA=1;
OPTION_REG.PS2=1;
OPTION_REG.PS1=1;
OPTION_REG.PS0=1;
//
//
//
//
//
//
Porturi digitale
Portul A in mod iesire
Initializare port A
Prescaler PS legat la WDT
Prescaler PS 1:128
(PS2:PS1=111)
WDTCON.SWDTEN=1;
WDTCON.WDTPS3=0;
WDTCON.WDTPS2=1;
WDTCON.WDTPS1=0;
WDTCON.WDTPS0=1;
while (1) {
for (i=0; i<3; i++) {
PORTA.B0=1;
delay_ms(100);
PORTA.B0=0;
delay_ms(100);
}
while (1) {}
}
// Bucla infinita
// Blink LED 3x
Pentru a preveni resetarea microcontrolerului, trebuie avut grij ca timerul Watchdog s nu ajung niciodat s genereze impulsul de Time-out. Acest lucru se face
software, prin tergerea periodic a prescalerului WDT.
// Ex. 3.9: Watchdog cu stergere periodica
void main() {
char i;
OSCCON.SCS1=1;
OSCCON.SCS0=0;
OSCCON.IRCF2=1;
OSCCON.IRCF1=0;
OSCCON.IRCF0=0;
//
//
//
//
Oscilator intern
(SCS1-SCS0=10)
Ceas intern 1 MHz
(IRCF2:IRCF0=100)
35
OPTION_REG.PSA=1;
OPTION_REG.PS2=1;
OPTION_REG.PS1=1;
OPTION_REG.PS0=1;
WDTCON.SWDTEN=1;
WDTCON.WDTPS3=0;
WDTCON.WDTPS2=1;
WDTCON.WDTPS1=0;
WDTCON.WDTPS0=1;
ANSEL=0;
TRISA=0;
PORTA=0;
while(1) {
for (i=0; i<3; i++) {
PORTA.B0=1;
delay_ms(100);
PORTA.B0=0;
delay_ms(100);
}
asm {CLRWDT};
}
//
//
//
//
//
Porturi digitale
Portul A in mod iesire
Initializare port A
Bucla infinita
Blink LED 3x
}
EXERCIII:
1. S se determine parametrii de lucru ai modulului Timer0 pentru o frecven de
ceas a oscilatorului intern FOSC = 4 MHz i perioada TTIMER0 = 0.5 ms.
a) se determin valoarea semnalului de ceas 4TOSC :
4 TOSC =
4
= 106 s
4 106
36
CAPITOLUL 4. TIMERE
1
= 250 109 s
4 106
103
TTIMER0
=
= 4000 = 16 250 = 32 125
TOSC
250 109
4
= 500 109 s
6
8 10
TTIMER1
0.5 103
= 1 1000 = 2 500 = 4 250 = 8 125
=
4 TOSC
500 109
1
= 50 109 s
20 106
37
TTIMER1
103
=
= 1 20000 = 2 10000 = 4 5000 = 8 2500
TOSC
50 109
4
= 2 106 s
2 106
100 106
TTIMER2
=
= 1 50 = 2 25
4 TOSC
2 106
4
= 81921 s
32768
TTIMER2
31.25 103
=
= 256
4 TOSC
81921
CAPITOLUL 4. TIMERE
1
= 312501 s
31250
TWDT
2
= 62500
=
TOSC
312501
PS WDTPS =
1
1 65536 = 2.097152 s
31250
39
Capitolul 5
5.1
Operarea n modul captur a unui modul CCP presupune citire valorii pe 16 bii a
registrului TMR1 i scrierea sa n regitrii CCPRxH:CCPRxL atunci cnd se detecteaz
un eveniment la pinul CCPx (setat ca intrare digital). Prin eveniment se nelege una
din urmtoarele situaii:
fiecare front descresctor (CCPxM3:CCPxM0=0100);
fiecare front cresctor (CCPxM3:CCPxM0=0101);
fiecare al 4-lea front cresctor (CCPxM3:CCPxM0=0110);
fiecare al 16-lea front cresctor (CCPxM3:CCPxM0=0111).
40
CCPRxH
CCPRxL
Activare
captur
and
Edge Detect
TMR1H
TMR1L
Qs
CCPxCON3:0
Alegerea evenimentului se face prin intermediul biilor CCPxM3-CCPxM0 ai registrului de control CCPxCON (unde x reprezint indicele modulului, x=1 sau x=2).
Atunci cnd apare un eveniment, bitul CCPxIF al registrului PIRx ia valoarea 1 (trebuie ters ulterior din software). Apariia unui nou eveniment determin suprascrierea
valorii TMR1 n registrul CCPRxH:CCPRxL.
CCP1CON
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
P1M1
P1M0
DB1B1
DB1B0
CCP1M3
CCP1M2
CCP1M1
CCP1M0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Pentru captura valorii registrului TMR1, timerul 1 trebuie s opereze n modul sincronizat. Pentru a evita generarea unor ntreruperi false la schimbarea modului de
captur, bitul CCPxIE al registrului PIEx trebuie setat pe 0.
n exemplul din figura 5.4 butonul SW1 este utilizat pentru generarea de impulsuri la
intrarea CCP1 a microcontrolerului PIC16F684. Modulul CCP1 este setat s lucreze n
modul captur cu generarea unui eveniment la fiecare al 4-lea impuls, numrat pe front
descresctor (CCP1M3:CCP1M0=0110). Deoarece evenimentulul genereaz automat o
ntrerupere periferic (CCP1IF devine 1), la pinul RC0 setat ca ieire se conecteaz un
LED care i va inversa starea la fiecare ntrerupere.
VDD
14
VSS
13
RA0/AN0/C1N+/ICSPDAT/ULPWU
12
RA1/AN1/C1N-/ICSPCLK
11
RA2/AN2/T0CKI/INT/C1OUT
RA5/T1CKI/OSC1/CLKIN
RA4/AN3/T1G/OSC2/CLKOUT
RA3/MCLR/VPP
PIC16F684
RC5/CCP1/P1A
10
RC0/AN4/C2IN+
RC4/C2OUT/P1B
RC1/AN5/C2IN-
RC3/AN7/P1C
RC2/AN6/P1D
R2
10k
ICSP
SW1
4
1
14
13
12
R1
LED1
11
220
VPP
VDD
GND
PGD
PGC
PIC16F684
Fig. 5.4: Schema de principiu a studiului funcionrii modulului CCP1 n modul captur (PIC16F684).
// Subrutina de intreruperi
// Inversare port A
// Resetare flag intrerupere CCP1
PIE1.CCP1IE=1;
OSCCON.SCS=1;
OSCCON.OSTS=0;
OSCCON.IRCF2=1;
OSCCON.IRCF1=0;
OSCCON.IRCF0=0;
//
//
//
//
Oscilator intern
Oscilator intern
Ceas intern 1 MHz
(IRCF2:IRCF0=100)
ANSEL=0;
TRISA=0x00;
TRISC=0xFF;
PORTA=0;
//
//
//
//
Porturi digitale
Portul A in mod iesire
Portul C in mod intrare
Initializare port A
CCP1CON.CCP1M3=0;
CCP1CON.CCP1M2=1;
CCP1CON.CCP1M1=1;
CCP1CON.CCP1M0=0;
//
//
//
//
Trigger
Eveniment
special
Q
Pinul
CCPx
S
R
Setare bit
CCPxIF pe 1
(PIRx)
CCPRxH
Logic
de ieire
Comparator
Potrivire
TRIS
CCPRxL
TMR1H
TMR1L
Selecie mod
CCPxCON3:0
5.2
n acest mod de lucru, un trigger hardware intern poate fi utilizat pentru iniierea
unor aciuni (CCPxM3:CCPxM0=1011). Ieirea triggerului de evenimentul special reseteaz registrul TMR1. Unele module CPP pot fi utilizate pentru declanarea unei
conversii A/D (dac modulul A/D este activat).
Acest mod de lucru este util atunci cnd se dorete generarea unei perioade exacte
de timp, determinate prin intermediul valorii existente n registrul TMR1.
ICSP
PIC16F684
R1
5
220
LED1
4
1
14
13
12
VPP
VDD
GND
PGD
PGC
Fig. 5.6: Schema de principiu a studiului funcionrii modulului CCP1 n modul comparare (PIC16F684).
43
//
//
//
//
Oscilator intern
Oscilator intern
Ceas intern 500 kHz
(IRCF2:IRCF0=011)
T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1ON=1;
CCPR1H=255;
CCPR1L=255;
ANSEL=0;
TRISC=0;
PORTC=255;
// Porturi digitale
// Portul C in mod iesire
// Initializare port C
CCP1CON.CCP1M3=1;
CCP1CON.CCP1M2=0;
CCP1CON.CCP1M1=0;
CCP1CON.CCP1M0=1;
comp
TCCP1 =
5.3
FOSC
4
8 65536 = 4.194304s.
500000
Modul de lucru PWM (Pulse Width Modulation) permite generarea la pinul CCPx
(setat n mod ieire) a unui semnal PWM cu factor de umplere definit cu o rezoluie
de 10 bii (CCPxM3:CCPxM0=11xx). Modulele mbuntite (ECCP - Enhanced CCP)
pot avea patru ieiri (P1A:P1D) pentru generarea semnalelor necesare punilor H.
Setarea celor patru configuraii posibile ale pinilor de ieire se face prin intermediul
biilor P1M1-P1M0 ai registrului CCP1CON:
o singur ieire: CCP1 (P1M1:P1M0=00);
ieire n semi-punte: P1A, P1B (P1M1:P1M0=10);
ieire n punte direct: P1A, P1B, P1C, P1D (P1M1:P1M0=01);
ieire n punte invers: P1A, P1B, P1C, P1D (P1M1:P1M0=11).
44
PR2+1
Factor de
umplere
P1M1:P1M0
00
(Ieire simpl)
SEMNAL
Perioad
P1A modulat
ntrziere
ntrziere
P1A modulat
10
(Semipunte)
P1B modulat
P1A activ
P1B inactiv
01
(Punte, nainte)
P1C inactiv
P1D modulat
P1A inactiv
11
(Punte, napoi)
P1B modulat
P1C activ
P1D inactiv
Fig. 5.7: Semnale de ieire ale modulului ECCP n modul PWM cu ieiri active pe 1 logic (PIC16F684).
0
PR2+1
Factor de
umplere
P1M1:P1M0
00
(Ieire simpl)
SEMNAL
Perioad
P1A modulat
ntrziere
ntrziere
P1A modulat
10
(Semipunte)
P1B modulat
P1A activ
P1B inactiv
01
(Punte, nainte)
P1C inactiv
P1D modulat
P1A inactiv
11
(Punte, napoi)
P1B modulat
P1C activ
P1D inactiv
Fig. 5.8: Semnale de ieire ale modulului ECCP n modul PWM cu ieiri active pe 0 logic (PIC16F684).
45
CCPxCON<5:4>
(DCxB1:DCxB0)
CCP1M3:CCP1M0
CCPRxL
(DCxB9:DCxB2)
Pinul
RC5/CCP1/P1A
10
TRISC5
CCPRxH (Slave)
Pinul
RC4/C2OUT/P1B
10
Comparator
Controler
de ieire
TRISC4
10
Pinul
RC3/AN7/P1C
TMR2
TRISC3
8
Pinul
RC3/AN6/P1D
Comparator
8
PR2
PWM1CON
TRISC2
Modulul Timer2
Fig. 5.9: Schema bloc a funcionrii modulului ECCP n modul PWM (PIC16F684).
5.3.1
Perioada semnalului PWM generat la ieirea P1A (figura 5.10) este specificat cu
ajutorul registrului PR2 al timerului 2 i se determina prin intermediul relaiei 5.1.
TPWM = [(PR2) + 1] 4 TOSC (T2CKPS).
(5.1)
Atunci cnd TMR2 este egal cu PR2, registrul TMR2 este ters, pinul CCx este setat
pe 1, iar factorul de umplere al PWM este transferat din CCPRxL n CCPRxH.
Factorul de umplere este specificat prin scriere n registrul CCPRxL (DCxB9:DCxB2)
i cu ajutorul biilor DCxB1-DCxB0 ai registrului CCPxCON. Rezoluia este definit pe
10 bii, cei 8 ai registrului CCPRxL (MSB) i cei 2 bii ai registrului CCPxCON (LSB).
Factorul de umplere se determin pornind de la relaia 5.2.
TDC = (DCxB9 : DCxB0) TOSC (T2CKPS).
(5.2)
46
Perioada = PR2 + 1
Rezoluia maxim n numr de bii pentru o frecvena dat a semnalului PWM este:
NMAX =
(5.3)
4
16 (1 + PR2)
125000
125000 0.02
1 = 38.0625
= 38
4 16
Pentru obinerea unui factor de umplere de 0.2 (sau 20%), se determin iniial echivalentul n timp i, ulterior, se calculeaz valoarea celor 10 bii conform relaiei 5.2.
TDC = DCPWM TPWM = 0.2 0.02 = 4 ms
DC1B9 : DC1B0 =
TDC
0.004
FOSC =
125000 = 31.25
= 31 = 0b0000011111.
T2CKPS
16
// Porturi digitale
// Portul C in mod iesire
OSCCON.SCS=1;
OSCCON.OSTS=0;
OSCCON.IRCF2=0;
OSCCON.IRCF1=0;
OSCCON.IRCF0=1;
//
//
//
//
Oscilator intern
Oscilator intern
Ceas intern 125 kHz
(IRCF2:IRCF0=001)
T2CON.T2CKPS1=1;
T2CON.T2CKPS0=0;
T2CON.TMR2ON=1;
PR2=38;
CCPR1L=0b00000111;
// Preincarcare PR2
// 8 MSB din factor de umplere
CCP1CON.P1M1=0;
CCP1CON.P1M0=0;
CCP1CON.DC1B1=1;
CCP1CON.DC1B0=1;
CCP1CON.CCP1M3=1;
CCP1CON.CCP1M2=1;
CCP1CON.CCP1M1=0;
CCP1CON.CCP1M0=0;
Datorit erorilor de rotunjire ale valorilor, condiiile iniiale sunt implementate practic cu mici erori. Frecvena real este de 50.080 Hz, iar durata impulsului este de 3.986
ms (fa de cele 4 ms impuse).
Fig. 5.11: Rezultatul observat pe osciloscop al generrii unui semnal PWM (exemplul 4.3).
48
Perioad
+
V
-
P1A
Perioad
Factor de umplere
P1A
PIC16F684
TD
Load
FET
Driver
TD
+
V
-
P1B
P1B
V-
FET
Driver
FET
Driver
P1A
PIC16F684
FET
Driver
Load
FET
Driver
P1B
V-
5.3.2
(5.4)
Dac durata de ntrziere este mai mare dect cea a duratei impulsului, ieirea P1B
va fi inactiv pe toat perioada semnalului.
Utiliznd exemplul de calcul precedent, pentru o ntrziere de 1 ms este necesar
setarea valorilor PDC6:0 cu valoarea:
PDC6:0 =
TD
0.001
=
= 31.25
= 31.
4 TOSC
4 0.000008
49
// Porturi digitale
// Portul C in mod iesire
OSCCON.SCS=1;
OSCCON.OSTS=0;
OSCCON.IRCF2=0;
OSCCON.IRCF1=0;
OSCCON.IRCF0=1;
//
//
//
//
Oscilator intern
Oscilator intern
Ceas intern 125 kHz
(IRCF2:IRCF0=001)
T2CON.T2CKPS1=1;
T2CON.T2CKPS0=0;
T2CON.TMR2ON=1;
PR2=38;
CCPR1L=0b00000111;
// Preincarcare PR2
// 8 MSB din factor de umplere
PWM1CON=0b00011111;
// Setare intarziere
// (PDC6:0=0011111)
CCP1CON.P1M1=1;
CCP1CON.P1M0=0;
CCP1CON.DC1B1=1;
CCP1CON.DC1B0=1;
CCP1CON.CCP1M3=1;
CCP1CON.CCP1M2=1;
CCP1CON.CCP1M1=0;
CCP1CON.CCP1M0=0;
Fig. 5.13: Rezultatul observat pe osciloscop al generrii unui semnal PWM cu semipunte (exemplul 4.4).
50
FET
Driver
QC
QA
FET
Driver
P1A
Load
P1B
FET
Driver
PIC16F684
P1C
FET
Driver
QD
QB
VP1D
5.3.3
n modul de lucru PWM n punte sunt utilizate toate cele patru ieiri asociate modulului (P1A-P1D). Dintre acestea, doar dou ieiri sunt active: una genereaz semnalul
PWM (ieire modulat), iar celalalt realizeaz sensul rotaiei (ieire activ).
Biii P1M<1:0> (CCP1CON<7:6>) stabilesc sensul rotaiei motorului conectat la
puntea H (01 - sens direct, 11 - sens invers). La modificarea sensului de rotaie trebuie
avut n vedere evitarea suprapunerii impulsurilor PWM care pot cauza scurtcircuit.
Prin urmare, inversarea direciei de rotaie se face prin simpla modificare a valorii
bitului P1M1.
Biii CCP1M<3:0> (CCP1CON<3:0>) seteaz strile logice ale celor trei ieiri (1100
- P1A, P1C, P1B, P1D active pe 0; 1101 - P1A, P1C active pe 1, P1B, P1D active; 1110
- P1A, P1C active pe 0, P1B, P1D active pe 1; 1111 - P1A, P1B, P1C, P1D - active pe
0).
Schimbarea sensului de rotaie
Perioad
SIGNAL
Perioad
P1A (Active-High)
P1B (Active-High)
DC
P1C (Active-High)
P1D (Active-High)
DC
51
52
// Porturi digitale
// Portul C in mod iesire
OSCCON=0b00011001;
T2CON.T2CKPS1=1;
T2CON.T2CKPS0=0;
T2CON.TMR2ON=1;
PR2=38;
CCPR1L=0b00000111;
// Preincarcare PR2
// 8 MSB din factor de umplere
CCP1CON.P1M1=0;
CCP1CON.P1M0=1;
CCP1CON.DC1B1=1;
CCP1CON.DC1B0=1;
CCP1CON.CCP1M3=1;
CCP1CON.CCP1M2=1;
CCP1CON.CCP1M1=0;
CCP1CON.CCP1M0=0;
Fig. 5.16: Rezultate observate pe osciloscop al generrii unui semnal PWM cu punte (ex. 4.5).
53
Capitolul 6
Motoare servo
Un motor servo este un motor de curent continuu cu control al poziiei prin bucl de
reacie, de unde i denumirea de servo. Dispozitivul intern de control comand un motor
de curent continuu trimind semnale unui amplificator de eroare. Poziia curent
a axului de rotaie este determinat cu ajutorul unui senzor de rotaie. Semnalul
eroare generat de amplificator este proporional cu diferena dintre poziia dorit i
cea curent, avnd rolul de a comanda rotaia motorului pn la stabilirea echilibrului.
Poziia dorit a axului motorului servo este indicat printr-un semnal de tip PPM
(Pulse Proportional Modulation) a crui durat a impulsului este proporional cu
valoarea unghiului.
ax
reductor
mecanic
poteniometru
circuit de control
motor de c.c.
Reductor
Motor de
curent continuu
Ieire
Senzor
de poziie
Amplificator de eroare
Convertor PWM
n tensiune continu
45
20 ms
DMINIM
DMINIM - 90
90 DMAXIM
DNEUTRU
DMAXIM
Fig. 6.3: Comanda motoarelor servo cu semnal de tip PPM i dependena unghiului axului de factorul
de umplere.
55
s
K
O
et
Fl
e
A
irt
ro
n
ic
s
ic
ro
n
A
irt
ad
io
H
s
ite
c
R
JR
Fu
t
ab
a
-J
-Z
Semnal PPM
+5V
GND
Axul de rotaie al motorului servo poate comanda micarea diferitelor articulaii prin
intermediul unor crme de diferite forme i mrimi (figura 6.6). Orificile de prindere sunt
zimate pentru o mai bun fixare pe axul servoului, dar difer ntre productori. Axurile
servourilor produse de Hitec au 24 de dini, iar cele produse de Futaba au 25 de dini.
Crmele pot fi confecionate din plastic sau din aluminiu, n funcie de rezistena dorit.
Motoarele servo sunt caracterizate prin cuplu i vitez, ambele specificate pentru
tensiunile minim i maxim de alimentare (4.8 V i 6.0 V). Cuplul este adesea definit n
sistemul britanic (oz-in) dar poate fi uor convertit n sistemul internaional (1 ozin
= 0.00706155 Nm = 0.0720077 kgcm). Viteza definete timpul necesar parcurgerii
ntregului domeniu unghiular (de exemplu, un arc de 60 n 0.22 s).
15k
15k
M
Vcc
+5 V
2
6
Motor Drive Output
910k
BAL6686
H-Bridge
CCW
Pulse
CW
Pulse
2
Input
Pulse
Pulse
Width error
12
Pulse width
comparator
1-2 ms
Trigger
Feedback
Signal
10
11
9
(100J
type)
8
2.05k
Sets Charging
Current
Ref.
Voltage
Vr=2.5 V
4
50 ohm
.47 uF
5k
22k
Sets Position
Control Feedback
Gain
Sets Pulse
Stretcher
Gain
56
33 uF
BAL6688
Servo Control
Reference
voltage
regulator
Linear Pulse
Generator
Pulse
Timing
Cap.
Direction
Pulse stretcher
(Servo Gain)
Roat mic
(Small Wheel Horn)
Crm cu bra n T
(T-Arm)
Roat mare
(Large Wheel Horn)
Crm de vas
(Sail Arm)
Crm n cruce
(X-Horn)
Dimensionarea unui motor servo pentru ridicarea unei sarcini se poate face cu ajutorul valorii cuplului. De exemplu, un motor servo cu un cuplu de 42 ozin (3 kgcm)
poate deplasa la captul unui bra de 3 cm o mas de 1 kg dispus. Valoarea maxim
a masei corpului este invers proporional cu lungimea braului. Prin urmare, pentru
a ridica o mas M cu un bra de lungime L, este necesar un motor servo cu un cuplu
minim de ML [kgcm].
O caracteristic important a motoarelor servo o reprezint tipul reductorului cu
roi dinate. Acesta determin rezistena mecanic i nivelul de zgomot produs de motor n regimul de funcionare. Reductoarele cu rulmeni cu bile sunt foarte rezistente
i extrem de silenioase. De asemenea, roile dinate pot fi confecionate din material
plastic sau, pentru o mai mare reisten mecanic, din metal.
Fig. 6.7: Tipuri de reductoare cu roi dinate din material plastic (stnga) i din metal (dreapta).
57
PIC16F684
BC107
Hitec
HS-422
VPP
VDD
GND
PGD
PGC
SW2
SW1
2
3
4
1
14
13
12
Fig. 6.8: Schema electric pentru comanda unui motor servo cu ajutorul unui semnal PPM (PIC16F684).
Deoarece, n sarcin, motoarele servo are un cuplu important, este necesar ca acestea s fie alimentate de la o surs de tensiune separat de cea a circuitelor de comand
(implicit, a microcontrolerului) deoarece, n timpul funcionrii, la modificri brute ale
axului motorului, pot interveni cderi de tensiune care pot reseta microcontrolerul. De
asemenea, semnalul de comand va fi transmis prin intermediul unui tranzistor pentru
a asigura un curent suficient.
Un exemplu de motor servo este modelul Hitec HS-422 cu urmtorii parametrii:
PPM: 1.5 ms la neutru (0 ), 0.4 ms / 45 ;
domeniu unghiular: 180 (-90 .. 90 );
tensiune de alimentare: 4.8 la 6.0 V;
vitez n gol: 0.21 s / 60 (la 4.8 V) sau 0.16 s / 60 (la 6.0 V);
cuplu maxim: 3.3 kgcm (la 4.8 V) sau 4.1 kgcm (la 6.0 V);
consum: 8 mA n gol sau 150 mA maxim.
Pentru comanda motorului servo HS-422 n domeniul unghiular, se determin limitele extreme n raport cu poziia central, astfel: pentru limita minim de -90 , impulsul
are durata de 1.5-20.4=0.7 ms, iar pentru limita maxim de 90 , impulsul va avea durata de 1.5+20.4=2.3 ms. Prin urmare, impulsurile PPM generate vor fi definite doar
n domeniul 0.7 la 2.3 ms.
n figura 6.8 se prezint o aplicaie pentru comanda unui motor servo HS-422 cu
ajutorul unui semnal de comand generat prin intermediul modulului ECCP al microcontrolerului PIC16F684. Butoanele SW1 i SW2 sunt utilizate pentru incrementarea
i, respectiv, decrementarea duratei impulsului PPM generat, fiind conectate la pinii
RA4 i RA5 ai portului A. Cei doi bii opereaz n modul intrare digital cu generarea
de ntrerupere la modificarea valorii de intrare.
Utiliznd oscilatorul RC intern al microcontrolerului la frecvena de 500 kHz i
prescalerul T2CKPS la valoarea 1:16, generarea impulsurilor PWM cu frecvena de
58
50 Hz (20 ms) se face alegnd valoarea registrului PR2 egal cu 155 (conform relaiei
5.1):
PR2 =
500000 0.02
1 = 155.25
= 155.
4 16
Semnalul de comand are durata impulsului ntre valorile 0.7 i 2.3 ms, stabilit
cu ajutorul celor 10 bii ai registrului DC1B9:DC1B0. Conform relaiei 5.2, valoarea
minim a registrului este:
[DC1B9 : DC1B0]min =
0.0007
500000 = 21.85
= 22 = 0b0000010110.
16
Valoarea minim a registrului se va alexe prin aproximare ctre zero a valoarii reale
obinute pentru nu a fora motorul servo n afara domeniului unghiular:
[DC1B9 : DC1B0]max =
6.2
0.0023
500000 = 71.875
= 71 = 0b0001000111.
16
Motoare pas-cu-pas
Motorul pas-cu-pas este un actuator rotativ electromagnetic care efectueaz conversia mecanic a impulsurilor digitale de intrare n scopul incrementrii rotaiei axului.
Motorul este capabil s-i menin poziia (i sarcina) ntre incremente fr a avea
nevoie de frne sau ambreiaje. Astfel, un motor pas-cu-pas poate fi controlat precis astfel nct acesta s se roteasc un anumit numr de pai propucnd o micare
mecanic pe o anumit distan, dup care s menin scarcina n repaus. Motoarele
pas-cu-pas sunt ntlnite cel mai frecvent n compunerea aparaturii casnice i a celor
de tip HVAC (Heating, Ventilating, and Air Conditioning).
nfurare
statoric
Pol nord
rotoric
W1
W2
Furc
statoric
Motoarele pas-cu-pas sunt dispozitive cu vitez mic de rotaie (ntre 50 i 100 rpm),
fiind proiectate pentru micri precise i meninerea poziiei la sfritul rotaiei. Din
punct de vedere al puterii, motoarele de acest tip nu sunt foarte puternice.
Un motor pas-cu-pas funcioneaz prin rotirea axului succesiv n poziii unghiulare
discrete. Numrul de pai necesari pentru a efectua o rotaie complet este unul din
59
parametrii specifici i este exprimat fie ca numr de pai propriu-zis, fie ca grade per
pas. n interiorul motorului sunt dispuse o serie de nfurri aliniate astfel nct s
permit rotaia precis dintr-o poziie n alta (figura 6.10). nfurrile sunt dispuse
pe stator (etichetate A, B, C i D). La energizarea polilor statorului, rotorul va fi atras
ctre polii magnetici opui din stator, determinnd rotirea axului motorului. Rotorul
este compus dintr-un numr de magnei permaneni ce se aliniaz cu nfurrile statorului atunci cnd acestea din urm sunt energizate.
A
B
D
S
N S
N
N
C
N
S
Miez
statoric
N
N S
Magnet
rotoric
Din punct de vedere constructiv exist trei tipuri de motoare pas-cu-pas: cu reluctan variabil (VR), cu magnet permanent (PM) i hibride (figura 6.11). Fiecare din
aceste tipuri ofer soluii pentru diferite aplicaii.
Motoarele cu reluctan variabil sunt cunoscute ca avnd rotorul multipolar din fier
moale i stator bobinat. Incrementul unghiular de rotaie este determinat de numrul
dininlor din rotor i din stator, precum i de numrul de nfurri (faze). Acest tip de
motor au incrementul de valoare medie (5 la 15 ) i au vitez mare de rotaie. Cuplul
este, n general, mic. Frecvena impulsurilor secvenei de comand ajunge la valori
maxime de 300-1000 pai pe secund.
Motoarele cu magnet permanent au rotorul confecionat dintr-un magnet permanent
i nu are dini. Incrementul unghiular este mare, de 45 sau 90 dar cuplul produs este
mare iar caracteristicile de amortizare sunt foarte bune.
Motoarele hibride combin avantajele oferite de motoarele cu reluctan variabil
i cele cu magnet permanent. Au cuplul important i pot funciona la viteze mari ale
secvenei de comand. Incrementul unghiular are uzual valori ntre 0.9 i 5 .
Din punct de vedere electric, exist dou tipuri de motoare pas-cu-pas: unipolare
(sau cu patru faze) i bipolare (sau cu dou faze). Motoarele pas-cu-pas unipolare
dispun de patru seturi de nfurri ce alterneaz de-a lungul carcasei interioare a
motorului, n timp ce motorul pas-cu-pas bipolar are doar dou seturi de nfurri.
Un motor pas-cu-pas de tip unipolar va activa miezul la o singur polaritate, de unde
60
A1
B1
A1
A2
B1
C1
A2
D2
B1
N
S
C1
D1
C2
B2
N
D1
C2
C1
Motor pas-cu-pas
cu reluctan variabil
D2
N
Motor pas-cu-pas
cu magnet permanent
B2
A2
Motor pas-cu-pas
hibrid
4 fire
conexiune bipolar
5 fire
conexiune unipolar
A
com
6 fire
conexiune unipolar
6 fire
conexiune bipolar (serie)
com1
com1
B com2 D
8 fire
conexiune unipolar
A1
A1
A2
C2
C2
B com2 D
8 fire
conexiune bipolar (serie)
A2
8 fire
conex. bipolar (paralel)
A1
A2
C2
C1
C1
C1
B1
B1
B2
D2
D1
B1
B2
D2
B2
D2
D1
D1
Fig. 6.12: Configuraii ale motoarelor pas-cu-pas n funcie de numrul de conductori terminali.
Algoritm 6.1. Pentru identificarea fazelor unui motor pas-cu-pas cu cinci fire, este
necesar parcurgerea etapelor descrise n algoritmul urmtor (figura 6.13):
1. Se determin cu ajutorul unui ohmmetru firul comun, acesta fiind cel fa de care
celelalte patru terminale determin obinerea aceiai valori a rezistenei msurate.
Firul comun se conecteaz apoi la borna V+ a unei surse de tensiune continu
de 5V;
2. Se memoreaz poziia curent a axului motorului prin fixarea unui reper mecanic
(de exemplu, o band adeziv de form dreptunghiular montat pe captul axului);
3. Se alege arbitrar unul din cele patru fire rmase i se denumete faza 1. Acest
al doilea fir se conecteaz la masa sursei de tensiune. n acest moment motorul
este blocat n faza 1;
4. Se alege un fir i se conecteaz la masa sursei de alimentare, observnd n acelai
62
Stabilire faza 1
Identificare faza 2
Identificare faza 3
Identificare faza 4
timp semnul de pe axul motorului. Dac axul are o rotaie mic spre dreapta,
atunci firul reprezint faza 2;
5. Se alege un fir i se conecteaz la mas observnd, din nou, axul motorului. Dac
axul are o mic rotaie spre stnga, atunci firul reprezint faza 4;
6. Se alege un fir i se leag, similar, la mas. Dac axul nu se rotete, atunci acesta
este faza 3.
Algoritm 6.2. Pentru identificarea perechilor de nfurri ale unui motor pas-cu-pas
cu ase fire, se poate utiliza urmtorul algoritmul:
1. Se determin cu ajutorul unui ohmmetru cele dou fire comune (ntre care rezistena este nul). ntre un fir comun i cele dou capete de nfurri asociate
se va obine aproximativ jumtate din valoarea determinat a rezistenei dintre
capete;
2. Dup determinarea celor dou seturi de fire, acestea vor fi marcate cu A i C,
respectiv, cu B i D. Ordinea acestora nu este important.
Algoritm 6.3. Determinarea polaritii perechilor de nfurri ale unui motor pascu-pas universal (figura 6.14):
1. Se determin cu ajutorul unui ohmmetru cele patru perechi de nfurri;
2. Se aleg dou perechi de nfurri i se leag mpreun cte un fir din fiecare.
Firele rmase libere se conecteaz la un voltmetru setat pe curent alternativ, scara
de 10 V;
VAC
VAC
3. Se rotete axul motorului, iar dac se obine o tensiune de cca. 2 V, atunci cele
dou perechi de nfurri sunt legate n serie cu aceiai polaritate. Dac, n
schimb, tensiunea citit este nul, atunci nfurrile sunt legate n serie dar cu
polariti opuse.
Fig. 6.15: Exemplificarea excitaiei nfurrilor pentru cele trei secvene de comand a unui motor
pas-cu-pas unipolar.
64
A1
A
B
C
D
B1
B2
A1
A2
B1
B2
A1
A2
B1
B2
A
B
C
D
A1
A2
B1
B2
A1
1
A
B
C
D
A2
A2
B1
B2
A1
A2
B1
B2
65
step), dubl (two-phase step) i mixt (half-step). Secvena de comand simpl polarizeaz la un moment dat o singur pereche de nfurri. Pasul de rotaie este cel dat
de alinierea rotorului la nfurarea excitat. Secvena de comand dubl presupune
excitarea simultan a dou nfurri, axul magnetic al rotorului fiind aliniar la mijlocul
distanei dintre cele dou nfurri excitate. Consumul de curent n acest caz este
dublu fa de cazul anterior. Secvena de comand mixt const n alternarea excitrii
unei nfurri urmat de excitarea simultan a dou nfurri succesive. Cuplul n
acest caz poate scdea cu pn la 15-30% din cuplul obinut cu secvena de comand
dubl. n schimb, rezoluia unghiular (incrementul de pas) este dublu.
Pentru comanda motoarelor pas-cu-pas prin intermediul unui microcontroler se utilizeaz circuite suplimentare pentru asigurarea tensiunilor i curenilor necesari. n
cazul motoarelor pas-cu-pas unipolare, unde polarizarea semnalului de comand nu
trebuie inversat, este suficient folosirea unor drivere de curent precum circuitele
integrate din seria ULN200x (matrice cu apte tranzistoare Darlington) sau ULN280x
(matrice cu opt tranzistoare Darlington), ce suport 500 mA i maxim 50V la fiecare
ieire. Pentru logic de intrare de tip TTL se utilizeaz varianta ULN2003 (cu intrri
de 5 V n logic TTL). Pentru alte logici de intrare se pot utiliza variantele ULN2001
(logic DTL, TTL, PMOS i CMOS), ULN2002 (tensiune de intrare ntre 14-25 V n logic PMOS) sau ULN2004 (tensiune de intrare ntre 6-15 V n logic CMOS sau PMOS).
Comanda motoarelor pas-cu-pas unipolare cu ajutorul unui driver de curent se poate
face n dou moduri: cu ajutorul a patru semnale de comand sau doar cu dou semnale. n figura 6.17 este prezentat schema electric de principiu a comenzii unui motor
pas-cu-pas unipolar prin intermediul a patru semnale de comand. Prin intermediul
acestei scheme se pot implementa practic toate cele trei tipuri de secvene de comand.
Dioda DZ1 de tip Zener de 12V dintre borna de alimentare a motorului i intrarea
COM a circuitului integrat este necesar pentru a absorbi tensiunea electromagnetic
invers produs de cderea cmpului magnetic la decuplarea excitaiei nfurrilor.
Figura 6.18 prezint o schem pentru comanda unui motor pas-cu-pas unipolar prin
intermediul a dou semnale de comand. Acest mod de lucru permite implementarea
doar a secvenei de comenzi duble.
+12V
IN1
16
OUT1
IN2
15
OUT2
IN3
IN4
IN5
IN6
IN7
GND
OUT3
OUT4
12
OUT5
11
OUT6
10
OUT7
COM
ULN2003A
14
13
ULN2003A
de la
MCU
1
2
3
4
16
15
14
13
A
C
B
DZ1
Fig. 6.17: Comanda unui motor pas-cu-pas unipolar cu driver ULN2003 cu patru semnale.
66
R1
1
2
3
4
5
6
1k
de la
MCU
R2
1k
+12V
R3
16
15
14
13
12
11
1k
C
B
R4
1k
DZ1
Fig. 6.18: Comanda unui motor pas-cu-pas unipolar cu driver ULN2003 n secven dubl.
MOTOR
SUPPLY
+36V
VSS
VS
0.1uF
C3
C1
C2
LOGIC
CONTROL
INPUTS
I1A
PHASE
Ph A
I0A
11
15
0.1uF
MAA
UC3717A
9
8
14
100uF
13
12
RC
VC
RT
56k
CT
820pF
CT
RT
56k
CC
820pF
VRS
1k
CC
820pF
GND
1
16 MBA
10
820pF
RS
1ohm
RS
1ohm
I MA
L=10mH
R=13ohm
I MB
STEPPER
MOTOR
RC
1k
PHASE
Ph B
LOGIC
CONTROL
INPUTS
I1B
I0B
12
10
16 MBB
1
UC3717A
7
9
13
11
14
15
MAB
Fig. 6.19: Comanda unui motor pas-cu-pas unipolar cu driver UC3717 n secven dubl.
67
6.3
Din punct de vedere constructiv motoarele de c.c. pot fi cu perii (brushed) sau
fr perii (brushless). Motoarele de c.c. cu perii genereaz cuplu direct din sursa de
tensiune continu prin utilizarea comutaiei interne, a magneilor permaneni statorici
i a magneilor electrici rotorici. La baza efectului de rotaie st principiul forei
Lorentz. Acest principiu afirm c orice conductor electric parcurs de curent, situat
ntr-un cmp magnetic extern are un cuplu sau o for numit for Lorentz. Avantajele
unui motor de c.c. cu perii este costul iniial sczut, fiabilitate, precum i un control
simplu al vitezei de rotaie. Dezavantajele sunt reprezentate de costurile de ntreinere
ridicate i durata de funcionare sczut n cazul unei funcionri intense. Procesul de
mentenan presupune nlocuirea periodic a periilor i arcurilor care conduc curentul
electric, precum i curarea sau nlocuirea comutatorului. Toate aceste componente
sunt necesare pentru transferarea curentului electric din exteriorul motorului ctre
nfurrile rotative ale rotorului din interiorul motorului.
Motoarele fr perii, spre deosebire de cele anterioare, au rotorul construit dintrun magnet permanent rotativ, iar statorul exterior este compus din magnei electrici
staionari (bobine). Principiul constructiv este mai simplu deoarece elimin complicaiile de transfer al curentului electric din exteriorul motorului ctre rotor. Avantajele
motoarelor cu perii includ durat de via crescut, lipsa mentenanei i eficien ridicat. Dezavantajele sunt costul iniial ridicat i necesitatea utilizrii unui controler al
secvenei de comutaie a curenilor.
69
Capitolul 7
Comparatorul analogic.
Microcontrolerele PIC12F675 i
PIC16F88
7.1
Comparatorul analogic
R (0)
R/W (0)
R/W (0)
R/W (0)
R/W (1)
R/W (1)
R/W (1)
C2OUT
C1OUT
C2INV
C1INV
CIS
CM2
CM1
CM0
16F88
COUT
CINV
CIS
CM2
CM1
CM0
12F675
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
CMCON
Fiecare comparator poate opera n opt moduri diferite (figurile 7.5 i ??), selectabile
cu ajutorul biilor CM<2:0> din registrul CMCON. n cazul microcontrolerului PIC12F675,
direcia fiecrui pin al comparatorului este controlat prin intermediul registrului TRISIO, n timp ce, pentru PIC16F88, acest lucru se face cu ajutorul registrului TRISA.
Principiul de funcionare a comparatorului analogic este ilustrat n figura 7.2. Atunci
cnd tensiunea analogic de la intrarea pozitiv VIN + este mai mare dect tensiunea
de la intrarea negativ VIN -, ieirea comparatorului este n stare de 1 logic. n rest,
ieirea are valoarea 0. Datorit timpilor de rspuns i a offsetului intrrilor, momentul
de modificare a strii ieirii poate varia n jurul valorii teoretice.
Bitul CIS (CMCON<3>) are ca scop selectarea intrrii VIN - pentru modurile care
folosesc multiplexarea intrrilor.
70
VIN+
Ieire
VIN-
VINVIN
+
VIN+
Ieire
Multiplexare
La alte periferice
Pini de intrare
Ctre magistrala de date
D
CVREF
Q1
EN
RD_CMCON
CINV
CM2:CM0
D
Q3 * RD_CMCON
EN
CL
De la cellalt comparator
RESET
n funcie de modul de lucru al comparatoarelor, se poate utiliza ca intrare o tensiune extern sau extern de referin conectat la intrarea pozitiv. Atunci cnd se
utilizeaz o tensiune de referin extern, intrrile pozitive ale ambelor comparatoare
pot fi conectate mpreun sau independent la tensiunea de referin extern. Semnalul
de referin trebuie s aibe valoarea ntre VDD i VSS .Referina intern de tensiune permite lucrul ambelor comparatoare cu intrarea pozitiv comun legat la tensiunea de
referin.
Valorile de ieire ale comparatoarelor pot fi citite din registrul CMCON, biii C1OUT
i C2OUT (pentru PIC16F88) sau COUT (pentru PIC12F675). De asemenea, polaritatea
ieirii poate fi modificat cu ajutorul biilor C1INV i C2INV (pentru PIC16F88) sau a
bitului CINV (pentru PIC12F675) din registrul CMCON.
Comparatorul analogic poate genera ntrerupere la fiecare modificare a valorii de
ieire dac aceast opiune este activat prin bitul CMIE situat ntr-unul din regitrii
PIE. Deoarece este vorba de o ntrerupere periferic, biii GIE i PEIE al registrului
INTCON trebuie, de asemenea, activai. ntreruperea este activ i pe timpul ct microcontrolerul funcioneaz n modul SLEEP.
Deoarece pinii de intrare analogici sunt conectai la o ieire digital, acetia conin
diode conectate la VDD i VSS (figura 7.3). Prin urmare, gama tensiunilor de intrare
trebuie s fie cuprins ntre cele dou valori. Orice deviere cu 0.6 V fa de acest
71
RS < 10K
RIC
AIN
CIN
5 pF
VA
VT = 0.6V
I
500 nA
VSS
interval are ca efect conducia uneia din cele dou diode. Intrarea trebuie conectat
printr-o rezisten de maxim 10 k, iar orice component conectat la intrare trebuie
s consume un curent foarte mic.
Comparator resetat
Comparator dezactivat
CM2:CM0 = 000
CM2:CM0 = 111
GP1/CIN-
GP0/CIN+
GP2/COUT
Inactiv (Citit ca 0)
GP1/CIN-
GP0/CIN+
GP2/COUT
Inactiv (Citit ca 0)
Comparator fr ieire
CM2:CM0 = 010
CM2:CM0 = 100
GP1/CIN-
GP0/CIN+
GP2/COUT
COUT
GP1/CIN-
GP0/CIN+
GP2/COUT
COUT
De la modulul VREF
CM2:CM0 = 011
CM2:CM0 = 101
GP1/CIN-
GP0/CIN+
GP2/COUT
COUT
GP1/CIN-
GP0/CIN+
GP2/COUT
CIS = 0
CIS = 1
COUT
De la modulul VREF
De la modulul VREF
Comparator cu ieire
CM2:CM0 = 001
CM2:CM0 = 110
GP1/CIN-
GP0/CIN+
GP2/COUT
COUT
GP1/CIN-
GP0/CIN+
GP2/COUT
CIS = 0
CIS = 1
COUT
De la modulul VREF
A = intrare analogic, D = intrare digital
72
Comparatoare resetate
CM2:CM0 = 000
RA0/AN0
VIN-
RA3/AN3/ A
C1OUT
VIN+
VIN-
RA1/AN1
RA2/AN2/ A
CVREF
Comparatoare dezactivate
CM2:CM0 = 111
VIN+
Inactiv (Citit ca 0)
C2
Inactiv (Citit ca 0)
VIN-
RA3/AN3/ A
C1OUT
VIN+
VIN-
RA2/AN2/ A
CVREF
VIN+
RA1/AN1
VIN-
RA3/AN3/ D
C1OUT
VIN+
VIN-
RA2/AN2/ D
CVREF
VIN+
RA1/AN1
RA0/AN0
C1
C1OUT
Inactiv (Citit ca 0)
C2
Inactiv (Citit ca 0)
C2OUT
RA3/AN3/ A
C1OUT
RA1/AN1
C2
C1
RA0/AN0
C1
CIS = 0
CIS = 1
VINVIN+
C1
C1OUT
C2
C2OUT
RA2/AN2/ A
CVREF
VIN-
CIS = 0
CIS = 1
VIN+
De la modulul VREF
Dou comparatoare cu referin comun
CM2:CM0 = 011
RA0/AN0
VIN-
RA3/AN3/ D
C1OUT
VIN+
VIN-
RA2/AN2/ A
CVREF
VIN+
RA1/AN1
VIN-
RA3/AN3/ D
C1OUT
VIN+
VIN-
RA0/AN0
C1
C2
C1OUT
C2OUT
RA1/AN1
RA2/AN2/ A
CVREF
VIN+
C1
C1OUT
C2
C2OUT
RA4/T0CKI/C2OUT
Trei intrri multiplexate cu dou comparatoare
CM2:CM0 = 001
VIN-
RA3/AN3/ D
C1OUT
VIN+
VIN-
RA1/AN1
RA2/AN2/ A
CVREF
VIN+
RA0/AN0
C1
Inactiv (Citit ca 0)
RA3/AN3/ A
C1OUT
A
C2
C2OUT
RA1/AN1
RA2/AN2/ A
CVREF
CIS = 0
CIS = 1
VINVIN+
C1
C1OUT
C2
C2OUT
VINVIN+
73
Intrare
VTH
Ieire
VAVG
R1
VTL
R3
VDD
Ieire
R2
VDD VTL
VDD VTH + VTL
(7.1)
VDD R2
R1 + R2
(7.2)
5 R2
= R1 = 1.5 R2
R1 + R2
R1
VTH-HI
C1
VTH-HI
Limit maxim
VTL-LO
R2
Intrare
Ieire C1
C2
Limit minim
VTH-LO
Ieire C2
R3
R3 + R2
VDD
R1 + R2 + R3
(7.4)
VTH-LO =
R3
VDD
R1 + R2 + R3
(7.5)
Exemplu. S se determine valorile componentelor unui comparator analogic cu fereastr pentru o tensiune de prag minim VTH-LO de 2.3 V, o tensiune de prag maxim
VTH-HI de 2.7 V i tensiunea de alimentare VDD =5 V.
Se alege rezistena R3 =10 k i se determin valorile R1 i R2 conform ecuaiilor
7.4 i 7.5, astfel:
VDD VTH-HI
5 2.7
R3 =
10000 = 10 k
VTH-LO
2.3
VTH-HI VTH-LO
2.7 2.3
=
R3 =
10000 = 1739 1.8 k
VTH-LO
2.3
R1 =
(7.6)
R2
(7.7)
75
VINPUT
COUT
TIG
Timer1
Prag
Fig. 7.8: Utilizarea comparatorului analogic pentru msurarea duratei unui impuls.
C1
R1
VIN
(PWM)
10k
D1
C1
220nF
Ieire
74LS08
R2
500
1N4148
R1
10k
R1
10k
C1
R2
10k
Ieire
R2
10k
VIN
7.2
Referina de tensiune
R/W (0)
R/W (0)
U (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
CVREN
CVROE
CVRR
CVR3
CVR2
CVR1
CVR0
VREN
VRR
VR3
VR2
VR1
VR0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
16F88
12F675
77
x 16
R
8R
CVRR
8R
Pinul RA2/AN2/CVREF/VREF-
CVROE
Multiplexor analogic 16-la-1
La intrarea comparatorului
CVR3
CVR2
CVR1
CVR0
VREF =
(7.9)
12
CVR<3:0>
VDD =
5 = 2.5 V
24
24
ICSP
Generator
de semnal
Ch1
Osciloscop
Ch2
4
7
8
7
6
VPP
VDD
GND
PGD
PGC
PIC12F675
Fig. 7.13: Schema electric de principiu a utilizrii comparatorului analogic cu semnal extern i referin
intern (PIC12F675).
Pinul de intrare al semnalului este setat n modul intrare analogic, iar pinul de
ieire al comparatorului este setat ca ieire digital (figura 7.14). Deoarece ieirea
comparatorului n operarea implicit are 0 logic atunci cnd semnalul de intrare este
mai mare dect valoarea de referin, logica se inverseaz setnd la 1 bitul CINV.
GP1/CINA
GP2/COUT
D
VREF
Fig. 7.14: Modul de funcionare al comparatorului analogic pentru schema din figura 7.13.
//
//
//
//
Pinul
Pinul
Pinul
Pinul
COUT
COUT
CINCIN-
ca pin de iesire
ca digital
ca pin de intrare
analogic
CMCON.CM2=0;
CMCON.CM1=1;
CMCON.CM0=1;
CMCON.CINV=1;
VRCON.VREN=1;
VRCON.VRR=1;
VRCON.VR3=0;
VRCON.VR2=1;
VRCON.VR1=1;
VRCON.VR0=0;
//
//
//
//
// Iesire inversata
Activare referinta interna
Selectare mod Vref
VR=6 (VR3:0=1100)
(Vref=Vdd/2)
}
79
Fig. 7.15: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.1.
Ch2
4
7
8
7
6
Ch1
Osciloscop
ICSP
5
PIC12F675
R3
5
R1
R2
4k3
4k3
VPP
VDD
GND
PGD
PGC
1k4
Fig. 7.16: Schema electric de principiu a utilizrii comparatorului analogic cu histerezis (PIC12F675).
R2
R2
VDD =
5 = R1 = R2
R1 + R2
R1 + R2
Se alege ca valoare pentru celor dou rezistene R1 =R2 =4.3 k. Folosind relaia
7.3 se obine valoarea rezistenei R3 :
R1 R2
VDD
5
R3 =
1 = 2.15
1
= 1.43 k
R1 + R2 VTH VTL
41
Comparatorul opereaz n modul cu ieire fr referin intern (CM<2:0>=001).
GP1/CINA
GP0/CIN+
A
GP2/COUT
D
Fig. 7.17: Modul de funcionare al comparatorului analogic pentru schema din figura 7.16.
n figura 7.18 se prezint comparativ rezultatele obinute pentru un semnal de intrare sinusoidal i triunghiular.
\\ Exemplul 7.2: Comparator analogic cu histerezis si iesire digitala
void main() {
TRISIO.B2=0;
ANSEL.B2=0;
TRISIO.B1=1;
ANSEL.B1=1;
TRISIO.B0=1;
ANSEL.B0=1;
CMCON.CM2=0;
CMCON.CM1=0;
CMCON.CM0=1;
CMCON.CINV=1;
//
//
//
//
//
//
Pinul
Pinul
Pinul
Pinul
Pinul
Pinul
COUT
COUT
CINCINCIN+
CIN+
ca pin de iesire
ca digital
ca pin de intrare
analogic
ca pin de intrare
analogic
Fig. 7.18: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.2.
81
PIC16F88
Generator
de semnal
Osciloscop
Ch3
Ch2
Ch1
3
2
4
14
5
13
12
18
17
R1
R2
R3
4k3
6k2
4k3
VPP
VDD
GND
PGD
PGC
Fig. 7.19: Schema electric de principiu a utilizrii comparatorului analogic cu feresatr (PIC16F88).
Cele trei rezistene cu ajutorul crora se stabilesc cele dou tensiuni de prag, VTH-LO
i VTH-HI , se determin cu ajutorul relaiilor 7.4 i 7.5. De exemplu, pentru VTH-LO =1.45
V i VTH-HI =3.55 V, se pot utiliza valorile R1 =R3 =4.3 k i R2 =6.2 k.
Cele dou comparatoare au ieiri complementare. Astfel, comparatorul C1 are ieire
neinversat (C1INV=0), iar comparatorul C2 are ieire inversat (C2INV=1). Semnalul
de intrare este conectat la intrarea comun analogic a semnalului de referin CVREF
de la pinul RA2. Tensiunea de prag minim VTH-LO este conectat la intrarea analogic
C2IN- de la pinul RA1, iar pragul maxim VTH-HI este conectat la intrarea analogic
C1IN- de la pinul RA0.
VDD
R1
4k3
VTH-HI=3.55V
VIN
C1
C1OUT=1-(VIN>VTH-HI)
C2
C2OUT=VIN>VTH-LO
R2
6k2
VTH-LO=1.55V
R3
4k3
Fig. 7.20: Modul de funcionare al comparatorului analogic pentru schema din figura 7.19.
82
//
//
//
//
Pinul
Pinul
Pinul
Pinul
C1INC1INC1OUT
C1OUT
ca pin de intrare
analogic
ca pin de iesire
ca digital
TRISA.B1=1;
ANSEL.B1=1;
TRISA.B2=1;
ANSEL.B2=1;
TRISA.B4=0;
ANSEL.B4=0;
//
//
//
//
//
//
Pinul
Pinul
Pinul
Pinul
Pinul
Pinul
C2INC2INC2IN+
C2IN+
C2OUT
C2OUT
ca pin de intrare
analogic
ca pin de intrare
analogic
ca pin de iesire
ca digital
CMCON.CM2=1;
CMCON.CM1=1;
CMCON.CM0=0;
CMCON.C1INV=0;
CMCON.C2INV=1;
Fig. 7.21: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.3.
Exemplul 7.4. n figura 7.22 este prezentat o aplicaie pentru implementarea unui
circuit cu oprire automat la detectarea unui semnal PWM a crui durat a impulsului
depete valoarea T=2 ms. Tensiunea de alimentare este VDD =5 V, iar tensiunea de
referin de la intrarea pozitiv VREF este de 1.25 V.
83
1N4148
D1
R1
C1
18k
Generator
de semnal
PWM
Osciloscop
390nF
Ch3
Ch2
Ch1
12F675
5
4
7
8
7
6
ICSP
1
VPP
VDD
GND
PGD
PGC
Fig. 7.22: Schema electric de principiu a circuitului de oprire automat cu comparator analogic
(PIC12F675).
0.002
0.002
T
=
=
= 0.7 103
ln(1 VREF /VDD )
ln(1 1.25/5)
0.287
6
5 = 1.25 V
24
Pentru setul de instruciuni se poate utiliza acelai ca i cel din exemplul 7.1, cu
modificarea valorii biilor CVR<3:0> la noua valoare calculat.
Fig. 7.23: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.4.
84
Capitolul 8
Convertorul analog-digital.
Microcontrolerul PIC16F887
Convertorul analog-digital (ADC - Analog Digital Converter) are ca scop conversia
unei tensiuni analogice de intrare ntr-o valoare numeric (digital). Poate fi ntlnit
cu o rezoluie de 8 sau 10 bii. Modulul ADC are un numr de intrri analogice
multiplexate, n funcie de modelul de microcontroler. Fiecare intrare analogic este
cuplat la un capacitor de tip sample-and-hold care, la rndul su, este conectat la
intrarea convertorului propriu-zis. Convertorul ADC genereaz un rezultat digital a
tensiunii analogice prin tehnica aproximrilor succesive. Pentru un convertor ADC pe
10 bii, rezultatul digital poate lua valori cuprinse ntre 0 i 1023.
VCFG1 = 0
AV SS
VREF-
VCFG1 = 1
AV DD
VCFG0 = 0
VREF+
VCFG0 = 1
0000
AN0
AN1
0001
AN2
0010
AN3
0011
AN4
0100
AN5
0101
AN6
0110
AN7
0111
AN8
1000
AN9
1001
AN10
1010
AN11
1011
AN12
1100
AN13
1101
CVREF
1110
FixedRef
1111
ADC
10
GO/DONE
ADFM
0 = Left Justify
1 = Right Justify
ADON
10
VSS
ADRESH
ADRESL
CHS<3:0>
Convertorul ADC dispune de dou referine de tensiune, una pozitiv i una negativ, selectabile software ca fiind fie tensiunile de alimentare ale microcontrolerului
(VDD i VSS ), fie nivelurile de tensiune de la pinii VREF + i VREF -.
Convertorul analog numeric poate genera ntreruperi la sfritul efecturii unei conversii. ntreruperea poate fi utilizat la revenirea microcontrolerului din modul SLEEP.
Pentru operarea cu convertorul analog numeric trebuie efectuate setri legate de:
configurarea porturilor;
selectarea canalului analogic;
selectarea referinei de tensiune;
frecvena de conversie A/D;
controlul ntreruperii;
formatarea rezultatului conversiei.
Configurarea porturilor. Convertorul analog numeric poate converti atn semnale
analogice, ct i digitale. Portul de intrare trebuie setat corecpunztor tipului de semnal. Astfel, pentru semnale analogice, portul de intrare se seteaz cu ajutorul regitrilor
TRIS i ANSEL sau ANSELH pentru lucru n modul intrare analogic. Fiecare din biii
regitrilor ANSEL i ANSELH au valoarea setat pe 1 dac portul asociat bitului opereaz n modul analogic sau valoarea 0 dac portul opereaz digital.
ANSEL
ANSELH
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
ANS7
ANS76
ANS5
ANS4
ANS3
ANS2
ANS1
ANS0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
U (0)
U (0)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
R/W (1)
ANS13
ANS12
ANS11
ANS10
ANS9
ANS8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Fig. 8.2: Regitrii de control al modului digital sau analogic al porturilor (PIC16F887).
ADCON0
ADCON1
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
ADCS1
ADCS0
CHS3
CHS2
CHS1
CHS0
GO/DONE
ADON
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
R/W (0)
U (0)
R/W (0)
R/W (0)
U (0)
U (0)
U (0)
U (0)
ADFM
VCFG1
VCFG0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
BSF ADCON0, GO
1 TCY
(TOSC/2)
TGO
TCNV
Q4
TAD
A/D CLK
9
A/D Data
0
Date noi
Date anterioare
ADRES
ADIF
1 TCY
DONE
GO
Sample
Eantionare oprit
TACQ
FOSC
TAD
ADCS
20 MHz
8 MHz
4 MHz
1 MHz
2TOSC
00
100 ns
250 ns
500 ns
2.0 us
8TOSC
01
400 ns
1.0 us
2.0 us
8.0 us
32TOSC
10
1.6 us
4.0 us
8.0 us
32 us
2TRC
11
2-6 us
2-6 us
2-6 us
2-6 us
Valori nevalidate
Valori valide
Fig. 8.5: Duratele de timp ale conversiei n funcie de frecvena oscilatorului (PIC16F887).
87
de achiziie TACQ este de 11.5 s, iar timpul de pornire TGO este TOSC /2 n funcionare
normal sau TOSC /2+TCY n modul SLEEP.
Controlul ntreruperii. Convertorul A/D poate genera o ntrerupere la terminarea
fiecrei conversii dac opiunea este activat cu ajutorul bitului ADIE din registrul
PIE1. tergerea bitului de semnalizare ADIF se face prin intermediul registurlui PIR1.
Formatarea rezultatului conversiei. Numrul pe 10 bii rezultat n urma conversiei
poate fi reprezentat n dou moduri posibile: cu aliniere la stnga (left justified) sau
cu aliniere la dreapta (right jsutified). Formatul datelor se stabilete prin bitul ADFM
din registrul ADCON0 (figura 8.6).
ADRESH
(ADFM=0)
ADRESL
MSB
bit7
(ADFM=1)
left justified
LSB
bit0
bit7
MSB
bit7
bit0
right justified
LSB
bit0
bit7
bit0
nceperea unei conversii analog digitale se face prin activarea convertorului A/D prin
bitul ADON al registrului ADCON0 i setarea bitului GO/DONE la valoarea 1. Cele
dou operaii trebuie efectuate n instruciuni diferite, nu n acelai ciclu. La finalul
conversiei, modulul ADC va trece bitul GO/DONE n 0, va seta bitul de semnalizare a
ntreruperii ADIF la valoarea 1 (dac ntreruperea este activat) i va actualiza regitrii
ADRESH i ADRESL cu rezultatul conversiei.
PIC16F884
Ceas
Memorie
Periferice
Module timer
Revenire din modul Sleep la modificarea unui pin
Intrri analogice
Caracteristici
Pini de intrare/ieire
Pini de intrare
Rezistene de pull-up interne
PIC16F887
8192 words
256 bytes
368 bytes
256 bytes
Comparatoare analogice
Module EUSART
Module ECCP/CCP
1/1
Interfa ICSP
Da
Numr de instruciuni
Capsule
35
40-pin PDIP, 44-pin QFN, TQFP
VIN
VREF+=
[VDD-2.5V ... VDD+0.3V]
VREF-=
[(VREF+)-2.0V ... VSS-0.3V]
0x0000
(0)
ADRESH+ADRESL
0x03FF
(1023)
40
RB7/PGD
RA0/AN0/ULPWU/C12IN0-
39
RB6/PGC
RA1/AN1/C12IN1-
38
RB5/AN13/T1G
RA2/AN2/VREF-/CVREF/C2IN+
37
RB4/AN11
RA3/AN3/VREF+/C1IN+
36
RB3/AN9/PGM/C12IN2-
RA4/T0CKI/C1OUT
35
RB2/AN8
RA5/AN4/SS/C2OUT
34
RB1/AN10/C12IN3-
RE0/AN5
33
RB0/AN12/INT
RE1/AN6
32
VDD
RE2/AN7
10
31
VSS
VDD
11
30
RD7/P1D
VSS
12
29
RD6/P1C
RA7/OSC1/CLKIN
13
28
RD5/P1B
RA6/OSC2/CLKOUT
14
27
RD4
RC0/T0OSO/T1CKI
15
26
RC7/RX/DT
RC1/T1OSI/CCP2
16
25
RC6/TX/CK
RC2/P1A/CCP1
17
24
RC5/SDO
RC3/SCK/SCL
18
23
RC4/SDI/SDA
RD0
19
22
RD3
RD1
20
21
RD2
PIC16F887
RE3/MCLR/VPP
n figura 8.10 este prezentat schema de principiul pentru msurarea unei tensiuni
analogice i stabilirea intervalului de conversie A/D cu ajutorul pinilor VREF + i VREF -.
Cele dou tensiuni sunt setate cu ajutorul a dou rezistene semireglabile cu rol de
divizor al tensiunii de referin VDD . Tensiunea de intrare VIN poate fi furnizat de
la un rezistor semireglabil sau de la un generator de semnal, opiune selectabil cu
ajutorul comutatorului K1.
PIC16F887
Generator
de semnal
VDD
VIN
K1
P3
10k
10
LED1
...
1
11,32
12,31
40
39
5
RD0:7, RC7:6
R3
220
ICSP
5
P1
R12
220
VREF+
LED10
VREF-
R1
10k
10k
R2
P2
15k
VPP
VDD
GND
PGD
PGC
5k
Fig. 8.10: Schema electric de principiu a utilizrii convertorului A/D cu un singur semnal de intrare i
cele dou referine externe (PIC16F887).
90
//
//
//
//
//
ADCON0.ADCS1=1;
ADCON0.ADCS0=0;
ADCON1.VCFG1=1;
ADCON1.VCFG0=1;
ADCON0.CHS3=0;
ADCON0.CHS2=0;
ADCON0.CHS1=0;
ADCON0.CHS0=0;
ADCON1.ADFM=0;
ADCON0.ADON=1;
//
//
//
//
//
//
PIE1.ADIE=1;
INTCON.PEIE=1;
INTCON.GIE=1;
PIR1.ADIF=0;
//
//
//
//
delay_us(12);
ADCON0.GO_DONE=1;
// Asteptare Tacq
// Pornire achizitie
intrerupere ADC
intreruperi periferice
intreruperi globale
flag intrerupere ADC
91
Capitolul 9
Memoria EEPROM
Memoria EEPROM a unui microcontroler este o memorie de date care poate fi citit
sau scris pe parcursul funcionrii normale. Accesul memoriei EEPROM se face prin
intermediul regitrilor EECON1, EEDATA i EEADR.
Registrul EEDATA conine informaia pe 8 bii pentru scriere sau citire, iar registrul EEADR conine adresa memoriei EEPROM care este accesat la un moment
dat. Deoarece registrul EEADR are 8 bii, se pot accesa pn la 256 celule de memorie.
Scrierea unei informaii ntr-o celul de memorie implic tergerea automat a
coninutului precedent (tergere naintea scrierii), rezultnd un timp relativ important
al procesului de scriere. Durata unui ciclu de scriere al memoriei EEPROM variaz de
la un model de microcontroler la altul. Din punct de vedere practic este util ca dup
fiecare proces de scriere s se verifice prin comparare datele scrise.
EECON1
R/W (x)
U (0)
U (0)
R/W (x)
R/W (x)
R/W (0)
R/S (0)
R/S (0)
EEPGD
FREE
WRERR
WREN
WR
RD
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Registrul EECON1 are rolul de control al accesului ctre memoria EEPROM. Bitul
EEPGD stabilete dac operaiile se fac n memoria de date (EEPGD=0) sau n memoria program (EEPGD=1). Biii de control RD i WR iniiaz operaia de citire i, respectiv, de scriere. Aceti bii pot fi doar setai prin software la valoarea 1 i nu pot
fi teri dect hardware la terminarea operaiei. Pentru scriere trebuie setat la 1, de
asemenea, bitul de activare WREN, iar la orice eroare sau reset se seteaz automat
la valoarea 1 bitul de semnalizare a erorii WRERR. Cel de-al doilea registru de control EECON2 nu este implementat fizic i este utilizat exclusiv n timpul procesului de
scriere.
La terminarea scrierii n memoria EEPROM se poate genera o ntrerupere dac
aceasta este activat din registrul INTCON prin intermediul biilor GIE i PEIE i din
registrul PIE2 prin bitul EEIE. De asemenea, semnalizarea se face cu ajutorul bitului
EEIF din registrul PIR2.
92
PIC16F88
TLC7226
4
Osciloscop
2
DB0:7
R1
220
LED1
18
3
15
16
17
5
6
RB0:7
8
R8
220
...
LED8
15
ICSP
4
14
5
13
12
16
VPP
VDD
GND
PGD
PGC
20MHz
C1
30pF
C2
30pF
Fig. 9.2: Schema electric de principiu a utilizrii memoriei EEPROM pentru generarea DDS a unui
semnal (PIC16F88).
93
Cele 256 de eantioanele ale semnalului sinusoidal avnd valori ntregi ntre 0 i
255 pot fi generate cu ajutorul relaiei 9.2.
255
n1
s[n] =
1 + sin 2
(9.2)
2
256
unde n ia valori ntre 1 i 256, iar [] este operatorul parte ntreag.
Utiliznd modulul Timer2 al unui microcontroler PIC16F88 care opereaz la frecvena
FOSC =20 MHz, se determin perioada ntreruperilor, conform relaiei 4.5.
1
4
=
Pres PR2 PostS = Pres PR2 PostS
= 31
6
161280
20 10
Se alege prescalerul PreS=1:1, postscalerul PostS=1:1 i se determin valoarea
registrului PR2=31 (sau cea real PR=30).
Scrierea datelor n memoria EEPROM poate fi fcut cu ajutorul unui fiier iHex
sau text n care sunt dispuse cei 256 de octei ai sinusoidei discretizate. Pentru fiierul
de tip text, octeii sunt separai prin caracterul TAB (ASCII=9), iar la fiecare 16 octei
prin caracterele LF (ASCII=10) i CR (ASCII=13), rezultnd un total de 784 octei.
Citirea memoriei EEPROM se face continuu prin incrementarea la fiecare ntrerupere a unui contor de adres (variabila i). Deoarece contorul este definit pe 8 bii, la
incrementarea valorii 255 acesta devine automat 0, relundu-se ciclul de numrare.
\\ Exemplul 9.1: Generare semnal 630 Hz DDS cu EEPROM (mod HS)
unsigned char i;
void interrupt() {
PIR1.TMR2IF=0;
EEADR=i;
EECON1.RD=1;
PORTB=EEDATA;
i++;
}
//
//
//
//
//
void main() {
TRISB=0;
ANSEL=0;
}
94
// RB ca port de iesire
// RB ca port analogic
PIE1.TMR2IE=1;
INTCON.PEIE=1;
INTCON.GIE=1;
PR2=30;
T2CON=0b00000100;
Alte forme de und pot fi generate similar, utiliznd eantioane generate i apoi
stocate n memoria EEPROM a microcontrolerului.
Semnal impuls:
(9.3)
(9.4)
s[n] =
Semnal dinte de fierstru:
Semnal triunghiular:
s[n] =
255(n 1)/127
dac 1 n 128
255(256 n)/127 dac 128 < n 256
(9.5)
Fig. 9.3: Semnale generate DDS cu ajutorul unor forme de und stocate n memoria EEPROM.
95
PIC16F88
R1
50k
17
R2
50k
15
4
14
5
13
12
16
ICSP
1
VPP
VDD
GND
PGD
PGC
Fig. 9.4: Schema electric de principiu a utilizrii memoriei EEPROM pentru nregistrarea datelor
(PIC16F88).
4
FOSC
PS (65536 TMR1) =
4
8 15360 = 15 s
32768
Scrierea memorie EEPROM se face cu ajutorul unei secvene de cod care trebuie s
conin obligatoriu o secven de scriere a valorii 0x55 urmate de scrierea valorii 0xAA
n registrul EECON2 nainte de comanda propriu-zis de scriere. Se recomand ca, pe
timpul scrierii, toate ntreruperile s fie dezactivate temporar, prin salvarea registrului
INTCON ntr-o variabil temporar i apoi tergerea sa.
96
97
void main() {
TRISA.B0=1;
ANSEL.B0=1;
TRISA.B2=0;
ANSEL.B2=0;
PORTA.B2=0;
//
//
//
//
//
RA0
RA0
RB4
RA0
RB4
ca pin de intrare
ca pin analogic
ca pin de iesire
ca pin digital
initializat stins
EECON1.WREN=1;
EEADR=0;
for (k=0;k<256;k++) {
EEDATA=0x00;
EECON1.EEPGD=0;
EECON2=0x55;
EECON2=0xAA;
EECON1.WR=1;
delay_ms(6);
EEADR++;
}
EECON1.WREN=0;
//
//
//
//
//
//
//
//
//
//
adresa=0;
// Initializare adresa
ADCON1.VCFG1=0;
ADCON1.VCFG0=0;
ADCON1.ADFM=0;
ADCON1.ADCS2=1;
ADCON0.ADCS1=1;
ADCON0.ADCS0=0;
ADCON0.CHS2=0;
ADCON0.CHS1=0;
ADCON0.CHS0=0;
ADCON0.ADON=1;
//
//
//
//
//
T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1CS=0;
T1CON.TMR1ON=1;
TMR1H=196;
TMR1L=0;
//
//
//
//
//
PIE1.TMR1IE=1;
INTCON.PEIE=1;
INTCON.GIE=1;
Capitolul 10
10.1
Comunicaia SPI
Creat iniial de ctre firma Motorola, comunicaia de tip SPI opereaz n modul full
duplex cu un singur master i permite un schimb de date grupate pe 8 bii cu ajutorul
a patru linii de intrare/ieire (figura 10.1):
SDO - Serial Data Out (linie de transmisie);
SDI - Serial Data In (linie de recepie);
SCK - Serial Clock (linie de sincronizare);
SS - Slave Select (linie de selecie a dispozitivului slave).
Master
SPI
SCK
SCK
SDO
SDI
SDI
SDO
SS
SS
Slave
SPI
Fig. 10.1: Comunicaia de tip SPI intre un dispozitiv master i unul slave.
Dispozitivele conectate la magistrala SPI pot opera n modul master/slave, prin master nelegndu-se dispozitivul care iniiaz comunicaia. La magistral pot fi conectate simultan mai multe dispozitive care opereaz n modul slave dar numai unul dintre
acestea poate comunica la un moment dar cu dispozitivul master prin intermediul liniei
99
de selectare SS activ pe 0. Pe o magistral de tip SPI pot fi conectate doar dispozitive slave care au ieirile de tip tri-state.
Comunicaia SPI permite semnale de ceas de pn la 70 MHz i distane maxime
de ctiva metri. Avantajul este dat de interfaarea simpl, transmisia nu este limitat
la 8 bii, dispozitivele slave nu necesit adrese unice iar consumul de putere este mic.
Configurarea dispozitivelor slave conectate la magistrala SPI se poate face independent sau cooperativ, denumit i daisy-chain (figura 10.2). n modul independent,
pentru fiecare dispozitiv slave exist cte o linie de selecie SS separat, fiind modul
de lucru cel mai ntlnit. Deoarece liniile de date sunt conectate mpreun, acestea
trebuie s fie de tip tri-state. Modul cooperativ presupune conectarea tuturor dispozitivelor slave la o singur linie de selecie SS. Ieirea de date a primului dispozitiv
slave este legat la intrarea celui de-al doilea .a.m.d., ntregul lan funcionnd ca
un registru de deplasare, datele primite fiind retransmise de fiecare dispozitiv ctre
urmtorul.
Conexiune SPI cu dispozitive slave independente
Master
SPI
SCK
SCK
SDO
SDI
SDI
SDO
SS1
SS
Slave
SPI
Master
SPI
SCK
SCK
SDO
SDI
SDI
SDO
SS
SS
Slave
SPI
SS2
SS3
SCK
SDI
SDO
SCK
Slave
SPI
SS
SDO
SS
SDO
Slave
SPI
SS
SCK
SDI
SDI
SCK
Slave
SPI
SDI
SDO
Slave
SPI
SS
Pentru iniializarea unei transmisii de date, dispozitivul master efectueaz mai nti
selecia dispozitivului periferic cu care dorete a comunica, dup care se efectueaz o
transmisie full-duplex implementat cu ajutorul a doi regitrii de deplasare pe 8 bii
conectai n inel sub forma unui buffer circular (figura 10.3). Pe parcursul fiecrui ciclu
SPI se schimb cte un bit de informaie, astfel:
dispozitivul master transmite un bit pe linia SPO a acestuia iar dispozitivul slave
citete bitul de la linia SPI proprie;
dispozitivul slave transmite un bit pe linia SPO a acestuia iar dispozitivul master
citete bitul de la linia SPI proprie;
Dei uzual, pentru transmiterea celor 8 bii de date se utilizeaz opt cicli, numrul
acestora poate varia n funcie de aplicaie. Atunci cnd nu mai sunt date de transmis
dispozitivul master oprete semnalul de ceas i deselecteaz dispozitivul slave.
100
Master SPI
Slave SPI
SCK
0 1 2 3 4 5 6 7
SDO
SDI
SDI
SDO
0 1 2 3 4 5 6 7
Ceas
CPHA=0
SDO
SDI
Ceas
CPHA=1
SDO
SDI
101
10.2. COMUNICAIA I2 C
10.2
Comunicaia I2 C
MCU
Master
ADC
Slave
DAC
Slave
MCU
Slave
Fig. 10.5: Comunicaia de tip I2 C intre un dispozitiv master i alte dispozitive slave.
Magistrala I2 C standard conine un spaiu de adrese pe 7 bii cu 16 adrese rezervate, rezultnd un maxim de 112 periferice care pot comunica pe aceiai magistral.
Vitezele uzuale pe magistral sunt de 100 kbps (n modul standard) sau 10 kbps (n
modul de vitez redus), dar se pot alege i alte valori inferioare. Variante recente
ale I2 C permit viteze mai mari, de 400 kbps (n modul rapid), 1Mbps (n modul rapid
plus) sau 3.4 Mbps (n modul de mare vitez), acestea fiind predominant ntlnite pe
sistemele embedded i avnd adresele definite pe 16 bii. Distanele sunt redeuse la
civa metrii datorit capacitii maxime a magistralei de 400 pF.
Dispozitivele master genereaz semnalul de ceas i adresa dispozitivelor slave, n
timp ce dispozitivele slave recepioneaz semnalul de ceas i adresele. Exist patru
moduri de operare pe magistrala I2 C, datorit faptului c pot exista mai multe dispozitive master simultan:
Transmisie master: un dispozitiv master transmite date ctre un dispozitiv slave;
Recepie master: un dispozitiv master recepioneaz date de la un dispozitiv slave;
Transmisie slave: un dispozitiv slave transmite date ctre un dispozitiv master;
Recepie slave: un dispozitiv slave recepioneaz date de la un dispozitiv master.
Un dispozitiv master se afl iniial n modul de operare transmisie master i transmite un bit de START urmat de cei apte bii ai adresei dispozitivului slave cu care
dorete comunicarea, urmat n final de un bit prin care se specific dac masterul
102
dorete scrierea (0) sau citirea (1) datelor ctre slave. n cazul n care exist dispozitivul slave cu adresa specificat, acesta rspunde printr-un bit de confirmare ACK
(Acknowledge). Dispozitivul master continu operarea n modul transmisie sau recepie master (n funcie de bitul final), n timp ce dispozitivul slave va opera ntr-un
mod complementar, respectiv recepie sau transmisie slave.
SDA
SCL
START
STOP
Bitul START este transmis sub forma unei tranziii de la 1 la 0 logic a liniei SDA
iar linia SCL trece n 1 logic. Bitul STOP este transmis sub forma unei tranziii de la
0 la 1 logic a liniei SDA n timp ce linia SCL este n 1 logic (figura 10.6).
Comunicaia I2 C conine trei tipuri elementare de mesaje, fiecare dintre ele fiind
delimitate de biii START i STOP:
mesaj simplu n care dispozitivul master trimite date ctre un dispozitiv slave;
mesaj simplu n care dispozitivul master primete date de la un dispozitiv slave;
mesaje combinate, n care un dispozitiv master trimite sau citete cel puin de
dou ori consecutiv.
n cazul unor mesaje combinate, fiecare citire sau scriere ncepe cu bitul START
urmat de adresa dispozitivului slave. Cu excepia primului, ceilali bii de start poart
denumirea de START repetitiv. Aceti bii nu sunt precedai de bii de STOP, ceea
ce semnific faptul c urmtorul transfer face parte din acelai mesaj. Fiecare mesaj
ncepe cu bitul MSB.
10.3
Comunicaia PS/2
PS/2
Keyboard
Host
PS/2
Mouse
Fig. 10.7: Comunicaia de tip PS/2 intre un dispozitiv host (computer) i dispozitivele de intrare.
CLOCK
DATA
START
STOP
CLOCK
DATA
ACK
COMPUTER
< 2ms
PERIFERIC
< 15ms
> 100us
Etapele parcurse de computer pentru transmisia datelor ctre periferic sunt descrise
n cele ce urmeaz.
1. Se trece linia de ceas pe 0 logic pentru minim 100 s;
2. Se trece linia de date pe 0 logic;
3. Se trece linia de ceas pe 1 logic;
4. Se ateapt ca perifericul s treac linia de ceas pe 0 logic;
5. Se seteaz linia de date pe starea logic corespunztoare primului bit de date;
6. Se ateapt ca perifericul s trec linia de ceas pe 1 logic;
7. Se ateapt ca perifericul s trec linia de ceas pe 0 logic;
8. Se repet paii 5-7 pentru restul de 7 bii i bitul de paritate;
9. Se trece linia de date pe 1 logic;
10. Se ateapt ca perifericul s trec linia de date pe 0 logic;
11. Se ateapt ca perifericul s trec linia de ceas pe 0 logic;
12. Se ateapt ca perifericul s trec linia de date i linia de ceas pe 1 logic.
Dup recepia semnalului de confirmare ACK, computerul poate trece linia semnalului de ceas n 0 logic pentru a mpiedica orice comunicaie pe perioada preocesrii
datelor. n cazul n care computerul trimite ctre periferic o comand care necesit
un rspuns, acesta nu trebuie s soseasc ntr-un timp mai mare dect 20 ms, n caz
contrar computerul genernd o eroare.
PERIFERIC CTRE COMPUTER
CLOCK
DATA
START
STOP
STOP
DATA
START
ACK
Fig. 10.9: Diagramele de timp ale celor dou tipuri de transmisii PS/2.
n concluzie, magistrala PS/2 se poate afla ntr-una din cele trei stri posibile, astfel:
Stare neutr: DATA=1; CLOCK=1;
Stare blocat: DATA=1; CLOCK=0;
Computerul cere date: DATA=0; CLOCK=1.
105
10.4
SSPBUF
SDO
SSPSR
Slave
SCK
SCK
SDI
SDO
SSPBUF
SSPSR
SDI
Pe scurt, transmisia SPI ntre un dispozitiv master i unul slave se face n urmtoarele secvene ilustrate n figura 10.11.
Pentru iniializarea modului SPI se stabilesc o serie de opiuni cu ajutorul registrului
de control SSPCON, precum:
modul master (pinul SCK este ieire de ceas);
modul slave (pinul SCK este intrare de ceas);
polaritatea semnalului de ceas (starea incativ a pinului SCK);
frontul semnalului de ceas (transmisia datelor pe frontul cresctor sau descresctor al semnalului de ceas);
frecvena semnalului de ceas (doar n mod master);
selectarea dispozitivului slave (pinul SS doar n modul slave).
CPU
SSPBUF
SSPSR
SSPBUF
SSPSR
SSPSR
BF
SSPIF
SSPBUF
Fig. 10.11: Secvenele transmisiei SPI ntre un dispozitiv master i unul slave.
107
SSPCON
SSPSTAT
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
R/W (0)
WCOL
SSPOV
SSPEN
CKP
SSPM3
SSPM2
SSPM1
SSPM0
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
R/W (0)
R/W (0)
R (0)
R (0)
R (0)
R (0)
R (0)
R (0)
SMP
CKE
D/A
R/W
UA
BF
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
Activarea portului serial se face prin setarea bitului SSPEN din registrul SSPCON.
Resetarea sau reconfigurarea modului de operare SPI se face prin resetarea bitului
SSPEN, efectuarea modificrilor din registrul SSPCON, urmat de setarea bitului
SSPEN. Acest lucru are ca rezultat setarea celor patru pini (SDO, SDI, SCK i SS) n
modul de lucru SPI. Aceti pini trebuie setai ca intrri sau ieiri digitale, astfel:
SDI ca pin de intrare;
SDO ca pin de ieire;
SCK (n mod master) ca pin de ieire;
SCK (n mod slave) ca pin de intrare;
SS ca pin de intrare.
Operarea n modul master
Deoarece dispozitivul master deine controlul liniei semnalului de ceas SCK, acesta
poate iniia transferul de date n orice moment de timp. Tot dispozitivul master determin momentul n care dispozitivul slave ncepe transmisia de date.
n modul master datele sunt transmise sau recepionate imediat dup ce registrul
SSPBUF a fost scris. Portul de recepie SDI primete datele, iar pinul de transmisie
SDO poate fi dezactivat, dup caz. Registrul SSPSR va deplasa biii prezeni la intrarea SDI cu frecvena stabilit a semnalului de ceas. Dup terminarea recepiei celor
8 bii, octetul va fi transferat n registrul SSPBUF i se va semnaliza prin bitul BF i
ntreruperea SSPIF.
Polaritatea semnalului de ceas se stabilete cu ajutorul bitului CKP din registrul
SSPCON, astfel: dac bitul CKP=1, linia de ceas este n repaus (idle) n starea 1
logic, iar dac bitul CKP=0, linia se afl n repaus n starea 0 logic.
Frecvena semnalului de ceas se stabilete cu ajutorul biilor SSPM<3:0> din registrul SSPCON, existnd urmtoarele posibiliti:
0000 - FOSC /4;
0001 - FOSC /16;
0010 - FOSC /64;
0011 - ieirea modulului Timer2/2.
108
4 moduri
de setare
al semnalului
de ceas
SCK (CKP = 0,
CKE = 1)
SCK (CKP = 1,
CKE = 1)
SDO (CKE = 0)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
SDO (CKE = 1)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
SDI (SMP = 0)
bit0
bit7
Eantionare
date intrare
(SMP = 0)
SDI (SMP = 1)
bit7
bit0
Eantionare
date intrare
(SMP = 1)
SSPIF
Urmtorul ciclu Q4
dup Q2
SSPSR ctre
SSPBUF
Prin urmare, viteza maxim de transfer se obine la FOSC =20 MHz i are valoarea
de 5 Mbps.
Registrul SSPSTAT are ca scop stabilirea momentelor implusurilor de ceas cnd se
efectueaz recepia i transmisia biilor de date. Citirea datelor recepionate se poate
face la mijlocul fiecrui impuls de ceas (SMP=0) sau la sfritul impulsurilor de ceas
(SMP=1). De asemenea, datele pot fi transmise pe frontul cresctor (CKE=1) sau pe
frontul descresctor al impulsurilor de ceas (CKE=0).
Operarea n modul slave
n modul slave, datele sunt transmise i recepionate pe parcursul apariiei impulsurilor de ceas pe linia SCK. Dup primirea ultimului bit se seteaz bitul de semnalizare
a ntreruperii SSPIF. Polaritatea semnalului de ceas este selectat prin intermediul
bitului CKP din registrul SSPSTAT (figurile 10.14 i 10.15).
Pinul SS permite selectare mai multor dispozitive slave conectate la un singur
master. Intrrile SPI trebuie setate ca slave (SSPCON<3:0>=0100) iar pinii core109
spunztori trebuie setai ca intrri digitale. Atunci cnd semnalul pe linia SS este 0,
transmisia i recepia sunt active, iar cnd SS este 1, acestea sunt inactive iar pinul
SDO este deconectat devenind ieire de tip tri-state. n aceste situaii este indicat
conectarea unor rezistene de pull-up, n funcie de aplicaie. Atunci cnd linia SS
devine 1, toate modulele SPI ale dispozitivelor slave vor fi resetate.
SS
opional
SCK (CKP = 0,
CKE = 0)
SCK (CKP = 1,
CKE = 0)
Scriere n
SSPBUF
SDO
SDI
(SMP = 0)
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
bit0
bit7
Eantionare
date de intrare
(SMP = 0)
Bit semnalizare
ntrerupere
SSPIF
Urmtorul ciclu Q4
dup Q2
SSPSR ctre
SSPBUF
Fig. 10.14: Diagrame de timp pentru comunicaia SPI n modul slave (CKE=0).
SS
obligatoriu
SCK (CKP = 0,
CKE = 1)
SCK (CKP = 1,
CKE = 1)
Scriere n
SSPBUF
SDO
SDI
(SMP = 0)
bit7
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
bit0
Eantionare
date de intrare
(SMP = 0)
Bit semnalizare
ntrerupere
SSPIF
SSPSR ctre
SSPBUF
Urmtorul ciclu Q4
dup Q2
Fig. 10.15: Diagrame de timp pentru comunicaia SPI n modul slave (CKE=1).
110
SS
SCK (CKP=0,
CKE = 0)
SCK (CKP=1,
CKE = 0)
Scriere n
SSPBUF
SDO
SDI
(SMP = 0)
bit7
bit6
bit7
bit0
bit0
bit7
bit7
Eantionare
date de intrare
(SMP = 0)
Bit semnalizare
ntrerupere
SSPIF
SSPSR ctre
SSPBUF
Fig. 10.16: Diagrame de timp pentru resetul comunicaiei SPI n modul slave.
Atunci cnd modulul SPI se reseteaz, contorul de bit este trecut forat n 0. Acest
lucru se poate realiza fie prin forarea pinului SS n stare 1 logic, fie prin tergerea
bitului SSPEN din registrul SSPCON (figura 10.16).
Pentru a emula o comunicaie pe dou linii, pinul SDO poate fi conectat la pinul
SDI. Atunci cnd se dorete utilizarea doar a recepiei, pinul SDO poate fi configurat
ca intrare. Acest lucru dezactiveaz transmisia de la SDO. Pinul SDI poate fi pstrat
ca intrare deoarece nu creaz conflicte.
111
Capitolul 11
Comunicaia 1-Wire
112
Capitolul 12
Introducere n robotic
Noiunea de robot are o multitudine de moduri de definire, specialitii din domeniu
nefiind de comun acord asupra unui mod unic. Acest lucru duce la multe confuzii asupra
entitii de robot i, mai mult, asupra sistemelor care intr sub incidena termenului.
12.1
Etimologie
Termenul de robot a fost introdus de ctre scriitorul ceh Karel apek n piesa de
teatru R.U.R. (Rossums Universal Robots) din anul 1920. ntr-o fabric se construiau oameni artificiali numii roboi, apropiai ca aspect cu ideea modern de androizi.
Roboii puteau gndii singuri, fiind ns bucuroi s efectueze munci de servitori. Ideea
principal a scenei de teatru este dilema exploatrii roboilor i consecinele unui astfel de tratament.
Autorul explic mai trziu n anul 1933 prin intermediul unui articol din revista Lidov noviny (Peoples News) c iniial a preferat denumirea de laboi (muncitori) dar,
la sugestia fratelui su Josef, a ales n final termenul de robot. Acest termen semnific,
n limbile slave, munc sau figurativ munc grea.
Domeniul de studiu al roboilor se numete robotic a fost ncetenit de scriitorii
americian de literatur tiinifico-fantastic Isaac Asimov i John W. Campbell, cnd
acetia au creat cele trei legi ale roboticii n scurta povestire Runaround din anul 1942.
Aceste trei legi stabileau urmtoarele:
Legea 1: Un robot nu are voie s pricinuiasc vreun ru unei fiine umane sau,
prin neintervenie, s permit ca unei fiine omeneti s i se fac un ru.
Legea 2: Un robot trebuie s se supun ordinelor date de ctre o fiin uman,
att timp ct ele nu intr n contradicie cu Legea 1.
Legea 3: Un robot trebuie s-i protejeze propria existen, att timp ct acest
lucru nu intr n contradicie cu Legea 1 sau Legea 2.
Ulterior, aciunile din romanele lui Isaac Asimov au impus apariia unei legi suplimentare, denumite Legea 0. Celelalte trei legi au fost modficate, ca atare, corespunztor, legea 0 fiind suprem.
113
12.2. ISTORIC
12.2
Istoric
nceputul roboilor poate fi considerat ca fiind secolul IV B.C., atunci cnd matematicianul grec Archytas din Tarentum a propus construcia unei psri mecanice care
funciona pe baz de aburi. Ulterior, matematicianul i inventatorul grec Hero din
Alexandria (10-70 A.D.) a creat o serie de dispozitive automate autoconfigurabile care
funcionau pe baza presiunii aerului, apei i aburului. Su Song a construit n China n
anul 1088 un turn cu ceas n compunerea cruia intrau cteva figurine mecanice care
anunau ora exact.
Inventatorul turc Al-Jazari (1136-1206) a proiectat i realizat n timpul dinastiei Artuklu o serie de automate care includeau dispozitive de uz casnic sau muzical, propulsate pe baza apei i unui automat programabil. Roboii erau reprezentai sub forma a
patru muzicani ntr-o barc, dispus n mijlocul unui lac spre amuzamentul invitailor
la petreceri.
n epoca modern timpurie, Leonardo da Vinci (1452-1519) a conceput schiele unui
robot umanoid n jurul anului 1495. Notiele inventatorului, redescoperite n anii 1950,
conin descrieri detaliate ale unui cavaler mecanic cunoscut sub denumirea de robotul
lui Leonardo. Acesta era capabil de a se aeza, ridica, micca braele, capul i flcile.
n anii 1738-39, inventatorul francez Jacques de Vaucanson (1709-1782) a expus cteva
automate la scar real care ntruchipau un cnttor la fluier sau o ra mecanic.
Acesta din urm avea posibilitatea de a-i flexa aripile si gtul, de a nghii mncare
i de a da impresia de digestie prin eliminarea de excremente stocate ntr-un compartiment intern ascuns.
n Japonia, artizanul Hisashige Tanaka (1799-1881), cunoscut i ca Edison al Japoniei,
a creat o serie de jucrii mecanice extrem de complexe, unele dintre acestea fiind capabile de a servi ceaiul, de a trage cu sgei sau chiar de a picta un caracter kanji.
n anul 1989, srbul Nicola Tesla a demonstrat public funcionarea unei torpile radiocomandate. Pe baza patentului teleautomatului, Tesla spera s dezvolte un sistem de
armament pentru marina Statelor Unite.
n anul 1926, firma american Westinghouse Electric Corporation a creat primul
robot destinat unei munci, denumit Televox. n 1930, Westinghouse a creat robotul Elektro destinat exclusiv prezentrilor la expoziii. n 1928, biologistul Makoto
Nishimura a creat primul robot japonez, denumit Gakutensoku.
Primii roboi electrici autonomi au fost creai de ctre neurofiziologul american
William Grey Walter (1910-1977) la Institutul Neurologic Burden din Bristol, ntre anii
1948 i 1949. Roboii purtau numele de Elmer i Elsie i erau capabili de a detecta
lumina i contactul cu obiecte externe, utiliznd aceti stimuli pentru navigaie.
Primul robot modern programabil i operabil digital a fost inventat de George Devol n anul 1954, fiind denumit Unimate. Primul exemplar a fost vndut n 1960 firmei
114
General Motors, fiind instalat n anul 1961 n fabrica din Trenton, New Jersey. Scopul
su era de a prelua i stoca obiecte metalice fierbini create de o pres.
n acest moment, roboii industriali i comerciali sunt rspndii pe arie foarte larg
n lume, fiind utilizai pentru a efectua sarcini cu precizie i fiabilitate mai mari i pre
de cost mai mic n raport cu operatorii umani. Sunt, de asemenea, instalai n zonele
cu grad ridicat de murdrie sau pericol. Roboii sunt utilizai n producie, asamblare,
mpachetare, transport, explorare terestr sau spaial, chirurgie, armament, cercetare
de laborator sau n producia de mas a bunurilor de consum i industriale.
12.3
Clasificare
12.3. CLASIFICARE
Roboii mai pot fi clasificai n funcie de tipul controlerului, sursa de energie, sau
nivelul de tehnologie. Din punct de vedere al tipului controlerului, roboii pot avea:
Secven limitat: utilizeaz contacte mecanice pentru limitarea ariei de micare;
Secven punct-la-punct: dispun de senzori pentru informaie de feedback i au
memorie pentru stocarea coordonatelor pe fiecare ax;
Secven continu: au memorie mai mare dect tipul anterior i pot nregistra
mai multe coordonate ntr-o secund.
Din punct de vedere al sursei de energie, roboii pot fi de tip electric, pneumatic
sau hidraulic.
n final, dup nivelul de tehnologie, roboii pot avea:
Nivel sczut tehnologic: utilizai pentru manipulri de material, ncrcri i descrcri sau pentru operaii simple de asamblare. Pot axea pn la 4 axe de
micare i sarcini de ordinul a 10 kg;
Nivel mediu tehnologic: utilizai pentru ncrcare i descrcare, preluare i dispunere, au 4-6 axe de micare i sarcini de ordinul a 100 kg;
Nivel mare tehnologic: utilizai pentru o multitudine de sarcini de manufacturare,
au 6-9 axe de micare i sarcini de ordinul a 100 kg.
Din punct de vedere al distribuiei, circa 50% din roboi se gsesc n Asia, 32% n
Europa, 16% n America de Nord, i cte 1% n Australia i Africa. De remarcat faptul c 30% din totalul roboilor se regsesc n Japonia, ara cea mai robotizat din lume.
Cele mai ntlnite tipuri de roboi, din punct de vedere constructiv, sunt roboii mobili i roboii industriali. Roboii mobili au capacitatea de deplasare n mediul propriu
de operare i nu sunt fixai ntr-un anume loc. Exemple de astfel de roboi sunt vehiculele ghidate automat (AGV - Automated Guided Vehicles), acestea fiind capabile
s urmreasc marcaje sau fire dispuse pe podea sau s utilizeze viziunea. Roboii
mobili se regsesc n industrie, armat i medii ce necesit un anumit grad de securitate. Apar, de asemenea, sub forma unor bunuri de consum care efectueaz diferite
sarcini, precum aspiratoarele.
Roboii industriali constau din manipulatoare sub forma unor brae articulate unite
prin cuple cinematice, precum i un instrument terminal cuplat la captul ultimei articulaii. Standardul ISO 8373 definete un astfel de robot ca fiind compus dintr-un
"manipulator programabil cu cel puin trei axe, multiscop, reprogramabil, cu control
automat, care poate opera fix sau mobil n diverse aplicaii industriale ce necesit
automatizare".
Cele dou tipuri de roboi vor fi tratate n capitolele urmtoare sub forma detaliat
a elementelor componente comune sau distinctive (senzori, actuatori, manipulatoare i
sisteme de propulsie).
116
Capitolul 13
Roboi autonomi
Un robot autonom se bazeaz pe studiul comportamental al acestuia prin mprirea
aciunii sale n aciuni mai simple, primitive, denumite comportamente, care reprezint,
de fapt, algoritmi ce fac conexiunea ntre senzori i actuatori. Aciunea nsumat a tuturor comportamentelor simple constituie aciunea global a robotului ca un ntreg.
Ieire
Senzor tactil
Dark-push
Fotocelul
Motor
stnga
Motor
dreapta
Anti-molie
Evitare
Detector IR
Acas
Croazier
Arbitru
Senzori
Inteligen
Controler motoare
Actuatori
Structura unui robot autonom este divizat n trei pri principale. Prima dintre acestea, partea senzorial, conine toate acele elemente care permit msurarea
parametrilor din mediul de operare (denumii generic senzori). Un senzor este un
traductor care efectueaz conversia unei cantiti dintr-o mrime fizic ntr-un semnal electric. Senzorii furnizeaz date ctre partea de calcul i decizie, denumit inteligen. n cadrul acestui bloc se regsesc algoritmii elementari comportamentali
care sunt ulterior coenctai la un arbitru cu funcie de inteligen. Deciziile luate
de arbitru se reflect prin comenzi date unor elemente externe regsite n partea de
117
acionare. Aceasta poate fi compus din motoare, electrovalve sau orice alt dispozitiv
electromecanic care poate genera aciuni asupra mediului de operare i obiectelor din
acel mediu.
n schema din figura 13.1, robotul are n compunere trei tipuri de senzori. Senzorii
tactili reprezint microcontacte care, la lovirea unui obstacol, nchid un contact electric.
Aceti senzori sunt utilizai pentru detectarea coliziunilor cu perei sau obiecte ridige.
Fotocelulele sunt senzori de lumin care permit msurarea intensitii luminoase incidente. De obicei se utilizeaz mai muli senzori cu orientri diferite. n cele din urm,
detectorii IR permit determinarea distanei pn la obiectul aflat direct n raza vizual.
Partea de actuatori este compus din dou motoare care permit propulsia robotului,
acestea fiind comandate direct prin intermediul unui controler de motoare.
Partea central, denumit inteligen, are n compunerea sa dou elemente principale. Pe de o parte, se dispune de un set de comportamente primitive care opereaz
direct pe baza datelor primite de la unul sau mai muli senzori iar, pe de cealalt
parte, exist un arbitru cu rol de stabilire a prioritilor n selectarea aciunii finale
a robotului. Exist o multitudine de tipuri de comportamente primitive, enumerate n
cele ce urmeaz.
La crearea inteligenei unui robot concur proiectarea, programul software i, eventual, mediul n care acesta opereaz. n schimb, un robot nu poate fi cu adevrat
inteligent dac programul su nu este capabil s compenseze erorile inerente provenite de la senzori sau actuatori.
Roboii mobili au de rezolvat o problem care nu apare n cazul roboilor industriali de tip manipulator. Aceste dou tipuri de roboi opereaz n codiii mult diferite.
Roboii industriali opereaz n medii statice i cu un grad ridicat de aranjare i structurare, n timp ce roboii mobili opereaz n medii din lumea real care au un caracter
puternic dinamic i nestructurat.
Un mediu structurat este acel mediu n care obiectele sunt dispuse deliberat n
locuri precise. Natura i localizarea obiectelor este cunoscut cu exatitate. Obiectele
nerigide sunt, de obicei, excluse din aceste medii structurate deoarece este dificil de
descris unui robot forma i micarea unui astfel de obiect ntr-un mod matematic simplu. Zonele de lucru industriale sunt foarte bine aranjate, birourile sau apartamentele
sunt, de asemenea, aranjate dar ntr-un grad mai mic, n timp ce pdurile sau mlatinile
au o structur puternic neregulat.
Un mediu dinamic este acel mediu n care lucrurile se schimb. Obiectele din acest
mediu i pot modifica poziia i orientare independent de robot. Un robot industrial
poate dispune de obiecte aflate n micare (de exemplu, transportul pe band rulant)
dar pot opera cu succes att timp ct poziia obiectelor este predictibil. n cazul
roboilor mobili, acetia nu dispun de o informaie a priori despre obiectele prezente
n mediul su nconjurtor sau despre traiectoria acestora.
O alt diferen major ntre roboii industriali i cei mobili este faptul c roboii
industriali cunosc n orice moment poziia lor, n timp ce pentru roboii mobili acest
lucru este rareori valabili.
118
13.1
Comportamente
O operaie pe care un robot mobil trebuie s fie capabil s o ndeplineasc poate fi,
de exemplu, deplasarea ctre o surs de lumin denumit baz sau cas (de unde i
numele aciunii de acas). Acest lucru poate fi realizat cu ajutorul unor senzori care
detecteaz sursa de lumin. Deplasarea ctre baz nu este o aciunea continu, pe
care robotul o efectueaz pe tot parcursul funcionrii, ci temporar, declanat prin
intermediul unui trigger.
Comportament
primitiv
Trigger
Sistem de control
Semnal
de
control
Fig. 13.2: Structur unui comportament primitiv.
119
13.2
Vehiculele Braitenberg
Vehiculul 1
Vehiculul 2a
Vehiculul 2b
Vehiculul 2c
Cel mai simplu vehicul de tip 1 este compus dintr-un senzor de lumin i un motor
central (figura 13.3). Viteza motorului este controlat de senzor, proporional cu valoarea detectat de senzor.
Vehiculul de tip 2 este similar primului tip, cu diferena c exist doi senzori i
dou motoare, interconectate n diferite moduri (a, b sau c). Vehiculul 2a are senzorii
conectai la motoarele de pe aceiai parte. Rspunsul robotului este diferit n funcie
de poziia sursei de excitaie a senzorilor. Dac sursa este poziionat frontal, robotul
se va ndrepta continuu ctre aceasta fr oprire. Dac sursa este dispus ntr-una
din prile laterale, motorul asociat acelei pri va funciona mai rapid dect cellalt,
ndeprtnd robotul de acea surs. Spre deosebire de tipul 2a, vehiculul de tipul 2b va
avea un comportament complementar n cazul surselor dispuse lateral. Astfel, deoarece
motoarele sunt conectate la senzorii de pe partea opus, robotul va fi atras de ctre o
surs dispus lateral.
120
Vehiculul 2a
Vehiculul 2b
Vehiculul 3a
Vehiculul 3b
Vehiculul 3c
Fig. 13.5: Vehiculul Braitenberg de tipul 3c.
121
Primele trei tipuri de vehicule au o lege liniar de excitare sau inhibare a senzorilor.
Aceste legi pot avea, de asemenea, un caracter neliniar. De exemplu, o lege poate fi
considerat excitarea gradual cresctoare a motorului pn la un anumit nivel de la
care excitarea acestuia scade (figura 13.6). Aceiai lege poate fi aplicat att pentru
excitarea, ct i pentru inhibarea motoarelor.
Vehiculul 4a
Vehiculul 4b
Fig. 13.7: Legi posibile ale dependenei vitezei motorului de intensitatea senzorului pentru vehicule de
tipul 4.
Vehiculul de tip 4a poate fi mbuntit prin introducerea unor noi tipuri de senzori
i conexiuni ai acestora cu motoarele. n acest caz, influena senzorilor asupra motoarelor nu mai are o lege neted ci includ zone care impun frnri brute sau viteze
maxime (figura 13.7).
122
13.3
Buton apsat
Buton
Aprins
Stins
Baterie
Buton apsat
Fig. 13.8: Reprezentarea unui circuit electric simplu sub forma unui automat cu stri finite.
Automatul are dou stri posibile (reprezentate prin cercuri), aprins sau stins. Trecerile ntre stri se fac la apariia unei aciuni, n cazul de fa fiind vorba despre
apsarea butonului. De asemenea, sistemul conine o form rudimentar de memorie,
n sensul c lumina rmne aprins chiar i atunci cnd butonul nu este apsat (memorie cu 1 bit).
Un exemplu mai complex de automat cu stri finite este reprezentat de sistemul
de acces ntr-un garaj. Modul de operare este urmtorul: dac ua garajului este
nchis i se apas butonul de deschidere/nchidere, ua ncepe s se mite spre sus.
Cnd aceasta este total deschis, micarea se oprete prin anclanarea unui comutator mecanic de limitare. Dac butonul este apsat, n schimb, atunci cnd ua este
deschis, ua pornete micarea n jos i se oprete la anclanarea celui de-al doilea
comutator de limitare, cnd ua este complet nchis.
Cel mai simplu mod de descriere al acestui sistem pleac de la ipoteza existenei
a patru stri distincte: ua nchis, ua deschis, ua n micare de deschidere i ua
n micare de nchidere. Tranziiile dintre stri se fac la apsarea butonului sau la
anclanarea unuia din cele dou comutatoare mecanice (figura 13.9).
123
Ua
se deschide
Ua nchis
Comutator
deschidere
anclanat
Comutator
nchidere
anclanat
Ua
se nchide
Ua deschis
Buton apsat
Fig. 13.9: Reprezentare sub forma unui automat cu stri finite a uii unui garaj (varianta 1).
Ua
se deschide
Ua nchis
Ua se
oprete
din
deschidere
Buton apsat
Comutator
deschidere
anclanat
Buton apsat
Buton apsat
Comutator
nchidere
anclanat
Buton apsat
Ua se
oprete
din
nchidere
Ua deschis
Ua
se nchide
Buton apsat
Fig. 13.10: Reprezentare sub forma unui automat cu stri finite a uii unui garaj (varianta 2).
124
Dac se dorete includerea unui iluminator exterior, diagrama n starea din figura
13.10 se poate complica, incluznd 12 stri. n schimb, este de dorit simplificarea tuturor diagramelor de stare pentru uurina implementrii practice. Astfel, se poate
utiliza o variabil d care s memoreze ultima direcie de micare a uii. Mai mult,
sistemul de iluminare i sistemul uii pot fi separate, ca n figura 13.11. Simplificarea
schemei rezult din stocarea direciei de deplasare a uii ntr-o variabil, nu ntr-o
stare.
Sistem u
Sistem iluminare
Buton apsat
Buton apsat
Micare
n direcia
d
Oprire
Stins
Buton
apsat
Aprins
Fig. 13.11: Reprezentare sub forma unui automat cu stri finite a uii unui garaj (varianta 3).
Un exemplu din lumea roboticii l reprezint mecanismul de ieire a unui robot dup
lovirea unui obstacol. Etapele care trebuie parcurse de robot aparin unui comportament balistic i sunt ilustrate n figura 13.12. nainte de detectarea unei coliziuni,
sistemul este inactiv. Dup detectare, robotul se oprete i se mic spre napoi o
anumit distan, dup care se rotete cu un unghi n jurul axei proprii iar, n final
i continu micarea precedent.
Inactiv
Micare napoi
Rotire stnga
Micare nainte
Inactiv
Coliziune
Fig. 13.12: Etape parcurse pentru aciunea de ieire din zon dup detecia unei coliziuni.
125
Inactiv
Deplasare
distan f
Lovire stnga
d=dreapta
Lovire dreapta
d=stnga
Mers napoi
Mers nainte
Deplasare
distan b
Rotire
Terminare
rotire cu
Fig. 13.13: Diagrama strilor finite ale aciunii din figura 13.12.
126
Capitolul 14
Senzori de navigat, ie
Navigat, ia1 poate fi definit ca procesul de direct, ionare al mis, crii unui vehicul ntre
dou puncte. La baza echipamentelor de navigat, ie stau o mare varietate de principii
fizice. Unele dintre acestea depind de recept, ia informat, iei din exteriorul vehiculului, de
la sol sau din aer. Prin urmare, navigat, ia este susceptibil la erori atunci cnd aceste
informat, ii lipsesc sau sunt eronate, din cauze naturale sau artificiale. Alte echipamente
depind de informat, ii provenite din interiorul vehiculului s, i nu depind de mediul exterior,
eliminnd problemele precedente, dar intervenind altele, precum driftul. Aceste ultime
echipamente ofer msurtori relative ale pozit, iei, nu absolute. Pozit, ia curent este
obt, inut prin adugarea unei valori de avans la valoarea anterioar a pozit, iei, avans
determinat pornind de la informat, iile de traiectorie s, i vitez msurate ntr-un interval
definit de timp.
Tehnicile tradit, ionale interact, ioneaz cu mediul vehiculului prin intermediul unor
senzori care permit determinarea pozit, iei s, i orientrii. Acestea sunt susceptibile la
erori cauzate cel mai frecvent de alunecri ale rot, ilor sau de neregularit, ti ale terenului. Sistemele de navigat, ie inert, iale depind de msurtori efectuate n ntregime n
interiorul vehiculului, n concordant, cu legile de miscare s, i gravitat, ionale ale lui Newton. Prin urmare, bazndu-se doar pe msurtorile obt, inute de la senzorii inert, iali,
sistemele inert, iale sunt autonome s, i nu pot fi bruiate (perturbate) din exterior.
n cazul unui vehicul mobil exterior flexibil, este necesar ca acesta s poat naviga
n medii nestructurate, n care unele sisteme de navigat, ie pot fi inoperative sau cu
performant, e degradabile, ci folosind sisteme de navigat, ie inert, iale autonome care is, i
mentin performant, ele n mod continuu.
Pentru vechiculele exterioare sunt, de asemenea, disponibile sistemele bazate pe
Sistemul de Pozitionare Global (GPS). Sistemele inert, iale pot oferi pozit, ii relative
precise pe termen scurt, n timp ce sistemele bazate pe GPS ofer pozit, ii absolute,
limitnd erorile. Prin urmare, sistemele de navigat, ie inert, iale s, i cele bazate pe GPS
pot fi combinate n cadrul aceluias, i vehicul.
Senzorii de distant, sunt utilizat, i, de asemenea, n cadrul vehiculelor. Informat, ia
furnizat de aces, tia este folosit pentru evitarea obstacolelor, urmrirea traiectoriilor
s, i navigat, ie. Cei mai utilizat, i senzori sunt cei ultrasonici s, i cei optici.
1 Din
127
14.1
14.2
Accelerometre
Accelerometrele reprezint dispozitive care permit msurarea accelerat, iei. Acestea pot fi utilizate n diferite aplicat, ii, pentru determinarea accelerat, iei, unghiului
de rotat, ie, nclinrii, vibrat, iei, coloziunii sau a gravitat, iei. Din punct de vedere al
aplicat, iilor posibile, accelerometrele se regsesc n compunerea robot, ilor cu autoechilibrare, controlerelor de jocuri, pilot, ilor automati, alarmelor autovehiculelor, sistemelor
airbag sau a monitoarelor mis, crii.
129
14.2. ACCELEROMETRE
arc elastic
0
mas
amortizor
(14.1)
a
m
x
x=0
Fm
Fm
UA ~ x ~ a
Fk
IA ~ a
a)
b)
Fig. 14.3: Senzori de accelerat, ie n bucl deschis (a) sau n bucl nchis (b).
S = x/a = m/c.
(14.2)
Acest lucru specific faptul c sensibilitatea cres, te atunci cnd masa corpului este
mare s, i constanta elastic scade.
n cazul unei mis, cri dinamice, n care accelerat, ia variaz, pe lng constanta de
elasticitate a arcului, se iau n considerat, ie s, i fort, a de amortizare, precum s, i fort, a de
inert, ie. Fort, a de amortizare este proport, ional cu viteza x s, i este descris de constanta de amortizare p. Fort, a de inert, ie este proport, ional cu accelerat, ia x. Ecuat, ia
rezultant caracterizeaz un sistem rezonant:
F = m a = c x + p x + m x.
(14.3)
c
.
m
(14.4)
Prin urmare, conform ecuat, iei (14.2), sensibilitatea msurrii este dependent direct
de frecvent, a de rezonant, , astfel:
02 S = 1.
(14.5)
Pentru a obt, ine o proport, ionalitate corespunztoare ntre variabila msurat s, i deplasare, este necesar s se opereze cu mult sub valoarea frecvent, ei de rezonant, a
sistemului. Deplasarea rezultat este convertit n semnal electric prin intermediul
unor tehnici adecvate.
Sistemele care msoar deplasarea masei seismice permit aplicarea principiului
compensri, conform cruia un sistem deformat ca urmare a unei accelerat, ii este controlat invers prin intermediul unei fort, e de react, ie (figura 14.3). Prin urmare, elementul
sensibil este parte component a unui sistem n bucl nchis. Fort, a de react, ie sau
mrimea care o genereaz (e.g. curent, tensiune) act, ioneaz ca o msur a accelerat, iei.
Sistemul opereaz n bucl nchis aproape de punctul de echilibru s, i permite obt, inerea
131
14.2. ACCELEROMETRE
p
p
0 =
.
2c
2 cm
(14.6)
Factorul de amortizare Lehr este adimensional s, i permite descrierea simpl s, i compararea diferitelor sisteme rezonante. n practic se prefer valori cuprinse ntre 0,5 s, i
0,7.
Majoritatea senzorilor de accelerat, ie utilizat, i n mod curent sunt produs, i cu ajutorul micromecanismelor pe suprafat, de siliciu. Deoarece msurarea se face pe baze
capacitive, semnalul msurat este determinat doar de ctre geometria s, i parametrii
stabili de material, nefiind influent, at de ctre alti factori precum temperatura. Datorit valorilor foarte mici ale capacitt, ilor, circuitele electronice aferente msurtorii
trebuie dispuse n imediata vecintate a acestora.
Avantajul unor micromecanisme de suprafat, este posibilitatea pe care aceastea o
ofer de a controla pozit, ia sau deformarea cu ajutorul unei fort, e electrostatice aplicate
electrozilor de msur sau unui set suplimentar de electrozi.
n ultimii ani accelerometrele bazate pe micromecanisme (MEMS) au devenit disponibile pe scar larg, datorit n principal capacitt, ii de product, ie s, i a pret, ului de cost
sczut. Necesitt, ile industriei de autovehicule, n special pentru costruct, ia airbagurilor,
a ncurajat dezvoltarea senzorilor pe baz de siliciu, fcnd posibil producerea n serie
a accelerometrelor integrate. Senzorii actuali incorporeaz amplificatoare, condit, ionere
de semnal, precum s, i circuite de compensare a temperaturii. Exist, n princal, trei
tipuri de accelerometre MEMS de pret, sczut: capacitive, piezoelectrice s, i piezorezistive. Accelerometrele piezorezistive nu au rspuns n curent continuu, ceea ce le face
inutilizabile pentru sistemele de navigat, ie inert, ial. n cazul senzorilor piezorezistivi, accelerat, ia determin mis, carea masei n raport cu cadrul fix, fapt care implic
aparit, ia unui stres n piezorezistor, schimbnd valoarea acestuia. Senzorii capacitivi se bazeaz pe deplasarea unei armturi capacitive mobile n funct, ie de valoarea
accelerat, iei s, i modificnd valoarea capacitt, ii. Aceast modificare este utilizat pentru
generarea unui semnal proport, ional cu valoarea accelerat, iei aplicate senzorului. Dispozitivele mai noi sunt construite n bucl deschis, n timp ce altele dispun de bucle de
react, ie care echilibreaz s, i ment, in elementul sensibil n pozit, ie central, mrind astfel
liniaritatea. Aces, ti senzori sunt construit, i astfel nct s maximizeze sensibilitate pe
axa principal s, i s minimizeze sensibilitatea n afara acesteia. Unele dispozitive au
sensibilitate tri-axial, incorpornd trei accelerometre, cte unul pentru fiecare ax,
fapt care simplific montarea s, i alinierea dispozitivului. Aces, ti senzori permit game
cuprinse ntre 2 g s, i 2000 g.
132
consol simpl
Siliciu
consol dubl
Cadru
Mas
Siliciu
Aplicat, iile uzuale din industria autovehiculelor includ sisteme pentru airbag frontal,
controlul suspensiilor s, i al frnrii sau teste de impact. De asemenea, accelerometrele
s, i gsesc ntrebuint, are n monitorizarea vibrat, iilor industriale, monitorizarea s, ocurilor
transporturilor, precum s, i n controlul mis, crii. Domeniul larg de ntrebuint, are va determina dezvoltarea tehnologiei, mbuntt, irea performant, elor s, i scderea pret, ului de
cost.
Pentru mrirea preciziei, sunt implementate bucle nchise cu fort, e de echilibrare.
Aceste fort, e sunt aplicate masei pentru a o echilibra. Fort, ele utilizate sunt, de cele mai
multe ori, magnetice, piezoelectrice sau electrostatice. Valoarea de ies, ire a senzorului
va fi dat n funct, e de valoarea fort, ei necesare pentru a echilibra masa. Astfel, prin
echilibrare sunt minimizate erorile cauzate de distorsiuni s, i de neliniaritatea masei,
iar gama dinamic s, i banda sunt mrite.
n scopul msurrii deplasrii masei din interiorul senzorului, fie pentru a furniza direct semnalul de ies, ire, fie pentru a controla bucla de echilibrare, se pot utiliza o serie
de tehnici: piezorezistive, piezoelectrice, capacitive, termale sau optice. Accelerometrele piezoelectrice se bazeaz pe depunerea unui strat piezoeletric pe arcurile elastice
din siliciu. Acestea ofer un rspuns mare la curent, i mici, dar au impedant, mare s, i nu
ofer un rspuns continuu. Accelerometrele optice au la baz modificrile caracteristicilor unei cavitt, i optice, pe baza deplasrii masei. Radiat, ia care penetreaz cavitatea
depinde ca band spectral de deplasarea masei din interior. Aceast tehnologie a fost
utilizat n senzorii de presiune de mare rezolut, ie s, i cu cost ridicat. Accelerometrele
piezorezistive s, i capacitive ofer ambele rspuns continuu s, i au pret, de cost sczut,
fiind potrivite pentru sistemele de navigat, ie inert, iale.
14.2.1
Accelerometre piezorezistive
14.2. ACCELEROMETRE
Structura cu o sigur consol are, teoretic, cea mai mare sensibilitate, dar este fragil s, i cauzeaz aparit, ia multor erori n afara axei principale. Structura cu dou console
compenseaz erorile din afara axei principale s, i este mult mai robust. Arcurile ndoite
permit deplasri mai lungi ntr-un spat, iu restrns, reducnd astfel pret, ul de cost al
senzorului.
14.2.2
Accelerometre piezoelectrice
pin
pin
Q
U
Q
U
CP
U = Q/CM
Msurarea tensiunii
Msurarea sarcinii
acceleraie
bar
fixri
celul
bar
celul
Ca
Ca
Cb
Cb
14.2.3
Accelerometre capacitive
n cazul accelerometrelor capacitive, deplasarea masei modific geometria unui element sensibil capacitiv.
Una din modalitt, ile de realizare a accelerometrelor capacitive utilizeaz o bar
principal care constituie masa, la capetele creia se conecteaz dou arcuri. Bara
dispune de mai multe armturi centrale situate la unghiuri drepte fat, de bar, care
se ntreptrund cu armturile atas, ate pe fiecare parte a cadrului, fromnd o structur
simetric de tip pieptn. Dispunerea permite detectarea accelerat, iilor pozitive s, i negative de-a lungul axei barei n planul senzorului.
Fiecare din armturile centrale se ntreptrunde cu dou armturi fixate pe bar,
formnd un divizor capacitiv, ca n figura 14.6. Cele dou armturi fixe sunt comandate cu semnale dreptunghiulare de amplitudine egal dar cu polaritate opus, avnd
frecvent, a de 1 MHz. Atunci cnd nu exist accelerat, ie, cele dou capacitt, i sunt aproximativ egale, iar pe armtura central tensiunea este nul. Aparit, ia unei accelerat, ii
determin o deplasare a plcilor fixate pe bar, ceea ce cauzeaz un cuplaj capacitiv
mai mare ntre armturile care sunt mai apropiate, tensiunea armturii centrale fiind
nenul. Semnalul corespunztor accelerat, iei este determinat prin diferent, a de faz a
impulsurilor de pe armtura central s, i a impulsului de comand considerat referint, .
Prin urmare, este necesar utilizarea unui demodulator asincron pentru extragerea
semnalului de joas frecvent, proport, ional accelerat, iei.
Semnalul astfel rezultat este utilizat ntr-o bucl nchis pentru a fort, a echilibrarea
senzorului s, i repozit, ionarea lui la valoarea init, ial corespunztoare accelerat, iei 0 g.
Fort, a de echilibrare se obt, ine electrostatic, prin comanda armturilor centrale cu o
tensiune proport, ional cu valoarea accelerat, iei. Bucla de react, ie trebuie s fie suficient de rapid pentru a realiza echilibrarea naintea altor modificri ale accelerat, iei.
14.2.4
Accelerometre termice
Senzorii de accelerat, ie termici genereaz o bul de gaz ncins prin intermediul unui
element termic de nclzire. Gazul ncins are o densitate mai mic dect gazul nconjurtor, mai rece. n cazul aparit, iei unei accelerat, ii laterale, regiunea cu densitate
135
14.2. ACCELEROMETRE
y
y
x
x
Fig. 14.7: Principiul msurrii accelerat, iei statice cu ajutorul accelerometrului termic.
sczut corespunztoare gazului nclzit se deplaseaz n interiorul zonei cu temperatur rece. Asimetria rezultat este ulterior detectat prin intermediul unei punt, i
cu termocuplu sau cu rezistent, e. Tensiunea msurat n punte reprezint semnalul
proport, ional valorii accelerat, iei.
14.2.5
Din punct de vedere al semnalului de ies, ire furnizat de accelerometre, pot fi ntlnite variante analogice sau digitale. n cazul accelerometrelor cu ies, ire analogic,
accelerat, ia este exprimat sub forma deviat, iei fat, de o tensiune constant echivalent unei accelerat, ii nule. De exemplu, tensiunea la ies, irea senzorului Analog Devices ADXL330 la o accelerat, ie de 0 g s, i o tensiune de alimentare de 3 V este de 1,5
V . Deviat, ia, precum s, i sensul acesteia n raport cu tensiunea de referint, , exprim
valoarea s, i sensul accelerat, iei la momentul respectiv (figura 14.8).
Pentru accelerometrele cu ies, ire modulat PWM, accelerat, ia se calculeaz dup o
formul specificat n foaia de catalog de productor (figura 14.9). Impulsurile PWM
pot fi covertite n semnal analogic prin utilizarea unui filtru RC pentru extragerea componentei continue.
+3V
VS
XOUT
ADXL322
+2 g
VS = 3V
CDC
AC
AMP
DEMOD
OUTPUT
AMP
OUTPUT
AMP
0g
VS/2
SENSOR
A(g)
RFILT
32k
COM
ST
RFILT
32k
YOUT
CY
GND
-2 g
XOUT
CX
+3.0V TO +5.25V
CX
VDD
X SENSOR
SELF TEST
XFILT
VDD
ADXL202/
ADXL210
RFILT
32kV
X OUT
DEMOD
CDC
DUTY
CYCLE
MODULATOR
(DCM)
OSCILLATOR
RFILT
32kV
Y OUT
DEMOD
C
O
U
N
T
E
R
mP
T2
Y SENSOR
YFILT
COM
T1
T2
CY
RSET
Fig. 14.9: Accelerometru cu semnal de ies, ire de tip PWM (Analog Devices ADXL202/210).
Accelerometrele care dispun de ies, ire PWM pot fi mai us, or de interfat, at cu microcontrolere, n timp ce senzorii cu ies, ire analogic necesit un convertor analog/numeric.
Unele modele de accelerometre permit comunicat, ia cu microcontrolere prin intermediul comunicat, iilor seriale de tip SPI sau I2 C. De asemenea, acestea pot integra
circuite pentru controlul ntreruperilor sau managementul puterii consumate.
Senzorii termici dispun de ies, iri analogice sau PWM, dar au n compunere un sistem
suplimentar pentru nclzirea gazului de referint, din interior. Datorit construct, iei,
senzorii de acest tip funct, ioneaz ca accelerometre cu dou axe (figura 14.11). Gama
dinamic uzual este de 2 g.
VCC
ADIS16006
SCLK
DUAL-AXIS
5g
ACCELEROMETER
SERIAL
INTERFACE
DIN
DOUT
CS
CDC
TCS
TEMP
SENSOR
COM
ST
YFILT
XFILT
CY
CX
14.2. ACCELEROMETRE
Internal
Oscillator
Sck
CLK
Temperature
Sensor
Tout
Voltage
Reference
Vref
Continuous
Self-Test
Heater
Control
X axis
Low-Pass
Filter
Aout X
Low-Pass
Filter
Aout Y
Factory Adjust
Offset & Gain
Y axis
Vdd
GND
Vde
Fig. 14.11: Accelerometru termic cu dou axe s, i semnal de ies, ire de tip PWM (Memsic MX2125).
14.2.6
nclinometre
14.3
Giroscoape
Un giroscop este un dispozitiv care permite msurarea sau ment, inerea orientrii s, i
care are la baz efectul de conservare a momentului de rotat, ie unghiular.
14.3.1
Giroscoape mecanice
Un giroscop mecanic este compus n principal dintr-un disc care se rotes, te n jurul
axei proprii cu o vitez unghiular foarte mare s, i care nu are constrngeri mecanice
de orientare (figura 14.12). n urma act, iunii unui cuplu extern, axa de rotat, ie a discului
s, i modific foarte put, in pozit, ia fat, de modificarea care ar interveni n cazul n care
discul nu s-ar roti. Deoarece cuplul extern este minimizat prin montarea dispozitivului ntr-un sistem cardanic, orientarea acestuia va rmne fix indiferent de mis, carea
platformei pe care dispozitivul este montat.
cadrul
giroscopului
cardan
moment
unghiular
disc rotor
ax de rotaie
Fig. 14.12: Principiul constructiv al unui giroscop mecanic cu trei axe (stnga). Unitatea inert, ial
giroscopic a rachetei balistice intercontinentale LGM-118 Peacekeeper (dreapta).
n afara giroscoapelor mecanice, exist o serie de alte tipuri, precum cele microelectromecanice (MEMS), cu fibr optic sau cu laser, sau giroscoapele cuantice de mare
sensibilitate.
14.3.2
14.3. GIROSCOAPE
bobin de
fibr optic
axa de
sensibilitate
divizor
de fascicul
surs
de
lumin
detector
optic
optic pentru a determina o rotat, ie mecanic. Senzorul este compus din 5 km de fibr optic bobinat circular (figura 14.13). Dou fascicule de lumin circul prin fibra
optic din cele dou direct, ii opuse. Datorit efectului Sagnac, fasciculul care circul
n sens opus sensului rotat, iei va parcurge o distant, mai mic dect cellalt fascicul. Diferent, a de faz rezultat influent, eaz interferent, a celor dou fascicule atunci
cnd acestea sunt combinate. Intensitatea fasciculului combinat depinde, n final, de
frecvent, a unghiular a dispozitivului.
14.3.3
a coriolis = 2
v.
(14.8)
Pentru a utiliza efectului Coriolis n scopul detectrii rotat, iei unghiulare, o structur rigid este fort, at s vibreze la frecvent, a proprie de rezonant, . Acest lucru se
obt, ine prin aplicarea unei tensiuni alternative pe electrozii primari. Vibrat, ia determin aparit, ia unei viteze liniare a structurii rigide. Atunci cnd aceast structur este
rotit sub un anumit unghi, fort, a Coriolis determin aparit, ia unei vibrat, ii secundare,
a crei amplitudine este proport, ional cu viteza unghiular de rotat, ie. Structura vibrant poate lua forma unei prisme, cilindru sau a unei furci.
n cazul n care un element sensibil este fcut s vibreze ntr-o anumit direct, ie, de
140
exemplu de-a lungul axei x, rotirea senzorul n jurul axei z va avea ca efect aparit, ia
unei vibrat, ii pe axa y avnd aceias, i frecvent, ca cea init, ial. Amplitudinea acestei noi
vibrat, ii va fi proport, ional cu viteza de rotat, ie imprimat.
Giroscopul cu prism vibrant.
141
Capitolul 15
Manipulatoare robotice
Marea majoritate a roboilor mobili i staionari, att autonom ct i comandai,
este dotat cu manipulatoare. De exemplu, roboii staionari din domeniul industriei
de autovehicule dispun de brae manipulatoare destinate vopsirii sau sudurii diferitelor
pri componente. n industria farmaceutic exist roboi care au ca scop efectuarea
de mpachetri sau dozri realizate tot prin intermediul unor manipulatoare. Roboii
dotai cu brae manipulatoare pot opera, de asemenea, n medii periculoase ca, de
exemplu, cei care deservesc centrale nucleare sau roboii militari.
15.1
n caracterizarea manipulatoarelor din punct de vedere mecanic, problemele ce intervin sunt definirea coordonatelor pentru localizarea obiectelor n spaiul tridimensional
i cinematica. Obiectele ce intr n compunerea unui manipulator sunt articulaiile,
braele i uneltele. Acestea sunt caracterizate prin dou atribute: poziie i orientare.
Pentru a descrie aceste dou noiuni este nevoie de un sistem de coordonate rigid
ataat ntregului sistem.
Geometria n spaiu tradiional, pentru realizarea translaiilor se utilizeaz operaiile de sumare cu un vector de dimensiune 3 1, iar pentru rotaie se folosete
multiplicarea cu o matrice de dimensiune 3 3. Acest lucru, ns, pentru o multitudine
de astfel de translaii i rotaii, implementarea nu poate fi fcut printr-o singur operaie. Soluia problemei rezult din utilizarea coordonatelor omogene.
Coordonatele omogene extind translaia i rotaia prin intermediul unei a patra coordonate denumite factor de scalare. Operaia de transformare conine simultan un
factor de rotaie i unul de translaie i este definit prin multiplicarea matricelor
transformrilor individuale.
Matricea de translaie:
1
0
Trans(vx , vy , vz ) =
0
0
142
0
1
0
0
0 vx
0 vy
1 vz
0 1
(15.1)
Matrice de rotaie:
0
0
0
1
(15.2)
0 sin 0
1
0
0
0 cos 0
0
0
1
(15.3)
0
0
0
1
(15.4)
1
0
0
0 cos sin
Rot(x, ) =
0 sin cos
0
0
0
cos
0
Rot(y, ) =
sin
0
cos sin
sin cos
Rot(z, ) =
0
0
0
0
15.2
0
0
1
0
Structur
Manipulatoarele sunt compuse din legturi rigide (links) conectate prin intermediul
unor articulaii sau cuple cinematice (joints) avnd ca rezultat efectuarea de micri
relative. Cuplele cinematice au, de obicei, n compunere senzori de poziie care permit
determinarea precis a poziiei lor n raport cu celelalte legturi vecine. Cuplele cinematice pot fi de rotaie (R) sau de translaie (P) (figura 15.1).
Manipulatoarele pot fi clasificate n diferite grupuri, n funcie de geometria acestora, de form sau de structura cinematic. n funcie de structura cinematic, manipulatoarele se clasific n: articulate (RRR), sferice (RRP), SCARA (RRP), cilindrice
(RPP) i carteziene (PPP). n funcie de geometrie, manipulatoarele pot descrie un
domeniu de operare de diferite forme (figura 15.2).
143
15.3. CINEMATICA
Cartezian (PPP)
Cilindric (RPP)
Sferic (RRP)
SCARA (RRP)
Articulat (RRR)
Fig. 15.2: Clasificarea manipulatoarelor dup structura cinematic i domeniul de operare asociat.
Numrul gradelor de libertate (DoF - Degree of Freedom) definete numrul variabilelor independente care trebuie specificate pentru a localiza toate componentele
mecanismului. Cel mai des ntlnit tip de manipulator const dintr-o platform (denumit baz), trei brae (membre) i un efector final (figura 15.3). Acest manipulator de
tip articulat permite cinci grade de libertate, definite prin unghiurile cuplelor 1..5 .
Elbow 4
Wrist
5
2
Tool
1 Base
15.3
Cinematica
144
15.3.1
Cinematica direct
15.3. CINEMATICA
r
a
z1
y1
O1
d
q
x0
x1
z0
O0
y0
Fig. 15.4: Sistemul de coordonate pentru convenia Denavit-Hartenberg.
Trans(rn , 0, 0)
Rot(xn1 , n1 )
Trans(0, 0, dn1 )
Rot(zn , n )
1 0 0 rn
0 1 0 0
=
0 0 1 0
0 0 0 1
1
0
0
0
0 cos n1 sin n1 0
=
0 sin n1 cos n1 0
0
0
0
1
1 0 0 0
0 1 0 0
=
0 0 1 dn1
0 0 0 1
cos n sin n 0 0
sin n cos n 0 0
=
0
0
1 0
0
0
0 1
(15.5)
(15.6)
(15.7)
(15.8)
Fiecare din cele patru transfomri pot fi reunite sub forma unei matrice unice n1 Tn al
crei coninut este prezentat n ecuaia 15.9. Aceast matrice unic este obinut prin
efectuarea produsului celor patru matrice individuale ale transformrilor (15.5-15.8).
n1
=
0
sin n1
cos n1
dn
0
0
0
1
(15.9)
TN =0 T1 1 T2 . . . N1 TN
(15.10)
n cazul cuplelor cinematice care se rotesc n acelai plan, axele zk sunt paralele.
Prin urmare, unghiurile k asociate sunt nule. De asemenea, distanele dk pot fi alese
convenabil ca fiind nule. Pentru uurina scrierii, parametrii D-H ai fiecrei cuple cinematice sunt scrii ntr-un tabel specific.
Procedura de determinare a soluiei problemei cinematicii directe poate fi descris
pe scurt prin parcurgerea urmtorilor pai:
1. Stabilirea i numerotarea tuturor axelor de rotaie proprii ale cuplelor cinematice
z0 . . . zN1 ;
2. Determinarea bazei i axelor de coordonate asociate x0 i y0 pe baza regulii minii
drepte;
3. Localizarea originii sistemelor de coordonate n = 1 . . . N 1 n punctul de intersecie dintre normala produsului vectorial zn zn1 i axa zn . Dac axele z sunt
paralele, se aleg originile cuplelor cinematice;
4. Stabilirea axelor xn pe direcia normalei produsului vectorial zn zn1 i trecnd
prin origini;
5. Determinarea axelor yn conform regulii minii drepte;
6. Determinarea efectorului final;
7. Construirea tabelului coninnd cei patru parametrii D-H.
Exemplul 21.1. (Manipulator planar cu 3 DoF ) Se d un manipulator format din
trei brae rigide cu lungimile Ln , n = 1 . . . 3, o platform fix care dispune de o cupl
cinematic rotativ pentru fixarea primului bra i un instrument dispus n captul celui
de-al treilea bra. De asemenea, toate cele trei brae sunt conectate prin intermediul
unor cuple cinematice rotative.
q2
L2
q3
L3
L1
q1
Matricea D-H (Denavit-Hartenberg) asociat parametrilor manipulatorului este prezentat n figura 15.6. Deoarece toate cele trei cuple cinematice au axele zn paralele,
147
15.3. CINEMATICA
y2
y3
q2
x2
z2
y0
x0
z0
x3
q1
x1
q3
z3
y1
z1
Fig. 15.6: Sistemele de coordonate ale cuplelor cinematice pentru manipulatorul din figura 15.5.
n
1
2
3
n1
0
0
0
rn
L1
L2
L3
dn
0
0
0
n
1
2
3
T1 =
0
0
1
0
0
0
0
1
T2
T3
0 L2 cos 2
0 L2 sin 2
1
0
0
1
cos 2 sin 2
sin 2 cos 2
=
0
0
0
0
cos 3 sin 3
sin 3 cos 3
=
0
0
0
0
(15.11)
(15.12)
0 L3 cos 3
0 L3 sin 3
1
0
0
1
Determinarea coordonatelor vrfului braului rigid de lungime L3 n raport cu coordonatele bazei se face prin multiplicarea celor trei matrice definite conform relaiei 15.9
i citirea ultimei coloane. Pentru reducerea spaiului, s-au utilizat notaiile ci = cos i ,
si = sin i , cij = cos(i + j ), cijk = cos(i + j + k ) .a.m.d..
148
q 3 = -90
L3
L2
L1
q 1 = 0
q 2 = 90
Fig. 15.7: Valori particulare ale unghiurilor cuplelor cinematice pentru manipulatorul din figura 15.5.
T 1 T2 2 T3
1
c123 s123
s123 c123
=
0
0
0
0
T3 =
0 L1 c1 + L2 c12 + L3 c123
0 L1 s1 + L2 s12 + L3 s123
1
0
0
1
1 0 0 L1 + L3
0 1 0
L2
0
T3 =
0 0 1
0
0 0 0
1
Alt rezultat al poziiei punctului P se obine, de exemplu, pentru valorile
1 = 30 ,
q 2 = -30
q 3 = -60
L2
L1
L3
q 1 = 30
Fig. 15.8: Valori particulare ale unghiurilor cuplelor cinematice pentru manipulatorul din figura 15.5.
149
15.3. CINEMATICA
3/2
0.5
0
0
0.5
3/2
0
T3 =
0
0
0
0
1
0
3/2 L1 + L2 + 0.5 L3
0.5 L1 3/2 L3
0
1
q3
L3
q4
L4
q5
L5
L2
q2
q1
L1
n
1
2
3
4
5
n1
-90
90
0
0
90
rn
0
L1
L2
L3
L4
dn
0
0
0
0
0
n
1
2
3
4
5
150
y3
y4
q3
q4
x5
q5
z5
x3
z3
q2
x2
x4
z4
y5
y2
z2
y0
z1
x0
y1
x1
z0
q1
Fig. 15.10: Sistemele de coordonate ale cuplelor cinematice pentru manipulatorul din figura 15.9.
T1 =
0
1
0
0
0
0
0
1
T2
T3
T4
T5
0 sin 2 L2 cos 2
0 cos 2 L2 sin 2
1
0
0
0
0
1
0 L3 cos 3
0 L3 sin 3
1
0
0
1
0 L4 cos 4
0 L4 sin 4
1
0
0
1
cos 2
sin 2
=
0
0
cos 3 sin 3
sin 3 cos 3
=
0
0
0
0
cos 4 sin 4
sin 4 cos 4
=
0
0
0
0
cos 5
sin 5
=
0
0
(15.13)
(15.14)
(15.15)
(15.16)
0 sin 5 L5 cos 5
0 cos 5 L5 sin 5
1
0
0
0
0
1
151
15.3. CINEMATICA
T5 =
s234
1
c234
L4 s234 + L3 s23 + L2 s2
0
0
0
1
15.3.2
Cinematica invers
Problema cinematicii inverse este mult mai dificil dect cea a cinematicii directe
i nu de multe ori, structuri cinematice au fost reproiectate pentru a permite obinerea
unor soluii mai simple ale cinematicii inverse.
Problema cinematicii inverse este mult mai util deoarece permite cunoaterea modului de control al cuplelor cinematice n scopul poziionrii efectorului final la o anumit coordonat. Din nefericire, nu exist metode unice care s permit determinarea
soluiei cinematicii inverse. De asemenea, soluiile obinute pot fi adesea multiple.
152