0% au considerat acest document util (0 voturi)
190 vizualizări152 pagini

Programarea Mcu

basic PIC nikroC

Încărcat de

Alex Badea
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
190 vizualizări152 pagini

Programarea Mcu

basic PIC nikroC

Încărcat de

Alex Badea
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 152

Cuprins

1 Programarea microcontrolerelor PICmicroTM prin tehnica ICSPr

2 Conectarea la porturile de I/O. Microcontrolerul PIC12F675

3 Oscilatoare interne i externe. Microcontrolerul PIC16F88


4 Timere
4.1 Timer0 . . . . . .
4.2 Timer1 . . . . . .
4.3 Timer2 . . . . . .
4.4 Watchdog Timer

16

.
.
.
.

24
24
28
31
33

.
.
.
.
.
.

40
40
43
44
46
49
51

6 Comanda motoarelor de curent continuu


6.1 Motoare servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Motoare pas-cu-pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Motoare de curent continuu . . . . . . . . . . . . . . . . . . . . . . . . . . .

54
54
59
68

7 Comparatorul analogic. Microcontrolerele PIC12F675 i PIC16F88


7.1 Comparatorul analogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Referina de tensiune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70
70
77

8 Convertorul analog-digital. Microcontrolerul PIC16F887

85

9 Memoria EEPROM

92

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

5 Module CCP (Capture/Compare/PWM). Microcontrolerul PIC16F684


5.1 CCP n modul captur . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 CCP n modul comparare . . . . . . . . . . . . . . . . . . . . . . . . .
5.3 CCP n modul PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Modul PWM cu o singur ieire . . . . . . . . . . . . . . . .
5.3.2 Modul PWM n semipunte . . . . . . . . . . . . . . . . . . .
5.3.3 Modul PWM n punte . . . . . . . . . . . . . . . . . . . . . .

10 Comunicaiile seriale sincrone


10.1 Comunicaia SPI . . . . . . .
10.2 Comunicaia I2 C . . . . . . .
10.3 Comunicaia PS/2 . . . . . .
10.4 Modulul SSP n modul SPI

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
1

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.

.
.
.
.

99
99
102
103
106

CUPRINS

11 Comunicaiile seriale asincrone


112
11.1 Comunicaia 1-Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
12 Introducere n robotic
12.1 Etimologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.2 Istoric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.3 Clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Fig. 1.1: Schema uzual a interfeei de programare ICSPr .

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.

CAPITOLUL 1. PROGRAMAREA MICROCONTROLERELOR PICMICROTM PRIN TEHNICA ICSPr

Molex KK

Molex SL/C-Grid

RJ-11

Fig. 1.2: Conectori uzuali ale programatoarelor ICSPr .

n momentul programrii unui microcontroler, pinii PGC i PGD trebuie izolai de


restul circuitului cu ajutorul a dou rezistene de 10k. n caz contrar, programarea
poate fi perturbat de circuitele adiacente (figura 1.1).
Unul din cele mai ntlnite programatoare de microcontrolere din famila PICmicroTM
este modelul PICkitTM 2 produs de ctre firma Microchip (figura 1.3). Acest model
este uor de utilizat, fiind conectat la calculator prin intermediul portului USB, iar la
circuitul imprimat cu ajutorul unui conector cu 5 sau 6 pini de tip Molex KK c de 2.54
mm (figura 1.2). Dei acest conector este cel mai frecvent, se mai pot ntlni i alte
tipuri de conectori, precum RJ-11 telefonic sau Molex SL de 2.54 mm.
TM

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)

Fig. 1.3: Programatorul ICSPr PICkitTM 2 produs de Microchip.


5

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

Fig. 1.4: Fereastra aplicaiei programatorului PICkit2.

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

CAPITOLUL 1. PROGRAMAREA MICROCONTROLERELOR PICMICROTM PRIN TEHNICA ICSPr

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

Microcontrolere cu 8, 14 sau 20 pini

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

Microcontrolere cu 28 sau 40 pini

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

Conectarea la porturile de I/O.


Microcontrolerul PIC12F675
Microcontrolerul PIC12F675 face parte din gama de baz PIC12F a familiei de microcontrolere pe 8 bii PICmicro, fiind destinat aplicaiilor care necesit miniaturizare
i operaii cu un numr limitat de module interne (electrocasnice, telecomenzi, sisteme
de securitate etc.).
Microcontrolerul PIC12F675 au un numr de 5 pini de intrare/ieire (GP0-GP2, GP4GP5) i un singur pin cu funcie doar de intrare (GP3). Pinul GP2 poate opera ca pin
de intrare cu generare de ntreruperi la modificarea strii (INT). Mai are n compunere
un convertor analog-numeric pe 10 bii cu referin intern de tensiune la care pot fi
conectai 4 dintre pinii de intrare (AN0-AN3) i un comparator analogic (CIN+, CIN-).
Intrrile digitale (cu excepia GP3) conin rezistene de tip weak pull-up cu rolul de a
prestabili valoarea de intrare n lipsa unui semnal la intrare. De asemenea, conine un
timer Watchdog, un timer/counter pe 8 bii (T0CKI/COUT), un timer pe 16 bii (T1CKI,
T1G) precum i un oscilator intern de precizie de 4 MHz (CLKOUT). Microcontrolerul
este prevzut i cu posibilitatea operrii cu un semnal de ceas extern (CLKIN) sau prin
conectarea unui cuar (OSC1, OSC2). Programarea se efectueaz prin interfa ICSP
aferent.
PIC12F629
Ceas

Frecvena maxim de operare

Memorie

Memorie de program Flash

4 MHz intern, 20 MHz extern


1024 words

Memorie de date (bytes)


Periferice

16 SRAM, 128 EEPROM

Module timer

TMR0 (8-bit), TMR1 (16-bit)

Revenire din modul Sleep la modificarea unui pin


Intrri analogice
Caracteristici

PIC12F675

Da

4 (10-bit ADC)

Pini de intrare/ieire

Pini de intrare

Rezistene de pull-up interne

Da

Comparator analogic

Interfa ICSP

Da

Numr de instruciuni

33

Capsule

8-pin PDIP, SOIC, DFN-S, DFN

Fig. 2.1: Caracteristici comparative ale microcontrolerelor 12F629/675.

CAPITOLUL 2. CONECTAREA LA PORTURILE DE I/O. MICROCONTROLERUL PIC12F675

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

Fig. 2.2: Configuraia pinilor pentru microcontrolerul PIC12F675.

Schema electric de programare ICSP a microcontrolerului PIC12F675 este cea


specific tuturor modelelor de microcontrolere cu capsul DIP cu 8 pini (excepie face
seria PIC10F). Alimentarea circuitului se face de la o surs stabilizat de tensiune de
5 V realizat, cel mai frecvent, cu un stabilizator de tensiune serie de tip 7805 sau
echivalent.
R2

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

Fig. 2.3: Schema de programare ICSP a microcontrolerului PIC12F675 conectat la un LED.

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

Lungime de und (nm)


Intensitate (mcd)
Unghi de deschidere

Caracteristici
electrice

Tensiune direct (VD)


Curent direct (ID)

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

Fig. 2.4: Caracteristicile optice i electrice ale LEDurilor.

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

Fig. 2.5: Regitrii de control a porturilor de I/O ale microcontrollerului PIC12F675.

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;
}

// Pinul GP2 setat ca pin de iesire


// Pinul GP2 are valoarea 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

CAPITOLUL 2. CONECTAREA LA PORTURILE DE I/O. MICROCONTROLERUL PIC12F675

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

Fig. 2.6: Schema electric a microcontrolerului PIC12F675 cu un LED i un buton.

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

GP2 ca pin de iesire


infinita
GP2 ia valoarea 1
de 4 ms
GP2 ia valoarea 0
de 16 ms

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

GP2 ca pin de iesire


GP2 ca pin de intrare
infinita
GP2 ia valoarea lui GP5

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

GP2 ca pin de iesire


GP2 ca pin de intrare
GP2 in stare initiala 1
infinita

CAPITOLUL 2. CONECTAREA LA PORTURILE DE I/O. MICROCONTROLERUL PIC12F675

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.

Fig. 2.9: Front de impuls perfect (stnga) i cu bouncing (dreapta).

Tehnicile de debouncing software au ca principiu sondarea n mod repetat pe un


interval mic de timp a valorii pinului. Astfel, n cazul n care este vorba de o apsare
real a butonului, marea majoritate a valorilor citite vor avea valoarea 0 (dac butonul
este conectat direct la mas). De asemenea, datorit intervalului de timp scurs ntre
momentul apsrii butonului i momentul terminrii citirii repetate a valori de intrare,
valoarea se stabilizeaz prin dispariia natural a efectului de bouncing.
Un exemplu concret de debouncing software este cel al utilizrii unui contor care
este incrementat n bucl de fiecare dat cnd valoarea de la intrare este cea corespunztoare apsrii butonului. Testarea i incrementarea se face ntr-un ciclu continuu
la interval de 1 ms din care se iese doar atunci cnd contorul a ajuns la o valoare
suficient de mare (de ex., 10) pentru a considera fenomenul nedorit ca fiind stabilizat.
while (cnt<10) {
delay_ms(1);
if (GPIO.B5==0)
cnt++;
else
cnt=0;
}

//
//
//
//
//
//

Cat timp contorul este sub 10


Intarziere 1 ms
Daca butonul este apasat
se incrementeaza contorul
In caz contrar
Se reseteaza contorul

13

VCC

apsare

eliberare
5V

R2

VK

D1

0V
5V

R1
VK

VOUT

VIN

VIN

0V

10k
C1

K1

5V

VOUT

100n

0V

Fig. 2.10: Circuit analogic pentru debouncing.

Tehnicile de debouncing hardware prespun introducerea unor circuite analogice


compuse dintr-o rezisten i un condensator care are rolul de a mpiedica schimbarea
rapid a valorii tensiunii la pinul de intrare (figura 2.10). Valoarea celor dou componente discrete determin viteza de rspuns a circuitului la apsarea butonului. Cu ct
cele dou valori sunt mai mari, cu att numrul erorilor scade, dar crete timpul de
rspuns al circuitului la apsarea butonului. De obicei, valorile se aleg prin ncercri
succesive pornind de la nite valori iniiale (de ex., R1 =10k i C1 =100nF). Dioda D1
are rolul de a elimina rezistena de pull-up R2 din calculul timpului de descrcare i
de a micora timpul de ncrcare a condensatorului atunci cnd butonul nu este apsat.
Circuitul analogic anterior funcioneaz bine doar pentru eliminarea erorilor ce intervin n momentul apsrii butonului, dar nu exclude erorile rezultate din eliberarea
acestuia. Aceste ultimele erori se pot elimina prin introducerea unui trigger Schmitt.
Variantele digitale ale circuitelor de debouncing hardware reprezint transpuneri
ale algoritmului software. De asemenea, unii productori de circuite integrate ofer
circuite specializate dedicate (Maxim MAX6816, MAX6817, MAX6818 sau On Semiconductor MC14490).
n cazul programelor complexe, detectarea apsrii unui buton nu se mai poate face
verificnd prin ateptare deoarece se pierde timp important necesar efecturii altor
sarcini. Prin urmare, se prefer utilizarea pinilor de intrare care permit lucrul cu ntreruperi.

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

Fig. 2.11: Registrul de activare a ntreruperilor portului I/O al microcontrollerului PIC12F675.

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

CAPITOLUL 2. CONECTAREA LA PORTURILE DE I/O. MICROCONTROLERUL PIC12F675

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

Oscilatoare interne i externe.


Microcontrolerul PIC16F88
Microcontrolerele, n funcie de model i, implicit, de configuraia intern, pot opera
cu semnal de ceas provenit de la oscilatoare interne (integrate n cip) sau din surse
externe (semnal de ceas extern, cristal cu cuar)/rezonator ceramic sau oscilator RC.
Oscilatoarele sunt destinate generrii semnalului de ceas utilizat de ctre microcontroler pentru execuia instruciunilor (patru perioade per instruciune) i pentru
funcionarea perifericelor.
Sunt posibile pn la opt moduri de lucru ale oscilatorului, configurabile cu ajutorul
biilor FOSC din registrul CONFIG al microcontrolerului (nu este accesibil direct). Exist dou categorii de microcontrolere din punct de vedere al alegerii provenienei
semnalului de ceas. Astfel, registrul CONFIG poate conine trei bii (FOSC2:FOSC0)
n cazul existenei unui oscilator intern sau doar doi bii (FOSC1:FOSC0) pentru microcontrolere care opereaz doar cu surse externe de ceas (fr oscilator intern).
LP - cristal cu cuar de joas frecven / mic putere;
XT - cristal cu cuar sau rezonator ceramic;
HS - cuar/rezonator de mare vitez;
RC - oscilator RC extern (dou moduri);
EC - semnal de ceas provenit din exterior;
INTOSC - oscilator RC intern (dou moduri).

Diferena dintre modurile LP, XT i HS const n valoarea amplificrii inversoarelor


interne ale circuitului oscilant care permite reglarea anumitor valori ale frecvenei de
oscilaie. Valoarea ctigului este direct proprional cu valoarea curentului dinamic.
n cazul lucrului cu oscilator extern, schema electric de conectare este cea corespunztoare unui oscilator Pierce. Majoritatea componentelor oscilatorului sunt integrate n microcontroler, astfel nct utilizatorul nu are de conectat dect cristalul cu
16

CAPITOLUL 3. OSCILATOARE INTERNE I EXTERNE. MICROCONTROLERUL PIC16F88

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

Fig. 3.3: Schema electric de operare a microcontrolerelor PICmicro cu oscilator RC extern.

Semnalul de ceas poate fi furnizat de ctre un generator extern de ceas, fie de la un


alt circuit generator de semnal de ceas, fie de la un oscilator Pierce cuplat la intrrile
microcontrolerului. Avantajul cuplrii unor oscilatoare externe fr a mai implica componentele interne ale microcontrolerului este oferirea posibilitii utilizrii semnalului
de ceas pentru sincronizarea mai multor circuite integrate. n practic se pot ntlni
dou tipuri de circuite oscilante de tip Pierce: paralel i serie.
Circuitul Pierce paralel (figura 3.4) este proiectat pentru a utiliza fundamentala
cristalului de cuar. Inversorul 74AS04 realizeaz inversarea de faz cu 180 necesar
oscilatoarelor de tip paralel. Rezistena de 4.7 k ofer reacia negativ pentru asigurarea stabilitii, n timp ce poteniometrul de 10 k deplaseaz circuitul 74AS04 n
regiunea liniar.
+5V
Ctre alte disp.

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

CAPITOLUL 3. OSCILATOARE INTERNE I EXTERNE. MICROCONTROLERUL PIC16F88


330k

330k

74AS04

74AS04

Ctre alte disp.


74AS04

PIC16Fxxx
CLKIN

0.1uF
XTAL

Fig. 3.5: Scheme electrice de operare cu oscilator Pierce extern de tip serie.

Microcontrolerul poate funciona cu semnalul de ceas furnizat de ctre oscilatoare


externe i n modul LP, XT sau HS (n afara modului specific EC). n aceast situaie
pinul OSC2 se poate cupla la mas prin intermediul unei rezistene pentru reducerea
zgomotului, ns curentul consumat de microcontroler crete.
O serie de microcontrolere sunt prevzute cu oscilator RC intern, situaie n care nu
mai sunt necesare componente externe. Pentru a opera ct mai precis, se recomand
decuplarea cu condensatoare a traseelor de alimentare i de mas ct mai aproape
posibil de microcontroler.
Oscilatorul intern poate fi calibrat n jurul unei valori nominale pentru a acorda fin
frecvena de oscilaie. Registrul care are rolul de acord fin al frecvenei este OSCTUNE
(pentru microcontrolerul PIC16F88) definit pe 6 bii (TUN5:TUN0). Implicit, valoarea
registrului este 000000 (frecven central), acesta putnd fii ajustat ntre valoarea
maxim (011111) i minim (100000).
U (0)

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

Fig. 3.6: Registrul de calibrare a frecvenei oscilatorului intern (PIC16F88).

n cazul operrii cu oscilatorul intern, pinul OSC2/CLKOUT poate fi utilizat ca pin


de uz general de tip I/O sau poate furniza la ieire semnal de ceas cu frecvena FOSC /4.
Pinul OSC1/CLKIN funcioneaz ca pin de tip I/O.

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

Fig. 3.7: Registrul de control al oscilatorului (PIC16F88).

Modul de operare al oscilatorului microcontrolerul PIC16F88 poate fi controlat prin


intermediul registrului OSCCON. Biii SCS1:SCS0 permit selectarea sursei de ceas,
19

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

LP, XT, HS, RC, EC

OSC1

010
001
000
WDT, FSCM

Fig. 3.8: Diagrama semnalului de ceas (PIC16F88).

iar stabilirea valoarea frecvenei oscilatorului RC intern se face cu ajutorul biilor


IRCF2:IRCF0 (figura 3.8). Biii IRCF pot fi modificai n orice moment al rulrii programului. Pe lng oscilatorul extern primar, exist posibilitatea utilizrii unui oscilator
secundar, activat prin intermediul bitului T1OSCEN din registrul de timer T1CON.

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

EXTRC & CLKO

00

111

EXTRC

00

110

INTRC & CLKO

00

000 ... 111

101

INTRC

00

000 ... 111

100

ECIO

00

011

HS

00

010

XT

00

001

LP

00

000

T1OSC

01

Fig. 3.9: Configuraii pentru modurile de lucru cu semnal de ceas (PIC16F88).

20

CAPITOLUL 3. OSCILATOARE INTERNE I EXTERNE. MICROCONTROLERUL PIC16F88

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

Fig. 3.10: Configuraia pinilor pentru microcontrolerul PIC16F88.

Testarea modurilor de lucru ale oscilatoarelor se face pornind de la o schem simpl


de conectare a unui LED la pinul RA0 setat ca ieire digital. La pinii OSC1 i OSC2
se conecteaz un cristal de cuar de 8 MHz cu dou condensatoare de 15 pF, conform
recomandrilor productorului din documentaie. LEDul se aprinde i se stinge succesiv la interval de 500 ms cu ajutorul unei bucle infinite. n cazul n care se opereaz
fr oscilator extern, se recomand deconectarea cristalului de cuar pentru a observa
funcionarea cu oscilator intern.
Circuitul de alimentare poate lipsi, caz n care alimentarea schemei se face prin
intermediul programatorului PICkit2 (opiunea VDD PICkit 2 On).
Deoarece biii FOSC2:FOSC0 de setare a tipului oscilatorului ai registrului CONFIG1 nu sunt accesibil utilizatorului, alegerea lucrului cu oscilator intern sau extern
se face din setrile iniiale ale proiectului. n cazul lucrului cu oscilatorul intern, valoarea frecvenei semnalului de ceas se alege prin intermediul biilor IRCF ai registrului
OSCCON. Pentru lucrul cu oscilator extern, setarea se omite.

PIC16F87
Ceas

Frecvena maxim de operare

Memorie

Memorie de program Flash


Memorie de date (bytes)

Periferice

Module timer

8 MHz intern, 20 MHz extern


7168 words
368 SRAM, 256 EEPROM
TMR0 (8-bit), TMR1 (16-bit), TMR2 (8-bit)

Revenire din modul Sleep la modificarea unui pin


Intrri analogice
Caracteristici

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

18-/20-pin PDIP, SOIC, SSOP, 28-pin QFN

Fig. 3.11: Caracteristici comparative ale microcontrolerelor PIC16F87/88.


21

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).

// Ex.3.1: Functionare cu oscilator intern (INTRC) de 8 MHz


void main() {
OSCCON.SCS1=0;
// Oscilator dat de FOSC2:0
OSCCON.SCS0=0;
// (SCS1-SCS0=00)
OSCCON.IRCF2=1;
// Ceas de 8 MHz
OSCCON.IRCF1=1;
// IRCF2:IRCF0=111
OSCCON.IRCF0=1;
// (doar in mod INTRC)
ANSEL=0;
// Porturi digitale
TRISA=0;
// Portul A in mod iesire
PORTA=0;
// Initializare port A
while(1) {
// Bucla infinita
PORTA.B0=!PORTA.B0;
// Inversare bit RA0
delay_ms(500);
// Pauza de 500 ms
}
}

Fig. 3.13: Semnalul de ceas generat de controler la ieirea OSC2 (stnga) i semnalul generat la ieirea
RA0 (dreapta) (PIC16F88).

n figura 3.14 este prezentat o variant de utilizare a unui generator extern de


22

CAPITOLUL 3. OSCILATOARE INTERNE I EXTERNE. MICROCONTROLERUL PIC16F88


VDD

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).

ceas, n cazul de fa fiind generatorul cu cristal de cuar stabilizat n temperatur


DS32kHz produs de Dallas Semiconductor. Frecvena de ceas la intrarea OSC1 este
de 32.768 kHz, fiind utilizat pentru generarea unui semnal cu frecvena determinat
prin inversarea n bulc infinit a valorii de iaire a portului B. Bucla infinit necesit
o instruciune de complementare a portului (1 ciclu) i o instruciune de salt (2 cicli).
Prin urmare, numrul total de cicli executat la o singur iteraie a buclei este de 3.
Frecvea semnalului de ieire este, prin urmare, FOSC /4/3/2=32.768/24=1.365(3) kHz.
// Ex. 3.2: Generare impulsuri folosind generator extern de ceas
void main() {
ANSEL=0;
TRISB=0;
PORTB=0;
while(1) PORTB=~PORTB;
}

//
//
//
//

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

Setare bit TMR0IF pe 1


la Overflow

PSA
Prescaler

31.25 kHz

Prescaler
pe 16 bii

Prescaler pe 8 bii

M
U
X

Timerul Watchdog (WDT)

8
MUX 8-la-1

PS2:PS0

PSA

Bit activare WDT

1
MUX

PSA

WDT
Time-out

Fig. 4.1: Schema bloc a funcionrii modulului Timer0 (PIC16F88).

De exemplu, pentru aprinderea unui LED cu frecvena de 1 Hz (practic, stingerea


i aprinderea lui succesiv cu frecvena de 2 Hz), se poate utiliza un semnal de ceas
de 31.25 kHz generat intern, prescalerul ales cu un factor de 1:16 (PS2:PS0=011), iar
registrul TMR0 are valoarea de prencrcare egal cu 12.

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

Fig. 4.2: Regitrii de control pentru Timer0 (PIC16F88).


25

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

// Ceas intern 31.25 kHz


// (IRCF2:IRCF0=000)

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;

// Intreruperi globale active


// Intreruperi periferice active
// Intrerupere Timer0 activa

// Utilizare ceas intern Fosc/4


// Prescaler legat la Timer0

CAPITOLUL 4. TIMERE

Dac perioada ntreruperilor obinute nu este suficient de mare, se poate utiliza o


variabil contor software care este incrementat/decrementat la fiecare ntrerupere.
pn la obinerea perioadei dorite.
Problema precedent poate fi rescris, setnd registrul TMR0 la valoarea maxim
255, prescalerul la 1:256 i utiliznd o variabil contor CNT iniializat cu valoarea 15.
4
TTimer0 =

PS (256 TMR0) CNT = 0.000128 256 15 = 0.49152s.

(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;

// Definire variabila contor

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;

// Ceas intern 31.25 kHz


// (IRCF2:IRCF0=000)
// (4T=0.000128)

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;

// Intreruperi globale active


// Intreruperi periferice active
// Intrerupere Timer0 activa

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

Fig. 4.3: Schema bloc a funcionrii modulului Timer1 (PIC16F88).

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

Fig. 4.4: Registrul de control pentru Timer1 (PIC16F88).

28

CAPITOLUL 4. TIMERE
TMR1H = 194

TMR1 = 49911

TMR1L = 247
0

Bit 15

Bit 8

Bit 7

1
Bit 0

Fig. 4.5: Determinarea valorilor registrului Timer1 (PIC16F88).

Obinerea aceleiai frecvene de ntrerupere de 2 Hz ca n cazul exemplelor cu


timerul 0 se face conform algoritmului urmtor. Considernd, de aceast dat, frecvena
semnalului de ceas de 1 MHz, semnalul utilizat de timer la intrarea sa va fi de 250
kHz. Dac prescalerul este setat la un factor 1:8, la ieirea acestuia va rezulta o
frecven de 31250 Hz. Pentru ca, din aceast frecven s se obin 2 Hz este necesar
un factor de divizare de 31250/2=15625. Prin urmare, numrtorul TMR1 va trebui s
numere 15625 impulsuri pn la generarea unui overflow. Deoarece registrul TMR1
este definit pe 16 bii, rezult o valoare maxim de numrare egal cu 216 =65536.
Valoarea de prencrcare a registrului TMR1 va fi, deci, 65536-15625=49911.
TInt
Timer1 =

PS (65536 TMR1) = 0.000004 8 15625 = 0.5s.

(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;
}

//
//
//
//

Inversare bit RA0


Preincarcare MSB TMR1
Preincarcare LSB TMR1
Resetare flag intrerupere

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;

// Ceas intern 1 MHz


// (IRCF2:IRCF0=100)
// (4T=0.000004)

TMR1H=194;
TMR1L=247;

// Preincarcare MSB TMR1


// Preincarcare LSB TMR1

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;

// Intreruperi globale active


// Intreruperi periferice active
// Dezactivare Timer0

PIE1.TMR1IE=1;

// Interuperere Timer1 activa

Utilizare ceas intern Fosc/4


Prescaler 1:8
(T1CKPS1:T1CKPS0=11)
Pornire Timer1
Dezactivare sincronizare externa

Atunci cnd se utilizeaz semnal de ceas extern (provenit de la portul T1OSI),


frecvena nu mai este divizat la 4, ci este utilizat ca atare, iar timerul funcioneaz
Int
n modul numrtor (perioada ntreruperilor devine TExt
Timer1 =TTimer1 /4). Selectarea semnalului de ceas extern se face setnd la 1 bitul TMR1CS.
Pentru obinerea unor ntreruperi cu frecvena de 2 Hz pornind de la un semnal de
ceas extern de 1 MHz, pstrnd valoarea prescalerului de 1:8, rezult c este nevoie
de un factor de divizare de 62500. Astfel, registrul TMR1 va fi ncrcat cu valoarea
65536-62500=3036 (TMR1L=220 i TMR1H=11).
// Ex.3.6: Aprindere LED 1 Hz cu ceas extern de 1 MHz si Timer1
void interrupt() {
PORTA.B0=!PORTA.B0;
TMR1H=11;
TMR1L=220;
PIR1.TMR1IF=0;
}
void main() {
ANSEL=0;
TRISA=0;
PORTA=0;
30

//
//
//
//

Inversare bit RA0


Preincarcare MSB TMR1
Preincarcare LSB TMR1
Resetare flag intrerupere

// Porturi digitale
// Portul A in mod iesire
// Initializare port A cu 0

CAPITOLUL 4. TIMERE

TMR1H=11;
TMR1L=220;

// Preincarcare MSB TMR1


// Preincarcare LSB TMR1

T1CON.TMR1CS=1;
T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1ON=1;
T1CON.B3=1;

//
//
//
//
//

INTCON.GIE=1;
INTCON.PEIE=1;
INTCON.TMR0IE=0;

// Intreruperi globale active


// Intreruperi periferice active
// Dezactivare Timer0

PIE1.TMR1IE=1;

// Interuperere Timer1 activa

Utilizare ceas extern


Prescaler 1:8
(T1CKPS1:T1CKPS0=11)
Pornire Timer1
Dezactivare sincronizare externa

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

Fig. 4.7: Registrul de control pentru Timer2 (PIC16F88).

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).

Calculul perioadei de generare a ntreruperilor de ctre timerul 2 se face pornind


de la formula 4.5.
4
TTimer2 =

PreS PR2 PostS.

(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

Fig. 4.8: Schema bloc a funcionrii modulului Timer2 (PIC16F88).

(1:16), este necesar un factor de divizare de 500000/4/16/16/2244. Considernd ciclul


suplimentar necesar pentru resetarea regitrilor, rezult c registrul PR2 va trebui
prencrcat cu valoarea 243.
TTimer2 =

4
16 244 16 = 0.499712s.
500000

// Ex.3.7: Aprindere LED 1 Hz cu oscilator intern de 500 kHz si Timer2


void interrupt() {
PORTA.B0=!PORTA.B0;
PIR1.TMR2IF=0;
}
void main() {
ANSEL=0;
TRISA=0;
PORTA=0;

32

// Inversare bit RA0


// Resetare flag intrerupere

// 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;

// Ceas intern 500 kHz


// (IRCF2:IRCF0=011)

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;

// Intreruperi globale active


// Intreruperi periferice active
// Dezactivare Timer0

PIE1.TMR2IE=1;

// Interuperere Timer2 activa

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

n afara timerelor uzuale Timer0, Timer 1 i Timer2, microcontrolerele dispun de un


timer de tip Watchdog. Acesta are rolul de a reseta microcontrolerul dup un anumit
timp considerat ca fiind rezultat dintr-un presupus blocaj funcional.
Principiul de funcionare al unui Watchdog const n divizarea unui semnal de ceas
cu un anumit factor care determin scurgerea unui interval de timp. La finalul intervalului de timp se genereaz un semnal denumit WDT Time-out care, la rndul su,
determin un RESET al dispozitivului. Semnalul de ceas al timerului Watchdog este
furnizat de un oscilator intern RC care funcioneaz independent de semnalul de ceas
al microcontrolerului, astfel nct timerul s funcioneze chiar i cnd semnalul de ceas
lipsete sau dispozitivul este n modul SLEEP.
Activarea sau dezactivarea hardware a modulului Watchdog se face prin intermediul
bitului WDTEN din registrul CONFIG (nu este accesibil direct). De asemenea, modulul
se poate activa sau dezactiva software cu ajutorul bitului SWDTEN al registrului de
33

4.4. WATCHDOG TIMER

Semnal de ceas TMR0

0
Prescaler PS
1

Prescaler WDT programabil pe 16 bii

PSA

WDTPS3:0

Semnal de ceas INTRC


de 31.25 kHz

PS2:0
la TMR0
1

PSA
WDTEN (din CONFIG)
SWDTEN (din WDTCON)
WDT Time-out

Fig. 4.9: Schema bloc a funcionrii modulului Watchdog (PIC16F88).

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

Fig. 4.10: Registrul de control al timerului Watchdog (PIC16F88).

Dac bitul PSA este setat la valoarea 1, n calculul intervalului de timp se ia n


consideraie i prescalerul PS al modulului Timer0, asociat n acest caz, modulului
Watchdog. Factorul de divizare al prescalerul PS este controlat cu ajutorul biilor
PS2:PS0 ai registrului OPTION_REG. Timpul de generare al resetului se determin
cu ajutorul formulei 4.8.
TWDT =

1
WDTPS PS.
31250

(4.6)

Valoarea prescalerului WDT se stabilete cu ajutorul biilor WDTPS3-WDTPS0 din


registrul WDTCON, dup regula:
WDTPS = 32 2WDTPS3-WDTPS0 .

(4.7)

De exemplu, dac prescalerul WDT are factorul de divizare de 1:128 i prescalerul


PS are factorul 1:1024, atunci microcontrolerul va genera un RESET la un timp scurs
de 4.19s.
TWDT =
34

1
131072
128 1024 =
= 4.194304s.
31250
31250

(4.8)

CAPITOLUL 4. TIMERE

// Ex. 3.8: Watchdog cu reset la 4.19 s


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)

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) {}
}

// Activare software WDT


// Prescaler WDTPS 1:1024
// (WDTPS3-WDTPS0=0101)

// Bucla infinita
// Blink LED 3x

// Bucla infinita inchisa

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

4.4. WATCHDOG TIMER

OPTION_REG.PSA=1;
OPTION_REG.PS2=1;
OPTION_REG.PS1=1;
OPTION_REG.PS0=1;

// 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;

// Activare software WDT


// Prescaler WDT 1024
// (WDTPS3-WDTPS0=0101)

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

// Stergere prescaler WDTPS

}
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

b) se determin valoarea raportului TTIMER0 /4TOSC :


TTIMER0
0.5 103
n=
=
= 1 500 = 2 250 = 4 125
4 TOSC
106
c) se alege valoarea prescalerului PS:
PS = 1 : 2
d) se determin valoarea registrului TMR0:
TMR0 = 256 n/PS = 256 250 = 6
n cod se va scrie valoarea real TMR0+2=8.

36

CAPITOLUL 4. TIMERE

2. S se determine parametrii de lucru ai modulului Timer0 pentru o frecven de


ceas a oscilatorului extern FOSC = 4 MHz i perioada TTIMER0 = 1.0 ms.
a) se determin valoarea semnalului de ceas TOSC :
TOSC =

1
= 250 109 s
4 106

b) se determin valoarea raportului TTIMER0 /TOSC :


n=

103
TTIMER0
=
= 4000 = 16 250 = 32 125
TOSC
250 109

c) se alege valoarea prescalerului PS:


PS = 1 : 16
d) se determin valoarea registrului TMR0:
TMR0 = 256 n/PS = 256 250 = 6
n cod se va scrie valoarea real TMR0+2=8.

3. S se determine parametrii de lucru ai modulului Timer1 pentru o frecven de


ceas a oscilatorului intern FOSC = 8 MHz i perioada TTIMER1 = 0.5 ms.
a) se determin valoarea semnalului de ceas 4TOSC :
4 TOSC =

4
= 500 109 s
6
8 10

b) se determin valoarea raportului TTIMER1 /4TOSC :


n=

TTIMER1
0.5 103
= 1 1000 = 2 500 = 4 250 = 8 125
=
4 TOSC
500 109

c) se alege valoarea prescalerului PS:


PS = 1 : 8
d) se determin valoarea registrului TMR1:
TMR1 = 65536 n/PS = 65536 125 = 65411
Valoarea registrului TMR1 pe 16 bii se rescrie sub forma celor doi regitrii pe 8
bii: TMR1L=131 i TMR1H=255.

4. S se determine parametrii de lucru ai modulului Timer1 pentru o frecven de


ceas a oscilatorului extern FOSC = 20 MHz i perioada TTIMER1 = 1.0 ms.
a) se determin valoarea semnalului de ceas TOSC :
TOSC =

1
= 50 109 s
20 106
37

4.4. WATCHDOG TIMER

b) se determin valoarea raportului TTIMER1 /TOSC :


n=

TTIMER1
103
=
= 1 20000 = 2 10000 = 4 5000 = 8 2500
TOSC
50 109

c) se alege valoarea prescalerului PS:


PS = 1 : 1
d) se determin valoarea registrului TMR1:
TMR1 = 65536 n/PS = 65536 20000 = 45536
Valoarea registrului TMR1 pe 16 bii se rescrie sub forma celor doi regitrii pe 8
bii: TMR1L=224 i TMR1H=177.

5. S se determine parametrii de lucru ai modulului Timer2 pentru o frecven de


ceas a oscilatorului intern FOSC = 2 MHz i perioada TTIMER2 = 100 s.
a) se determin valoarea semnalului de ceas 4TOSC :
4 TOSC =

4
= 2 106 s
2 106

b) se determin valoarea raportului TTIMER2 /4TOSC :


n=

100 106
TTIMER2
=
= 1 50 = 2 25
4 TOSC
2 106

c) se alege valoarea prescalerului PS:


PS = 1 : 1
d) se alege valoarea postscalerului PostS:
PostS = 1 : 2
e) se determin valoarea registrului PR2:
PR2 = n/PS/PostS = 25
n cod se va scrie valoarea real PR2-1=24.

6. S se determine parametrii de lucru ai modulului Timer2 pentru o frecven de


ceas a oscilatorului extern FOSC = 32.768 kHz i perioada TTIMER2 = 31.25 ms.
a) se determin valoarea semnalului de ceas 4TOSC :
4 TOSC =

4
= 81921 s
32768

b) se determin valoarea raportului TTIMER2 /4TOSC :


n=
38

TTIMER2
31.25 103
=
= 256
4 TOSC
81921

CAPITOLUL 4. TIMERE

c) se alege valoarea prescalerului PS:


PS = 1 : 4
d) se alege valoarea postscalerului PostS:
PostS = 1 : 1
e) se determin valoarea registrului PR2:
PR2 = n/PS/PostS = 64
n cod se va scrie valoarea real PR2-1=63.

7. S se determine parametrii de lucru ai modulului Watchdog pentru o perioad


de reset TWDT de aproximativ 2 s.
a) se determin valoarea semnalului de ceas TOSC :
TOSC =

1
= 312501 s
31250

b) se determin valoarea raportului TWDT /TOSC :


n=

TWDT
2
= 62500
=
TOSC
312501

c) se alege valoarea prescalerului PS:


PS = 1 : 1
d) se determin valoarea cea mai apropiat a prescalerului WDTPS:
WDTPS = 1 : 65536
Valoarea obinut a perioadei TWDT este:
1
TWDT =
FOSC

PS WDTPS =

1
1 65536 = 2.097152 s
31250

39

Capitolul 5

Module CCP (Capture/Compare/PWM).


Microcontrolerul PIC16F684
Modulele CCP (Capture/Compare/PWM) sunt compuse dintr-un registru pe 16 bii
care poate fuciona ntr-unul din urmtoarele moduri:
registru de captur pe 16 bii;
registru de comparaie pe 16 bii;
registru PWM master/slave pe 10 bii.
Microcontrolerele pot conine unul, dou sau mai multe module CPP. Ele sunt identice ca mod de operare, cu excepia efectului triggerului de eveniment special.
Modulul CCP1 este compus din doi regitrii pe 8 bii (CCPR1L i CCPR1H) i este
controlat prin registrul CCP1CON. Triggerul de eveniment special este generat la o
potrivire de comparaie i are ca efect resetarea timerului 1.
Modulul CCP2 este compus din doi regitrii pe 8 bii (CCPR2L i CCPR2H) i este
controlat prin registrul CCP2CON. Triggerul de eveiment special este generat la o
potrivire de comparaie i are ca efect resetarea timerului 1 i nceperea unei conversii
A/D (dac modului A/D este activat).

5.1

CCP n modul captur

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

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684

Setare bitul CCPxIF pe 1


(PIRx)
Prescaler
1, 4, 16
Pinul
CCPx

CCPRxH

CCPRxL

Activare
captur

and
Edge Detect

TMR1H

TMR1L

Qs
CCPxCON3:0

Fig. 5.1: Schema bloc a funcionrii modulului CCP n modul captur.

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

Fig. 5.2: Registrul de control al modulului Enhanced CCP1 (PIC16F684).

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

Fig. 5.3: Configuraia pinilor pentru microcontrolerul PIC16F684.


41

5.1. CCP N MODUL CAPTUR

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).

// Ex. 4.1: Generare intrerupere cu CCP1 in mod captura la 4 impulsuri


void interrupt () {
PORTA=~PORTA;
PIR1.CCP1IF=0;
}
void main() {
INTCON.GIE=1;
INTCON.PEIE=1;

// Subrutina de intreruperi
// Inversare port A
// Resetare flag intrerupere CCP1

// Activare intreruperi globale


// Activare intreruperi periferice

PIE1.CCP1IE=1;

// Activare intrerupere CCP1

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;

//
//
//
//

Eveniment la fiecare al 4-lea


front descrescator de impuls
de la pinul CCP1
(CCP1M3:CCP1M0=0110)

n cazul utilizrii ntreruperilor modulelor CCP trebuie activate att ntreruperile


globale (INTCON.GIE), ct i cele periferice (INTCON.PEIE).
42

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684

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

Fig. 5.5: Schema bloc a funcionrii modulului CCP n modul comparare.

5.2

CCP n modul comparare

n modul comparare, valoarea registrului pe 16 bii al modulul CCPx este comparat


continuu cu valoarea din registrul TMR1. Atunci cnd cele dou valori se potrivesc,
pinul CCPx (setat ca ieire digital) se poate modifica, astfel:
trece forat n starea 1 (CCPxM3:CCPxM0=1000);
trece forat n starea 0 (CCPxM3:CCPxM0=1001);
rmne neschimbat (CCPxM3:CCPxM0=1010).

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

5.3. CCP N MODUL PWM

// Ex. 4.2: Generare eveniment cu CCP1 mod comparare


void main() {
OSCCON.SCS=1;
OSCCON.OSTS=0;
OSCCON.IRCF2=0;
OSCCON.IRCF1=1;
OSCCON.IRCF0=1;

//
//
//
//

Oscilator intern
Oscilator intern
Ceas intern 500 kHz
(IRCF2:IRCF0=011)

T1CON.T1CKPS1=1;
T1CON.T1CKPS0=1;
T1CON.TMR1ON=1;

// Prescaler Timer 1 de 1:8


// (T1CKPS1:T1CKPS0=11)
// Timer1 pornit

CCPR1H=255;
CCPR1L=255;

// Valoare registru CCPR1


// (1:65536)

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;

// Setare pin CCP1 in 0 logic


// la eveniment
// (CCP1M3:CCP1M0=1001)

n exemplul 4.2 se prezint generarea unui impuls cu durata determinat de semnalul


de ceas FOSC /4, prescalerul timerului 1 i valoarea registrului CCPR1:
4

comp

TCCP1 =

5.3

T1CKPS (1 + CCPR1L)(1 + CCPR1H) =

FOSC

4
8 65536 = 4.194304s.
500000

CCP n modul PWM

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

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL 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.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

5.3. CCP N MODUL PWM


P1M1:P1M0

Regitii factor de umplere

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

Modul PWM cu o singur ieire

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)

Sfritul factorului de umplere apare n momentul n care exist identitate ntre


coninutul DCxB9:DCxB2 din CCPRxH mpreun cu cei doi bii DCxB1:DCxB0 i coninutul registrului TMR2.

46

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684


Factor de umplere=DCxB9:DCxB0

Perioada = PR2 + 1

TMR2 = PR2 + 1, TMR2 forat n 0h


TMR2 = Factor de umplere
TMR2 = PR2 + 1, TMR2 forat n 0h

Fig. 5.10: Parametrii semnalului PWM.

Rezoluia maxim n numr de bii pentru o frecvena dat a semnalului PWM este:
NMAX =

log[FOSC /(T2CKPS FPWM )]


bii
log 2

(5.3)

Rezoluia minim n timp depinde de valoarea prescalerului timerului 2 (TOSC pentru


PR2=1, 4TOSC pentru PR2=4 i 16TOSC pentru PR2=16).
Schema din figura 5.6 poate fi utilizat pentru verificarea generrii semnalului PWM
pe o singur ieire (CCP1/P1A).
Pentru o frecven de ceas de 125 kHz i prescalerul T2CKPS setat la factorul 1:16,
perioada de repetiie a impulsurilor PWM se determin, conform formulei 5.1, astfel:
TPWM =

4
16 (1 + PR2)
125000

Dac se dorete o frecven de 50 Hz (perioada de 20 ms), atunci registrul PR2 va


avea valoarea:
PR2 =

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

Valoarea celor 10 bii se distribuie pe cele dou pri, CCPR1L (biii 10 la 2) i


DC1B1:DC1B0 (biii 1 la 0). Prin urmare, CCPR1L=0b00000111 i DC1B1:DC1B0=11.
47

5.3. CCP N MODUL PWM

// Ex. 4.3: Generare PWM 1 canal 50 Hz si factor de umplere 20%


void main() {
ANSEL=0;
TRISC=0;

// 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;

// Prescaler Timer2 1:16


// (T2CKPS1:T2CKPS0=10)
// Pornire Timer2

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;

// Mod PWM cu o singura iesire


// (P1M1:P1M0=00)
// 2 LSB din factor de umplere
// Mod PWM cu iesire pe P1A
// si restul in 1 logic
// (CCP1M3:CCP1M0=1100)

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

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684


Semipunte standard (Push-Pull)
V+
Semnalele de ieire n mod semipunte
FET
Driver

Perioad

+
V
-

P1A

Perioad

Factor de umplere

P1A
PIC16F684

TD

Load
FET
Driver

TD
+
V
-

P1B

P1B

V-

Semipunte pentru comanda unei puni n H


V+

FET
Driver

FET
Driver

P1A

PIC16F684

FET
Driver

Load

FET
Driver

P1B

V-

Fig. 5.12: Exemple de aplicaii de tip semipunte (PIC16F684).

5.3.2

Modul PWM n semipunte

Modul de lucru n semipunte opereaz cu dou ieiri la care se genereaz semnalul


PWM (la pinul P1A) i complementul acestuia (la pinul P1B). Pentru a evita distrugerea componentelor semipunii, semnalul complementar va intra pe stare 1 logic
cu o ntrziere TD stabilit cu registrul PWM1CON<6:0> (PDC6:0), astfel:
TD = 4 TOSC PDC6:0.

(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

5.3. CCP N MODUL PWM

// Ex. 4.4: Generare PWM in semipunte 50 Hz, 20% si intarziere 1 ms


void main() {
ANSEL=0;
TRISC=0;

// 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;

// Prescaler Timer2 1:16


// (T2CKPS1:T2CKPS0=10)
// Pornire Timer2

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;

// Mod PWM in semipunte


// (P1M1:P1M0=10)
// 2 LSB din factor de umplere
// Mod PWM cu iesire pe P1A
// si restul in 1 logic
// (CCP1M3:CCP1M0=1100)

Fig. 5.13: Rezultatul observat pe osciloscop al generrii unui semnal PWM cu semipunte (exemplul 4.4).

50

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684


V+

FET
Driver

QC

QA

FET
Driver

P1A

Load

P1B
FET
Driver

PIC16F684

P1C

FET
Driver

QD

QB

VP1D

Fig. 5.14: Exemplu de aplicaie standard de tip punte (PIC16F684).

5.3.3

Modul PWM n punte

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

Fig. 5.15: Schimbarea direciei cu punte H (PIC16F684).

51

5.3. CCP N MODUL PWM

// Ex. 4.5: Generare PWM in punte 50 Hz, factor de umplere 20%


void main() {
ANSEL=0;
TRISC=0;

52

// Porturi digitale
// Portul C in mod iesire

OSCCON=0b00011001;

// Ceas intern 125 kHz

T2CON.T2CKPS1=1;
T2CON.T2CKPS0=0;
T2CON.TMR2ON=1;

// Prescaler Timer2 1:16


// (T2CKPS1:T2CKPS0=10)
// Pornire Timer2

PR2=38;
CCPR1L=0b00000111;

// Preincarcare PR2
// 8 MSB din factor de umplere

CCP1CON.P1M1=0;
CCP1CON.P1M0=1;
CCP1CON.DC1B1=1;
CCP1CON.DC1B0=1;

// Mod PWM in punte directa


// (P1M1:P1M0=01)
// 2 LSB din factor de umplere

CCP1CON.CCP1M3=1;
CCP1CON.CCP1M2=1;
CCP1CON.CCP1M1=0;
CCP1CON.CCP1M0=0;

// Mod PWM cu iesire pe P1A


// si restul in 1 logic
// (CCP1M3:CCP1M0=1100)

CAPITOLUL 5. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684

Fig. 5.16: Rezultate observate pe osciloscop al generrii unui semnal PWM cu punte (ex. 4.5).
53

Capitolul 6

Comanda motoarelor de curent continuu


6.1

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.

Fig. 6.1: Structura intern a unui motor servo (Hitec).

Motoarele servo se mpart n servouri analogice i digitale, fiind comandate n mod


indentic, prin intermediul semnalelor PPM. Motorul din interiorul unui motor servo
analogic primete semnal de la amplificatorul de eroare cu o frecven de 30 Hz, n
timp ce motoarele servourilor digitale primesc semnalul cu o frecven de 300 Hz. Cu
ct frecvena este mai mare, cu att cuplul este mare de la nceputul rotaiei (cuplul
este de cca. 3 ori mai mare dect n cazul analogic). Motoarele servo digitale pot fi
programate pentru definirea direciei i poziiilor rotaiei.
54

Reductor

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

Motor de
curent continuu

Ieire

Senzor
de poziie

Amplificator de eroare

Convertor PWM
n tensiune continu

Semnal PWM comand

Fig. 6.2: Schema bloc a unui motor servo.

Datorit circuitelor interne i a principiului de comand, motoarele servo au un


conector standardizat cu trei contacte codate n culori, n funcie de productor: mas
(negru), 5V (rou) i semnalul de comand PPM (figura 6.4).
Caracteristica unui motor servo este aceea c unghiul axului de rotaie depinde direct de valoarea factorului de umplere a semnalului de comand. Intervalul unghiular
n care se poate roti axul, precum i valorile corespunztoare ale factorului de umplere
al semnalului de comand depind de fiecare model i de productor. De exemplu, pentru motoarele servo produse de Hitec opereaz la o tensiune curpins ntre 4.8 i 6V,
iar semnalul de comand este de tip PPM cu perioada de repetiie de 20 ms i durata
impulsurilor ntre 0.9 ms i 2.1 ms (cu 1.5 ms pentru poziie central).
Deseori, semnalul de comand PPM este confundat cu un semnal PWM. n timp
ce un semnal PWM este caracterizat printr-un factor de umplere, semnalul PPM este
definit prin durata n timp a impulsurilor.
DNEUTRU
0
-45

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

6.1. MOTOARE SERVO

Semnal PPM
+5V
GND

Fig. 6.4: Codul culorilor conectorilor motoarelor servo n funcie de productor.

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).

Motor Back EMF

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

Fig. 6.5: Schema intern a unui motor servo (Futaba S3003).

56

33 uF

BAL6688
Servo Control

Reference
voltage
regulator

Linear Pulse
Generator

Pulse
Timing
Cap.

Direction

Pulse stretcher
(Servo Gain)

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

Roat mic
(Small Wheel Horn)

Crm cu bra n T
(T-Arm)

Roat mare
(Large Wheel Horn)

Crm n cruce mic


(Small X-Horn)

Crm de vas
(Sail Arm)

Crm n cruce
(X-Horn)

Crm n stea cu 6 coluri


(6-Star Horn)

Crm cu bra dublu


(Double Arm)

Fig. 6.6: Crme pentru comanda articulaiilor cu ajutorul motoarelor servo.

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

6.1. MOTOARE SERVO


+5V
ICSP

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

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

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

Fig. 6.9: Structura constructiv a unui motor pas-cu-pas hibrid.

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

6.2. MOTOARE PAS-CU-PAS

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

Fig. 6.10: Dispunerea polilor magnetici ntr-un motor pas-cu-pas.

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

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU


A1

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

Fig. 6.11: Tipuri constructive de motoare pas-cu-pas.

i denumirea. Motorul pas-cu-pas bipolar funcioneaz prin activarea miezului cu o


polaritate, urmat de inversarea acesteia pe parcursul micrii rotorului. Numrul de
pai ai unei revoluii complete depinde de numrul de magnei permaneni sau de dini
din rotor. Cu ct acest numr este mai mare, cu att numrul de pai este mai mare
i rezoluia este fin.
Motoarele pas-cu-pas bipolare sunt mai puternice i mai rapide dect motoarele
unipolare de aceiai dimensiune. Deoarece un motor bipolar are jumtate din numrul
de nfurri, poate utiliza o cantitate dubl de conductor pentru nfurri, genernd
astfel un cmp electromagnetic mai puternic. n schimb, configuraia semnalelor de comand este mai complex deoarece este necesar schimbarea polaritilor curenilor
din nfurri. Motoarele pas-cu-pas unipolare au semnale de comand mai simple,
necesitnd doar comutarea curentului de polarizare a nfurrilor. Prin urmare, motoarele pas-cu-pas bipolare necesit cte o punte H sau un circuit de inversare a
curentului pentru fiecare nfurare. Motoarele pas-cu-pas unipolare, n schimb, au
nevoie doar de cte un tranzistor de curent pentru fiecare nfurare, fiind cel mai uor
de utilizat.
Tipul unui motor pas-cu-pas se poate determina pornind de la numrul de conductori terminali (6.12). Un motor pas-cu-pas bipolar are patru fire, cte dou pentru
fiecare nfurare, n timp ce un motor pas-cu-pas unipolar poate avea cinci, ase sau
opt fire. n cazul motorului cu cinci fire, unul dintre acestea este comun, iar celelalte
patru sunt asociate fiecrei din cele patru nfurri. Dac motorul are ase fire (cazul
cel mai comun), o pereche de nfurri va avea un fir comun. Aceast configuraie
poate funciona i ca un motor pas-cu-pas bipolar dac productorul a prevzut din
construcie aceast posibilitate. Cazul cu opt fire este denumit motor pas-cu-pas universal. Acest lucru nseamn c motorul poate fi utilizat fie ca un motor unipolar cu
fiecare pereche de nfurare ca miez independent, fie ca un motor bipolar pentru care
se poat conecta perechi de nfurri n serie sau paralel.
Determinarea perechilor de nfurri se face fie dup codul de culori al productorului, fie direct, prin msurarea rezistenelor dintre fire cu ajutorul unui ohmmetru.
Atunci cnd este dificil determinarea fazelor unui motor pas-cu-pas, este necesar
utilizarea unui algoritm de identificare a acestora.
61

6.2. MOTOARE PAS-CU-PAS

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

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

Stabilire faza 1

Identificare faza 2

Identificare faza 3

Identificare faza 4

Fig. 6.13: Idenficarea fazelor unui motor pas-cu-pas cu cinci fire.

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

Fig. 6.14: Idenficarea polaritii nfurrilor unui motor pas-cu-pas universal.


63

6.2. MOTOARE PAS-CU-PAS

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.

Motoarele pas-cu-pas pot fi comandate prin intermediul unei secvene de impulsuri


cu un anumit tipar (6.16). Exist trei tipuri de secvene de comand: simpl (wave
Modul de comand simpl pentru motor pas-cu-pas unipolar
A

Modul de comand dubl pentru motor pas-cu-pas unipolar


A

Modul de comand mixt pentru motor pas-cu-pas unipolar


A

Fig. 6.15: Exemplificarea excitaiei nfurrilor pentru cele trei secvene de comand a unui motor
pas-cu-pas unipolar.
64

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU


A. Secven de comand simpl
pentru configuraie unipolar

D. Secven de comand simpl


pentru configuraie bipolar

A1

A
B
C
D

B1

B2

A1
A2
B1
B2

B. Secven de comand dubl


pentru configuraie unipolar

E. Secven de comand dubl


pentru configuraie bipolar

A1

A2

B1

B2

A
B
C
D

A1
A2
B1
B2

C. Secven de comand mixt


pentru configuraie unipolar

F. Secven de comand mixt


pentru configuraie bipolar

A1

1
A
B
C
D

A2

A2

B1

B2

A1
A2
B1
B2

Fig. 6.16: Secvene de comand pentru motoarele pas-cu-pas.

65

6.2. MOTOARE PAS-CU-PAS

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

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU


+5V
ULN2003A

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.

Pentru comanda motoarelor pas-cu-pas bipolare se pot utiliza circuitele integrate


UC3717 sau UC3770. Acestea reprezint puni H utilizate pentru schimbarea polaritii
curentului de excitaie a fazelor (nfurrilor). Pentru fiecare faz este necesar cte
o punte H, astfel nct pentru comanda unui motor pas-cu-pas sunt necesare dou
circuite integrate (figura 6.19). Curentul maxim debitat este de 2 A, iar tensiunea de
ieire este cuprins ntre 10 i 50 V. Motoarele bipolare pot fi comandate n secven
simpl, dubl sau mixt.
LOGIC & REFERENCE
SUPPLY
+5V

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. MOTOARE DE CURENT CONTINUU

6.3

Motoare de curent continuu

Un motor de curent continuu (motor de c.c.) convertete energia electric n energie


mecanic, fiind compus dintr-un circuit magnetic (miez cu armturi, poli i bobin), un
circuit electric (armtura bobinajului, armtura bobinei, perii i comutator electric) i
suportul mecanic (cadru, rulmeni, suporii periilor i ax).
Avantajul motoarelor de curent continuu sunt capacitatea de variaie a vitezei i
cuplul mare. Variaia vitezei de rotaie se face prin modificarea tensiunii pe armturi,
a tensiunii pe nfurri sau o combinaie a celor dou.

Fig. 6.20: Structura constructiv a unui motor de curent continuu cu perii.

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.

Fig. 6.21: Funcionarea rotorului unui motor de c.c. cu perii.


68

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

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

Un comparator analogic al unui microcontroler conine doi pini de intrare i un pin


de ieire. Toi aceti pini sunt multiplexai cu pinii I/O. n plus fa de acetia, pinul
tensiunii de referin, VREF , poate fi considerat tot ca o intrare a comparatorului.
Registrul de control al comparatorului analogic este CMCON, avnd biii diferii, n
funcie de numrul de comparatoare analogice existente n modelul de microcontroler
(unul singur pentru PIC12F675 sau dou pentru PIC16F88).
R (0)

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

Fig. 7.1: Registrul de control al comparatorului analogic.

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

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

VIN+
Ieire

VIN-

VINVIN
+
VIN+

Ieire

Multiplexare
La alte periferice

Pini de intrare
Ctre magistrala de date

D
CVREF

Q1

EN
RD_CMCON

CINV

Setare bit CMIF

CM2:CM0

D
Q3 * RD_CMCON

EN
CL
De la cellalt comparator

RESET

Fig. 7.2: Schema intern a comparatorului analogic.

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

7.1. COMPARATORUL ANALOGIC


VDD
VT = 0.6V

RS < 10K

RIC

AIN
CIN
5 pF

VA

VT = 0.6V

I
500 nA

VSS

Fig. 7.3: Intrarea comparatorului analogic.

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

Comparator fr ieire i cu referin intern

CM2:CM0 = 010

CM2:CM0 = 100

GP1/CIN-

GP0/CIN+

GP2/COUT

COUT

GP1/CIN-

GP0/CIN+

GP2/COUT

COUT

De la modulul VREF

Comparator cu ieire i cu referin intern

Intrare multiplexat, referin intern i ieire

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

Intrare multiplexat i referin intern

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

Fig. 7.4: Moduri de lucru ale comparatorului analogic (PIC12F675).

72

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

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

Patru intrri multiplexate la dou comparatoare


CM2:CM0 = 010

Dou comparatoare independente


CM2:CM0 = 100
RA0/AN0

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

Dou comparatoare cu referin comun i ieiri


CM2:CM0 = 110
A

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

Un singur comparator independent


CM2:CM0 = 101
RA0/AN0

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+

A = intrare analogic, D = intrare digital

Fig. 7.5: Moduri de lucru ale comparatorului analogic (PIC16F88).

Comparator analogic cu histerezis


Atunci cnd tensiunile de la intrare unui comparator sunt aproape egale, zgomotul
extern sau intern poate determina ca ieirea comparatorului s oscileze foarte rapid
ntre cele dou stri logice. Pentru a preveni acest efect, o parte a tensiunii de ieire
a comparatorului este trimis napoi prin reacie la intrarea pozitiv pentru a forma
un histerezis. Acest histerezis modific pragul comparatorului mai sus atunci cnd
tensiunea de intrare se afl sub prag i mai jos atunci cnd intrarea este situat peste
prag. Dac diferena dintre cele dou praguri este mai mare dect nivelul zgomotului,
se obine eliminarea efectului nedorit de oscilaie a ieirii comparatorului.

73

7.1. COMPARATORUL ANALOGIC

Intrare

VTH

Ieire

VAVG
R1

VTL

R3

VDD

Ieire

R2

Fig. 7.6: Comparator analogic cu histerezis.

Pentru a determina valorile rezistenelor necesare pentru realizarea histerezisului


se determin iniial valoarea de prag minim (VTL ) i maxim (VTH ). Valoarea medie a
pragului va fi dat de relaia 7.1.
VAVG =

VDD VTL
VDD VTH + VTL

(7.1)

Rezistenele R1 i R2 se aleg ntre 1 i 10 k, iar rezistena R3 trebuie s aib sub


100 k. Valorile rezistenelor R1 i R2 se aleg astfel nct s satisfac relaia 7.2.
VAVG =

VDD R2
R1 + R2

(7.2)

Rezistena R3 se determin pornind de la factorul de divizare a tensiunii, conform


relaiei 7.3.


R1 R2
VDD
R3 =
1
(7.3)
R1 + R2 VTH VTL
Exemplu. S se determine valorile componentelor unui comparator analogic cu histerezis pentru o tensiune medie de prag VAVG de 2.0 V, tensiunea de histerezis VH de
100 mV i tensiunea de alimentare VDD =5 V.
a) se determin valorile minime i maxime de prag:
VTL = VAVG VH /2 = 2.0 0.05 = 1.95V
VTH = VAVG + VH /2 = 2.0 + 0.05 = 2.05V
b) se aleg valorile rezistenelor R1 i R2 , astfel nct s satisfac relaia 7.2:
2=

5 R2
= R1 = 1.5 R2
R1 + R2

Se aleg valorile R1 =1.8 k i R2 =3.6 k.


c) se determin valoarea rezistenei R3 , conform relaiei 7.3:


1800 3600
5
R3 =
1 = 58800 59 k [E96]
1800 + 3600 0.1
74

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

Comparator analogic cu fereastr


n cazul aplicaiilor de monitorizare a unui senzor extern, este necesar determinarea evenimentului n care semnalul a ieit dintr-un interval de lucru prestabilit
(fereastr), considerat sigur. Pentru determinare se poate utiliza un comparator analogic cu fereastr care dispune de dou ieiri care semnalizeaz deplasarea semnalului
sub i, respectiv, peste valorile admise. Implementarea se face cu ajutorul a dou comparatoare i trei rezistene (figura 7.7).
VDD

R1
VTH-HI
C1

VTH-HI
Limit maxim

VTL-LO

R2

Intrare

Ieire C1
C2

Limit minim

VTH-LO

Ieire C2
R3

Fig. 7.7: Comparator analogic cu fereastr.

Rezistenele R1 , R2 i R3 formeaz un divizor rezistiv care genereaz tensiunile de


prag minim i maxim. Cele dou ieiri sunt active direct, intrnd individual pe stare 1
atunci cnd semnalul depete peste valorile de prag. Rezistenele au valori ntre 1
k i 1M i se determin cu ajutorul relaiilor 7.4 i 7.5.
VTH-HI =

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

7.1. COMPARATORUL ANALOGIC

Datorit aproximrii rezistenelor, valorile reale de prag vor fi VTH-HI =2.706 V i


VTH-LO =2.293 V.
Msurarea duratei unui impuls
Comparatorul analogic, n conjuncie cu modulul Timer1, poate fi utilizat pentru msurarea duratei de timp a impulsului generat la ieirea COUT. Pentru aceasta, ieirea
se conecteaz la pinul de comand T1G al timerului (figura 7.8). Avnd logic invers,
timerul va ncepe numrarea la trecerea pinului T1G pe 0. Prin urmare, ieirea comparatorului trebuie, de asemenea, inversat setnd bitul CINV al registrului CMCON
la valoarea 1.
VDD

VINPUT

COUT

TIG

Timer1
Prag

Fig. 7.8: Utilizarea comparatorului analogic pentru msurarea duratei unui impuls.

Circuit cu oprire automat


Comparatorul analogic poate fi utilizat pentru detectarea duratelor de impuls PWM
mai mari dect o anumit limit impus (figura 7.9). Una din intrrile comparatorului va contine o tensiune de referin, iar cealalt va avea la intrare tensiunea unui
condensator care este ncrcat de ctre impulsurile PWM. Tensiunea condensatorului
este definit prin relaia 7.8.


R TC
1
1
VC1 = VDD 1 e
(7.8)
unde T este durata impulsului semnalului PWM.
VREF=1.2 V

C1

R1

VIN
(PWM)

10k
D1

C1
220nF

Ieire

74LS08

R2
500

1N4148

Fig. 7.9: Utilizarea comparatorului analogic ca circuit cu oprire automat.

Dioda D1 este utilizat pentru descrcarea rapid a condensatorului pe zona de


nul a semnalului PWM.
76

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

Exemplu. Pentru detectarea impulsurilor PWM cu o durat mai mare de 1 ms,


o tensiune de referin VREF =1.25 V i o tensiune de alimentare VDD =5 V, valorile
rezistenei R1 i C1 vor fi determinate, astfel:


0.001
1.25 = 5 1 e R1 C1 = R1 C1
= 3.48 103
Alegnd R1 =34.8 k, rezult c C1 =100 nF.
Detector de trecere prin zero
n unele aplicaii este necesar detectarea momentelor n care un semnal are valoarea zero. Acest lucru poate fi realizat cu ajutorul unui comparator analogic conectat
ca n figura 7.10. Cnd semnalul de intrare este nul, cele dou tensiuni de intrare
ale comparatorului sunt egale. Cnd tensiunea de intrare este nenul, tensiunea la
intrarea negativ devine mai mare sau mai mic (n funcie de polaritatea semnalului de intrare) dect tensiunea de referin de la intrarea pozitiv, ceea ce determin
trecerea ieirii n stare 0 sau 1.
VDD

R1
10k

R1
10k

C1

R2
10k

Ieire

R2
10k

VIN

Fig. 7.10: Utilizarea comparatorului analogic ca detector de trecere prin zero.

7.2

Referina de tensiune

Generatorul tensiunii de referin din compunerea comparatorului analogic este


construit sub forma uneu reele de 16 rezistene care furnizeaz o tensiune fix de
referin atunci cnd comparatorul opereaz n cu referin de tensiune intern comun.
Generatorul tensiunii de referin poate fi pornit sau oprit cu ajutorul bitului de control
CVREN (PIC16F88) i, respectiv, VREN (PIC12F675).
CVRCON
VRCON

R/W (0)

R/W (0) / U (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

Fig. 7.11: Registrul de control al referinei de tensiune.

77

7.2. REFERINA DE TENSIUNE


VDD
CVREN

x 16
R

8R

CVRR

8R

Pinul RA2/AN2/CVREF/VREF-

CVROE
Multiplexor analogic 16-la-1
La intrarea comparatorului

CVR3
CVR2
CVR1
CVR0

Fig. 7.12: Schema bloc a generatorului tensiunii de referin (PIC16F88).

Pentru controlul tensiunii de referin se utilizeaz registrul CVRCON (PIC16F88)


sau VRCON (PIC12F675). Bitul CVRR permite alegerea domeniului de valori ale tensiunii de referin, astfel: pentru CVRR=1 domeniul este curpins ntre valorile 0 i
0.625VDD cu pas de VDD /24, iar pentru CVRR=0 domeniul este ntre 0.250VDD i
0.720VDD cu pas de VDD /32. Tensiunea de referin se stabilete cu ajutorul formulei
7.9, utiliznd biii CVR<3:0>.
CVR<3:0>
VDD , dac CVRR=1;
24
VDD CVR<3:0>
=
+
VDD , dac CVRR=0.
4
32

VREF =

(7.9)

Conectarea sau deconectarea referinei de tensiune ca pin de ieire se poate face


prin intermediul bitului de control CVROE (PIC16F88). Atunci cnd tensiunea de referin este conectat la pinul de ieire, generatorul tensiunii de referin poate fi utilizat
ca un convertor analog numeric dac la ieire se conecteaz o sarcin cu impedan
foarte mare.
Exemplul 7.1. n figura 7.13 este prezentat schema electric de principiu a utilizrii comparatorului analogic cu semnal de intrare extern i tensiune de referin
generat intern. Cu ajutorul unui generator de semnal conectat la intrarea CIN - se
genereaz un semnal triunghiular sau sinusoidal cu frecven de 10 kHz. Utiliznd
referina intern de tensiune a microcontrolerului PIC12F675 se stabilete o tensiune
de referin VREF =2.5 V. Stabilind modul VRR =1, conform relaiei 7.9, valoarea biilor
VR<3:0> este 12 (sau binar 1100).
VREF =
78

12
CVR<3:0>
VDD =
5 = 2.5 V
24
24

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88


Rs
10k

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.

\\ Exemplul 7.1: Comparator analogic cu Vref interna si iesire digitala


void main() {
TRISIO.B2=0;
ANSEL.B2=0;
TRISIO.B1=1;
ANSEL.B1=1;

//
//
//
//

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;

// Comparator cu Vref interna


// (CM2:0=011)

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

7.2. REFERINA DE TENSIUNE

Fig. 7.15: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.1.

Att semnalul generat, ct i semnalul de la ieirea comparatorului sunt vizualizate


pe un osciloscop cu dou canale (figura 7.15). Durata impulsurilor pozitive este invers
proporional cu valoarea referinei de tensiune. Pentru valoarea aleas (VREF =2.5 V),
durata impulsului este teoretic jumtate din perioada semnalului. De reinut c valoarea practic a referinei este puternic depedent de valoarea tensiunii de alimentare
VDD , orice variaie a acesteia ducnd automat i la modificarea referinei.
Exemplul 7.2. Similar aplicaiei precedente, se poate implementa comparatorul
analogic cu histerezis. Utiliznd acelai generator de semnal i o tensiune de prag
VAVG =de 2.5 V, schema se poate modifica pentru introducerea unui ciclu de histerezis
cu tensiunea VH =3 V, ceea ce determin ca cele dou noi valori de prag s fie VTL =1
V i VTH =4 V.
Rs
10k
Generator
de semnal

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).

Din relaia 7.2 se determin cele dou rezistene R1 i R2 , astfel:


VAVG = 2.5 =
80

R2
R2
VDD =
5 = R1 = R2
R1 + R2
R1 + R2

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

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

// Comparator cu iesire COUT


// (CM2:0=001)
// Iesire inversata

Fig. 7.18: Rezultate observate pe osciloscop pentru semnale utilizate n exemplul 7.2.
81

7.2. REFERINA DE TENSIUNE

Exemplul 7.3. Pentru a realiza un comparator cu fereastr este necesar utilizarea


a dou comparatoare, cte unul pentru fiecare nivel de prag al ferestrei. Prin urmare,
se poate utiliza microcontrolerul PIC16F88 n modul cu dou ieiri digitale i referin
comun extern folosit ca intrare pentru semnalul util (CM<2:0>=110).
ICSP

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

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 I PIC16F88

Pentru realizarea impulsului corespunztor ferestrei de tensiune, cele dou ieiri


digitale se conecteaz la un operator AND sau se sumeaz pe ecranul osciloscopului
(figura 7.21). Pe ecranul osciloscopului se pot observa semnalul surs (CH3), semnalele
rezultate la cele dou ieiri ale comparatoarelor (CH1 i CH2), precum i suma acestora (M/MATH).
\\ Exemplul 7.3: Comparator cu fereastra si iesiri digitale
void main() {
TRISA.B0=1;
ANSEL.B0=1;
TRISA.B3=0;
ANSEL.B3=0;

//
//
//
//

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;

// Comparatoare cu iesire C1OUT, C2OUT


// (CM2:0=110)
// Iesire C1OUT neinversata
// Iesire C2OUT inversata

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

7.2. REFERINA DE TENSIUNE

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).

Conform relaiei 7.8, produsul R1 C1 pentru C1 ncrcat cu VREF la momentul T va fi:


R1 C 1 =

0.002
0.002
T

=
=
= 0.7 103
ln(1 VREF /VDD )
ln(1 1.25/5)
0.287

Alegnd R1 =1.5 k, se determin valoarea C1 =470 nF.


Comparatorul analogic pentru PIC12F675 funcioneaz n modul CM<2:0>=011 cu
tensiune de referin provenit de la modulul intern i ieire digital pe pinul COUT
(identic celui din figura 7.14). Tensiunea de referin se determin pe baza relaiei 7.9,
n modul VRR=1 cu CVR<3:0>=0110 (zecimal 6).
VREF =

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>

Fig. 8.1: Schema bloc a convertorului analog numeric (PIC16F887).


85

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).

Selectarea canalului analogic. Convertorul analog numeric este conectat la un


moment dat la o singur intrare dintre cele posibile. Intrarea (canalul analogic) se
selecteaz cu ajutorul biilor CHS<3:0> ai registrului de control ADCON0.

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

Fig. 8.3: Regitrii de control al convertorului analog numeric (PIC16F887).


86

CAPITOLUL 8. CONVERTORUL ANALOG-DIGITAL. MICROCONTROLERUL PIC16F887

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

Fig. 8.4: Diagrama de timp a unei conversii analog numerice (PIC16F887).

Selectarea referinei de tensiune. Tensiunea de referin are a scop stabilirea


limitei minime i maxime a intervalului de valori ale tensiunii semnalului de intrare.
Aceste valori se stabilesc cu ajutorul biilor VCFG<1:0> ai registrului de control ADCON1. Limita superioar poate fi fie VDD (VCFG0=0), fie tensiunea prezent la pinul
VREF + (VCFG0=1), n timp ce limita inferioar poate fi VSS (VCFG1=0) sau tensiunea
de la pinul VREF - (VCFG1=1).
Frecvena de conversie A/D. Sursa semnalului de ceas care stabilete frecvena cu
care este convertit semnalul analogic se stabilete prin biii ADCS<1:0> ai registrului ADCON0. Exit patru opiuni posibile: FOSC /4 (00), FOSC /8 (01), FOSC /32 (10) sau
frecvena FRC derivat dintr-un oscilator intern specific de maxim 500 kHz (11). Pentru primele trei moduri, orice modificare a frecvenei de ceas determin modificarea
frecvenei de conversie A/D.
Timpul necesar pentru efectuarea unei conversii complete TCNV este egal cu 11 ciclii
de conversie specific TAD (figura 8.4). Pentru a realiza o conversie corect, valoarea lui
TAD trebuie s aib valori valide, cuprinse ntr-un interval specific fiecrui tip de microcontroler (figura 8.5). Pentru modelul PIC16F887, TAD trebuie s se situeze ntre 1.6
i 9.0 s pentru VREF 3 V sau ntre 3.0 i 9.0 s pentru ntreaga gam a VREF . Timpul
TAD

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

Fig. 8.6: Moduri de reprezentare a rezultatului conversiei analog digitale (PIC16F887).

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

Frecvena maxim de operare

Memorie

Memorie de program Flash


Memorie de date SRAM
Memorie de date EEPROM

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

8 MHz intern, 20 MHz extern


4096 words

8192 words

256 bytes

368 bytes
256 bytes

TMR0 (8-bit), TMR1 (16-bit), TMR2 (8-bit)


Da
14 (10-bit ADC)
35
1
Da (Port B)

Comparatoare analogice

Module EUSART

Module MSSP (SPI, I2C)

Module ECCP/CCP

1/1

Interfa ICSP

Da

Numr de instruciuni
Capsule

35
40-pin PDIP, 44-pin QFN, TQFP

Fig. 8.7: Caracteristici comparative ale microcontrolerelor PIC16F884/887.


88

CAPITOLUL 8. CONVERTORUL ANALOG-DIGITAL. MICROCONTROLERUL PIC16F887

VIN
VREF+=
[VDD-2.5V ... VDD+0.3V]

VREF-=
[(VREF+)-2.0V ... VSS-0.3V]
0x0000
(0)

ADRESH+ADRESL
0x03FF
(1023)

Fig. 8.8: Stabilirea limitelor intervalului de conversie A/D (PIC16F887).

Etapele necesare pentru realizarea unei conversii analog digitale sunt:


1. Configurarea portului:
Configurarea pinului n modul intrare (TRIS);
Configurarea pinului ca analogic (ANSEL/ANSELH);
2. Configurarea modulului ADC:

Selectarea frecvenei de conversie (ADCS<1:0>);


Configurarea tensiunilor de referin (VCFG<1:0>);
Selectarea canalului de intrare (CHS<3:0>);
Selectarea formatului rezultatului (ADFM);
Pornirea modulului ADC (ADON);

3. Configurarea ntreruperii (opional):

tergerea bitului de semnalizare (ADIF);


Activarea ntreruperii modulului ADC (ADIE);
Activarea ntreruperilor periferice (PEIE);
Activarea ntreruperilor globale (GIE);

4. Ateptarea scurgerii timpului de achiziie TACQ =11.5 s;


5. Pornirea conversiei A/D (GO/DONE=1);
6. Ateptarea terminrii conversiei A/D prin una din modalitile urmtoare:
Verificarea continu dac valoarea bitului GO/DONE este 0;
Ateptarea generrii ntreruperii (ADIF=1);
7. Citirea rezultatului conversiei A/D din ADRESH i ADRESL;
8. tergerea bitului de semnalizare a ntreruperii (ADIF).
89

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

Fig. 8.9: Configuraia pinilor pentru microcontrolerul PIC16F887.

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

CAPITOLUL 8. CONVERTORUL ANALOG-DIGITAL. MICROCONTROLERUL PIC16F887

Rezistenele R1 , R2 i rezistenele semireglabile P1 , P2 se aleg astfel nct cele


dou tensiuni de referin s satisfac regulile specificate n figura 8.8. Astfel, pentru
ca VREF + s ia valori ntre 2.5 V i 5 V (VDD ), se alege R1 =P1 =10 k, iar pentru VREF ntre 0 V (VSS ) i 1.25 V, se alege R2 =15 k i P2 =5 k.
Cei 10 bii ai rezultatului conversiei se afieaz vizual cu ajutorul a zece LEDuri
(LED1-LED10) conectate la cei 8 bii ai portului D (RD<7:0>) i la doi bii ai portului
C (RC<7:6>). Datorit resetrii bitului GO/DONE la valoarea 1 la fiecare ntrerupere,
conversia A/D este continu.
\* Exemplul 8.1: Conversie A/D continua cu generare de intreruperi
(ceas intern 8 MHz, Vref+ si Vref- externe, intrare pe AN0) *\
void interrupt() {
PORTD=ADRESH;
PORTC=ADRESL;
delay_us(12);
ADCON0.GO_DONE=1;
PIR1.ADIF=0;
}
void main() {
TRISA=0xFF;
ANSEL=0xFF;
ANSELH=0xFF;
TRISC=0;
TRISD=0;

//
//
//
//
//

Afisare primii 8 MSB


Afisare ultimii 2 LSB
Asteptare Tacq
Repornire achizitie
Stergere flag intrerupere ADC

// Portul A ca port de intrare


// Portul A ca port analogic
// Portul C ca port de iesire
// Portul D ca port de iesire

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;

//
//
//
//
//
//

Frecventa de esantionare 32Tosc


(ADCS1:0=10)
Tensiune Vref+ pe pinul RA3
Tensiune Vref- pe pinul RA2
Selectare canal de intrare AN0
(CHS3:0=0000)

PIE1.ADIE=1;
INTCON.PEIE=1;
INTCON.GIE=1;
PIR1.ADIF=0;

//
//
//
//

delay_us(12);
ADCON0.GO_DONE=1;

// Asteptare Tacq
// Pornire achizitie

// Format date aliniat la dreapta


// Pornire modul ADC
Activare
Activare
Activare
Stergere

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

Fig. 9.1: Regitrul de control al memoriei EEPROM (PIC16F88).

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

CAPITOLUL 9. MEMORIA EEPROM

Generator de semnal cu sintez direct (DDS)


Un exemplu de aplicaie este utilizarea memoriei EEPROM pentru stocarea formelor
de und ale unui generator de semnal cu sintez direct (DDS - Direct Digital Synthesizer). Un astfel de generator se semnal utilizeaz o form de und eantionat
pe un anumit numr de eantioane care este stocat n memoria ROM i care, citit
repetitiv cu o anumit frecven, genereaz un semnal cu acelai form i la o frecven
dorit de utilizator.
Considernd o perioad a unei forme de und eantionat pe N de eantioane,
pentru a genera un semnal cu frecvena FO este necesar citirea datelor cu o frecven
FCLK egal cu:
FCLK = N FO
(9.1)
Semnalul cuantizat este ulterior transmis unui convertor digital-analogic (DAC Digital Analog Converter) care efectueaz conversia eantioanelor n tensiune. n final, semnalul analogic generat este trecut printr-un filtru trece-jos de refacere.
Este preferabil ca citirea datelor din memoria EEPROM s se fac la momente
de timp determinate prin generarea unor ntreruperi cu ajutorul unui timer. Utiliznd
modulul Timer2, se poate stabili perioada de generare a ntreruperilor TCLK egal cu
inversul frecvenei FCLK .
Exemplu. O perioad complet a unui semnal sinusoidal este eantionat pe 8 bii
(N=256 eantioane). Conform relaiei 9.1, pentru a obine prin sintez direct un semnal sinusoidal cu frecvena FO =630 Hz, este necesar o frecven de citire a datelor
FCLK =256630=161.280 kHz. Schema din figura 9.2 prezint un generator de semnal de
tip DDS utiliznd convertorul numeric analogic Texas Instruments TLC7226 i microcontrolerul PIC16F88 cu 256 octei de EEPROM.

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;

// Definire contor pe 8 biti

void interrupt() {
PIR1.TMR2IF=0;
EEADR=i;
EECON1.RD=1;
PORTB=EEDATA;
i++;
}

//
//
//
//
//

void main() {
TRISB=0;
ANSEL=0;

}
94

Stergere flag intrerupere Timer2


Scriere adresa celula memorie
Comanda citire celula memorie
Scriere date la portul RB
Trecere la urmatoarea adresa

// RB ca port de iesire
// RB ca port analogic

PIE1.TMR2IE=1;
INTCON.PEIE=1;
INTCON.GIE=1;

// Activare intrerupere Timer2


// Activare intreruperi periferice
// Activare intreruperi globale

PR2=30;
T2CON=0b00000100;

// Scriere valoare registru PR2


// Timer2 pornit. PostS=1:1. PreS=1:1

CAPITOLUL 9. MEMORIA EEPROM

Alte forme de und pot fi generate similar, utiliznd eantioane generate i apoi
stocate n memoria EEPROM a microcontrolerului.
Semnal impuls:


255 dac 1 n 128


0
dac 128 < n 256

(9.3)

s[n] = n 1, pentru 1 n 256

(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)

Utiliznd acelai cod precedent i modificnd pe rnd coninutul memoriei EEPROM


se obin formele de und din figura 9.3. De reinut faptul c aceast modalitate de
generare nu permite obinerea de frecvene mari (n general sub 1 kHz).

Fig. 9.3: Semnale generate DDS cu ajutorul unor forme de und stocate n memoria EEPROM.
95

nregistrator de date (data logger)


Memoria EEPROM poate fi utilizat pe parcursul funcionrii microcontrolerului
pentru stocarea unor date sau msurtori efectuate periodic sau la anumite momente
de timp. Acest lucru este important mai ales din punct de vedere al portabilitii i
stocrii n timp la ntreruperea funcionrii circuitului.
Un exemplu de aplicaie este monitorizarea pe parcursul unei zile a intensitii
luminoase dintr-o ncpere sau din exterior. Utiliznd o fotorezisten (R1 ) se poate
msura la intervale bine definite de timp valoarea analogic a unui divizor rezistiv (R1
i R2 ), proporional cu intensitatea luminii (figura 9.4).
VDD

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).

Considernd c microcontrolerul msoar tensiunea divizorului pe parcursul unei ore


la un interval de 15 secunde, rezult un necesar de 240 octei de memorie EEPROM.
Microcontrolerul PIC16F88 conine o cantitatea de 256 octei, ceea ce este suficient
aplicaiei.
Deoarece circuitul este destinat operrii pe perioade mari de timp i independent,
este util asigurarea unui consum ct mai mic. Prin urmare, se alege utilizarea unui
cristal de cuar extern de mic putere, avnd frecvena de 32.768 kHz
Utiliznd relaia 4.4 se determin parametrii de lucru ai modulului Timer1 astfel nct
s genereze o ntrerupere la fiecare 15 secunde. ntreruperea este utilizat pentru a
comanda efectuarea msurrii tensiunii i apoi scrierea valorii numerice rezultate n
memoria EEPROM. Prescalerul PS ca avea factorul de divizare 1:8 iar registrul TMR1
va avea valoarea 50176 (65536-50176=15360). Valorile regitrilor pe 8 bii vor fi, prin
urmare TMR1H=196 i TMR1L=0.
TInt
Timer1 =

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

CAPITOLUL 9. MEMORIA EEPROM

Etapele necesare pentru scrierea n memoria EEPROM sunt:


1. Verificare dac nu exist o scriere n curs (WR);
2. Scrierea adresei de memorie n registrul EEADR;
3. Scrierea datelor pe 8 bii n registrul EEDATA;
4. Selectarea memoriei EEPROM prin tergerea bitului EEPGD;
5. Activarea posibilitii scrierii prin setarea bitului WREN;
6. Executarea secvenei obligatorii:
scrierea valorii 0x55 n registrul EECON2;
scrierea valorii 0xAA n registrul EECON2;
7. Scrierea datelor prin setarea bitului WR;
8. Reactivarea ntreruperilor (dac acestea au fost dezactivate);
9. Eliminarea posibilitii de scriere n memorie prin tergerea bitului WREN;
10. tergerea bitului de semnalizare a ntreruperii EEIF (dac a fost activat).

\\ Exemplul 9.2: Logger de date in EEPROM (mod LP)


unsigned char adresa;
unsigned char SaveInt;
int k;
void interrupt() {
PIR1.TMR1IF=0;
TMR1H=196;
TMR1L=0;
SaveInt=INTCON;
INTCON=0;
PORTA.B2=!PORTA.B2;
ADCON0.GO_DONE=1;
while(ADCON0.GO_DONE){};
PORTA.B2=!PORTA.B2;
EEADR=adresa;
EEDATA=ADRESH;
EECON1.EEPGD=0;
EECON1.WREN=1;
EECON2=0x55;
EECON2=0xAA;
EECON1.WR=1;
INTCON=SaveInt;
EECON1.WREN=0;
adresa++;
}

// Variabila contor adresa


// Variabila salvare reg. INTCON
// Variabila de uz general 16 biti

// Stergere flag intrerupere Timer2


// Rescriere valoare registru TMR1
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

Salvare registru intreruperi


Dezactivare intreruperi
Aprindere LED la RA2
Comanda pornire conversie A/D
Asteptare terminare conversie A/D
Stingere LED la RA2
Scriere adresa celula memorie
Date egale cu primii 8 MSB coversie
Selectare memorie date EEPROM
Activare scriere in EEPROM
Secventa necesara 1 scriere
Secventa necesara 2 scriere
Comanda scriere celula memorie
Reactivare intreruperi
Dezactivare scriere in EEPROM
Incrementare contor adresa

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;

//
//
//
//
//
//
//
//
//
//

Activare scriere in EEPROM


Initializare adresa
Ciclu de golire a EEPROM
Date egale cu primii 8 MSB coversie
Selectare memorie date EEPROM
Secventa necesara 1 scriere
Secventa necesara 2 scriere
Comanda scriere celula memorie
Asteptate timp scriere Tdew
Scriere adresa celula memorie

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;

// Activare intrerupere Timer1


// Activare intreruperi periferice
// Activare intreruperi globale

// Dezactivare scriere in EEPROM

Tensiune Vref+ = Vdd


Tensiune Vref- = Vss
Format date aliniat la dreapta
Frecventa de esantionare 64Tosc
(ADCS2:0=110)

// Selectare canal de intrare AN0


// (CHS2:0=000)
// Pornire modul ADC
Prescaler la 1:8
(T1CKPS1:0=11)
Utilizare ceas intern (Fosc/4)
Activare Timer1
Scriere valoare registru TMR1

Deoarece memoria EEPROM necesit un timp de scriere mare (TDEW =4 .. 8 ms), la


ciclul de iniializare prin tergerea complet a memoriei este necesar includerea unui
timp de ateptare minim la fiecare celul accesat prin tergere/scriere.
98

Capitolul 10

Comunicaiile seriale sincrone


Comunicaiile seriale sincrone sunt acele comuncaii care necesit un canal suplimentar care s permit existena unui semnal de ceas cu care datele se sincronizeaz
pe durata transmisiei sau recepiei. n cazul microcontrolerelor, comunicaiile sincrone
sunt realizate prin intermediul modulelor de tip SSP (Synchronous Serial Port) i sunt
utilizate pentru a realiza legtura cu alte periferice (memorii EEPROM seriale, convertoare A/D, regitrii de deplasare, senzori, afioare etc.) sau cu alte microcontrolere.
Modulele SSP poate opera n dou moduri:
SPI (Serial Peripheral Interface);
I2 C (Inter-Integrated Circuit).

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

10.1. COMUNICAIA SPI

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

Conexiune SPI cu dispozitive slave cooperative

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

Fig. 10.2: Moduri de interfaare a dispozitivelor slave n comunicaia de tip SPI.

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

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE

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

Fig. 10.3: Ciclul de transmisie n comunicaia de tip SPI.

Dispozitivul master, n plus fa de semnalul de ceas, trebuie s seteze polaritatea


acestuia n raport cu datele. Acest lucru nseamn, de fapt, specificarea momentului
cnd datele sunt citite, respectiv pe frontul cresctor (CPOL=0) sau cel descresctor
al impulsurilor de ceas (CPOL=1). De asemenea, se specific faza semnalului de ceas
cnd datele sunt citite (CPHA).
CPOL=0:
CPHA=0: datele de intrare sunt recepionate pe frontul cresctor al semnalului de ceas, iar datele de ieire sunt transmise pe frontul descresctor al
semnalului de ceas;
CPHA=1: datele de intrare sunt recepionate pe frontul desctor al semnalului de ceas, iar datele de ieire sunt transmise pe frontul crescresctor al
semnalului de ceas;
CPOL=1:
CPHA=0: datele de intrare sunt recepionate pe frontul desctor al semnalului de ceas, iar datele de ieire sunt transmise pe frontul cresctor al
semnalului de ceas;
CPHA=1: datele de intrare sunt recepionate pe frontul cresctor al semnalului de ceas, iar datele de ieire sunt transmise pe frontul descresctor al
semnalului de ceas.
CPOL=0
SCK
CPOL=1
SS

Ceas
CPHA=0

SDO

SDI

Ceas
CPHA=1

SDO

SDI

Fig. 10.4: Diagrame de timp ale transmisiei SPI.

101

10.2. COMUNICAIA I2 C

10.2

Comunicaia I2 C

I2 C reprezint o comunicaie serial multimaster creat de ctre firma Philips i


este utilizat pentru a conecta periferice cu vitez mic de transfer.
Magistrala I2 C utilizeaz dou linii bidirecionale de tip dren deschis, conectate
implicit la VDD prin rezistene de pull-up (figura 10.5). Tensiunea de alimentare poate
lua valori ntre 3.3 V i 5 V, dei se permit i alte valori.
SDA - Serial Data Line (linie de date);
SCL - Serial Clock (semnal de ceas).
VDD
RPU
SDA
SCL

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

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE

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

Fig. 10.6: Diagrama de timp ale transmisiei I2 C.

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

Interfaa PS/2 a fost dezvoltat de ctre firma IBM n scopul conectrii la un PC a


dispozitivelor periferice de introdus date, precum mouse-ul sau tastatura. Comunicaia
este realizat prin intermediul unui protocol sincron bidirecional serial cu primul bit
LSB. Magistrala de date este de tip open-collector.
Magistrala PS/2 conine dou linii care n lipsa comunicaiei au starea 1 logic, fiind
conectate la VDD prin intermediul unor rezistene de pull-up.
DATA - linie de date;
CLOCK - semnal de ceas.
103

10.3. COMUNICAIA PS/2


VDD
RPU
DATA
CLOCK

PS/2
Keyboard

Host

PS/2
Mouse

Fig. 10.7: Comunicaia de tip PS/2 intre un dispozitiv host (computer) i dispozitivele de intrare.

Transmisia este structurat pe 11 bii, astfel: un bit de START activ pe 0 logic, 8


bii de date (LSB primul), un bit de paritate impar i un bit de STOP activ pe 1 logic.
n cazul transmisiei de la computer ctre periferic, exist al 12-lea bit de confirmare
(acknowledge). Datele trimise de la periferic la computer sunt citite pe frontul descresctor al semnalului de ceas, n timp ce datele transmise de la computer ctre
periferic sunt citite pe frontul cresctor.
Spre deosebire de celelalte tipuri de comunicaii seriale sincrone unde valoarea
exact a frecvenei semnalului de ceas nu era critic, n cazul comunicaiei PS/2 duratele de timp trebuie realizate ntocmai. Semnalul de ceas trebuie si aib valoarea
frecvenei ntre 10 i 16.7 kHz, ceea ce se traduce printr-o o durat a impulsului de
ceas cuprins ntre 30 i 50 s. De asemenea, timpul cuprins ntre momentul tranziiei
semnalului de ceas pe frontul cresctor i tranziia bitului de date trebuie s fie de
cel puin 5 s, iar timpul cuprins ntre tranziia bitului de date i momentul tranziiei
semnalului de ceas pe frontul descresctor trebuie s fie de minim 5 s dar nu mai
mult de 25 s.
Durata de timp ntre momentul n care linia semnalului de ceas al computerului
devine 0 logic i nceputul generrii semnalului de ceas de ctre periferic trebuie s
nu fie mai mare de 15 ms. De asemenea, timpul necesar trimiterii pachetului de date
nu trebuie s depeasc 2 ms. n oricare dintre cele dou situaii, depirea duratei
maxime determin generarea unei erori de ctre computer.

CLOCK

DATA

START

STOP

CLOCK

DATA

ACK

Fig. 10.8: Diagrama de timp extins a transmisiei PS/2.


104

COMPUTER

< 2ms

PERIFERIC

< 15ms
> 100us

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE

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

COMPUTER CTRE PERIFERIC


CLOCK

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. MODULUL SSP N MODUL SPI

Bitul de paritate impar determin dac numrului de valori de 1 din compunerea


celor 8 bii de date este impar (P=0) sau par (P=1) i se determin cu relaia 10.1 n
care Bk sunt cei 8 bii, k=1..8. Bitul de paritate are rolul de verificare la recepie a
erorilor de transmisie.
!
8
X
P= 1+
Bk
mod 2
(10.1)
k=1

Exemplul 10.1. Transmisie date cu eroare.


A transmite datele 10010010
A calculeaz bitul de paritate P=(1+0+0+1+0+0+1+0+1) mod 2=0
A adaug bitul de paritate i trimite 100100100
B recepioneaz 000100100
B calculeaz paritatea (0+0+0+1+0+0+1+0+0+1) mod 2=1
B raporteaz eroare prin nepotrivirea paritilor
Exemplul 10.2. Transmisie date fr eroare.
A transmite datele 10010010
A calculeaz bitul de paritate P=(1+0+0+1+0+0+1+0+1) mod 2=0
A adaug bitul de paritate i trimite 100100100
B recepioneaz 100100100
B calculeaz paritatea (1+0+0+1+0+0+1+0+0+1) mod 2=0
B raporteaz transmisie corect prin potrivirea paritilor

10.4

Modulul SSP n modul SPI

Comunicaia SPI permite transmisia sincron a 8 bii de date. n acest scop se


utilizeaz trei pini: SDO (Serial Data Out), SDI (Serial Data In) i SCK (Serial Clock).
Suplimentar, doar n modul slave, se poate utiliza un pin SS (Slave Select).
Datele transmise sau recepionate sunt stocate n regitrii SSPBUF i SSPSR. Registrul SSPSR deplaseaz datele n i din dispozitiv, ncepnd cu MSB. Registrul buffer
SSPBUF stocheaz temporar datele scrise n SSPSR pn cnd datele recepionate
sunt gata. La finalul transferului, cei 8 bii sunt stocai n SSPBUF dup care se
genereaz o ntrerupere (SSPIF=1) i se seteaz bitul de stare BF din registrul de
stri SSPSTAT. Aceast dubl bufferare permite nceperea recepiei urmtorului pachet
de 8 bii nainte de citirea datelor tocmai primite. Dup citirea bufferului SSPBUF,
bitul BF este resetat automat.
106

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE


Master

SSPBUF

SDO

SSPSR

Slave

SCK

SCK

SDI

SDO

SSPBUF

SSPSR

SDI

Fig. 10.10: Conexiunea SPI ntre un dispozitiv master i unul slave.

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

Pasul 1. Datele pe 8 bii sunt scrise


n registrul SSPBUF.
Dac dispozitivul este master,
acesta va efectua automat paii 2-4.
Dac dispozitivul este slave,
acesta va efectua paii 2-4 doar
la primirea semnalului de ceas
la pinul SCK.

SSPBUF

Pasul 2. Datele sunt preluate din


registrul SSPBUF i copiate n
registrul SSPSR.
Registrul SSPBUF nu este ters.

SSPSR

Pasul 3. Datele sunt deplasare


ctre ieire pentru transmisie,
n timp ce spaiile goale sunt
umplute simultan cu datele
recepionate sincron cu SCK.

SSPSR

BF
SSPIF

SSPBUF

Pasul 4. Dup recepia celor 8 bii,


registrul SSPSR este plin. Acest lucru
este semnalizat prin setarea bitului BF
al registrului SSPSTAT i prin setarea
bitului de semnalizare a ntreruperii
SSPIF.
Datele sunt mutate din registrul
SSPSR n registrul SSPBUF pentru
a fi preluate i utilizate ulterior.

Fig. 10.11: Secvenele transmisiei SPI ntre un dispozitiv master i unul slave.

107

10.4. MODULUL SSP N MODUL SPI

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

Fig. 10.12: Regitrii de control al modulului SSP (PIC16F88).

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

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE


Scriere n
SSPBUF
SCK (CKP = 0,
CKE = 0)
SCK (CKP = 1,
CKE = 0)

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

Fig. 10.13: Diagrame de timp pentru comunicaia SPI n modul master.

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

10.4. MODULUL SSP N MODUL SPI

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

CAPITOLUL 10. COMUNICAIILE SERIALE SINCRONE

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

Comunicaiile seriale asincrone


11.1

Comunicaia 1-Wire

Comunicaia de tip 1-Wire a fost dezvoltat de ctre firma Dallas Semiconductor


i permite transmisia de mic vitez i mic putere a datelor prin intermediul unei
singure linii (de unde i denumirea). Este similar ca i concept cu comunicaia I2 C
dar permite distane mai mari i viteze de transfer mai mici.
Deoarece conine o singur linie,

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

Legea 0: Un robot nu are voie s pricinuiasc vreun ru umanitii sau, prin


neintervenie, s permit ca umanitatea s fie pus n pericol.

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

CAPITOLUL 12. INTRODUCERE N ROBOTIC

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

n timp ce nu exist o definiie universal acceptat pentru termenul de robot, un


robot tipic va avea majoritatea caracteristicilor urmtoare:
este o main electric care are posibilitatea de a interaciona cu obiecte fizice;
conine un program electronic destinat efecturii unei sarcini specifice sau unui
set de sarcini;
poate avea posibilitatea de a percepe sau absoarbe date de la obiecte fizice sau
de la mediul nconjurtor, de a procesa datele i de a rspunde la anumii stimuli.
Prin urmare, un dispozitiv mecanic destinat efecturii unor operaii prestabilite fr
a avea posibilitatea de adaptare nu este considerat, n cele mai multe cazuri, ca fiind un robot. Vehiculele teleghidate sau autoghidate pot fi considerate ca roboi. De
asemenea, mecanismele cu aspect antropomorfic sau zoomorfic (permit controlul membrelor), sunt considerate roboi.
Din punct de vedere evolutiv, roboii aparin unei anumite generaii, astfel:
Generaia 1: roboi cu program cu secven fix de operare. Nu dein senzori i
opereaz n bucl deschis. Secvenele de programare erau stabilite prin piedici
mecanice sau comutatoare de limitare;
Generaia 1.5: roboi cu posibilitate de adaptare la diferite situaii cu ajutorul
unor senzori i a unui sistem servo cu bucl nchis. Dei sunt capabili de a sesiza
nereguli, nu sunt capabili independent de a lua o hotrre fr intervenia unui
operator uman;
Generaia 2: roboi dotai cu sisteme de vedere i recunoatere a vocii, procesoare
inteligente. Acest tip de roboi are posibilitatea de a efectua independent corecii
minore i ajustri;
Generaia 2.5: roboi cu funcii motorii perceptuale. Rspunsul la stimulii senzoriali permit controlul micrii. Dup semnalarea secvenei iniiale de pai, robotul
poate decide singur care sunt urmtorii pai necesari pentru ndeplinirea sarcinii;
Generaia 3: roboi inteligeni, cu capacitate de generalizare. Odat avute informaiile generale despre sarcina de efectuat, aceia decid singuri modalitatea
optim de ndeplinire.
115

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

Fig. 13.1: Exemplu de structur a unui robot autonom mobil comportamental.

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

CAPITOLUL 13. ROBOI AUTONOMI

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.

Comportamentele primitive sunt compuse din dou pri (figura 13.2):


1. O component de control care transform informaia provenit de la senzor n
comenzi pentru actuatori;
2. O component de declanare (trigger) care determin momentul cnd componenta
de control poate opera.
Din punct de vedere al sistemului ca un ntreg, nu exist nicio diferen dac componenta de declanare mpiedic efectuarea de calcule pentru determinarea semnalului
de control sau doar oprete trimiterea acestora ctre actuatori. Uneori, proiectarea
sistemului astfel nct sistemele de control s ruleze continuu conduc la o simplificare
a programului. Dac sistemul de control ruleaz continuu, componenta de declanare
are rolul simplu de a elimina comenzile de ieire atunci cnd situaia o cere.
Comportamentele primare sunt construcii generale care impun unele restricii programului implementat. Exist dou tipuri majore de comportament: servo i balistic.
Comportamentul servo implic existena unei bucle de control de reacie ca i component de control. De exemplu, poziionarea robotului n funcie de o surs de lumin
este un comportament de tip servo. Presupunnd c intensitatea luminoas se modific
atunci cnd robotul se afl n echilibru. n acel moment robotul va reaciona, cutnd
noua poziie de echilibru. n acest caz, circuitul de declanare este tot timpul activ.

119

13.2. VEHICULELE BRAITENBERG

Comportamentul balistic presupune parcurgerea unei traiectorii predictibile odat


ce a fost activat circuitul de declanare. Un exemplu de astfel de comportament este
modul evitare, atunci cnd robotul se lovete de un obiect i, pentru a-i continua
traiectoria, trebuie s fac o serie bine definit de manevre de evitare a obstacolului.
Dup terminarea manevrelor, comportamentul este inhibat prin oprirea circuitului de
declanare.

13.2

Vehiculele Braitenberg

Vehiculele Braitenberg au fost cnvepute de ctre ciberneticianul italian Valentino


Braitenberg pentru a ilustra ntr-un mod evolutiv proprietile unor ageni simplii.
Vehiculele reprezint ceea mai simpl form de inteligen artificial rezultat din interaciunea dintre agent i mediul nconjurtor fr a necesita existena unei memorii
interne, a reprezentrii mediului sau a unor inferene.

Vehiculul 1

Vehiculul 2a

Vehiculul 2b

Vehiculul 2c

Fig. 13.3: Vehiculele Braitenberg de tipul 1 i 2.

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

CAPITOLUL 13. ROBOI AUTONOMI

Se poate considera c vehiculul 2a are un comportament emotiv, n timp ce vehiculul


2b are un comportament la. Vehiculul 2c nu este altceva dect o variant mai sofisticat a tipului 1.

Vehiculul 2a

Vehiculul 2b

Vehiculul 3a

Vehiculul 3b

Fig. 13.4: Vehiculele Braitenberg de tipul 2a, 2b i 3a, 3b.

Vehiculele de tipul 3 au caracter inhibitor asupra senzorilor, spre deosebire de tipul


2 (figura 13.4). Comportamentul lor este complementar, astfel nct tipul 2a i 3b au
comportament identic, la fel ca i tipul 2b i 3a. O variant care s nglobeze toate
tipurile de comportamente simultan este modelul 3c. Acesta conine pe fiecare latur
un set de patru senzori, cuplai doi cte doi la fiecare din cele dou motoare, att
cu caracter inhibitor, ct i excitativ (figura 13.5). Senzorii sunt sensibili la mai multe
tipuri de stimuli, precum lumin, temperatur etc.

Vehiculul 3c
Fig. 13.5: Vehiculul Braitenberg de tipul 3c.

121

13.2. VEHICULELE BRAITENBERG

Fig. 13.6: Comportamente ale vehiculului Braitenberg de tipul 4a.

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

CAPITOLUL 13. ROBOI AUTONOMI

13.3

Analiza strilor finite

Comportamentele de tip servo acioneaz n prezent. Computerul calculeaz exact


ce are de efectuat. Comportamentul prezent nu depinde de aciunile trecute sau de
cele ulterioare. Acest tip de comportament nu are stri.
O stare este un termen care se refer la toate configuraiile posibile ale unui sistem.
n contextul roboticii, existena strilor presupune existena unei memorii. n cazul unui
sistem cu stri, aciunea curent nu este influenat exclusiv de valorile curente ale
senzorilor, ci i de valorile anterioare ale acestora.
Unele sisteme au un numr infinit de stri. De exemplu, modul de aranjare a unei
ncperi are un spaiu infinit de stri deoarece se pot genera mereu noi configuraii. n
cazul sistemelor robotice, acestea prezint un numr finit de stri. Automatul cu stri
finite este un tip de sistem cu numr finit de stri i care are reguli bine definite de
trecere dintre stri.
Un exemplu foarte simplu de automat cu stri finite este un sistem compus dintr-un
bec conectat la o baterie printr-un comutator. Butonul se afl n dou stri posibile,
cuplat sau decuplat. Diagrama strilor conine dou stri posibile (figura 13.8).
Bec

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

13.3. ANALIZA STRILOR FINITE


Buton apsat

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).

Sistemul real poate fi complicat prin introducerea psibilitii schimbrii sensului


de micare al uii n timp ce aceasta se deschide sau nchide. La prima apsare a
butonului ua se oprete din micare, iar la a doua apsare de buton, ua pornete o
micare n sens opus celei anterioare (figura 13.10).
Buton apsat

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

CAPITOLUL 13. ROBOI AUTONOMI

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 sau anclanare comutator


d=1-d

Buton
apsat

Aprins

Scurgere 4.5 minute

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

13.3. ANALIZA STRILOR FINITE

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

latinescul navis = nav s, i agere = mis, care.

127

14.1. NAVIGAT, IA INERT, IAL SI SENZORI INERT, IALI

14.1

Navigat, ia inert, ial si senzori inert, iali

Principiul relativitt, ii generalizate a lui Einstein afirm faptul c, pornind de la


experimente fizice n interiorul unui sistem nchis izolat, se pot msura practic doar
fort, ele ce act, ioneaz ntr-un punct s, i vitezele unghiulare instantanee, nu s, i alte mrimi
legate de mis, carea sau orientarea raportat la restul universului. Prin urmare, msurtorile inert, iale pot doar estima accelerat, iile liniare s, i vitezele unghiulare. Viteza
s, i pozit, ia liniare, precum s, i pozit, ia unghiular, pot fi obt, inute prin integrare.
Sistemele de navigat, ie inert, iale implementeaz procesul de determinare a vitezelor
s, i a pozit, iei pornind de la msurtorile senzorului inert, ial. Principiul de baz utilizat este cel al estimrii. Se utilizeaz un set de trei accelerometre pentru msurarea accelerat, iilor pe trei axe ortogonale, iar valorile acestora sunt integrate de
dou ori pentru obt, inerea pozit, iei. Pentru a compensa rotat, ia corpului, se utilizeaz
trei giroscoape n scopul msurrii vitezelor de rotat, ie n jurul celor trei axe ortogonale. n cazul sistemelor cardanice (gimballed), accelerometrele sunt ment, inute pe o
platform girostabilizat n care un rotor de mare vitez ment, ine orientarea spat, ial
constant. n cazul sistemelor fixe (strapdown), tot, i senzorii sunt fixat, i pe corpul vehiculului iar datele giroscopice sunt utilizate pentru transformarea datelor accelerometrelor n referint, e de navigat, ie. Aceste sisteme pot fi considerate ca fiind sisteme de
navigat, ie stabilizate computat, ional, spre deosebire de cele cardanice, stabilizate fizic
(giroscopic).
Primele sisteme de navigat, ie inert, ial (INS) au fost utilizate de ctre cercettorii
centrului din Peenemnde, Germania, n timpul celui de-al doilea rzboi mondial, pentru ghidarea rachetelor V2 (figura 14.1). Acestea au reprezentat unul dintre primele
exemple de ghidare inert, ial, bazndu-se pe un ansamblu giroscopic care controla altitudinea s, i pe un accelerometru integrator pentru a msura accelerat, ia de-a lungul
axei principale.
INS au devenit din ce n ce mai rspndite n cadrul aplicat, iilor de avionic s, i navale.
Sistemele de navigat, ie inert, ial de mare precizie utilizau, de obicei, sisteme cardanice
girostabilizate, fiind bazate pe componente mecanice cu cost ridicat s, i necesitnd senzori de precizie pentru a compensa problemele majore de drift care apreau datorit
dublei integrri a mrimilor accelerometrelor n scopul determinrii pozit, iei. Cu toate
c pret, ul acestor sisteme a sczut n timp, pentru aplicat, iile de robotic acestea rmn
totus, i costisitoare.
Odat cu dezvoltarea noilor tipuri de senzori s, i cres, terea puterii de calcul, sistemele
de navigat, ie fixe au devenit din ce n ce mai precise s, i mai potrivite pentru aplicat, ii
care cer precizie ridicat. Acestea ofer performant, e ridicate s, i fiabilitate la un pret,
sczut, consum mic de putere, dimensiuni compacte s, i greutate redus.
Dezoltrile recente n domeniul tehnologiei accelerometrelor s, i giroscoapelor a condus la obt, inerea unor noi senzori avnd un pret, de cost sczut. Sistemele de navigat, ie
inert, ial fixe bazate pe aces, ti senzori ofer performant, e potrivite unor aplicat, ii din
domeniul robotilor mobili. Aceste sisteme pot fi utilizate pentru determinarea unor coordonate de pozit, ie relative precise pe termen scurt care, combinate cu unele sisteme
de pozit, ionare externe absolute, limiteaz erorile de drift absolute, oferind un sistem de
128

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

Fig. 14.1: Sistemul de navigat, ie inert, ial al rachetei A-4/V-2.

navigat, ie potrivit. Sistemele de navigat, ie complete iau n considerat, ie anumit, i factori,


precum rotat, ia pmntului, s, i efectueaz compensri. n cadrul aplicat, iilor cu robot, i
mobili, aces, tia nu efectueaz deplasri pe distant, e lungi, astfel nct se pot face unele
simplificri.
Giroscoapele s, i accelerometrele sunt cunoscute ca senzori inert, iali deoarece exploateaz proprietatea de inert, ie. De exemplu, rezistent, la modificarea unui moment,
n cazul giroscopului, sau schimbarea mis, crii liniare n cazul accelerometrului. nclinometrele sunt, de asemenea, senzori inert, iali. Acestea msoar orientarea vectorului
gravitat, ional, vectorul accelerat, ie rezultat act, ionnd n funct, ie de senzor.

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

Fig. 14.2: Schema unui accelerometru elementar.

Un accelerometru simplu poate fi construit ca un sistem elementar de tip arc elastic


cu greutate (figura 14.2). Un corp cu o mas de referint, este suspendat cu ajutorul
unui arc elastic (conform legii lui Hooke), iar pentru control se introduce un amortizor.
n funct, ie de accelerat, ia de la baza cadrului, arcul trebuie s ofere o fort, care s t, in
corpul. Astfel, alungirea arcului permite obt, inerea unei msuri a accelerat, iei. Dispozitivul reprezint un instrument de msurare a fort, ei care rezolv ecuat, ia F = ma, unde
m este masa corpului, iar a este accelerat, ia senzorului, incluznd gravitat, ia.
Sistemul arc-mas amortizat reprezint un sistem mecanic de ordinul doi, iar rspunsul acestui sistem va depinde de valoarea amortizrii. n cazul unei subamortizri, vor
aprea oscilat, ii iar timpul de react, ie va fi foarte mic, n timp ce, n cazul unei supraamortizri, timpul de react, ie va fi foarte mare. Prin urmare, alegerea corect a amortizrii
este un criteriu important.
n practic, accelerometrele variaz din punct de vedere al proiectrii s, i tehnologiei
de fabricat, ie, dar toate au la baz ecuat, ia F = ma. Accelerometrele pot fi electromagnetice, cu vibrat, ie, giropendule, optice, piezorezistive, piezoelectrice, capacitive etc.
Senzorii de accelerat, ie msoar fort, a F care act, ioneaz asupra unui corp de mas m
supus unei accelerat, ii a. n practic, exist sisteme care pot determina fie deplasarea
corpului sub act, iunea accelerat, iei, fie deformarea mecanic a acestuia.
n cazul sistemelor care msoar deplasarea, un corp de mas m, denumit mas
seismic, este atas, at elastic de ctre corpul senzorului a crui accelerat, ie se dores, te a
fi determinat. n cazul unei accelerat, ii constante, fort, a de accelerat, ie este n echilibru
cu fort, a de deformare elastic a arcului avnd constanta c s, i deplasarea x:
F = m a = c x.
Prin urmare, sensibilitatea sistemului de msurare va fi:
130

(14.1)

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

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)

Neglijnd amortizarea (p = 0), frecvent, a de rezonant, a sistemului va fi:


r
0 =

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

unui grad mare de liniaritate.


Sistemele cu bucl nchis de control al pozit, iei ofer o gam dinamic superioar,
limitat doar de valoarea fort, ei de react, ie, precum s, i o frecvent, de rezonant, mai
mare dect n cazul sistemelor necontrolate.
Pentru a evita rezonat, ele excesive care pot cauza interferent, e, sistemele cu deformare necesit amortizri independente de temperatur. n cazul unui coeficient de
amortizare p, factorul de amortizare D rezultat este definit astfel:
D=

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

CAPITOLUL 14. SENZORI DE NAVIGAT, IE


Piezorezistori

consol simpl

Siliciu
consol dubl

Cadru

Mas

consol dubl cu arcuri

Siliciu

Fig. 14.4: Schema unui accelerometru piezorezistiv.

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

Primul prototip de accelerometru pe baz de siliciu a fost conceput n anul 1976.


Acesta dispunea de o singur structur de tip consol (cantilever), era fragil s, i trebuia
amortizat cu lichid. n pofida limitrilor, a reprezentat un pas important tehnologic:
atas, area unor senzori de siliciu pe o diafragm metalic s, i difuzia unor rezistori pe un
singur cristal de siliciu. Structura de baz este prezentat n figura 14.4.
133

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

Senzorii piezoelectrici se bazeaz pe efectul piezoelectric care determin deplasarea


sarcinilor electrice ntr-un cristal piezo sub influent, a unei fort, e externe aplicate acestuia (sistem de tip mas-arc). Aceste tipuri de senzori sunt utilizate ndeosebi pentru
msurarea accelerat, iilor vehiculelor s, i pentru determinarea vitezei de girat, ie. Efectul
piezo poate fi de tip longitudinal, transversal sau de forfecare.
Sub act, iunea unei fort, e F , un material piezoelectric genereaz la suprafat, a sa o
sarcin electric Q. Pe cele dou suprafet, e se conecteaz electrozi. Sarcina este
proport, ional cu stresul mecanic generat de ctre fort, a F . Efectele piezoelectrice longitudinale si transversale intervin n cazul structurilor cu un singur cristal, n timp ce
efectul de forfecare apare n cazul structurilor cu dou cristale cu polaritate opus. n
acest ultim caz, torsionarea structurii bimorfe determin aparit, ia unor tensiuni diferite
pe cele dou cristale, rezultanta acestora fiind proport, ional cu valoarea accelerat, iei.
Senzorii piezoelectrici pot fi modelat, i sub forma unor surse de tensiune cu rezistent,
intern capacitiv. n cazul elementelor ideale, rezistent, a intern are valoare infinit.
Preluarea tensiunii se poate face cu ajutorul unui amplificator electrometric sau a unui
amplificator de sarcini electrice.
n cazul amplificatorului electrometric, tensiunea la cei doi electrozi este amplificat cu ajutorul unui amplificator cu impedant, de intrare foarte mare (figura 14.5).
Sistemul este susceptibil la capacitt, i parazite. Senzorii cu amplificator de sarcin
presupun existent, a unei capacitt, i suplimentare care stocheaz sarcina electric. Prin
urmare, capacitt, ile parazite nu mai influent, eaz valoarea semnalului rezultat. n ambele cazuri, n paralel cu senzorii se conecteaz rezistori.
CM
F

pin
pin

Q
U

Q
U

CP
U = Q/CM

Msurarea tensiunii

Msurarea sarcinii

Fig. 14.5: Semnale proport, ionale cu accelerat, ia pentru senzorii piezoelectrici.


134

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

acceleraie

bar
fixri

celul
bar

celul

Ca

Ca

Cb

Cb

Fig. 14.6: Schema unui accelerometru capacitiv.

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

Semnalul de ies, ire

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

Fig. 14.8: Accelerometru analogic cu dou axe (Analog Devices ADXL322).


136

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

+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

A(g) = (T1/T2 0.5)/12.5%


0g = 50% DUTY CYCLE
T2 = RSET/125MV

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

Fig. 14.10: Accelerometru digital cu comunicat, ie serial (Analog Devices ADIS16006).


137

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

Accelerometrele pot fi utilizate pentru msurarea unghiului de nclinare, caz n care


senzorii se numesc nclinometre sau clinometre. Principiul de operare este similar
unui boloboc, astfel nct pot fi ntlnite n diferite variante tehnologice.
Principiul senzorului este bazat pe un dielectric fluid situat ntre armturile unui
condensator s, i care contine o bul de aer. Atunci cnd senzorul este nclinat, bula
de gaz se misc sub act, iunea gravitat, iei, modificnd valoarea capacit, tilor celor dou
elemente sensibile. Semnalul diferent, rezultat reflect nclinarea relativ pe axa
sensibil. Datorit inert, iei fluidului, a timpului de stabilizare s, i, uneori, a metodei de
msurare, nclinometrele au tendint, a de a avea o ntrziere a rspunsului.
O alt modalitate constructiv este cea care presupune includerea bulei de aer n interiorul unui senzor capacitiv avnd forma unei cupole mprt, ite n patru cadrane. Sub
act, iunea gravitat, iei, pozit, ia bulei de aer se schimb n interiorul cupolei, acest lucru
determinnd modificarea capacitt, ilor din fiecare cadran. Similar cazului precedent,
semnalul diferent, rezultat este proport, ional cu unghiul de nclinare al elementului
sensibil.
La utilizarea nclinometrelor trebuie s se t, in cont, pe lng acceleratia gravitat, ional,
s, i de celelalte accelerat, ii prezente n acel moment, deoarece nclinometrele msoar
vectorului rezultant a tuturor accelerat, iilor de pe acea ax. n cazul nclinrii senzorului cu un unghi fat, de orizontal s, i al existent, ei unei accelerat, ii a n sensul
axei de sensibilitate al senzorului, acesta nu va msura direct valoarea accelerat, iei a,
ci unghiul:
 
a
m = + arctan
.
(14.7)
g
unde g este accelerat, ia gravitat, ional.
138

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

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

Giroscoape cu fibr optic

Datorit dezvoltrii industriei de comunicat, ii, fibra optic a devenit disponibil pe


scar larg, fiind utilizat din ce n ce mai des pentru construirea giroscoapelor la
pret, de cost sczut. Giroscopele cu fibr optic (FOG sau OFG) utilizeaz interferent, a
139

14.3. GIROSCOAPE

bobin de
fibr optic

axa de
sensibilitate

divizor
de fascicul
surs
de
lumin

detector
optic

Fig. 14.13: Principiul de funct, ionare al unui giroscop cu fibr 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

Giroscoape cu structur vibrant

Evolut, ia cea mai dramatic din punct de vedere al costului s, i al miniaturizrii au


avut-o giroscoapele pe micromecanisme vibrante. Acestea au la baz efectul Coriolis
conform cruia un obiect aflat n mis, care liniar s, i situat n interiorul unui cadru de

referint, rotativ, va cpta o accelerat, ie Coriolis


a coriolis care depinde de viteza unghi

ular a cadrului s, i de viteza liniar relativ v a obiectului, orientat perpendicular


pe cei doi vectori:

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

CAPITOLUL 14. SENZORI DE NAVIGAT, IE

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

Sisteme de coordonate omogene

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)

CAPITOLUL 15. MANIPULATOARE ROBOTICE

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).

Cuple cinematice de rotaie / revoluie (R)

Cuple cinematice de translaie / prismatice (P)

Fig. 15.1: Tipuri de cuple cinematice de baz utilizate n manipulatoare.

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

Fig. 15.3: Exemplu de manipulator i reprezentarea sa conceptual (Lynxmotion SES Arm).

15.3

Cinematica

Cinematica este definit ca tiina dinamicii care se ocup cu studiul micrii n


raport cu forele care o cauzeaz. n cadrul cinematicii se studiaz poziia, viteza,
acceleraia i alte derivate de ordin superior.

144

CAPITOLUL 15. MANIPULATOARE ROBOTICE

Cinematica manipulatoarelor se ocup cu urmtoarele probleme de baz, definite


pentru o anumit geometrie a unui manipulator:
1. Cinematica direct: Pentru un numr dat de cuple cinematice, care este pozitiia
efectorului final?
2. Cinematica invers: Care sunt unghiurile cuplelor cinematice necesare pentru o
poziie dat a efectorului final?
3. Ecuaia de micare: Cum se deplaseaz efectorului final pe o traiectorie dat?
4. Jacobianul: Care este viteza de deplasare a efectorului final?

15.3.1

Cinematica direct

Cinematica direct a unui manipulator descrie transformrile sale ncepnd cu baza


i terminnd cu efectorului final. Fiecare transformare parial dintre dou cuple succesive poate fi definit cu ajutorul unei matrice omogene de dimensiune 44. Micarea
complet a ntregului manipulator se determin prin multiplicarea tuturor matricelor
4 4, numrul acestora fiind egal cu numrul gradelor de libertate.
Denavit i Hartenberg au dezvoltat o notaie standard care permite descrierea
oricrei cuple cinematice utiliznd doar patru transformri ntre dou cuple cinematice
succesive, n-1 i n.
Transformarea pornete de la urmtoarele condiii iniiale:
1. Axa zn este axa de rotaie al cuplei cinematice n;
2. Axa xn este paralel la normala comun: xn = zn zn1 ;
3. Axa yn este aleas utiliznd regula minii drepte.
Transformarea este descris cu ajutorul a patru parametrii, cunoscui sub denumirea
de parametri D-H:
rn (lungimea braului): distana dintre zn i zn+1 de-a lungul axei xn ;
n1 (torsiunea braului): unghiul dintre zn1 i zn de-a lungul axei xn1 ;
dn (decalajul braului): distana dintre xn1 i xn de-a lungul axei zn ;
n (unghiul cuplei cinematice): unghiul dintre xn1 i xn de-a lungul axei zn .

Pornind de la cei patru parametrii D-H se construiesc patru transformri, dou


145

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.

rotaii i dou translaii, astfel:

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

Tn = Rot(zn , n ) Trans(0, 0, dn1 ) Trans(rn , 0, 0) Rot(xn1 , n1 )

cos n sin n cos n1 sin n sin n1 rn cos n


sin n cos n cos n1 cos n sin n1 rn sin n

=
0

sin n1
cos n1
dn
0
0
0
1

(15.9)

Determinarea poziiei efectorului final pornind de la prima cupl cinematic se face


146

CAPITOLUL 15. MANIPULATOARE ROBOTICE

prin produsul tuturor matricelor unice de transformare, astfel:


0

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

Fig. 15.5: Exemplu de manipulator articulat cu 3 DoF.

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.

unghiurile n1 sunt nule. De asemenea, toate cuplele cinematice se rotesc n acelai


plan. Prin urmare, distanele dn sunt, de asemenea, nule. Pentru modelarea primei
cuple cinematice se poate considera un punct fix al sistemului de coordonate O0 la
care se leag o bar rigid de lungime nul (L0 =0).

n
1
2
3

n1
0
0
0

rn
L1
L2
L3

dn
0
0
0

n
1
2
3

Matricele transformrilor omogene pentru cele trei cuple cinematice sunt:

cos 1 sin 1 0 L1 cos 1


sin 1 cos 1 0 L1 sin 1
0

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

CAPITOLUL 15. MANIPULATOARE ROBOTICE

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

De exemplu, pentru valorile unghiurilor cuplelor cinematice conform figurii 15.7 cu


1 = 0 , 2 = 90 i 3 = 90 , rezult poziia vrfului P al braului de lungime L3 .
Punctul P va avea coordonatele determinate pe cele trei axe ca fiind Px = L1 + L3 ,
Py = L2 i Pz = 0.

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 ,

2 = 30 i 3 = 60 (figura 15.8). Punctul P are coordonatele Px = 3/2 L1 + L2 +


0.5 L3 , Py = 0.5 L1 3/2 L3 i Pz = 0.

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

Exemplul 21.2. (Manipulator articulat cu 5 DoF )


n figura 15.9 este prezentat o configuraie de manipulator articulat cu cinci grade
de libertate, care prezint un efector final sub forma unui clete (gripper) rotativ.
Modelul este specific manipulatoarelor de tip Lynxmotion SES Arm (figura 15.3).

q3

L3

q4

L4

q5

L5

L2
q2

q1

L1

Fig. 15.9: Exemplu de manipulator articulat cu 5 DoF.

Sistemele de coordonate asociate fiecrei cuple cinematice sunt evideniate n figura


15.10. Coordonatele efectorului final pot fi determinate prin efectuarea unei simple
translaii a coordonatelor determinate ale ultimei cuple cinematice.

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

nmulind cele cinci matrice de transformare omogene ale sistemelor de coordonate


asociate cuplelor cinematice, rezult matricea transformrii omogene 0 T5 . Deoarece
forma este complex, aceasta nu este prezentat explicit, putnd fi determinat numeric
cu ajutorul unui program de simulare.

150

CAPITOLUL 15. MANIPULATOARE ROBOTICE

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.

Matricele transformrilor omogene pentru cele cinci cuple cinematice sunt:

cos 1 0 sin 1 L1 cos 1


sin 1 0
cos 1 L1 sin 1
0

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

Pentru cazul particular n care unghiurile cuplelor cinematice sunt 1 = 0 , 2 = 90 ,


3 = 90 , 4 = 0 , 5 = 0 , se obine urmtoarea matrice de transformare omogen:

c1 c234 s1 c1 s234 c1 (L4 c234 + L3 c23 + L2 c2 + L1 )


s1 c234 c1 s1 s234 s1 (L4 c234 + L3 c23 + L2 c2 + L1 )
0

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

S-ar putea să vă placă și