Cuprins

1 Programarea microcontrolerelor PICmicroTM prin tehnica ICSP 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 3 8 16 24 24 28 31 33 40 40 43 44 46 49 51 54 54 59 68 70 70 77 85 92 99 99 102 103 106

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

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ă ieșire . . . . . . . . . . . . . . . . 5.3.2 Modul PWM în semipunte . . . . . . . . . . . . . . . . . . . 5.3.3 Modul PWM în punte . . . . . . . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

6 Comanda motoarelor de curent continuu 6.1 Motoare servo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Motoare pas-cu-pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Motoare de curent continuu . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Comparatorul analogic. Microcontrolerele PIC12F675 și PIC16F88 7.1 Comparatorul analogic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Referinţa de tensiune . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Convertorul analog-digital. Microcontrolerul PIC16F887 9 Memoria EEPROM 10 Comunicaţiile seriale sincrone 10.1 Comunicaţia SPI . . . . . . . 10.2 Comunicaţia I2 C . . . . . . . 10.3 Comunicaţia PS/2 . . . . . . 10.4 Modulul SSP în modul SPI

. . . .

. . . .

. . . .

. . . .
1

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

CUPRINS

11 Comunicaţiile seriale asincrone 112 11.1 Comunicaţia 1-Wire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 12 Introducere în robotică 12.1 Etimologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.2 Istoric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12.3 Clasificare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Roboţi autonomi 13.1 Comportamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 Vehiculele Braitenberg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.3 Analiza stărilor finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Senzori de navigatie , 14.1 Navigatia inertială si senzori inertiali . . , , , 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 iesire . . . . . . . . . , 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ă 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ă . . . . 113 113 114 115 117 119 120 123 127 128 129 133 134 135 135 136 138 139 139 139 140 142 142 143 144 145 152

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

2

Capitolul 1

Programarea microcontrolerelor PICmicroTM prin tehnica ICSP
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 evoluţie a tehnicii ISP dezvoltată de către firma Microchip în scopul programării microcontrolerelor PICmicroTM OTP și Flash. Utilizarea a doar doi pini de intrare/ieșire pentru transferul serial al datelor este mult mai ușoară și mai puţin intruzivă decât operarea normală a microcontrolerului. Programatorul reprezintă instrumentul hardware care permite transferul un program într-un microcontroler. Acesta poate fi întîlnit într-o varietate de tipuri și forme. Procesul de scriere al unui program începe din momentul în care asamblorul generează codul hex compus din instrucţiuni în cod mașină. Codul hex este preluat intr-un fișier și transferat direct în memoria microcontrolerului. Pentru acesta este necesar dispozitivul hardware (programatorul) care este conectat atât la computerul generator al codului hex (prin interfaţă serială RS232 sau USB), cât și la un număr 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. Interfaţa ICSP conţine 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 făcută pentru a evita problemele ce pot apărea la conectarea inversă a conectorului ICSP. Astfel, conexiunile VCC și GND pot fi conectate la PGC și PGD, fără a apărea probleme.
3

în cazul microcontrolerelor noi. tensiunea de programare este generată intern. Menţinerea se face. astfel încât semnalul de programare generat de către programator are doar rol de semnalizare. Semnalul de programare LVP (PGM) este menţinut în stare 0L pentru preveirea intrării microcontrolerului în modul de programare LVP (Low Voltage Programming). Semnalul de date mai este utilizat și de către microcontroler.5 V și semnalează începutul procesului. Semnalul de date (PGD) și semnalul de ceas (PGC) sunt cele două semnale care efectuează transferul de date propriu-zis. Microcontrolerele mai vechi utilizează acest pin pentru conectare direct la circuitul de programare care actualizează memoria Flash. Prin urmare. în cele mai multe din cazuri. de obicei. în timpul programării sau a verificării. în modul verificare (fiind. după care programatorul pornește semnalul de ceas pentru transferul datelor. Ieșirea din modul LVP se face prin utilizarea unui programator cu tensiune de programare ridicată.5 V) sau VCC +3.Circuit imprimat Microcontroler MCLR/VPP VDD VDD Conector ICSP 1 VPP VDD GND PGD PGC VDD VSS PGD PGC 2 3 4 5 Către circuit Rezistenţe de separare Fig. Microcontrolerele sunt setate din fabrică în modul LVP. semnalul este ignorat. curentul acestui semnal trebuie să fie relativ mare. Tensiunea / semnalul de programare (VPP ) se conectează la pinul MCLR al microcontrolerului. cu ajutorul unei rezistenţe de 10k cuplate la masă (rezistenţă de tip pull down).1: Schema uzuală a interfeţei de programare ICSP . Iniţial semnalul PGD este trecut în mod 1L sau 0L . un stabilizator de tensiune (de tip 7805 sau echivalent). Tensiunea de alimentare (VCC /VDD ) alimentează circuitul electronic în care operează microcontrolerul utilizând. În cazul în care microcontrolerul nu se programează în modul LVP. Curentul furnizat de către stabilizator este limitat (100 mA). prin urmare. bidirecţional). acest semnal ia valoarea de programare (13. 1. 4 . astfel încât la prima utilizare ele pot fi programate în acest mod.

Unul din cele mai întâlnite programatoare de microcontrolere din famila PICmicroTM este modelul PICkitTM 2 produs de către firma Microchip (figura 1.3: Programatorul ICSP PICkitTM 2 produs de Microchip.54 mm. fiind conectat la calculator prin intermediul portului USB. precum RJ-11 telefonic sau Molex SL de 2. Deși acest conector este cel mai frecvent. Programator PICkit 2 TM Po r we t rge Ta sy Bu 6 1 6 1 Conector ICSP Pin 1 2 3 4 5 6 Descriere MCLR/VPP VDD VSS (GND) PGD (ICSPDAT) PGC (ICSPCLK) PGM (Auxiliar) Fig. 5 . 1.2). PROGRAMAREA MICROCONTROLERELOR PICMICROTM PRIN TEHNICA ICSP ® Molex KK Molex SL/C-Grid RJ-11 Fig. În momentul programării unui microcontroler. 1.2: Conectori uzuali ale programatoarelor ICSP .1). Acest model este ușor de utilizat. se mai pot întâlni și alte tipuri de conectori.54 mm (figura 1. programarea poate fi perturbată de circuitele adiacente (figura 1.CAPITOLUL 1. iar la circuitul imprimat cu ajutorul unui conector cu 5 sau 6 pini de tip Molex KK c de 2. în caz contrar. pinii PGC și PGD trebuie izolaţi de restul circuitului cu ajutorul a două rezistenţe de 10k.3).

practic. 6 . fie prin apăsarea butonului roșu al dispozitivului hardware.Aplucaţia software pentru programarea microcontrolerelor permite încărcarea fișierelor HEX și scrierea acestora în memoria program a circuitului. În cazul în care se dorește reprogramarea automată a microcontrolerului de fiecare dată când fișierul HEX este actualizat. Acest lucru semnifică. prin aprinderea LEDului indicator Target al programatorului hardware. furnizarea de către programatorul hardware a tensiunii de alimentare VDD de 5 V. trebuie bifată opţiunea Programmer/Write on PICkit Button din meniul aplicaţiei software. Programatorul permite alimentarea circuitului electronic în care funcţionează microcontrolerul prin bifarea opţiunii On din meniul VDD PICkit 2. Programarea propriu-zisă poate fi efectuată. de asemenea. Acest mod este semnalizat.4). În ultima dintre opţiuni. Bara de meniu Configuraţia microcontrolerului Fereastra de stare Bara de progres Tensiunea VDD Sursa memoriei Memoria program Memoria de date EEPROM Fig. În cazul în care programatorul nu furnizează tensiunea VDD . Detectarea dispozitivului după conectarea programatorului la acesta (în cazul în care este necesară) se face prin intermediul opţiunii Tools/Check Communication din meniul aplicaţiei. fie prin intermediul butonului grafic Write al interfeţei software.4: Fereastra aplicaţiei programatorului PICkit2. aceasta trebuie să fie dată de către alimentarea circuitului aplicaţiei microcontrolerul. În prealabil utilizatorul trebuie să se asigure că microcontrolerul a fost detectat corespunzător. Opţiunea ¬MCLR din meniul VDD PICkit 2 are rolul de a menţine microcontrolerul în stare de resetare înainte și după programarea sa pentru a împiedica execuţia codului. codul acestuia fiind indicat în fereastra aplicaţiei (figura 1. după încărcarea fișierului HEX dorit. se poate utiliza opţiunea Auto Import Hex + Write Device din interfaţa grafică a programatorului. 1.

pentru diferite tipuri de capsule DIP/SOIC ale microcontrolerelor 7 .CAPITOLUL 1.5: Pinii de programare ICSP Microchip. 14 sau 20 pini DIP 20 VDD 1• 2 3 4 5 6 7 8 9 10 PIC16F690 20 19 18 17 16 15 14 13 12 11 VSS (GND) RA0/PGD RA1/PGC RA2/T0CKI/INT RC0 RC1 RC2 RB4 RB5 RB6 PIC12F DIP 14 VDD RA5/OSC1 RA4/OSC2 RA3/MCLR/VPP RC5 RC4 RC3 1• 2 PIC16F684 3 4 5 6 7 14 13 12 11 10 9 8 VSS (GND) RA0/PGD RA1/PGC RA2/T0CKI/INT RC0 RC1 RC2 RA5/OSC1 RA4/OSC2 RA3/MCLR/VPP RC5 RC4 RC3 RC5 RC7 RB7 Microcontrolere cu 28 sau 40 pini RE3/MCLR/VPP 1• 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 DIP 40 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 PIC16F887 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT VDD VSS (GND) RD7 RD6 RD5 RD4 RC7 RC6 RC5 RC4 RD3 RD2 DIP 28 RE3/MCLR/VPP RA0 RA1 RA2 RA3 RA4/T0CKI RA5 VSS RA7/OSC1 RA6/OSC2 RC0/T0CKI RC1 RC2 RC3 1• 2 3 4 5 6 7 8 9 10 11 12 13 14 PIC16F886 28 27 26 25 24 23 22 21 20 19 18 17 16 15 RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT VDD VSS (GND) RC7 RC6 RC5 RC4 RA0 RA1 RA2 RA3 RA4/T0CKI RA5 RE0 RE1 RE2 VDD VSS RA7/OSC1 RA6/OSC2 RC0/T1CKI RC1 RC2 RC3 RD0 RD1 Fig. 1. PROGRAMAREA MICROCONTROLERELOR PICMICROTM PRIN TEHNICA ICSP Microcontrolere cu 8 pini (seria PIC10F) DIP 8 N/C VDD GP2/T0CKI/FOSC4 GP1/PGC 1• 2 3 4 8 7 6 5 GP3/MCLR/VPP VSS (GND) N/C GP0/PGD PIC10F22X Microcontrolere cu 18 pini DIP 18 RA2 RA3 RA4/T0CKI MCLR/VPP VSS (GND) RB0/INT RB1 RB2 RB3 1• 2 3 PIC16F88 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10 RA1 RA0 OSC1 OSC2 VDD RB7/PGD RB6/PGC RB5 RB4 DIP 8 VDD GPIO5 GPIO4 GPIO3/MCLR/VPP 1• 2 3 4 8 7 6 5 VSS (GND) GPIO0/PGD GPIO1/PGC GPIO2 PIC12F675 Microcontrolere cu 8.

CIN-). PIC12F629 Ceas Memorie Periferice Frecvenţa maximă de operare Memorie de program Flash Memorie de date (bytes) Module timer Revenire din modul Sleep la modificarea unui pin Intrări analogice Caracteristici Pini de intrare/ieşire Pini de intrare Rezistenţe de pull-up interne Comparator analogic Interfaţă ICSP Număr de instrucţiuni Capsule — 5 1 Da 1 Da 33 8-pin PDIP.1: Caracteristici comparative ale microcontrolerelor 12F629/675.). 20 MHz extern Fig. SOIC.Capitolul 2 Conectarea la porturile de I/O. 8 . un timer pe 16 biţi (T1CKI. Microcontrolerul PIC12F675 Microcontrolerul PIC12F675 face parte din gama de bază PIC12F a familiei de microcontrolere pe 8 biţi PICmicro. DFN 1024 words 16 SRAM. Microcontrolerul este prevăzut și cu posibilitatea operării cu un semnal de ceas extern (CLKIN) sau prin conectarea unui cuarţ (OSC1. Pinul GP2 poate opera ca pin de intrare cu generare de întreruperi la modificarea stării (INT). 2. Intrările digitale (cu excepţia GP3) conţin rezistenţe de tip weak pull-up cu rolul de a prestabili valoarea de intrare în lipsa unui semnal la intrare. OSC2). De asemenea. Programarea se efectuează prin interfaţă ICSP aferentă. Mai are în compunere un convertor analog-numeric pe 10 biţi cu referinţă internă de tensiune la care pot fi conectaţi 4 dintre pinii de intrare (AN0-AN3) și un comparator analogic (CIN+. GP4GP5) și un singur pin cu funcţie doar de intrare (GP3). sisteme de securitate etc. T1G) precum și un oscilator intern de precizie de 4 MHz (CLKOUT). un timer/counter pe 8 biţi (T0CKI/COUT). TMR1 (16-bit) Da 4 (10-bit ADC) PIC12F675 4 MHz intern. 128 EEPROM TMR0 (8-bit). fiind destinat aplicaţiilor care necesită miniaturizare și operaţii cu un număr limitat de module interne (electrocasnice. conţine un timer Watchdog. telecomenzi. Microcontrolerul PIC12F675 au un număr de 5 pini de intrare/ieșire (GP0-GP2. DFN-S.

Valorile sunt generale. cu un stabilizator de tensiune serie de tip 7805 sau echivalent. valoarea rezistenţei de limitare R3 se va alege conform relaţiei (2.CAPITOLUL 2. 2.3 la portul GP2 al microcontrolerului este conectat un LED 9 . De exemplu.1) Figura 2. setate să opereze în modul digital. În funcţie de tipul LEDului și. cel mai frecvent. pentru un LED de culoare roșie. Schema electrică de programare ICSP a microcontrolerului PIC12F675 este cea specifică tuturor modelelor de microcontrolere cu capsulă DIP cu 8 pini (excepţie face seria PIC10F).4 conţine valorile tensiunii directe și curentul direct nominal în funcţie de tipul și culoarea LEDului utilizat.2) În schema din figura 2.1).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 ieșire disponibile. MICROCONTROLERUL PIC12F675 VDD GP5/T1CKI/OSC2/CLKIN GP4/AN4/T1G/OSC2/CLKOUT GP3/MCLR/VPP 1• 2 3 4 8 7 6 5 VSS GP0/AN0/CIN+/PGD GP1/AN1/CIN-/VREF/PGC GP2/AN2/T0CKI/INT/COUT Fig.2: Configuraţia pinilor pentru microcontrolerul PIC12F675. putând varia în funcţie de tipul particular al unui LED. Alimentarea circuitului se face de la o sursă stabilizată de tensiune de 5 V realizată. implicit. CONECTAREA LA PORTURILE DE I/O. R2 10k 7805 PIC12F675 1N4148 D1 PIC12F675 ICSP 4 7 6 1 VPP VDD GND PGD PGC 6-18 VDC 1 C1 10u 5 VDC 3 C2 100n R1 1 10k C3 100n 8 5 2 5 R3 220 LED1 Fig. rezistenţa R3 va avea valoarea minimă: R3 = 5−22 = 140Ω 0 02 (2. 2. de tensiunea directă (VD ) și de curentul direct (ID ). VDD − VD ID R3 = (2.

3 V White n/a 5500 12-50° 3. perioadele de pauză vor fi de 4 ms în stare aprinsă și 16 ms în stare stinsă. Pentru controlul aprinderii sau stingerii acestuia. bitul TRISIO2 va avea valoarea 0. prin urmare. iar bitul GPIO2 va fi modificat prin program în valoarea 1 dacă se dorește ca LEDul să fie aprins sau în valoarea 0 dacă LEDul este stins.2 V Blue 470 250-4000 12-50° 3. neglijând timpii necesari modificării valorilor și timpul buclei.5: Regiștrii de control a porturilor de I/O ale microcontrollerului PIC12F675. pentru o aprindere cu perioada de 20 ms și un factor de umplere de 20%. valoarea la ieșire trebuie modificată cu o anumită pauză și periodic.0 V UV 400 40 10-20° 3. se dorește aprinderea sa periodică. este necesar ca portul să fie setat în modul de operare ca ieșire. în schimb. informaţia este primită din exterior. Registrul GPIO stochează valoarea informaţiei prezente la fiecare din cei 6 pini. Dacă. 10 . void main() { TRISIO. De exemplu. 2. bitul asociat pinului fiind citit de către microcontroler (mod citire). GPIO.B2=0. pinul GP2 operează ca pin de ieșire. Prin urmare. LEDul va fi aprins continuu.IR Caracteristici optice Lungime de undă (nm) Intensitate (mcd) Unghi de deschidere Caracteristici electrice Tensiune directă (VD) Curent direct (ID) 840 n/a 15-30° 1. valoarea informaţiei este scrisă de către microcontroler în bitul asociat pinului (mod scriere). U (0) U (0) R/W (1) R/W (1) R (1) R/W (1) R/W (1) R/W (1) TRISIO Bit 7 Bit 6 TRISIO5 Bit 5 TRISIO4 Bit 4 TRISIO3 Bit 3 TRISIO2 Bit 2 TRISIO1 Bit 1 TRISIO0 Bit 0 U (0) U (x) R/W (x) R/W (x) R/W (x) R/W (x) R/W (x) R/W (x) GPIO Bit 7 Bit 6 GPIO5 Bit 5 GPIO4 Bit 4 GPIO3 Bit 3 GPIO2 Bit 2 GPIO1 Bit 1 GPIO0 Bit 0 Fig. Valoarea bitului din registru asociat pinului va fi.0 V Yellow 590 170-4000 12-30° 2.2 V Orange 610 220-2000 12-30° 2. Valorile binare 1 sau 0 au semnificaţie electrică la ieșirea pinului (5V sau 0V).B2=1.3 V 20 mA Green 560 400 12-50° 2. Porturile de I/O (intrare/ieșire) sunt controlate direct prin intermediul a doi regiștrii cu funcţie specială.4: Caracteristicile optice și electrice ale LEDurilor.7 V 50 mA Red 640 220-8000 12-30° 2.8 V Fig. iar în cazul în care pinul este de intrare. În cazul în care un pin este de ieșire. 0 dacă pinul respectiv este pin de ieșire sau 1 dacă pinul este pin de intrare. Registrul TRISIO stabilește dacă fiecare din cei 6 pini lucrează ca pin de intrare sau ca pin de ieșire. 2.4-4. } // Pinul GP2 setat ca pin de iesire // Pinul GP2 are valoarea 1 În momentul în care valoarea lui GP2 este stabilită de către program. prin intermediul unei rezistenţe de 220 ohmi. De exemplu.

B5=1. delay_ms(4).B2=0. CONECTAREA LA PORTURILE DE I/O. while (1) { GPIO. } } // // // // 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 prevăzute cu rezistenţe interne de pull-up (weak pull-up) care prestabilesc valoarea de intrare la 1 prin conectarea intrării la tensiunea de alimentare.7). schema electrică poate fi simplificată prin eliminarea rezistenţei de pull-up externe R4 (figura 2. 2. void main() { TRISIO.B5.B2=0. while (1) { GPIO. TRISIO.3 poate fi modificată prin conectarea unui buton la pinul GP5 (figura 2. void main() { TRISIO. În cazul utilizării rezistenţelor de tip weak pull-up. Activarea rezistenţelor interne de tip weak pull-up se efectuează. în stare neapăsată. GPIO. prin intermediul unui registru dedicat WPU (figura 2. La apăsarea butonului. MICROCONTROLERUL PIC12F675 1N4148 D1 PIC12F675 6-18 VDC 1 C1 10u 2 7805 R2 10k ICSP 4 7 6 1 VPP VDD GND PGD PGC 5 VDC 3 C2 100n R1 1 10k C3 100n R4 10k 8 2 5 5 K1 LED1 R3 220 Fig.6). pinul GP5 trebuie să fie alimentat la 5V (valoarea binară 1) prin intermediul rezistenţei de pull-up R4 .B2=GPIO.6: Schema electrică a microcontrolerului PIC12F675 cu un LED și un buton. pinul va fi conectat la masă. Butonul K1 are rolul de a comanda stingerea LEDului atunci când acesta este apăsat.B2=0. delay_ms(16).B2=1.8). Dintre cei 6 11 .CAPITOLUL 2. } } // // // // // // 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. Microcontrollerul va citi continuu valoarea pinului de intrare GP5 și va modifica valoarea lui GP2 în concordanţă. în cazul microcontrolerului 12F675. Prin urmare.

Activarea se face software. 2. microcontrolerul va citi implicit valoarea 1 atunci când butonul nu este apăsat.6 modificată pentru activarea weak pull-up.B5=1. atunci rezistenţa internă de pull-up este dezactivată automat. Problema precedentă poate fi complicată prin folosirea butonului K1 ca un comutator continuu care. cu excepţia pinului GP3.7: Schema electrică 2. // _GPPU activat // Pinul GP2 are activat weak pull-up Dacă unul din pini operează ca ieșire. pini care pot opera ca intrări. while (1) { 12 // // // // Pinul Pinul Pinul Bucla GP2 ca pin de iesire GP2 ca pin de intrare GP2 in stare initiala 1 infinita . lucrul cu rezistenţele interne de pull up setând la 0 bitul GPPU al registrului OPTION_REG.B5=1. global. toţi sunt prevăzuţi cu posibilitatea activării individuale a rezistenţelor de tip weak pull-up. WPU. de asemenea. void main() { TRISIO. U (0) U (0) R/W (1) R/W (1) U (0) R/W (1) R/W (1) R/W (1) WPU Bit 7 Bit 6 WPU5 Bit 5 WPU4 Bit 4 Bit 3 WPU2 Bit 2 WPU1 Bit 1 WPU0 Bit 0 Fig. OPTION_REG.8: Registrul de control al rezistenţelor de tip weak pull-up ale microcontrollerului PIC12F675. Prin urmare.B7=0. să inverseze starea de funcţionare a LEDului. din programul microcontrolerului. la orice apăsare a sa.B2=0. activând bitul corespunzător din registrul WPU și activând. 2.B2=1. GPIO. orice nouă apăsare a butonului modifică starea precedentă a LEDului. În cazul în care pinul GP5 are activată rezistenţa de tip weak pull-up. TRISIO.R2 10k 7805 1N4148 D1 PIC12F675 ICSP 4 7 6 1 VPP VDD GND PGD PGC 6-18 VDC 1 C1 10u 5 VDC 3 C2 100n R1 1 10k C3 100n 8 2 5 2 5 K1 LED1 R3 220 Fig.

Un exemplu concret de debouncing software este cel al utilizării unui contor care este incrementat în buclă de fiecare dată când valoarea de la intrare este cea corespunzătoare apăsării butonului. Testarea și incrementarea se face într-un ciclu continuu la interval de 1 ms din care se iese doar atunci când contorul a ajuns la o valoare suficient de mare (de ex. Pentru eliminarea efectelor sale.. datorită intervalului de timp scurs între momentul apăsării butonului și momentul terminării citirii repetate a valori de intrare. // Inversarea valorii pinul GP2 } } În acest moment. MICROCONTROLERUL PIC12F675 if (GPIO. o singură apăsare fizică a butonului va produce o multitudine de comutări care vor perturba logica de funcţionare a schemei (figura 2. CONECTAREA LA PORTURILE DE I/O. while (cnt<10) { delay_ms(1). marea majoritate a valorilor citite vor avea valoarea 0 (dacă butonul este conectat direct la masă). Acest lucru este cunoscut în limba engleză sub denumirea de switch bouncing.B5==0) // Conditie de apasare buton GPIO.B5==0) cnt++. } // // // // // // Cat timp contorul este sub 10 Intarziere 1 ms Daca butonul este apasat se incrementeaza contorul In caz contrar Se reseteaza contorul 13 .9). 10) pentru a considera fenomenul nedorit ca fiind stabilizat. 2. Astfel. se utilizează mai multe artificii la nivel hardware sau software. în cazul în care este vorba de o apăsare reală a butonului. Tehnicile de debouncing software au ca principiu sondarea în mod repetat pe un interval mic de timp a valorii pinului.CAPITOLUL 2. din cauza imperfecţiunilor contactelor metalice și a timpului mare de reacţie al microcontrolerului.9: Front de impuls perfect (stânga) și cu bouncing (dreapta). if (GPIO. else cnt=0. valoarea se stabilizează prin dispariţia naturală a efectului de bouncing. De asemenea. Fig.B2.B2=~GPIO.

Aceste ultimele erori se pot elimina prin introducerea unui trigger Schmitt.11: Registrul de activare a întreruperilor portului I/O al microcontrollerului PIC12F675. R1 =10k și C1 =100nF). De asemenea. Circuitul analogic anterior funcţionează bine doar pentru eliminarea erorilor ce intervin în momentul apăsării butonului. De asemenea. se preferă utilizarea pinilor de intrare care permit lucrul cu întreruperi. În cazul programelor complexe. detectarea apăsării unui buton nu se mai poate face verificând prin așteptare deoarece se pierde timp important necesar efectuării altor sarcini. 14 . Cu cât cele două valori sunt mai mari. pentru fiecare din cei 6 pini setaţi în modul intrare (figura 2. Prin urmare. este necesară activarea globală a întreruperilor prin setarea valorii 1 a bitului GPIE din registrul INTCON.VCC R2 D1 apăsare VK eliberare 5V 0V 5V R1 VK 10k K1 VIN C1 100n VOUT VIN 0V 5V 0V VOUT Fig.10). Implicit.11). 2. valorile se aleg prin încercări succesive pornind de la niște valori iniţiale (de ex. dar nu exclude erorile rezultate din eliberarea acestuia. 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. unii producători de circuite integrate oferă circuite specializate dedicate (Maxim MAX6816. Dioda D1 are rolul de a elimina rezistenţa de pull-up R2 din calculul timpului de descărcare și de a micșora timpul de încărcare a condensatorului atunci când butonul nu este apăsat. Variantele digitale ale circuitelor de debouncing hardware reprezintă transpuneri ale algoritmului software. cu atât numărul erorilor scade. U (0) U (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) IOC Bit 7 Bit 6 IOC5 Bit 5 IOC4 Bit 4 IOC3 Bit 3 IOC2 Bit 2 IOC1 Bit 1 IOC0 Bit 0 Fig.10: Circuit analogic pentru debouncing. Valoarea celor două componente discrete determină viteza de răspuns a circuitului la apăsarea butonului. MAX6817. dar crește timpul de răspuns al circuitului la apăsarea butonului. 2. MAX6818 sau On Semiconductor MC14490). toate întreruperile sunt dezactivate.. Activarea individuală a întreruperilor se face cu ajutorul biţilor registrului IOC. De obicei.

} void main() { INTCON.B2. să se creeze un program care să permită aprinderea unui LED cu o perioadă de 20 ms și factor de umplere de 50%. În cazul în care butonul este apăsat în acest interval.B2=~GPIO. O schemă conţine un LED verde. 3. INTCON. Să se creeze o schemă electrică și aplicaţia software care să permită aprinderea alternativă a două LEDuri cu ajutorul unui singur buton. Revenirea din subrutină se face fie prin setarea valorii 0 a bitului GPIF. 15 . Să se creeze o aplicaţie de tip semafor cu 3 LEDuri. MICROCONTROLERUL PIC12F675 De fiecare dată când valoarea unui pin de intrare este modificată.3.GPIF=0.CAPITOLUL 2. fie prin scrierea sau citirea unei valori din registrul GPIO. Să se creeze schema electrică și aplicaţia software.6. 2. În acel moment se oprește execuţia codului. Pornind de la schema din figura 2. 4. LEDul verde se aprinde timp de 1 secundă. să se creeze un program care să permită aprinderea unui LED atât timp cât butonul este apăsat. A : 1. IOC. un LED roșu și un buton. CONECTAREA LA PORTURILE DE I/O. 5. se salvează poziţia curentă și se face saltul către subrutina de întrerupere.GPIE=1. microcontrolerul generează o întrerupere.B5=1. Pornind de la schema din figura 2. void interrupt() { GPIO. La interval de 1 secundă LEDul roșu se aprinde pentru o perioadă de 300 ms. } // Procedura de intreupere // Modificarea valorii portului GP2 // Revenirea din intrerupere // Programul principal // Activarea intreruperilor portului // Activarea intreruperii pinului GP5 Chiar și în cazul lucrului cu întreruperi trebuie utilizate tehnici de debouncing pentru evitarea generarării unor întreruperi multiple. iar bitul GPIF al registrului INTCON ia valoarea 1.

cristal cu cuarţ de joasă frecvenţă / mică putere. Microcontrolerul PIC16F88 Microcontrolerele. • LP . în funcţie de model și. configurabile cu ajutorul biţilor FOSC din registrul CONFIG al microcontrolerului (nu este accesibil direct). XT și HS constă în valoarea amplificării inversoarelor interne ale circuitului oscilant care permite reglarea anumitor valori ale frecvenţei de oscilaţie. schema electrică de conectare este cea corespunzătoare unui oscilator Pierce. În cazul lucrului cu oscilator extern. Există două categorii de microcontrolere din punct de vedere al alegerii provenienţei semnalului de ceas. Oscilatoarele sunt destinate generării semnalului de ceas utilizat de către microcontroler pentru execuţia instrucţiunilor (patru perioade per instrucţiune) și pentru funcţionarea perifericelor. • EC . • INTOSC . Sunt posibile până la opt moduri de lucru ale oscilatorului. • RC . • HS .oscilator RC extern (două moduri). Astfel.Capitolul 3 Oscilatoare interne și externe.oscilator RC intern (două moduri). pot opera cu semnal de ceas provenit de la oscilatoare interne (integrate în cip) sau din surse externe (semnal de ceas extern. Majoritatea componentelor oscilatorului sunt integrate în microcontroler. registrul CONFIG poate conţine trei biţi (FOSC2:FOSC0) în cazul existenţei unui oscilator intern sau doar doi biţi (FOSC1:FOSC0) pentru microcontrolere care operează doar cu surse externe de ceas (fără oscilator intern).cristal cu cuarţ sau rezonator ceramic. cristal cu cuarţ)/rezonator ceramic sau oscilator RC. implicit.semnal de ceas provenit din exterior. astfel încât utilizatorul nu are de conectat decât cristalul cu 16 . Valoarea câștigului este direct proprţională cu valoarea curentului dinamic. • XT . Diferenţa dintre modurile LP.cuarţ/rezonator de mare viteză. de configuraţia internă.

În cazul în care generarea unui semnal de ceas foarte precis nu este critică. De asemenea.1: Schema electrică de operare a microcontrolerelor PICmicro cu cristal de cuarţ sau rezonator ceramic extern. de asemenea.3 kΩ și 100 kΩ. 3. MICROCONTROLERUL PIC16F88 C1 OSC1 Logică internă XTAL RS C2 OSC2 RF SLEEP Logică internă PIC16Fxxx Fig.1). timpul de stabilizare al osclaţiilor.2. Pentru valori ale rezistenţei REXT sub 2.CAPITOLUL 3. Valoarea recomandată a capacităţii CEXT este mai mare de 20 pF din motive de zgomot și stabilitate. Rezonator ceramic C1 LP XT 32 kHz 200 kHz 100 kHz 455 kHz 2 MHz 4 MHz HS 8 MHz 10 MHz 16 MHz 20 MHz 15-68 pF 15-68 pF 15-68 pF 10-68 pF 10-68 pF 10-22 pF C2 15-68 pF 15-68 pF 15-68 pF 10-68 pF 10-68 pF 10-22 pF - Cristal de cuarţ C1 68-100 pF 15-30 pF 68-100 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF C2 68-100 pF 15-30 pF 150-200 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF 15-30 pF - Fig. cuarţ sau rezonatorul ceramic și cele două condensatoare cuplate la masă. neutilizat în acest caz. precum tensiunea de alimentare. se poate selecta individual dacă pinul OSC2.3). În modul de lucru cu oscilator RC extern. Se recomandă valori cuprinse între 3. poate fi folosit ca pin liber de tip I/O sau poate furniza la ieșire frecvenţa FOSC /4. OSCILATOARE INTERNE ȘI EXTERNE. Valorile tipice ale componentelor externe sunt prezentate în figura 3. Atunci când sunt utilizate cristale de cuarţ de tip AT.2: Valori uzuale ale condensatoarelor din compunerea oscilatoarelor externe. valorile componentelor REXT și CEXT și temperatura de funcţionare. este necesară includerea unei rezistenţe serie suplimentare RS de ordinul a câţiva MΩ (figura 3. 17 .2 kΩ oscilatorul devine instabil. Rezistenţa de reacţie RF din interior are valori cuprinse între 2 și 10 MΩ. frecvenţa FOSC =1/ROSC COSC variază de la o componentă la alta. Valoarea frecvenţei depinde de o serie de factori. Valorile mari ale capacităţilor măresc stabilitatea oscilatorului dar măresc. 3. se poate utiliza un oscilator RC extern (figura 3. iar pentru valori peste 1 MΩ oscilatorul devine foarte sensibil la zgomot și umiditate.

7 kΩ oferă reacţia negativă pentru asigurarea stabilităţii.4) operează. Semnalul de ceas poate fi furnizat de către un generator extern de ceas.3: Schema electrică de operare a microcontrolerelor PICmicro cu oscilator RC extern. Rezistenţa de 4. 18 . în timp ce potenţiometrul de 10 kΩ deplasează circuitul 74AS04 în regiunea liniară.4) este proiectat pentru a utiliza fundamentala cristalului de cuarţ. Inversorul 74AS04 realizează inversarea de fază cu 180◦ necesară oscilatoarelor de tip paralel.VDD REXT CLKIN CEXT FOSC FOSC/4 CLKOUT PIC16Fxxx Fig. 3. 3. iar rezistenţele de 330 kΩ reazlizează reacţia negativă pentru asigurarea funcţionării inversoarelor în regiunea liniară. inversorul 74AS04 realizează inversarea de fază. XTAL 10k 10k 20pF 20pF Fig.4: Scheme electrice de operare cu oscilator Pierce extern de tip paralel. fie de la un alt circuit generator de semnal de ceas. pe frecvenţa fundamentală a cristalului de cuarţ. +5V 10k 4k7 74AS04 74AS04 PIC16Fxxx CLKIN Către alte disp. În practică se pot întâlni două tipuri de circuite oscilante de tip Pierce: paralel și serie. ca și cel paralel. Similar. Circuitul Pierce paralel (figura 3. Avantajul cuplării unor oscilatoare externe fără a mai implica componentele interne ale microcontrolerului este oferirea posibilităţii utilizării semnalului de ceas pentru sincronizarea mai multor circuite integrate. Circuitul Pierce serie (figura 3. fie de la un oscilator Pierce cuplat la intrările microcontrolerului.

Microcontrolerul poate funcţiona cu semnalul de ceas furnizat de către oscilatoare externe și în modul LP. Biţii SCS1:SCS0 permit selectarea sursei de ceas. 3. 3. Implicit. Pinul OSC1/CLKIN funcţionează ca pin de tip I/O.1uF XTAL Fig.7: Registrul de control al oscilatorului (PIC16F88). 3. MICROCONTROLERUL PIC16F88 330k 74AS04 330k 74AS04 Către alte disp. XT sau HS (în afara modului specific EC). În cazul operării cu oscilatorul intern.6: Registrul de calibrare a frecvenţei oscilatorului intern (PIC16F88). 74AS04 PIC16Fxxx CLKIN 0.5: Scheme electrice de operare cu oscilator Pierce extern de tip serie. 19 . însă curentul consumat de microcontroler crește. Oscilatorul intern poate fi calibrat în jurul unei valori nominale pentru a acorda fin frecvenţa de oscilaţie. acesta putând fii ajustat între valoarea maximă (011111) și minimă (100000). OSCILATOARE INTERNE ȘI EXTERNE. pinul OSC2/CLKOUT poate fi utilizat ca pin de uz general de tip I/O sau poate furniza la ieșire semnal de ceas cu frecvenţa FOSC /4. U (0) U (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) OSCTUNE Bit 7 Bit 6 TUN5 Bit 5 TUN4 Bit 4 TUN3 Bit 3 TUN2 Bit 2 TUN1 Bit 1 TUN0 Bit 0 Fig. situaţie în care nu mai sunt necesare componente externe. Registrul care are rolul de acord fin al frecvenţei este OSCTUNE (pentru microcontrolerul PIC16F88) definit pe 6 biţi (TUN5:TUN0). Pentru a opera cât mai precis.CAPITOLUL 3. U (0) R/W (0) R/W (0) R/W (0) R (0) R/W (0) R/W (0) R/W (0) OSCCON Bit 7 IRCF2 Bit 6 IRCF1 Bit 5 IRCF0 Bit 4 OSTS Bit 3 IOFS Bit 2 SCS1 Bit 1 SCS0 Bit 0 Fig. În această situaţie pinul OSC2 se poate cupla la masă prin intermediul unei rezistenţe pentru reducerea zgomotului. Modul de operare al oscilatorului microcontrolerul PIC16F88 poate fi controlat prin intermediul registrului OSCCON. valoarea registrului este 000000 (frecvenţă centrală). se recomandă decuplarea cu condensatoare a traseelor de alimentare și de masă cât mai aproape posibil de microcontroler. O serie de microcontrolere sunt prevăzute cu oscilator RC intern.

HS. RC. Pe lângă oscilatorul extern primar.25 kHz 8 MHz (INTOSC) 31.9: Configuraţii pentru modurile de lucru cu semnal de ceas (PIC16F88). 20 . FSCM Fig. 111 - FOSC2:FOSC0 111 110 101 100 011 010 001 000 - Fig. XT..25 kHz 125 kHz 250 kHz 500 kHz 1 MHz 2 MHz 4 MHz 8 MHz Oscilator primar EXTRC & CLKO EXTRC INTRC & CLKO INTRC ECIO HS XT LP Timer1 T1OSC 10 10 10 10 10 10 10 10 00 00 00 00 00 00 00 00 01 IRCF2:IRCF0 000 001 010 011 100 101 110 111 000 . 111 000 . SCS1:SCS0 Oscilator intern 31.OSC2 Oscilator primar Sleep FOSC2:FOSC0 SCS1:SCS0 OSC1 T1OSO LP. 3... 3.25 kHz (INTRC) WDT.8: Diagrama semnalului de ceas (PIC16F88).. Biţii IRCF pot fi modificaţi în orice moment al rulării programului.8). EC 00 01 MUX Periferice Oscilator secundar Activare oscilator T1OSCEN Către Timer1 IRCF2:IRCF0 8 MHz 4 MHz Oscilator intern Postscaler 2 MHz 1 MHz 500 kHz 250 kHz 125 kHz 31. iar stabilirea valoarea frecvenţei oscilatorului RC intern se face cu ajutorul biţilor IRCF2:IRCF0 (figura 3. există posibilitatea utilizării unui oscilator secundar. activat prin intermediul bitului T1OSCEN din registrul de timer T1CON.25 kHz T1OSC T1OSI 10 Oscilator intern CPU 111 110 101 MUX 100 011 010 001 000 Oscilator 31.

3.10: Configuraţia pinilor pentru microcontrolerul PIC16F88.11: Caracteristici comparative ale microcontrolerelor PIC16F87/88. În cazul lucrului cu oscilatorul intern. valoarea frecvenţei semnalului de ceas se alege prin intermediul biţilor IRCF ai registrului OSCCON. SSOP. caz în care alimentarea schemei se face prin intermediul programatorului PICkit2 (opţiunea VDD PICkit 2 On). TMR1 (16-bit). 21 . se recomandă deconectarea cristalului de cuarţ pentru a observa funcţionarea cu oscilator intern. LEDul se aprinde și se stinge succesiv la interval de 500 ms cu ajutorul unei bucle infinite. SOIC. conform recomandărilor producătorului din documentaţie. Pentru lucrul cu oscilator extern. OSCILATOARE INTERNE ȘI EXTERNE. 256 EEPROM TMR0 (8-bit). TMR2 (8-bit) Da 7 (10-bit ADC) 18-/20-pin PDIP. Testarea modurilor de lucru ale oscilatoarelor se face pornind de la o schemă simplă de conectare a unui LED la pinul RA0 setat ca ieșire digitală. setarea se omite. MICROCONTROLERUL PIC16F88 RA2/AN2/CVREF/VREFRA3/AN3/VREF+/C1OUT RA4/AN4/T0CKI/C2OUT RA5/MCLR/VPP VSS RB0/INT/CCP1 RB1/SDI/SDA RB2/SDO/RX/DT RB3/PGM/CCP1 1• 2 3 PIC16F88 4 5 6 7 8 9 18 17 16 15 14 13 12 11 10 RA1/AN1 RA0/AN0 RA7/OSC1/CLKI RA6/OSC2/CLKO VDD RB7/AN6/PGD/T1OSI RB6/AN5/PGC/T1OSO/T1CKI RB5/SS/TX/CK RB4/SCK/SCL Fig. În cazul în care se operează fără oscilator extern. Circuitul de alimentare poate lipsi. 28-pin QFN Fig.CAPITOLUL 3. La pinii OSC1 și OSC2 se conectează un cristal de cuarţ de 8 MHz cu două condensatoare de 15 pF. PIC16F87 Ceas Memorie Periferice Frecvenţa maximă de operare Memorie de program Flash Memorie de date (bytes) Module timer Revenire din modul Sleep la modificarea unui pin Intrări analogice Caracteristici Pini de intrare/ieşire Pini de intrare Rezistenţe de pull-up interne Comparatoare analogice Modul AUSART Module CCP (PWM) Interfaţă ICSP Număr de instrucţiuni Capsule — 15 1 Da (Port B) 2 Da 1 Da 35 7168 words PIC16F88 8 MHz intern. Deoarece biţii FOSC2:FOSC0 de setare a tipului oscilatorului ai registrului CONFIG1 nu sunt accesibil utilizatorului. 20 MHz extern 368 SRAM. 3. alegerea lucrului cu oscilator intern sau extern se face din setările iniţiale ale proiectului.

14 este prezentată o variantă de utilizare a unui generator extern de 22 .IRCF2=1.SCS1=0. // Oscilator dat de FOSC2:0 OSCCON.1: Functionare cu oscilator intern (INTRC) de 8 MHz void main() { OSCCON. În figura 3.B0=!PORTA.C1 15pF 15 XTAL 8MHz 16 C2 15pF R1 220 LED1 17 PIC16F88 4 14 5 13 12 1 ICSP VPP VDD GND PGD PGC 5 Fig.IRCF0=1. // IRCF2:IRCF0=111 OSCCON. // Pauza de 500 ms } } Fig. 3. // Ex.3.SCS0=0.B0.IRCF1=1.13: Semnalul de ceas generat de controler la ieșirea OSC2 (stânga) și semnalul generat la ieșirea RA0 (dreapta) (PIC16F88). // Initializare port A while(1) { // Bucla infinita PORTA.12: Schema electrică pentru verificarea modurilor de funcţionare a semnalului de ceas (PIC16F88). // Portul A in mod iesire PORTA=0. // Porturi digitale TRISA=0. // Inversare bit RA0 delay_ms(500). // Ceas de 8 MHz OSCCON. // (SCS1-SCS0=00) OSCCON. // (doar in mod INTRC) ANSEL=0. 3.

FOSC /4/3/2=32. fiind utilizată pentru generarea unui semnal cu frecvenţa determinată prin inversarea în bulcă infinită a valorii de iașire a portului B. Frecvenţa de ceas la intrarea OSC1 este de 32. 3. prin urmare.767 kHz 16 PIC16F88 4 14 5 13 12 1 ICSP VPP VDD GND PGD PGC 4 6 R1 220 LED1 5 Fig.2: Generare impulsuri folosind generator extern de ceas void main() { ANSEL=0. Frecveţa semnalului de ieșire este. în cazul de faţă fiind generatorul cu cristal de cuarţ stabilizat în temperatură DS32kHz produs de Dallas Semiconductor. TRISB=0.15: Semnalul de ceas generat de circuitul DS32kHz la intrarea OSC1 (stânga) și semnalul generat la ieșirea RB0 (dreapta) (PIC16F88). OSCILATOARE INTERNE ȘI EXTERNE. Bucla infinită necesită o instrucţiune de complementare a portului (1 ciclu) și o instrucţiune de salt (2 cicli). ceas.768 kHz. } // // // // Porturi digitale Portul B in mod iesire Initializare port B Inversare valoare port Fig.768/24=1.CAPITOLUL 3.365(3) kHz. PORTB=0. MICROCONTROLERUL PIC16F88 VDD DS32kHz 13 12 32. 3. 23 . 3. while(1) PORTB=~PORTB. numărul total de cicli executat la o singură iteraţie a buclei este de 3.14: Schema electrică pentru verificarea modului de funcţionare cu generator extern (PIC16F88). Prin urmare. // Ex.

4. denumite Timer0 (8 biţi). de fapt. frecvenţa este. Timer1 (16 biţi) și Timer2 (8 biţi). dacă registrul TMR0 este la valoarea sa implicită 0. numărul de biţi al numărătorului. în schimb.1. Selectarea unui prescaler cu raportul de 1:16 implică reducerea frecvenţei semnalului de ceas FOSC /4 la valoarea FOSC /4/16. numărarea nu va mai începe de la 0 ci de la acea valoare. acest număr fiind. Prescalerul PS este ales cu ajutorul biţilor PS2:PS0 ai registrului OPTION_REG. Factorul de multiplicare este reprezentat de diferenţa 256-TMR0.1 Timer0 Modulul Timer0 este definit sub forma unui numărător pe 8 biţi (registrul TMR0) care este conectat la un prescaler programabil pe 8 biţi (biţii PS2:PS0 ai registrului OPTION_REG). Calculul perioadei de timp cu care sunt generate întreruperi de către timerul 0 se face pornind de la formula 4. rezultând în final. Dacă. Prin urmare. 24 · PS · (256 − TMR0) (4. Microcontrolerele din familia PICmicro pot avea. frecvenţa întreruperilor va fi de FOSC /4/16/(256-TMR0).1) .Capitolul 4 Timere Timerele reprezintă module care pot fi utilizate ca și contoare de timp sau numărătoare. registrul TMR0 este preiniţializat cu o anumită valoare. până la trei timere interne de uz general. 4 TTimer0 = FOSC Indiferent de sursa semnalului de ceas (externă sau internă). în funcţie de model. Timere conţin un prescaler care divizează frecvenţa de intrare în timer cu un factor definit prin intermediul biţilor unui registru. FOSC /4. la rândul ei divizată cu factorul 256 (numărul de impulsuri necesar ajungerii numărătorului TMR0 de la valoarea 0 la 255). Registrul TMR0 pe 8 biţi este preîncărcat înainte de pornirea timerului. Ulterior. Incrementarea numărătorului se poate face pe frontul crescător sau cel descrescător al semnalului de ceas utilizat (bitul T0SE). Întreruperile sunt generate atunci când numărătorul dă overflow (trece de la valoarea 0xFF la 0x00) (dacă bitul TMR0IE este setat). aceasta este utilizată de timer sub forma frecvenţei de execuţie a instrucţiunilor. frecvenţa întreruperilor de FOSC /4/16/256. Pot fi definite pe 8 sau 16 biţi. precum și un timer de tip Watchdog.

TIMERE CLKO (= FOSC/4) M U X Magistrală date 8 1 0 M U X Sync 2 cicluri Reg.25 kHz generat intern.CAPITOLUL 4. pentru aprinderea unui LED cu frecvenţa de 1 Hz (practic. 4. De exemplu. 4. 25 .1: Schema bloc a funcţionării modulului Timer0 (PIC16F88). R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) INTCON GIE Bit 7 R/W (1) PEIE Bit 6 R/W (1) TMR0IE Bit 5 R/W (1) INT0IE Bit 4 R/W (1) RBIE Bit 3 R/W (1) TMR0IF Bit 2 R/W (1) INT0IF Bit 1 R/W (1) RBIF Bit 0 R/W (1) OPTION_REG RBPU Bit 7 INTEDG Bit 6 T0CS Bit 5 T0SE Bit 4 PSA Bit 3 PS2 Bit 2 PS1 Bit 1 PS0 Bit 0 Timer0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256 PSA=0 WDT 1:1 1:2 1:4 1:8 1:16 1:32 1:64 1:128 PSA=1 PS2 0 0 0 0 1 1 1 1 PS1 0 0 1 1 0 0 1 1 PS0 0 1 0 1 0 1 0 1 Fig. TMR0 0 1 RA4/T0CKI/C2OUT T0SE T0CS PSA Prescaler Setare bit TMR0IF pe 1 la Overflow 0 Timerul Watchdog (WDT) 31.25 kHz Prescaler pe 16 biți 1 M U X Prescaler pe 8 biți 8 MUX 8-la-1 PS2:PS0 Bit activare WDT PSA 0 MUX 1 PSA WDT Time-out Fig. stingerea și aprinderea lui succesivă cu frecvenţa de 2 Hz). iar registrul TMR0 are valoarea de preîncărcare egală cu 12. prescalerul ales cu un factor de 1:16 (PS2:PS0=011). se poate utiliza un semnal de ceas de 31.2: Regiștrii de control pentru Timer0 (PIC16F88).

PSA=0.IRCF0=0.4. TMR0=14.IRCF2=0. bitul TMR0IF devine 1. INTCON. INTCON.PS1=1. de asemenea. în loc de valoarea calculată 12 se va utiliza 14). Scrierea registrului TMR0 necesită 2 cicluri de instrucţiune.3: Aprindere LED 1 Hz cu oscilator intern de 31.IRCF1=0. PORTA=0.TMR0IF=0. iar acestea nu sunt întotdeauna exacte. În cazul în care prescalerul este legat la Watchdog (PSA=1). OSCCON. ANSEL=0. nefiind luat în considerare (PS=1). el este decuplat de la Timer0. la sfârșitul rutinei de întrerupere acest bit trebuie resetat la 0.PS0=1. timpii suplimentari necesari execuţiei celorlate instrucţiuni din rutina de întrerupere trebuie adăugaţi.B0=!PORTA. TRISA=0. la valoarea iniţială a registrului TMR0.GIE=1.TMR0IE=1.T0CS=0.B0. TIMER0 TTimer0 = 4 · 16 · (256 − 12) = 0 000128 · 16 · 244 = 0 499712s 31250 (4.25 kHz // (IRCF2:IRCF0=000) // Prescaler 1:16 // (PS2:PS1=011) // Utilizare ceas intern Fosc/4 // Prescaler legat la Timer0 // Porturi digitale // Portul A in mod iesire // Initializare port A // Intreruperi globale active // Intreruperi periferice active // Intrerupere Timer0 activa 26 . În momentul generării unei întreruperi. } // // // // Rutina de intrerupere Inversare bit RA0 Valoare presetata TMR0 Resetare flag intrerupere // Ceas intern 31.PEIE=1.25 kHz si Timer0 void interrupt() { PORTA.1.2) De reţinut faptul că există mai multe soluţii posibile pentru rezolvarea aceleiași probleme.3. OPTION_REG. OPTION_REG. INTCON. OPTION_REG. astfel încât la valoarea TMR0 calculată trebuie adăugat 2 (în exemplu anterior. OPTION_REG. Pentru a reveni din întrerupere. INTCON. } void main() { OSCCON. OPTION_REG.PS2=0. OSCCON. // Ex. De asemenea.

INTCON. } // Definire variabila contor // Rutina de intrerupere // Verificare contor // Inversare bit RA0 // Reinitializare contor // Preincarcare TMR0 // Resetare flag intrerupere · PS · (256 − TMR0) · CNT = 0 000128 · 256 · 15 = 0 49152s (4. OPTION_REG. /* Ex.3.PSA=0.TMR0IE=1. prescalerul la 1:256 și utilizând o variabilă contor CNT iniţializată cu valoarea 15.T0CS=0. OPTION_REG. OSCCON.IRCF1=0. } TMR0=255.CAPITOLUL 4. TRISA=0.PS0=1. } void main() { ANSEL=0.TMR0IF=0. PORTA=0.25 kHz.4: Aprindere LED 1 Hz cu oscilator intern de 31. INTCON. cnt=15. OPTION_REG.B0.3) // Porturi digitale // Portul A in mod iesire // Initializare port A cu 0 // Ceas intern 31. OPTION_REG. până la obţinerea perioadei dorite.PS2=1. OSCCON.IRCF0=0. void interrupt() { cnt--. Timer0 si variabila contor */ char cnt=15.PS1=1. if (cnt==0) { PORTA. INTCON. setând registrul TMR0 la valoarea maximă 255.PEIE=1. se poate utiliza o variabilă contor software care este incrementată/decrementată la fiecare întrerupere. TIMERE Dacă perioada întreruperilor obţinute nu este suficient de mare.GIE=1.25 kHz // (IRCF2:IRCF0=000) // (4T=0.IRCF2=0. Problema precedentă poate fi rescrisă. INTCON.B0=!PORTA.000128) // Prescaler 1:256 // (PS2:PS1=111) // Utilizare ceas intern Fosc/4 // Prescaler legat la Timer0 // Intreruperi globale active // Intreruperi periferice active // Intrerupere Timer0 activa 27 . OSCCON. OPTION_REG. 4 TTimer0 = FOSC Precizia este mai mică decât soluţia fără variabilă contor.

2 Timer1 Modulul Timer1 (figura 4.3: Schema bloc a funcţionării modulului Timer1 (PIC16F88). U (0) R (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) T1CON Bit 7 T1RUN Bit 6 T1CKPS1 Bit 5 T1CKPS0 Bit 4 T1OSCEN Bit 3 T1SYNC Bit 2 TMR1CS Bit 1 TMR1ON Bit 0 Fig. un semnal de ceas de 31. în conjucţie cu SCS1:SCS0 și când bitul T1RUN este setat 1. fie de la sursă internă (setat 0). ci prin aproximare. ca generator al semnalului de ceas atunci când microcontrolerul se află în modul SLEEP.4. 4. Dacă divizarea nu se poate face exact. de asemenea.2. Timerul 1 poate fi utilizat. Selecţia semnalului de ceas pentru numărătorul timerului se face cu bitul TMR1CS. În exemplul precedent. 4.3) este definit sub forma unui numărător pe 16 biţi compus din doi regiștrii a câte 8 biţi. dacă este activat bitul TMR1IE al registrului T1CON și timerul este pornit (TMR1ON=1). perioada dorită nu poate fi obţinută exact. de până la 32. 28 . ci doar se poate obţine o aproximare la 499. 8 0 2 T1CKPS1:T1CKPS0 TMR1CS Semnal de ceas sincronizat TMR1H T1OSC 1 T1OSO/T1CKI Sincronizare det Semnal ceas Q Activare oscilator T1OSCEN Ceas intern FOSC/4 T1OSI Fig.4: Registrul de control pentru Timer1 (PIC16F88). Atunci când se operează cu semnal de ceas extern. 4. fie de la sursă externă (setat 1).768 kHz. De reţinut că acest mod de lucru este destinat în principal utilizării cristalelor de cuarţ de mică putere. De asemenea.712 ms. TMR1H și TMR1L. 2. câtul nefiind un număr întreg. Întreruperea este generată la trecerea de la valoarea 0xFFFF la valoarea 0x0000. În ambele situaţii. la pinii T1OSO și T1OSI ai microcontrolerului se poate conecta un oscilator extern secundar care poate fi activat cu bitul T1OSCEN setat 1. 4. trebuie luat în calcul din start valoarea frecvenţei de ceas deoarece prin divizarea acesteaia se obţin perioadele dorite de timp ale întreruperilor. acesta poate fi sincronizat cu semnalul de ceas intern setând bitul T1SYNC la valoarea 0 (modul de lucru sincronizat al timerului 1). TIMER1 Setare bit TMR1IF pe 1 la Overflow TMR1 TMR1L 0 1 TMR1ON On/Off T1SYNC Prescaler 1.25 kHz nu se poate fi divizat exact pentru obţinerea unei perioade de 500 ms.

Prin urmare. scrierea registrului TMR1 nu necesită timp suplimentar. 4. rezultă o valoare maximă de numărare egală cu 216 =65536.5: Determinarea valorilor registrului Timer1 (PIC16F88).TMR1IF=0. TMR1H=194. Deoarece registrul TMR1 este definit pe 16 biţi.6: Schema electrică pentru verificarea funcţionării timerului 1 cu ceas extern (PIC16F88). 65536-15625=49911. Preîncărcarea efectivă a registrului TMR1 se face prin scrierea separată a celor doi octeţi. deci. din această frecvenţă să se obţină 2 Hz este necesar un factor de divizare de 31250/2=15625. TIMERE TMR1H = 194 TMR1L = 247 0 1 0 Bit 8 1 Bit 7 1 1 1 0 1 1 1 Bit 0 TMR1 = 49911 1 Bit 15 1 0 0 0 Fig. TInt Timer1 = 4 FOSC · PS · (65536 − TMR1) = 0 000004 · 8 · 15625 = 0 5s (4. Valoarea de preîncărcare a registrului TMR1 va fi. } // // // // Inversare bit RA0 Preincarcare MSB TMR1 Preincarcare LSB TMR1 Resetare flag intrerupere 29 . 1:4 (10) și 1:8 (11). semnalul utilizat de timer la intrarea sa va fi de 250 kHz. Dacă prescalerul este setat la un factor 1:8.CAPITOLUL 4. TMR1L și TMR1H care compun cei 16 biţi ai întregului registru (figura 4. PIC16F88 4 14 5 13 12 R2 10k 1 ICSP VPP VDD GND PGD PGC FOSC=1MHz 17 R1 220 LED1 5 Fig. Obţinerea aceleiași frecvenţe de întrerupere de 2 Hz ca în cazul exemplelor cu timerul 0 se face conform algoritmului următor.B0=!PORTA.4) În cazul timerului 1. Valoarea prescalerului se stabilește cu ajutorul biţilor T1CKPS1 și T1CKPS0 ai registrului T1CON. 1:2 (01). de această dată. numărătorul TMR1 va trebui să numere 15625 impulsuri până la generarea unui overflow.B0.5: Aprindere LED 1 Hz cu oscilator intern de 1 MHz si Timer1 void interrupt() { PORTA. // Ex. Pentru ca. Considerând.3. Valorile posibile sunt 1:1 (00). 4. TMR1L=247. frecvenţa semnalului de ceas de 1 MHz. la ieșirea acestuia va rezulta o frecvenţă de 31250 Hz. PIR1.5).

T1CON.IRCF0=0.000004) // Preincarcare MSB TMR1 // Preincarcare LSB TMR1 // // // // // Utilizare ceas intern Fosc/4 Prescaler 1:8 (T1CKPS1:T1CKPS0=11) Pornire Timer1 Dezactivare sincronizare externa // Intreruperi globale active // Intreruperi periferice active // Dezactivare Timer0 // Interuperere Timer1 activa Atunci când se utilizează semnal de ceas extern (provenit de la portul T1OSI). ci este utilizată ca atare. OSCCON. Pentru obţinerea unor întreruperi cu frecvenţa de 2 Hz pornind de la un semnal de ceas extern de 1 MHz. TIMER1 void main() { ANSEL=0. T1CON.TMR1ON=1. TRISA=0. TRISA=0. păstrând valoarea prescalerului de 1:8.TMR0IE=0. OSCCON.TMR1CS=0. Astfel. PORTA=0. frecvenţa nu mai este divizată la 4.IRCF1=0.PEIE=1. } void main() { ANSEL=0.IRCF2=1.B0.2. } // Porturi digitale // Portul A in mod iesire // Initializare port A cu 0 // Ceas intern 1 MHz // (IRCF2:IRCF0=100) // (4T=0. INTCON. INTCON.6: Aprindere LED 1 Hz cu ceas extern de 1 MHz si Timer1 void interrupt() { PORTA. T1CON.T1CKPS0=1. OSCCON.T1CKPS1=1.GIE=1.TMR1IE=1. PIE1. registrul TMR1 va fi încărcat cu valoarea 65536-62500=3036 (TMR1L=220 și TMR1H=11).B0=!PORTA.3. PORTA=0. TMR1L=247. INTCON. PIR1. T1CON.NOT_T1SYNC=1. rezultă că este nevoie de un factor de divizare de 62500. TMR1L=220.TMR1IF=0. Selectarea semTimer1 Timer1 nalului de ceas extern se face setând la 1 bitul TMR1CS. iar timerul funcţionează în modul numărător (perioada întreruperilor devine TExt =TInt /4).4. // Ex. 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 . T1CON. TMR1H=194. TMR1H=11.

TMR1L=220. Impulsurile de reset ajung la un postscaler pe 4 biţi al cărui factor de divizare este stabilit. utilizând un semnal de ceas FOSC =500 kHz și setând la valorile maxime prescalerul (1:16) și.7: Registrul de control pentru Timer2 (PIC16F88). Calculul perioadei de generare a întreruperilor de către timerul 2 se face pornind de la formula 4. Timerul 2 conţine două registre pe 8 biţi. T1CON.T1CKPS0=1. iar registrul TMR2 se resetează la valoarea 0. PIE1. respectiv. Semnalul de ceas utilizat este doar cel intern (FOSC /4).TMR0IE=0. între 1:1 (0000) și 1:16 (1111). TMR2 și PR2. TIMERE TMR1H=11. Resetarea registrului TMR2 necesită un ciclu de instrucţiune.8) este compus dintr-un prescaler și un postscaler.TMR1CS=1.GIE=1. 4 TTimer2 = FOSC Pentru generarea unor întreruperi cu frecvenţa de 2 Hz.5. T1CON.T1CKPS1=1.TMR1IE=1. care poate fi divizat de un prescaler (controlat prin biţii T2CKPS1 și T2CKPS0 ai registrului T2CON) cu factorii 1:1 (00). } // Preincarcare MSB TMR1 // Preincarcare LSB TMR1 // // // // // Utilizare ceas extern Prescaler 1:8 (T1CKPS1:T1CKPS0=11) Pornire Timer1 Dezactivare sincronizare externa // Intreruperi globale active // Intreruperi periferice active // Dezactivare Timer0 // Interuperere Timer1 activa 4. T1CON.CAPITOLUL 4. INTCON. 1:4 (01) sau 1:16 (10). astfel încât acesta trebuie luat în consideraţie la calculul valorii preîncărcate în registrul PR2 prin scădere cu o unitate. Registrul TMR2 este incrementat de la 0 până ajunge la aceiași valoare care există preîncărcată în PR2 și se generează un impuls. INTCON.TMR1ON=1. prin intermediul biţilor TOUTPS3-TOUTPS0. INTCON.3 Timer2 Modulul Timer2 (figura 4. T1CON. T1CON. postscalerul 31 · PreS · PR2 · PostS (4. 4. U (0) R (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) T2CON Bit 7 TOUTPS3 Bit 6 TOUTPS2 Bit 5 TOUTPS1 Bit 4 TOUTPS0 Bit 3 TMR2ON Bit 2 T2CKPS1 Bit 1 T2CKPS0 Bit 0 Fig.5) .B3=1.PEIE=1.

4. OSCCON.TOUTPS1=1. 4. (1:16). OSCCON. T2CON. OSCCON.TOUTPS3=1.IRCF2=0.T2CKPS1=1.B0.3. T2CON. PR2=243.TOUTPS0=1. T2CON. TRISA=0. T2CON. TIMER2 Setare bit TMR2IF pe 1 Ieșire TMR2 Reset TMR2 reg Comparator Prescaler 1:1. Considerând ciclul suplimentar necesar pentru resetarea regiștrilor. 1:16 2 T2CKPS1:0 FOSC/4 Postscaler 1:1 la 1:16 4 TOUTPS3:0 EQ PR2 reg Fig.T2CKPS0=0. T2CON. este necesar un factor de divizare de 500000/4/16/16/2≈244.TOUTPS2=1.B0=!PORTA. 1:4. T2CON. TTimer2 = 4 · 16 · 244 · 16 = 0 499712s 500000 // Ex.TMR2ON=1.8: Schema bloc a funcţionării modulului Timer2 (PIC16F88). rezultă că registrul PR2 va trebui preîncărcat cu valoarea 243. T2CON.TMR2IF=0.IRCF1=1. PORTA=0.IRCF0=1. } void main() { ANSEL=0. // Inversare bit RA0 // Resetare flag intrerupere // Porturi digitale // Portul A in mod iesire // Initializare port A cu 0 // Preincarcare PR2 // Ceas intern 500 kHz // (IRCF2:IRCF0=011) // Postscaler 1:16 // (TOUTPS3:TOUTPS0=1111) // Prescaler 1:16 // (T2CKPS1:T2CKPS0=10) // Pornire Timer2 32 . PIR1.3.7: Aprindere LED 1 Hz cu oscilator intern de 500 kHz si Timer2 void interrupt() { PORTA.

TRISA=0. T2CON=0b01111110. PIR1. INTCON. void interrupt() { PORTA=~PORTA. inversarea valorii bitului RA0 se poate face prin inversarea întregului port. } // Inversare port A // Resetare flag intrerupere // // // // // // // Porturi digitale Portul A in mod iesire Initializare port A cu 0 Preincarcare PR2 Setari Timer2 Setari intreruperi globale Interuperere Timer2 activa 4.CAPITOLUL 4. INTCON. PORTA=0.TMR0IE=0.TMR2IE=1. fiecare bit a fost explicitat în cod cu denumirea și valoarea sa. Activarea sau dezactivarea hardware a modulului Watchdog se face prin intermediul bitului WDTEN din registrul CONFIG (nu este accesibil direct). biţii care aparţin unui singur registru pot fi scriși cu ajutorul unei singure instrucţiuni.TMR2IF=0. TIMERE INTCON. microcontrolerele dispun de un timer de tip Watchdog.TMR2IE=1. Semnalul de ceas al timerului Watchdog este furnizat de un oscilator intern RC care funcţionează independent de semnalul de ceas al microcontrolerului. Timer 1 și Timer2. În practică. } void main() { ANSEL=0.4 Watchdog Timer În afara timerelor uzuale Timer0. PIE1. spre deosebire de timerele 0 și 1.PEIE=1. nu mai este necesară rescrierea registrului cu valoarea de preîncărcare la fiecare generare de întrerupere. La finalul intervalului de timp se generează un semnal denumit WDT Time-out care. determină un RESET al dispozitivului.GIE=1. modulul se poate activa sau dezactiva software cu ajutorul bitului SWDTEN al registrului de 33 . Principiul de funcţionare al unui Watchdog constă în divizarea unui semnal de ceas cu un anumit factor care determină scurgerea unui interval de timp. astfel încât timerul să funcţioneze chiar și când semnalul de ceas lipsește sau dispozitivul este în modul SLEEP. PIE1. Dacă ceilalţi biţi ai portului A nu sunt utilizaţi. PR2=243. De asemenea. Pentru exemplificarea valorilor individuale. la rândul său. INTCON=0b11000000. Acesta are rolul de a reseta microcontrolerul după un anumit timp considerat ca fiind rezultat dintr-un presupus blocaj funcţional. } // Intreruperi globale active // Intreruperi periferice active // Dezactivare Timer0 // Interuperere Timer2 activa În cazul timerului 2.

4. TWDT = 34 1 131072 · 128 · 1024 = = 4 194304s 31250 31250 (4. Atunci când modulul este activat hardware. SWDTEN nu are efect.25 kHz WDTPS3:0 1 8 PSA 2 PS2:0 la TMR0 0 1 PSA WDTEN (din CONFIG) SWDTEN (din WDTCON) WDT Time-out Fig. TWDT = 1 · WDTPS · PS 31250 (4.4.9: Schema bloc a funcţionării modulului Watchdog (PIC16F88). U (0) U (0) U (0) R/W (0) R/W (1) R/W (0) R/W (0) R/W (0) WDTCON Bit 7 Bit 6 Bit 5 WDTPS3 Bit 4 WDTPS2 Bit 3 WDTPS1 Bit 2 WDTPS0 Bit 1 SWDTEN Bit 0 Fig. control WDTCON. dacă prescalerul WDT are factorul de divizare de 1:128 și prescalerul PS are factorul 1:1024.8) . activarea software putând fi folosită doar dacă cea hardware a fost iniţial dezactivată. Factorul de divizare al prescalerul PS este controlat cu ajutorul biţilor PS2:PS0 ai registrului OPTION_REG. WATCHDOG TIMER Semnal de ceas TMR0 0 Prescaler PS Prescaler WDT programabil pe 16 biți 4 Semnal de ceas INTRC de 31. după regula: WDTPS = 32 · 2WDTPS3-WDTPS0 (4.19s.10: Registrul de control al timerului Watchdog (PIC16F88). 4. 4. asociat în acest caz. în calculul intervalului de timp se ia în consideraţie și prescalerul PS al modulului Timer0. Timpul de generare al resetului se determină cu ajutorul formulei 4.8. atunci microcontrolerul va genera un RESET la un timp scurs de 4.7) De exemplu.6) Valoarea prescalerului WDT se stabilește cu ajutorul biţilor WDTPS3-WDTPS0 din registrul WDTCON. Dacă bitul PSA este setat la valoarea 1. modulului Watchdog.

OPTION_REG.PS2=1. OSCCON. Acest lucru se face software.9: Watchdog cu stergere periodica void main() { char i. PORTA.WDTPS1=0. WDTCON.CAPITOLUL 4. OSCCON.IRCF0=0. trebuie avut grijă ca timerul Watchdog să nu ajungă niciodată să genereze impulsul de Time-out. 3.PSA=1. OSCCON. delay_ms(100). OSCCON. PORTA=0. WDTCON.8: Watchdog cu reset la 4.IRCF2=1. i<3.WDTPS3=0. i++) { PORTA.SCS0=0.IRCF0=0.SCS0=0. OPTION_REG. OSCCON. // // // // Oscilator intern (SCS1-SCS0=10) Ceas intern 1 MHz (IRCF2:IRCF0=100) 35 . } while (1) {} } } // // // // Oscilator intern (SCS1-SCS0=10) Ceas intern 1 MHz (IRCF2:IRCF0=100) // // // // // // Porturi digitale Portul A in mod iesire Initializare port A Prescaler PS legat la WDT Prescaler PS 1:128 (PS2:PS1=111) // Activare software WDT // Prescaler WDTPS 1:1024 // (WDTPS3-WDTPS0=0101) // Bucla infinita // Blink LED 3x // Bucla infinita inchisa Pentru a preveni resetarea microcontrolerului.WDTPS0=1.B0=1. OSCCON. TRISA=0. // Ex.19 s void main() { char i.PS0=1.SCS1=1. OSCCON. OPTION_REG.PS1=1. ANSEL=0.WDTPS2=1. OSCCON. TIMERE // Ex. WDTCON. OSCCON. WDTCON. prin ștergerea periodică a prescalerului WDT. OSCCON. delay_ms(100). WDTCON.IRCF2=1.B0=0.SCS1=1.IRCF1=0.SWDTEN=1. while (1) { for (i=0. OPTION_REG.IRCF1=0. 3.

delay_ms(100).PS1=1. } asm {CLRWDT}.B0=1. OPTION_REG.PS2=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. WDTCON. WDTCON. PORTA.B0=0. WATCHDOG TIMER OPTION_REG. delay_ms(100).4.SWDTEN=1.4.PSA=1.WDTPS1=0. WDTCON. 36 . while(1) { for (i=0. WDTCON. OPTION_REG. PORTA=0.WDTPS3=0.PS0=1. i++) { PORTA. OPTION_REG.WDTPS0=1. } } E : // Prescaler PS legat la WDT // Prescaler PS 1:128 // (PS2:PS1=111) // Activare software WDT // Prescaler WDT 1024 // (WDTPS3-WDTPS0=0101) // // // // // Porturi digitale Portul A in mod iesire Initializare port A Bucla infinita Blink LED 3x // Stergere prescaler WDTPS 1. TRISA=0. i<3.5 ms. ANSEL=0. WDTCON.WDTPS2=1. a) se determină valoarea semnalului de ceas 4·TOSC : 4 · TOSC = 4 = 10−6 s 4 · 106 b) se determină valoarea raportului TTIMER0 /4·TOSC : TTIMER0 0 5 · 10−3 n= = = 1 · 500 = 2 · 250 = 4 · 125 4 · TOSC 10−6 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.

0 ms.0 ms.5 ms. a) se determină valoarea semnalului de ceas TOSC : TOSC = 1 = 50 · 10−9 s 20 · 106 37 .CAPITOLUL 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. a) se determină valoarea semnalului de ceas 4·TOSC : 4 · TOSC = 4 = 500 · 10−9 s 6 8 · 10 b) se determină valoarea raportului TTIMER1 /4·TOSC : n= TTIMER1 0 5 · 10−3 = 1 · 1000 = 2 · 500 = 4 · 250 = 8 · 125 = 4 · TOSC 500 · 10−9 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 biţi se rescrie sub forma celor doi regiștrii pe 8 biţi: TMR1L=131 și TMR1H=255. 3. 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. a) se determină valoarea semnalului de ceas TOSC : TOSC = 1 = 250 · 10−9 s 4 · 106 b) se determină valoarea raportului TTIMER0 /TOSC : n= 10−3 TTIMER0 = = 4000 = 16 · 250 = 32 · 125 TOSC 250 · 10−9 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. 4. Să se determine parametrii de lucru ai modulului Timer1 pentru o frecvenţă de ceas a oscilatorului intern FOSC = 8 MHz și perioada TTIMER1 = 0.

25 ms. 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. Să se determine parametrii de lucru ai modulului Timer2 pentru o frecvenţă de ceas a oscilatorului extern FOSC = 32. a) se determină valoarea semnalului de ceas 4·TOSC : 4 · TOSC = 4 = 8192−1 s 32768 b) se determină valoarea raportului TTIMER2 /4·TOSC : n= 38 TTIMER2 31 25 · 10−3 = = 256 4 · TOSC 8192−1 . WATCHDOG TIMER b) se determină valoarea raportului TTIMER1 /TOSC : n= TTIMER1 10−3 = = 1 · 20000 = 2 · 10000 = 4 · 5000 = 8 · 2500 TOSC 50 · 10−9 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 biţi se rescrie sub forma celor doi regiștrii pe 8 biţi: TMR1L=224 și TMR1H=177.768 kHz și perioada TTIMER2 = 31. 5. 6.4. a) se determină valoarea semnalului de ceas 4·TOSC : 4 · TOSC = 4 = 2 · 10−6 s 2 · 106 b) se determină valoarea raportului TTIMER2 /4·TOSC : n= 100 · 10−6 TTIMER2 = = 1 · 50 = 2 · 25 4 · TOSC 2 · 10−6 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.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. a) se determină valoarea semnalului de ceas TOSC : TOSC = 1 = 31250−1 s 31250 b) se determină valoarea raportului TWDT /TOSC : n= TWDT 2 = 62500 = TOSC 31250−1 c) se alege valoarea prescalerului PS: PS = 1 : 1 d) se determină valoarea cea mai apropiată a prescalerului WDTPS: WDTPS = 1 : 65536 Valoarea obţinută a perioadei TWDT este: 1 TWDT = FOSC · PS · WDTPS = 1 · 1 · 65536 = 2 097152 s 31250 39 . Să se determine parametrii de lucru ai modulului Watchdog pentru o perioadă de reset TWDT de aproximativ 2 s.CAPITOLUL 4. 7.

Triggerul de eveiment special este generat la o potrivire de comparaţie și are ca efect resetarea timerului 1 și începerea unei conversii A/D (dacă modului A/D este activat). cu excepţia efectului triggerului de eveniment special. • fiecare front crescător (CCPxM3:CCPxM0=0101). • registru de comparaţie pe 16 biţi. Modulul CCP2 este compus din doi regiștrii pe 8 biţi (CCPR2L și CCPR2H) și este controlat prin registrul CCP2CON. Microcontrolerele pot conţine unul. • fiecare al 4-lea front crescător (CCPxM3:CCPxM0=0110).1 CCP în modul captură Operarea în modul captură a unui modul CCP presupune citire valorii pe 16 biţi a registrului TMR1 și scrierea sa în regiștrii CCPRxH:CCPRxL atunci când se detectează un eveniment la pinul CCPx (setat ca intrare digitală). Modulul CCP1 este compus din doi regiștrii pe 8 biţi (CCPR1L și CCPR1H) și este controlat prin registrul CCP1CON. • fiecare al 16-lea front crescător (CCPxM3:CCPxM0=0111). Microcontrolerul PIC16F684 Modulele CCP (Capture/Compare/PWM) sunt compuse dintr-un registru pe 16 biţi care poate fucţiona într-unul din următoarele moduri: • registru de captură pe 16 biţi. • registru PWM master/slave pe 10 biţi.Capitolul 5 Module CCP (Capture/Compare/PWM). Prin eveniment se înţelege una din următoarele situaţii: • fiecare front descrescător (CCPxM3:CCPxM0=0100). două sau mai multe module CPP. Ele sunt identice ca mod de operare. Triggerul de eveniment special este generat la o potrivire de comparaţie și are ca efect resetarea timerului 1. 5. 40 .

5. 5. 41 . timerul 1 trebuie să opereze în modul sincronizat. Pentru captura valorii registrului TMR1. 16 Pinul CCPx and Edge Detect CCPRxH Activare capturã CCPRxL TMR1H Qs CCPxCON3:0 TMR1L Fig. Apariţia unui nou eveniment determină suprascrierea valorii TMR1 în registrul CCPRxH:CCPRxL.1: Schema bloc a funcţionării modulului CCP în modul captură. MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684 Setare bitul CCPxIF pe 1 (PIRx) Prescaler ÷ 1.4 butonul SW1 este utilizat pentru generarea de impulsuri la intrarea CCP1 a microcontrolerului PIC16F684.3: Configuraţia pinilor pentru microcontrolerul PIC16F684. Atunci când apare un eveniment. la pinul RC0 setat ca ieșire se conectează un LED care își va inversa starea la fiecare întrerupere. R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) CCP1CON P1M1 Bit 7 P1M0 Bit 6 DB1B1 Bit 5 DB1B0 Bit 4 CCP1M3 Bit 3 CCP1M2 Bit 2 CCP1M1 Bit 1 CCP1M0 Bit 0 Fig. Modulul CCP1 este setat să lucreze în modul captură cu generarea unui eveniment la fiecare al 4-lea impuls. VDD RA5/T1CKI/OSC1/CLKIN RA4/AN3/T1G/OSC2/CLKOUT RA3/MCLR/VPP RC5/CCP1/P1A RC4/C2OUT/P1B RC3/AN7/P1C 1• 2 PIC16F684 3 4 5 6 7 14 13 12 11 10 9 8 VSS RA0/AN0/C1N+/ICSPDAT/ULPWU RA1/AN1/C1N-/ICSPCLK RA2/AN2/T0CKI/INT/C1OUT RC0/AN4/C2IN+ RC1/AN5/C2INRC2/AN6/P1D Fig.2: Registrul de control al modulului Enhanced CCP1 (PIC16F684). Pentru a evita generarea unor întreruperi false la schimbarea modului de captură. 5. bitul CCPxIF al registrului PIRx ia valoarea 1 (trebuie șters ulterior din software).CAPITOLUL 5. Alegerea evenimentului se face prin intermediul biţilor CCPxM3-CCPxM0 ai registrului de control CCPxCON (unde x reprezintă indicele modulului. În exemplul din figura 5. Deoarece evenimentulul generează automat o întrerupere periferică (CCP1IF devine 1). x=1 sau x=2). numărat pe front descrescător (CCP1M3:CCP1M0=0110). 4. bitul CCPxIE al registrului PIEx trebuie setat pe 0.

PIE1.PEIE=1. 5.SCS=1. 4.CCP1M1=1. 42 .IRCF2=1.GIE). ANSEL=0.IRCF0=0.CCP1M0=0.4: Schema de principiu a studiului funcţionării modulului CCP1 în modul captură (PIC16F684). CCP1CON.5. } // Subrutina de intreruperi // Inversare port A // Resetare flag intrerupere CCP1 // Activare intreruperi globale // Activare intreruperi periferice // Activare intrerupere CCP1 // // // // Oscilator intern Oscilator intern Ceas intern 1 MHz (IRCF2:IRCF0=100) // // // // // // // // Porturi digitale Portul A in mod iesire Portul C in mod intrare Initializare port A Eveniment la fiecare al 4-lea front descrescator de impuls de la pinul CCP1 (CCP1M3:CCP1M0=0110) În cazul utilizării întreruperilor modulelor CCP trebuie activate atât întreruperile globale (INTCON.CCP1IF=0. CCP1CON.1. CCP ÎN MODUL CAPTURĂ R2 10k SW1 5 4 1 14 13 12 PIC16F684 1 ICSP VPP VDD GND PGD PGC R1 LED1 11 220 5 Fig. PIR1. INTCON. // Ex. TRISA=0x00.OSTS=0. CCP1CON. OSCCON. } void main() { INTCON.GIE=1. PORTA=0.CCP1M2=1. OSCCON. OSCCON.CCP1M3=0. OSCCON.PEIE).1: Generare intrerupere cu CCP1 in mod captura la 4 impulsuri void interrupt () { PORTA=~PORTA. OSCCON.CCP1IE=1. cât și cele periferice (INTCON. TRISC=0xFF.IRCF1=0. CCP1CON.

astfel: • trece forţat în starea 1 (CCPxM3:CCPxM0=1000).5: Schema bloc a funcţionării modulului CCP în modul comparare. • râmâne neschimbat (CCPxM3:CCPxM0=1010).2 CCP în modul comparare În modul comparare. pinul CCPx (setat ca ieșire digitală) se poate modifica.CAPITOLUL 5. Atunci când cele două valori se potrivesc. Ieșirea triggerului de evenimentul special resetează registrul TMR1. În acest mod de lucru. PIC16F684 4 1 14 13 12 1 ICSP VPP VDD GND PGD PGC R1 5 220 LED1 5 Fig. MODULE CCP (CAPTURE/COMPARE/PWM). 5. un trigger hardware intern poate fi utilizat pentru iniţierea unor acţiuni (CCPxM3:CCPxM0=1011). Unele module CPP pot fi utilizate pentru declanșarea unei conversii A/D (dacă modulul A/D este activat).6: Schema de principiu a studiului funcţionării modulului CCP1 în modul comparare (PIC16F684). 43 . 5. Acest mod de lucru este util atunci când se dorește generarea unei perioade exacte de timp. • trece forţat în starea 0 (CCPxM3:CCPxM0=1001). valoarea registrului pe 16 biţi al modulul CCPx este comparat continuu cu valoarea din registrul TMR1. determinate prin intermediul valorii existente în registrul TMR1. MICROCONTROLERUL PIC16F684 Eveniment special Trigger Setare bit CCPxIF pe 1 (PIRx) CCPRxH CCPRxL Q Pinul CCPx S R Logică de ieşire 4 Selecţie mod CCPxCON3:0 Comparator Potrivire TRIS TMR1H TMR1L Fig. 5.

CCP1M0=1.5. CCP1CON.SCS=1. CCP1CON. • ieșire în semi-punte: P1A. • ieșire în punte directă: P1A.IRCF0=1. CCP ÎN MODUL PWM // Ex. P1D (P1M1:P1M0=11). P1B. CCP1CON. TRISC=0. P1C.CCP1M3=1. OSCCON.2 se prezintă generarea unui impuls cu durata determinată de semnalul de ceas FOSC /4. Setarea celor patru configuraţii posibile ale pinilor de ieșire se face prin intermediul biţilor P1M1-P1M0 ai registrului CCP1CON: • o singură ieșire: CCP1 (P1M1:P1M0=00). P1C.T1CKPS1=1.2: Generare eveniment cu CCP1 mod comparare void main() { OSCCON. prescalerul timerului 1 și valoarea registrului CCPR1: comp 4 FOSC TCCP1 = · T1CKPS · (1 + CCPR1L)(1 + CCPR1H) = 4 · 8 · 65536 = 4 194304s 500000 5.IRCF1=1.IRCF2=0. OSCCON. P1D (P1M1:P1M0=01). OSCCON.CCP1M2=0.OSTS=0. 44 .T1CKPS0=1. PORTC=255. T1CON.3. P1B (P1M1:P1M0=10). OSCCON. T1CON. • ieșire în punte inversă: P1A. CCP1CON. } // // // // Oscilator intern Oscilator intern Ceas intern 500 kHz (IRCF2:IRCF0=011) // Prescaler Timer 1 de 1:8 // (T1CKPS1:T1CKPS0=11) // Timer1 pornit // Valoare registru CCPR1 // (1:65536) // Porturi digitale // Portul C in mod iesire // Initializare port C // Setare pin CCP1 in 0 logic // la eveniment // (CCP1M3:CCP1M0=1001) În exemplul 4.Enhanced CCP) pot avea patru ieșiri (P1A:P1D) pentru generarea semnalelor necesare punţilor H.TMR1ON=1. P1B. Modulele îmbunătăţite (ECCP . CCPR1L=255. ANSEL=0. 4.CCP1M1=0. T1CON.3 CCP în modul PWM Modul de lucru PWM (Pulse Width Modulation) permite generarea la pinul CCPx (setat în mod ieșire) a unui semnal PWM cu factor de umplere definit cu o rezoluţie de 10 biţi (CCPxM3:CCPxM0=11xx). CCPR1H=255.

înainte) P1C inactiv P1D modulat P1A inactiv P1B modulat P1C activ P1D inactiv Întârziere Perioadă PR2+1 11 (Punte.8: Semnale de ieșire ale modulului ECCP în modul PWM cu ieșiri active pe 0 logic (PIC16F684).CAPITOLUL 5. înapoi) Fig. 5. MICROCONTROLERUL PIC16F684 0 Factor de umplere P1M1:P1M0 00 (Ieşire simplă) SEMNAL P1A modulat Întârziere P1A modulat 10 (Semipunte) P1B modulat P1A activ P1B inactiv 01 (Punte. 45 . MODULE CCP (CAPTURE/COMPARE/PWM). 5.7: Semnale de ieșire ale modulului ECCP în modul PWM cu ieșiri active pe 1 logic (PIC16F684). 0 Factor de umplere P1M1:P1M0 00 (Ieşire simplă) SEMNAL P1A modulat Întârziere P1A modulat 10 (Semipunte) P1B modulat P1A activ P1B inactiv 01 (Punte. înainte) P1C inactiv P1D modulat P1A inactiv P1B modulat P1C activ P1D inactiv Întârziere Perioadă PR2+1 11 (Punte. înapoi) Fig.

iar factorul de umplere al PWM este transferat din CCPRxL în CCPRxH.3. Rezoluţia este definită pe 10 biţi.2) Sfârșitul factorului de umplere apare în momentul în care există identitate între conţinutul DCxB9:DCxB2 din CCPRxH împreună cu cei doi biţi DCxB1:DCxB0 și conţinutul registrului TMR2.1 Modul PWM cu o singură ieșire Perioada semnalului PWM generat la ieșirea P1A (figura 5.10) este specificată cu ajutorul registrului PR2 al timerului 2 și se determina prin intermediul relaţiei 5. TDC = (DCxB9 : DCxB0) · TOSC · (T2CKPS) (5. TPWM = [(PR2) + 1] · 4 · TOSC · (T2CKPS) (5. pinul CCx este setat pe 1.9: Schema bloc a funcţionării modulului ECCP în modul PWM (PIC16F684). CCP ÎN MODUL PWM P1M1:P1M0 CCP1M3:CCP1M0 Regiştii factor de umplere CCPRxL (DCxB9:DCxB2) 10 CCPxCON<5:4> (DCxB1:DCxB0) 2 4 Pinul RC5/CCP1/P1A TRISC5 CCPRxH (Slave) 10 Comparator 10 R S Q Controler de ieşire TRISC4 Pinul RC3/AN7/P1C Pinul RC4/C2OUT/P1B TMR2 TRISC3 8 Comparator 8 PR2 Modulul Timer2 Pinul RC3/AN6/P1D PWM1CON TRISC2 Fig. Factorul de umplere se determină pornind de la relaţia 5. 46 .1. cei 8 ai registrului CCPRxL (MSB) și cei 2 biţi ai registrului CCPxCON (LSB). 5.3.5. registrul TMR2 este șters. 5. Factorul de umplere este specificat prin scriere în registrul CCPRxL (DCxB9:DCxB2) și cu ajutorul biţilor DCxB1-DCxB0 ai registrului CCPxCON.1) Atunci când TMR2 este egal cu PR2.2.

astfel: TPWM = 4 · 16 · (1 + PR2) 125000 Dacă se dorește 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 obţinerea unui factor de umplere de 0.6 poate fi utilizată pentru verificarea generării semnalului PWM pe o singură ieșire (CCP1/P1A). Prin urmare. MODULE CCP (CAPTURE/COMPARE/PWM). se calculează valoarea celor 10 biţi conform relaţiei 5. 5.1. CCPR1L=0b00000111 și DC1B1:DC1B0=11.CAPITOLUL 5. se determină iniţial echivalentul în timp și. MICROCONTROLERUL PIC16F684 Factor de umplere=DCxB9:DCxB0 Perioada = PR2 + 1 TMR2 = PR2 + 1. TDC = DCPWM · TPWM = 0 2 · 0 02 = 4 ms TDC 0 004 · FOSC = · 125000 = 31 25 ∼ 31 = 0b0000011111 = T2CKPS 16 DC1B9 : DC1B0 = Valoarea celor 10 biţi se distribuie pe cele două părţi. Schema din figura 5. Pentru o frecvenţă de ceas de 125 kHz și prescalerul T2CKPS setat la factorul 1:16. ulterior. TMR2 forţat în 0h Fig.10: Parametrii semnalului PWM. perioada de repetiţie a impulsurilor PWM se determină. CCPR1L (biţii 10 la 2) și DC1B1:DC1B0 (biţii 1 la 0). 47 .2 (sau 20%). Rezoluţia maximă în număr de biţi pentru o frecvenţa dată a semnalului PWM este: NMAX = log[FOSC /(T2CKPS · FPWM )] biţi log 2 (5. TMR2 forţat în 0h TMR2 = Factor de umplere TMR2 = PR2 + 1. 4TOSC pentru PR2=4 și 16TOSC pentru PR2=16).2.3) Rezoluţia minimă în timp depinde de valoarea prescalerului timerului 2 (TOSC pentru PR2=1. conform formulei 5.

OSCCON.986 ms (faţă de cele 4 ms impuse). CCP1CON. CCP1CON. CCP1CON.T2CKPS0=0. iar durata impulsului este de 3. Frecvenţa reală este de 50. 5.P1M1=0.IRCF1=0.SCS=1.IRCF2=0. CCP1CON. Fig. T2CON. T2CON.T2CKPS1=1. 48 . OSCCON.TMR2ON=1.CCP1M3=1. CCP ÎN MODUL PWM // Ex. CCP1CON.OSTS=0. PR2=38.3: Generare PWM 1 canal 50 Hz si factor de umplere 20% void main() { ANSEL=0.DC1B1=1.P1M0=0.3). OSCCON.CCP1M0=0.11: Rezultatul observat pe osciloscop al generării unui semnal PWM (exemplul 4.5. CCPR1L=0b00000111. condiţiile iniţiale sunt implementate practic cu mici erori. OSCCON.DC1B0=1. T2CON. 4. } // Porturi digitale // Portul C in mod iesire // // // // Oscilator intern Oscilator intern Ceas intern 125 kHz (IRCF2:IRCF0=001) // Prescaler Timer2 1:16 // (T2CKPS1:T2CKPS0=10) // Pornire Timer2 // Preincarcare PR2 // 8 MSB din factor de umplere // 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. CCP1CON. TRISC=0.080 Hz.CCP1M1=0.CCP1M2=1. CCP1CON.3. OSCCON. CCP1CON.IRCF0=1.

2 Modul PWM în semipunte Modul de lucru în semipunte operează cu două ieșiri la care se generează semnalul PWM (la pinul P1A) și complementul acestuia (la pinul P1B). 5. Utilizând exemplul de calcul precedent.4) Dacă durata de întârziere este mai mare decât cea a duratei impulsului. pentru o întârziere 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 . Pentru a evita distrugerea componentelor semipunţii. MICROCONTROLERUL PIC16F684 Semipunte standard (“Push-Pull”) V+ Semnalele de ieşire în mod semipunte FET Driver P1A Perioadă Factor de umplere + V P1A Load Perioadă PIC16F684 FET Driver P1B TD TD + V P1B V- Semipunte pentru comanda unei punţi în H V+ FET Driver P1A Load FET Driver PIC16F684 P1B FET Driver FET Driver V- Fig. ieșirea P1B va fi inactivă pe toată perioada semnalului. semnalul complementar va intra pe stare 1 logic cu o întârziere TD stabilită cu registrul PWM1CON<6:0> (PDC6:0).12: Exemple de aplicaţii de tip semipunte (PIC16F684). astfel: TD = 4 · TOSC · PDC6:0 (5. MODULE CCP (CAPTURE/COMPARE/PWM).3. 5.CAPITOLUL 5.

T2CON.P1M1=1. 4. PR2=38. OSCCON.CCP1M0=0. OSCCON. CCP1CON.CCP1M1=0.4).5. CCP1CON. CCP1CON. CCP1CON. CCP ÎN MODUL PWM // Ex.CCP1M2=1.13: Rezultatul observat pe osciloscop al generării unui semnal PWM cu semipunte (exemplul 4. T2CON. OSCCON.T2CKPS1=1.IRCF1=0. OSCCON. CCP1CON.T2CKPS0=0.4: Generare PWM in semipunte 50 Hz.DC1B0=1. CCPR1L=0b00000111. CCP1CON. CCP1CON. PWM1CON=0b00011111.OSTS=0.P1M0=0. 20% si intarziere 1 ms void main() { ANSEL=0.3. // Porturi digitale // Portul C in mod iesire // // // // Oscilator intern Oscilator intern Ceas intern 125 kHz (IRCF2:IRCF0=001) // Prescaler Timer2 1:16 // (T2CKPS1:T2CKPS0=10) // Pornire Timer2 // Preincarcare PR2 // 8 MSB din factor de umplere // Setare intarziere // (PDC6:0=0011111) // 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) CCP1CON. } Fig.IRCF0=1.DC1B1=1. 50 .CCP1M3=1.IRCF2=0.SCS=1. 5. T2CON. OSCCON.TMR2ON=1. TRISC=0.

Biţii P1M<1:0> (CCP1CON<7:6>) stabilesc sensul rotaţiei motorului conectat la puntea H (01 . iar celalaltă realizează sensul rotaţiei (ieșire activă).P1A.3 Modul PWM în punte În modul de lucru PWM în punte sunt utilizate toate cele patru ieșiri asociate modulului (P1A-P1D). P1D active.sens direct.active pe 0). P1C active pe 1. Prin urmare. Schimbarea sensului de rotaţie SIGNAL P1A (Active-High) P1B (Active-High) DC P1C (Active-High) P1D (Active-High) DC Perioadă Perioadă Fig. P1C.15: Schimbarea direcţiei cu punte H (PIC16F684). 1111 . P1B. MICROCONTROLERUL PIC16F684 V+ FET Driver P1A QA QC FET Driver P1B PIC16F684 FET Driver Load FET Driver P1C QB QD VP1D Fig. P1D .P1A. 5. P1C. Dintre acestea. 1101 . P1D active pe 0.CAPITOLUL 5. P1B. La modificarea sensului de rotaţie trebuie avut în vedere evitarea suprapunerii impulsurilor PWM care pot cauza scurtcircuit.P1A. P1C active pe 0. 1110 . P1B. 11 . 5. doar două ieșiri sunt active: una generează semnalul PWM (ieșire modulată). P1D active pe 1. 51 .sens invers). MODULE CCP (CAPTURE/COMPARE/PWM). inversarea direcţiei de rotaţie se face prin simpla modificare a valorii bitului P1M1. Biţii CCP1M<3:0> (CCP1CON<3:0>) setează stările logice ale celor trei ieșiri (1100 .14: Exemplu de aplicaţie standard de tip punte (PIC16F684). P1B.P1A. 5.3.

5: Generare PWM in punte 50 Hz.TMR2ON=1. T2CON.DC1B0=1. CCPR1L=0b00000111. CCP1CON.CCP1M3=1. 4. CCP1CON.DC1B1=1.CCP1M2=1. CCP1CON. CCP ÎN MODUL PWM // Ex. OSCCON=0b00011001. TRISC=0. T2CON.T2CKPS0=0.CCP1M0=0. CCP1CON. T2CON.3.CCP1M1=0. } // Porturi digitale // Portul C in mod iesire // Ceas intern 125 kHz // Prescaler Timer2 1:16 // (T2CKPS1:T2CKPS0=10) // Pornire Timer2 // Preincarcare PR2 // 8 MSB din factor de umplere // Mod PWM in punte directa // (P1M1:P1M0=01) // 2 LSB din factor de umplere // Mod PWM cu iesire pe P1A // si restul in 1 logic // (CCP1M3:CCP1M0=1100) 52 .5. CCP1CON. CCP1CON.P1M1=0. factor de umplere 20% void main() { ANSEL=0.T2CKPS1=1. PR2=38. CCP1CON. CCP1CON.P1M0=1.

16: Rezultate observate pe osciloscop al generării unui semnal PWM cu punte (ex. 4.CAPITOLUL 5. 5.5). MODULE CCP (CAPTURE/COMPARE/PWM). MICROCONTROLERUL PIC16F684 Fig. 53 .

având rolul de a comanda rotaţia motorului până la stabilirea echilibrului. Semnalul eroare generat de amplificator este proporţional cu diferenţa dintre poziţia dorită și cea curentă. Poziţia dorită a axului motorului servo este indicată printr-un semnal de tip PPM (Pulse Proportional Modulation) a cărui durată a impulsului este proporţională cu valoarea unghiului.1 Motoare servo Un motor servo este un motor de curent continuu cu control al poziţiei prin buclă de reacţie. 6. Fig. Motoarele servo digitale pot fi programate pentru definirea direcţiei și poziţiilor rotaţiei. Cu cât frecvenţa este mai mare. prin intermediul semnalelor PPM.c. de unde și denumirea de servo. Motorul din interiorul unui motor servo analogic primește semnal de la amplificatorul de eroare cu o frecvenţă de 30 Hz.Capitolul 6 Comanda motoarelor de curent continuu 6. Motoarele servo se împart în servouri analogice și digitale. cu atât cuplul este mare de la începutul rotaţiei (cuplul este de cca. 54 . Poziţia curentă a axului de rotaţie este determinată cu ajutorul unui senzor de rotaţie. Dispozitivul intern de control comandă un motor de curent continuu trimiţând semnale unui amplificator de eroare. în timp ce motoarele servourilor digitale primesc semnalul cu o frecvenţă de 300 Hz.1: Structura internă a unui motor servo (Hitec). ax reductor mecanic potențiometru circuit de control motor de c. 3 ori mai mare decât în cazul analogic). fiind comandate în mod indentic.

DNEUTRU 0° -45° 45° 20 ms DMINIM DMINIM .5 ms pentru poziţie centrală). motoarele servo au un conector standardizat cu trei contacte codate în culori. Intervalul unghiular în care se poate roti axul. semnalul de comandă PPM este confundat cu un semnal PWM. De exemplu. 6. precum și valorile corespunzătoare ale factorului de umplere al semnalului de comandă depind de fiecare model și de producător.8 și 6V. semnalul PPM este definit prin durata în timp a impulsurilor. în funcţie de producător: masă (negru). iar semnalul de comandă este de tip PPM cu perioada de repetiţie de 20 ms și durata impulsurilor între 0. pentru motoarele servo produse de Hitec operează la o tensiune curpinsă între 4. Caracteristica unui motor servo este aceea că unghiul axului de rotaţie depinde direct de valoarea factorului de umplere a semnalului de comandă.90° 90° DMAXIM DNEUTRU DMAXIM Fig.9 ms și 2. 55 . 6. 5V (roșu) și semnalul de comandă PPM (figura 6.4).CAPITOLUL 6.1 ms (cu 1.2: Schema bloc a unui motor servo. COMANDA MOTOARELOR DE CURENT CONTINUU Motor de curent continuu Reductor Ieșire Amplificator de eroare Senzor de poziție Convertor PWM în tensiune continuă Semnal PWM comandă Fig. În timp ce un semnal PWM este caracterizat printr-un factor de umplere. Datorită circuitelor interne și a principiului de comandă.3: Comanda motoarelor servo cu semnal de tip PPM și dependenţa unghiului axului de factorul de umplere. Deseori.

1.05k Sets Charging Current Ref. dar diferă între producători.22 s). 56 .0720077 kg·cm).6). Viteza definește timpul necesar parcurgerii întregului domeniu unghiular (de exemplu.47 uF 5k Sets Pulse Stretcher Gain 5 6 Pulse Timing Cap. Axul de rotaţie al motorului servo poate comanda mișcarea diferitelor articulaţii prin intermediul unor cârme de diferite forme și mărimi (figura 6. Motor Back EMF 15k A irt JR 15k M Vcc +5 V 2 Motor Drive Output 910k 6 1 BAL6686 H-Bridge CCW Pulse 3 CW Pulse 5 s -Z 4 2 Input Pulse 1-2 ms Trigger Feedback Signal 10 12 Pulse Width error 3 1 Pulse width comparator Direction Pulse stretcher (Servo Gain) 33 uF Linear Pulse Generator 11 (100J type) 9 Reference voltage regulator 8 2. ambele specificate pentru tensiunile minim și maxim de alimentare (4. Motoarele servo sunt caracterizate prin cuplu și viteză.0 V). Orificile de prindere sunt zimţate pentru o mai bună fixare pe axul servoului. Cuplul este adesea definit în sistemul britanic (oz-in) dar poate fi ușor convertit în sistemul internaţional (1 oz·in = 0. MOTOARE SERVO ad io H s ite c s -J ic ro n ab a ro n A irt ic et Fl e K O R Fu t Semnal PPM +5V GND Fig.5: Schema internă a unui motor servo (Futaba S3003). Cârmele pot fi confecţionate din plastic sau din aluminiu.4: Codul culorilor conectorilor motoarelor servo în funcţie de producător.5 V 7 BAL6688 Servo Control 4 50 ohm .8 V și 6. Voltage Vr=2.6. un arc de 60◦ în 0. 6. 22k Sets Position Control Feedback Gain Fig. iar cele produse de Futaba au 25 de dinţi. în funcţie de rezistenţa dorită. 6.00706155 N·m = 0. Axurile servourilor produse de Hitec au 24 de dinţi.

Prin urmare. COMANDA MOTOARELOR DE CURENT CONTINUU Roată mică (Small Wheel Horn) Roată mare (Large Wheel Horn) Cîrmă în cruce mică (Small X-Horn) Cîrmă în cruce (X-Horn) Cîrmă în stea cu 6 colțuri (6-Star Horn) Cîrmă cu braț în T (T-Arm) Cîrmă de vas (Sail Arm) Cîrmă cu braț dublu (Double Arm) Fig.7: Tipuri de reductoare cu roţi dinţate din material plastic (stânga) și din metal (dreapta). 6. este necesar un motor servo cu un cuplu minim de M·L [kg·cm]. De asemenea. Dimensionarea unui motor servo pentru ridicarea unei sarcini se poate face cu ajutorul valorii cuplului. O caracteristică importantă a motoarelor servo o reprezintă tipul reductorului cu roţi dinţate. din metal. un motor servo cu un cuplu de 42 oz·in (3 kg·cm) poate deplasa la capătul unui braţ de 3 cm o masă de 1 kg dispusă. Reductoarele cu rulmenţi cu bile sunt foarte rezistente și extrem de silenţioase. Valoarea maximă a masei corpului este invers proporţională cu lungimea braţului. 57 .CAPITOLUL 6. pentru a ridica o masă M cu un braţ de lungime L. pentru o mai mare reistenţă mecanică. 6. De exemplu.6: Cârme pentru comanda articulaţiilor cu ajutorul motoarelor servo. roţile dinţate pot fi confecţionate din material plastic sau. Acesta determină rezistenţa mecanică și nivelul de zgomot produs de motor în regimul de funcţionare. Fig.

la modificări bruște ale axului motorului. 90◦ )..8: Schema electrică pentru comanda unui motor servo cu ajutorul unui semnal PPM (PIC16F684).6. motoarele servo are un cuplu important. • tensiune de alimentare: 4. • cuplu maxim: 3. se determină limitele extreme în raport cu poziţia centrală.0 V. Prin urmare.4=0.8 V) sau 0.4 ms / 45◦ .8 V) sau 4.0 V).3 kg·cm (la 4.1. fiind conectate la pinii RA4 și RA5 ai portului A. semnalul de comandă va fi transmis prin intermediul unui tranzistor pentru a asigura un curent suficient.3 ms. • viteză în gol: 0. decrementarea duratei impulsului PPM generat. Pentru comanda motorului servo HS-422 în domeniul unghiular.0 V).21 s / 60◦ (la 4. 6. De asemenea.8 se prezintă o aplicaţie pentru comanda unui motor servo HS-422 cu ajutorul unui semnal de comandă generat prin intermediul modulului ECCP al microcontrolerului PIC16F684. Un exemplu de motor servo este modelul Hitec HS-422 cu următorii parametrii: • PPM: 1.8 la 6. 0. Utilizând oscilatorul RC intern al microcontrolerului la frecvenţa de 500 kHz și prescalerul T2CKPS la valoarea 1:16. • consum: 8 mA în gol sau 150 mA maxim. astfel: pentru limita minimă de -90◦ .3 ms.5+2·0. a microcontrolerului) deoarece. impulsul va avea durata de 1. iar pentru limita maximă de 90◦ .7 ms. impulsurile PPM generate vor fi definite doar în domeniul 0. Deoarece. Butoanele SW1 și SW2 sunt utilizate pentru incrementarea și.16 s / 60◦ (la 6.5 ms la neutru (0◦ ). este necesar ca acestea să fie alimentate de la o sursă de tensiune separată de cea a circuitelor de comandă (implicit. • domeniu unghiular: 180◦ (-90◦ . în sarcină. MOTOARE SERVO +5V PIC16F684 BC107 5 4 1 14 13 12 1 ICSP VPP VDD GND PGD PGC Hitec HS-422 2 3 SW1 SW2 5 Fig. generarea impulsurilor PWM cu frecvenţa de 58 . Cei doi biţi operează în modul intrare digitală cu generarea de întrerupere la modificarea valorii de intrare. în timpul funcţionării. impulsul are durata de 1. În figura 6.4=2. respectiv.1 kg·cm (la 6.5-2·0. pot interveni căderi de tensiune care pot reseta microcontrolerul.7 la 2.

3 ms. Motoarele pas-cu-pas sunt întâlnite cel mai frecvent în compunerea aparaturii casnice și a celor de tip HVAC (Heating. 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 către zero a valoarii reale obţinute pentru nu a forţa motorul servo în afara domeniului unghiular: [DC1B9 : DC1B0]max = 0 0023 · 500000 = 71 875 ∼ 71 = 0b0001000111 = 16 6.CAPITOLUL 6. Din punct de vedere al puterii.7 și 2. un motor pas-cu-pas poate fi controlat precis astfel încât acesta să se rotească un anumit număr de pași propucând o mișcare mecanică pe o anumită distanţă. Ventilating.1): PR2 = 500000 · 0 02 − 1 = 155 25 ∼ 155 = 4 · 16 Semnalul de comandă are durata impulsului între valorile 0.9: Structura constructivă a unui motor pas-cu-pas hibrid. and Air Conditioning). Conform relaţiei 5. motoarele de acest tip nu sunt foarte puternice. Motoarele pas-cu-pas sunt dispozitive cu viteză mică de rotaţie (între 50 și 100 rpm). fiind proiectate pentru mișcări precise și menţinerea poziţiei la sfârșitul rotaţiei. după care să menţină scarcina în repaus. COMANDA MOTOARELOR DE CURENT CONTINUU 50 Hz (20 ms) se face alegând valoarea registrului PR2 egală cu 155 (conform relaţiei 5. Un motor pas-cu-pas funcţionează prin rotirea axului succesiv în poziţii unghiulare discrete. Astfel. Motorul este capabil să-și menţină poziţia (și sarcina) între incremente fără a avea nevoie de frâne sau ambreiaje.2 Motoare pas-cu-pas Motorul pas-cu-pas este un actuator rotativ electromagnetic care efectuează conversia mecanică a impulsurilor digitale de intrare în scopul incrementării rotaţiei axului. Înfăşurare statorică Pol nord rotoric W1 W2 Furcă statorică N Fig.2. stabilită cu ajutorul celor 10 biţi ai registrului DC1B9:DC1B0. 6. Numărul de pași necesari pentru a efectua o rotaţie completă este unul din 59 .

Acest tip de motor au incrementul de valoare medie (5 la 15◦ ) și au viteză mare de rotaţie. Motoarele cu reluctanţă variabilă sunt cunoscute ca având rotorul multipolar din fier moale și stator bobinat. fie ca grade per pas. Rotorul este compus dintr-un număr de magneţi permanenţi ce se aliniază cu înfășurările statorului atunci când acestea din urmă sunt energizate. Din punct de vedere constructiv există trei tipuri de motoare pas-cu-pas: cu reluctanţă variabilă (VR).2. precum și de numărul de înfășurări (faze). de 45 sau 90◦ dar cuplul produs este mare iar caracteristicile de amortizare sunt foarte bune. 6. Cuplul este. determinând rotirea axului motorului. În interiorul motorului sunt dispuse o serie de înfășurări aliniate astfel încât să permită rotaţia precisă dintr-o poziţie în alta (figura 6. mic. Incrementul unghiular are uzual valori între 0. MOTOARE PAS-CU-PAS parametrii specifici și este exprimat fie ca număr de pași propriu-zis. Un motor pas-cu-pas de tip unipolar va activa miezul la o singură polaritate. Motoarele pas-cu-pas unipolare dispun de patru seturi de înfășurări ce alternează de-a lungul carcasei interioare a motorului. Din punct de vedere electric. La energizarea polilor statorului.10). A D S N C S N S B A N S D N Magnet rotoric B N S N S N C Miez statoric Fig. Incrementul unghiular de rotaţie este determinat de numărul dinţinlor din rotor și din stator. Motoarele cu magnet permanent au rotorul confecţionat dintr-un magnet permanent și nu are dinţi. de unde 60 . Frecvenţa impulsurilor secvenţei de comandă ajunge la valori maxime de 300-1000 pași pe secundă.9 și 5◦ . Fiecare din aceste tipuri oferă soluţii pentru diferite aplicaţii. cu magnet permanent (PM) și hibride (figura 6. rotorul va fi atras către polii magnetici opuși din stator. există două tipuri de motoare pas-cu-pas: unipolare (sau cu patru faze) și bipolare (sau cu două faze). C și D).11). în timp ce motorul pas-cu-pas bipolar are doar două seturi de înfășurări. B. Motoarele hibride combină avantajele oferite de motoarele cu reluctanţă variabilă și cele cu magnet permanent.6. Înfășurările sunt dispuse pe stator (etichetate A.10: Dispunerea polilor magnetici într-un motor pas-cu-pas. în general. Au cuplul important și pot funcţiona la viteze mari ale secvenţei de comandă. Incrementul unghiular este mare.

11: Tipuri constructive de motoare pas-cu-pas. urmată de inversarea acesteia pe parcursul mișcării rotorului. fiind cel mai ușor de utilizat. Motoarele pas-cu-pas bipolare sunt mai puternice și mai rapide decât motoarele unipolare de aceiași dimensiune. Un motor pas-cu-pas bipolar are patru fire. fie ca un motor bipolar pentru care se poat conecta perechi de înfășurări în serie sau paralel. În cazul motorului cu cinci fire. poate utiliza o cantitate dublă de conductor pentru înfășurări. în timp ce un motor pas-cu-pas unipolar poate avea cinci. este necesară utilizarea unui algoritm de identificare a acestora. Atunci când este dificilă determinarea fazelor unui motor pas-cu-pas. Determinarea perechilor de înfășurări se face fie după codul de culori al producătorului. Dacă motorul are șase fire (cazul cel mai comun). configuraţia semnalelor de comandă este mai complexă deoarece este necesară schimbarea polarităţilor curenţilor din înfășurări. motoarele pas-cu-pas bipolare necesită câte o punte H sau un circuit de inversare a curentului pentru fiecare înfășurare. și denumirea. generând astfel un câmp electromagnetic mai puternic. 6. 61 . au nevoie doar de câte un tranzistor de curent pentru fiecare înfășurare. Prin urmare. în schimb. cu atât numărul de pași este mai mare și rezoluţia este fină. fie direct. Tipul unui motor pas-cu-pas se poate determina pornind de la numărul de conductori terminali (6. COMANDA MOTOARELOR DE CURENT CONTINUU A1 A1 C1 A2 D2 N S B1 A2 A1 B1 N S D2 N B1 C1 B2 N N S S S C2 D1 D1 C2 C1 Motor pas-cu-pas cu reluctanță variabilă Motor pas-cu-pas cu magnet permanent B2 A2 Motor pas-cu-pas hibrid Fig. Motorul pas-cu-pas bipolar funcţionează prin activarea miezului cu o polaritate. Cazul cu opt fire este denumit motor pas-cu-pas universal. Deoarece un motor bipolar are jumătate din numărul de înfășurări. Cu cât acest număr este mai mare. Această configuraţie poate funcţiona și ca un motor pas-cu-pas bipolar dacă producătorul a prevăzut din construcţie această posibilitate. șase sau opt fire. necesitând doar comutarea curentului de polarizare a înfășurărilor. iar celelalte patru sunt asociate fiecărei din cele patru înfășurări. câte două pentru fiecare înfășurare. o pereche de înfășurări va avea un fir comun. În schimb.CAPITOLUL 6. Motoarele pas-cu-pas unipolare au semnale de comandă mai simple. Acest lucru înseamnă că motorul poate fi utilizat fie ca un motor unipolar cu fiecare pereche de înfășurare ca miez independent. Numărul de pași ai unei revoluţii complete depinde de numărul de magneţi permanenţi sau de dinţi din rotor.12). prin măsurarea rezistenţelor dintre fire cu ajutorul unui ohmmetru. Motoarele pas-cu-pas unipolare. unul dintre acestea este comun.

Algoritm 6.12: Configuraţii ale motoarelor pas-cu-pas în funcţie de numărul de conductori terminali. 6. o bandă adezivă de formă dreptunghiulară montată pe capătul axului). 4.1. 2.2. Se alege arbitrar unul din cele patru fire rămase și se denumește faza 1. În acest moment motorul este blocat în faza 1. Firul comun se conectează apoi la borna V+ a unei surse de tensiune continuă de 5V. bipolară (paralelă) A1 A2 C2 C1 B1 B2 D2 8 D1 D1 B1 B2 D2 D1 Fig. observând în același 62 . Se alege un fir și se conectează la masa sursei de alimentare. Pentru identificarea fazelor unui motor pas-cu-pas cu cinci fire. Acest al doilea fir se conectează la masa sursei de tensiune.6. MOTOARE PAS-CU-PAS 4 fire conexiune bipolară A 4 5 fire conexiune unipolară A com 5 C C B D B D 6 fire conexiune unipolară A com1 C 6 6 fire conexiune bipolară (serie) A com1 C 6 B com2 D B com2 D 8 fire conexiune unipolară A1 A2 C2 C1 B1 B2 D2 8 8 fire conexiune bipolară (serie) A1 A2 C2 C1 8 8 fire conex. Se memorează poziţia curentă a axului motorului prin fixarea unui reper mecanic (de exemplu. Se determină cu ajutorul unui ohmmetru firul comun. este necesară parcurgerea etapelor descrise în algoritmul următor (figura 6. 3. acesta fiind cel faţă de care celelalte patru terminale determină obţinerea aceiași valori a rezistenţei măsurate.13): 1.

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU

1

1

1

1

4

2

4

2

4

2

4

2

3

3

3

3

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 rotaţie mică spre dreapta, atunci firul reprezintă faza 2; 5. Se alege un fir și se conectează la masă observând, din nou, axul motorului. Dacă axul are o mică rotaţie spre stânga, atunci firul reprezintă faza 4; 6. Se alege un fir și se leagă, similar, la masă. Dacă axul nu se rotește, atunci acesta este faza 3. Algoritm 6.2. Pentru identificarea perechilor de înfășurări ale unui motor pas-cu-pas cu șase fire, se poate utiliza următorul algoritmul: 1. Se determină cu ajutorul unui ohmmetru cele două fire comune (între care rezistenţa este nulă). Între un fir comun și cele două capete de înfășurări asociate se va obţine aproximativ jumătate din valoarea determinată a rezistenţei 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 polarităţii perechilor de înfășurări ale unui motor pascu-pas universal (figura 6.14): 1. Se determină cu ajutorul unui ohmmetru cele patru perechi de înfășurări; 2. Se aleg două perechi de înfășurări și se leagă împreună câte un fir din fiecare. Firele rămase libere se conectează la un voltmetru setat pe curent alternativ, scara de 10 V;

0

9

0

9

VAC

VAC

Fig. 6.14: Idenficarea polarităţii înfășurărilor unui motor pas-cu-pas universal. 63

6.2. MOTOARE PAS-CU-PAS

3. Se rotește axul motorului, iar dacă se obţine o tensiune de cca. 2 V, atunci cele două perechi de înfășurări sunt legate în serie cu aceiași polaritate. Dacă, în schimb, tensiunea citită este nulă, atunci înfășurările sunt legate în serie dar cu polarităţi opuse.

Motoarele pas-cu-pas pot fi comandate prin intermediul unei secvenţe de impulsuri cu un anumit tipar (6.16). Există trei tipuri de secvenţe de comandă: simplă (wave
Modul de comandă simplă pentru motor pas-cu-pas unipolar
A A A A

D

B

D

B

D

B

D

B

C

1

C

2

C

3

C

4

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

D

B

D

B

D

B

D

B

C

1

C

2

C

3

C

4

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

D

B

D

B

D

B

D

B

C

1

C

2

C

3

C

4

A

A

A

A

D

B

D

B

D

B

D

B

C

5

C

6

C

7

C

8

Fig. 6.15: Exemplificarea excitaţiei înfășurărilor pentru cele trei secvenţe de comandă a unui motor pas-cu-pas unipolar. 64

CAPITOLUL 6. COMANDA MOTOARELOR DE CURENT CONTINUU
A. Secvenţă de comandă simplă pentru configuraţie unipolară A 1 2 3 4 1 A B C D 1 0 0 0 2 3 B 0 1 0 0 4 1 C 0 0 1 0 2 3 D 0 0 0 1 4 A1 A2 B1 B2 1 2 3 4 1 2 3 4 1 2 3 4 D. Secvenţă de comandă simplă pentru configuraţie bipolară A1 A2 B1 B2

B. Secvenţă de comandă dublă pentru configuraţie unipolară A 1 2 3 4 1 A B C D 1 0 0 1 2 3 B 1 1 0 0 4 1 C 0 1 1 0 2 3 D 0 0 1 1 4 A1 A2 B1 B2 1 2 3 4

E. Secvenţă de comandă dublă pentru configuraţie bipolară A1 A2 B1 B2

1

2

3

4

1

2

3

4

C. Secvenţă de comandă mixtă pentru configuraţie unipolară A 1 2 3 4 5 6 7 8 1 A B C D 1 1 0 0 0 0 0 1 2 3 B 0 1 1 1 0 0 0 0 4 5 C 0 0 0 1 1 1 0 0 6 7 D 0 0 0 0 0 1 1 1 8 A1 A2 B1 B2 1 2 3 4 5 6 7 8

F. Secvenţă de comandă mixtă pentru configuraţie bipolară A1 A2 B1 B2

1

2

3

4

5

6

7

8

Fig. 6.16: Secvenţe de comandă pentru motoarele pas-cu-pas.

65

6.2. MOTOARE PAS-CU-PAS

step), dublă (two-phase step) și mixtă (half-step). Secvenţa de comandă simplă polarizează la un moment dat o singură pereche de înfășurări. Pasul de rotaţie este cel dat de alinierea rotorului la înfășurarea excitată. Secvenţa de comandă dublă presupune excitarea simultană a două înfășurări, axul magnetic al rotorului fiind aliniar la mijlocul distanţei dintre cele două înfășurări excitate. Consumul de curent în acest caz este dublu faţă de cazul anterior. Secvenţa de comandă mixtă constă în alternarea excitării unei înfășurări urmată de excitarea simultană a două înfășurări succesive. Cuplul în acest caz poate scădea cu până la 15-30% din cuplul obţinut cu secvenţa de comandă dublă. În schimb, rezoluţia unghiulară (incrementul de pas) este dublu. Pentru comanda motoarelor pas-cu-pas prin intermediul unui microcontroler se utilizează circuite suplimentare pentru asigurarea tensiunilor și curenţilor 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 ieșire. Pentru logică de intrare de tip TTL se utilizează varianta ULN2003 (cu intrări 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 secvenţe 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 căderea câmpului magnetic la decuplarea excitaţiei înfășurărilor. 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 secvenţei de comenzi duble.
+12V IN1 IN2 IN3 IN4 IN5 IN6 IN7 GND 1• 2 3 4 5 6 7 8 ULN2003A 16 15 14 13 12 11 10 9 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 COM DZ1 8 9 de la MCU 1 2 3 4 ULN2003A 16 15 14 13
A C B D

Fig. 6.17: Comanda unui motor pas-cu-pas unipolar cu driver ULN2003 cu patru semnale.

66

Motoarele bipolare pot fi comandate în secvenţă simplă.1uF C3 C1 C2 LOGIC CONTROL INPUTS PHASE I1A I0A Ph A 7 9 8 2 4 5 11 6 3 14 15 0. Pentru comanda motoarelor pas-cu-pas bipolare se pot utiliza circuitele integrate UC3717 sau UC3770. Curentul maxim debitat este de 2 A. iar tensiunea de ieșire este cuprinsă între 10 și 50 V. Pentru fiecare fază este necesară câte o punte H.1uF 100uF MOTOR SUPPLY +36V VS MAA UC3717A 13 12 VC 10 RC 1k RS 1ohm I MA I MB STEPPER MOTOR 16 MBB 1 L=10mH R=13ohm 1 16 MBA VRS RT 56k GND RT 56k CT 820pF CT 820pF CC 820pF CC 820pF RS RC 1k 1ohm PHASE LOGIC CONTROL INPUTS Ph B I1B I0B 8 7 9 2 4 5 13 12 10 UC3717A 11 6 3 14 15 MAB Fig. COMANDA MOTOARELOR DE CURENT CONTINUU +5V ULN2003A 1 2 3 4 5 6 16 15 14 13 12 11 +12V R1 1k de la MCU R2 1k R3 1k A C B D R4 1k 8 9 DZ1 Fig.19). 67 . Acestea reprezintă punţi H utilizate pentru schimbarea polarităţii curentului de excitaţie a fazelor (înfășurărilor). 6.19: Comanda unui motor pas-cu-pas unipolar cu driver UC3717 în secvenţă dublă. LOGIC & REFERENCE SUPPLY +5V VSS 0.CAPITOLUL 6. astfel încât pentru comanda unui motor pas-cu-pas sunt necesare două circuite integrate (figura 6. 6. dublă sau mixtă.18: Comanda unui motor pas-cu-pas unipolar cu driver ULN2003 în secvenţă dublă.

Fig.20: Structura constructivă a unui motor de curent continuu cu perii.c. 68 . Dezavantajele sunt reprezentate de costurile de întreţinere ridicate și durata de funcţionare scăzută în cazul unei funcţionări intense.3 Motoare de curent continuu Un motor de curent continuu (motor de c. rulmenţi.c. fiind compus dintr-un circuit magnetic (miez cu armături. cu perii. situat într-un câmp magnetic extern are un cuplu sau o forţă numită forţă Lorentz. suporţii periilor și ax). precum și un control simplu al vitezei de rotaţie. 6.c. perii și comutator electric) și suportul mecanic (cadru. Avantajele unui motor de c. poli și bobină). La baza efectului de rotaţie stă principiul forţei Lorentz. cu perii generează cuplu direct din sursa de tensiune continuă prin utilizarea comutaţiei interne.) convertește energia electrică în energie mecanică.21: Funcţionarea rotorului unui motor de c.c. MOTOARE DE CURENT CONTINUU 6. a magneţilor permanenţi statorici și a magneţilor electrici rotorici. un circuit electric (armătura bobinajului. Acest principiu afirmă că orice conductor electric parcurs de curent.3. pot fi cu perii (brushed) sau fără perii (brushless). Variaţia vitezei de rotaţie se face prin modificarea tensiunii pe armături. precum și curăţarea sau înlocuirea comutatorului. Motoarele de c. a tensiunii pe înfășurări sau o combinaţie a celor două. Procesul de mentenanţă presupune înlocuirea periodică a periilor și arcurilor care conduc curentul electric.c. 6. armătura bobinei. N S Fig.6. Toate aceste componente sunt necesare pentru transferarea curentului electric din exteriorul motorului către înfășurările rotative ale rotorului din interiorul motorului. Din punct de vedere constructiv motoarele de c. cu perii este costul iniţial scăzut. fiabilitate. Avantajul motoarelor de curent continuu sunt capacitatea de variaţie a vitezei și cuplul mare.

Avantajele motoarelor cu perii includ durată de viaţă crescută. COMANDA MOTOARELOR DE CURENT CONTINUU Motoarele fără perii. au rotorul construit dintrun magnet permanent rotativ. Principiul constructiv este mai simplu deoarece elimină complicaţiile de transfer al curentului electric din exteriorul motorului către rotor.CAPITOLUL 6. 69 . Dezavantajele sunt costul iniţial ridicat și necesitatea utilizării unui controler al secvenţei de comutaţie a curenţilor. iar statorul exterior este compus din magneţi electrici staţionari (bobine). spre deosebire de cele anterioare. lipsa mentenanţei și eficienţă ridicată.

direcţia fiecărui pin al comparatorului este controlată prin intermediul registrului TRISIO. Bitul CIS (CMCON<3>) are ca scop selectarea intrării VIN . Atunci când tensiunea analogică de la intrarea pozitivă VIN + este mai mare decât tensiunea de la intrarea negativă VIN -. Fiecare comparator poate opera în opt moduri diferite (figurile 7. pentru PIC16F88. Principiul de funcţionare a comparatorului analogic este ilustrat în figura 7. În rest. selectabile cu ajutorul biţilor CM<2:0> din registrul CMCON. VREF . Microcontrolerele PIC12F675 și PIC16F88 7. momentul de modificare a stării ieșirii poate varia în jurul valorii teoretice. În cazul microcontrolerului PIC12F675.Capitolul 7 Comparatorul analogic. poate fi considerat tot ca o intrare a comparatorului.1: Registrul de control al comparatorului analogic.1 Comparatorul analogic Un comparator analogic al unui microcontroler conţine doi pini de intrare și un pin de ieșire. 70 .pentru modurile care folosesc multiplexarea intrărilor. R (0) R (0) R/W (0) R/W (0) R/W (0) R/W (1) R/W (1) R/W (1) C2OUT C1OUT COUT Bit 6 C2INV Bit 5 C1INV CINV Bit 4 CIS CIS Bit 3 CM2 CM2 Bit 2 CM1 CM1 Bit 1 CM0 CM0 Bit 0 16F88 12F675 CMCON Bit 7 Fig. 7. ieșirea comparatorului este în stare de 1 logic. ieșirea are valoarea 0.2. Toţi acești pini sunt multiplexaţi cu pinii I/O. în funcţie de numărul de comparatoare analogice existente în modelul de microcontroler (unul singur pentru PIC12F675 sau două pentru PIC16F88). În plus faţă de aceștia. Registrul de control al comparatorului analogic este CMCON. Datorită timpilor de răspuns și a offsetului intrărilor. pinul tensiunii de referinţă. acest lucru se face cu ajutorul registrului TRISA. având biţii diferiţi. în timp ce.5 și ??).

biţii GIE și PEIE al registrului INTCON trebuie. În funcţie de modul de lucru al comparatoarelor. intrările pozitive ale ambelor comparatoare pot fi conectate împreună sau independent la tensiunea de referinţă externă. se poate utiliza ca intrare o tensiune externă sau externă de referinţă conectată la intrarea pozitivă. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 VIN+ VINIeșire VINVIN+ VIN+ Ieșire Multiplexare La alte periferice Pini de intrare Către magistrala de date Q EN RD_CMCON D CVREF Q1 CINV CM2:CM0 Setare bit CMIF Q D EN CL Q3 * RD_CMCON De la celălalt comparator RESET Fig. aceștia conţin diode conectate la VDD și VSS (figura 7. 7. de asemenea. COMPARATORUL ANALOGIC. Deoarece pinii de intrare analogici sunt conectaţi la o ieșire digitală. Valorile de ieșire ale comparatoarelor pot fi citite din registrul CMCON. Semnalul de referinţă trebuie să aibe valoarea între VDD și VSS . gama tensiunilor de intrare trebuie să fie cuprinsă între cele două valori. Comparatorul analogic poate genera întrerupere la fiecare modificare a valorii de ieșire dacă această opţiune este activată prin bitul CMIE situat într-unul din regiștrii PIE.6 V faţă de acest 71 . Deoarece este vorba de o întrerupere periferică.Referinţa internă de tensiune permite lucrul ambelor comparatoare cu intrarea pozitivă comună legată la tensiunea de referinţă. Atunci când se utilizează o tensiune de referinţă externă. Orice deviere cu 0. polaritatea ieșirii poate fi modificată cu ajutorul biţilor C1INV și C2INV (pentru PIC16F88) sau a bitului CINV (pentru PIC12F675) din registrul CMCON. De asemenea.3).CAPITOLUL 7. activaţi. Prin urmare. biţii C1OUT și C2OUT (pentru PIC16F88) sau COUT (pentru PIC12F675). Întreruperea este activă și pe timpul cât microcontrolerul funcţionează în modul SLEEP.2: Schema internă a comparatorului analogic.

72 .4: Moduri de lucru ale comparatorului analogic (PIC12F675). D = intrare digitală Fig.3: Intrarea comparatorului analogic. Intrarea trebuie conectată printr-o rezistenţă de maxim 10 kΩ.1. 7. 7. Comparator resetat CM2:CM0 = 000 Comparator dezactivat CM2:CM0 = 111 GP1/CINGP0/CIN+ GP2/COUT A A D Inactiv (Citit ca ‘0’) GP1/CINGP0/CIN+ GP2/COUT D D D Inactiv (Citit ca ‘0’) Comparator fără ieşire CM2:CM0 = 010 Comparator fără ieşire şi cu referinţă internă CM2:CM0 = 100 GP1/CINGP0/CIN+ GP2/COUT A A D COUT GP1/CINGP0/CIN+ GP2/COUT A D D COUT De la modulul VREF Comparator cu ieşire şi cu referinţă internă CM2:CM0 = 011 Intrare multiplexată.7.6V RIC VSS Fig. COMPARATORUL ANALOGIC VDD RS < 10K AIN VA CIN 5 pF VT = 0. iar orice componentă conectată la intrare trebuie să consume un curent foarte mic. interval are ca efect conducţia uneia din cele două diode. referinţă internă şi ieşire CM2:CM0 = 101 GP1/CINGP0/CIN+ GP2/COUT A D D COUT GP1/CINGP0/CIN+ GP2/COUT A A D CIS = 0 CIS = 1 COUT De la modulul VREF De la modulul VREF Comparator cu ieşire CM2:CM0 = 001 Intrare multiplexată şi referinţă internă CM2:CM0 = 110 GP1/CINGP0/CIN+ GP2/COUT A A D COUT GP1/CINGP0/CIN+ GP2/COUT A A D CIS = 0 CIS = 1 COUT De la modulul VREF A = intrare analogică.6V I ±500 nA VT = 0.

Comparator analogic cu histerezis Atunci când tensiunile de la intrare unui comparator sunt aproape egale. COMPARATORUL ANALOGIC.5: Moduri de lucru ale comparatorului analogic (PIC16F88). 73 . D = intrare digitală Fig. Dacă diferenţa dintre cele două praguri este mai mare decât nivelul zgomotului. Acest histerezis modifică pragul comparatorului mai sus atunci când tensiunea de intrare se află sub prag și mai jos atunci când intrarea este situată peste prag. o parte a tensiunii de ieșire a comparatorului este trimisă înapoi prin reacţie la intrarea pozitivă pentru a forma un histerezis. zgomotul extern sau intern poate determina ca ieșirea comparatorului să oscileze foarte rapid între cele două stări logice. Pentru a preveni acest efect. 7. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 Comparatoare resetate CM2:CM0 = 000 RA0/AN0 A VINVIN+ Comparatoare dezactivate CM2:CM0 = 111 RA0/AN0 C1 Inactiv (Citit ca ‘0’) D VINVIN+ RA3/AN3/ A C1OUT A RA3/AN3/ D C1OUT D C1 Inactiv (Citit ca ‘0’) RA1/AN1 RA2/AN2/ A CVREF VINVIN+ RA1/AN1 C2 Inactiv (Citit ca ‘0’) VINVIN+ RA2/AN2/ D CVREF C2 Inactiv (Citit ca ‘0’) Două comparatoare independente CM2:CM0 = 100 RA0/AN0 A VINVIN+ Patru intrări multiplexate la două comparatoare CM2:CM0 = 010 RA0/AN0 A CIS = 0 CIS = 1 VINVIN+ RA3/AN3/ A C1OUT A C1 C1OUT RA3/AN3/ A C1OUT RA1/AN1 A C1 C1OUT RA1/AN1 VINVIN+ RA2/AN2/ A CVREF C2 C2OUT RA2/AN2/ A CVREF CIS = 0 CIS = 1 VINVIN+ C2 C2OUT De la modulul VREF Două comparatoare cu referinţă comună CM2:CM0 = 011 RA0/AN0 A VINVIN+ Două comparatoare cu referinţă comună şi ieşiri CM2:CM0 = 110 RA0/AN0 A VINVIN+ RA3/AN3/ D C1OUT A C1 C1OUT RA3/AN3/ D C1OUT A C1 C1OUT RA1/AN1 VINVIN+ RA2/AN2/ A CVREF C2 C2OUT RA1/AN1 RA2/AN2/ A CVREF RA4/T0CKI/C2OUT VINVIN+ C2 C2OUT Un singur comparator independent CM2:CM0 = 101 RA0/AN0 D VINVIN+ Trei intrări multiplexate cu două comparatoare CM2:CM0 = 001 RA0/AN0 A CIS = 0 CIS = 1 VINVIN+ Inactiv (Citit ca ‘0’) RA3/AN3/ D C1OUT RA1/AN1 A C1 RA3/AN3/ A C1OUT A C1 C1OUT VINVIN+ RA2/AN2/ A CVREF C2 C2OUT RA1/AN1 RA2/AN2/ A CVREF VINVIN+ C2 C2OUT A = intrare analogică. se obţine eliminarea efectului nedorit de oscilaţie a ieșirii comparatorului.CAPITOLUL 7.

7.1. COMPARATORUL ANALOGIC

Intrare Ieșire

VTH VAVG

R1 VDD R2

R3

VTL

Ieșire

Fig. 7.6: Comparator analogic cu histerezis.

Pentru a determina valorile rezistenţelor necesare pentru realizarea histerezisului se determină iniţial valoarea de prag minimă (VTL ) și maximă (VTH ). Valoarea medie a pragului va fi dată de relaţia 7.1. VAVG = VDD · VTL VDD − VTH + VTL (7.1)

Rezistenţele R1 și R2 se aleg între 1 și 10 kΩ, iar rezistenţa R3 trebuie să aibă sub 100 kΩ. Valorile rezistenţelor R1 și R2 se aleg astfel încât să satisfacă relaţia 7.2. VAVG = VDD · R2 R1 + R2 (7.2)

Rezistenţa R3 se determină pornind de la factorul de divizare a tensiunii, conform relaţiei 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 rezistenţelor R1 și R2 , astfel încât să satisfacă relaţia 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 rezistenţei R3 , conform relaţiei 7.3: R3 =
74

1800 · 3600 1800 + 3600

5 −1 01

= 58800 ≈ 59 kΩ [E96]

CAPITOLUL 7. COMPARATORUL ANALOGIC. MICROCONTROLERELE PIC12F675 ȘI PIC16F88

Comparator analogic cu fereastră În cazul aplicaţiilor de monitorizare a unui senzor extern, este necesară determinarea evenimentului în care semnalul a ieșit dintr-un interval de lucru prestabilit (fereastră), considerat sigur. Pentru determinare se poate utiliza un comparator analogic cu fereastră care dispune de două ieșiri care semnalizează deplasarea semnalului sub și, respectiv, peste valorile admise. Implementarea se face cu ajutorul a două comparatoare și trei rezistenţe (figura 7.7).
VDD

R1 VTH-HI C1 Limită maximă

VTH-HI VTL-LO

Intrare

R2

Ieșire C1
C2 VTH-LO R3 Limită minimă

Ieșire C2

Fig. 7.7: Comparator analogic cu fereastră.

Rezistenţele R1 , R2 și R3 formează un divizor rezistiv care generează tensiunile de prag minim și maxim. Cele două ieșiri sunt active direct, intrând individual pe stare 1 atunci când semnalul depășește peste valorile de prag. Rezistenţele au valori între 1 kΩ și 1MΩ și se determină cu ajutorul relaţiilor 7.4 și 7.5. VTH-HI = VTH-LO = R3 + R2 · VDD R1 + R2 + R3 R3 · VDD R1 + R2 + R3 (7.4) (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 rezistenţa R3 =10 kΩ și se determină valorile R1 și R2 conform ecuaţiilor 7.4 și 7.5, astfel: R1 = R2 VDD − VTH-HI 5−27 · R3 = · 10000 = 10 kΩ VTH-LO 23 VTH-HI − VTH-LO 27−23 = · R3 = · 10000 = 1739 ≈ 1 8 kΩ VTH-LO 23 (7.6) (7.7)

75

7.1. COMPARATORUL ANALOGIC

Datorită aproximării rezistenţelor, valorile reale de prag vor fi VTH-HI =2.706 V și VTH-LO =2.293 V. Măsurarea duratei unui impuls Comparatorul analogic, în conjuncţie cu modulul Timer1, poate fi utilizat pentru măsurarea duratei de timp a impulsului generat la ieșirea COUT. Pentru aceasta, ieșirea se conectează la pinul de comandă T1G al timerului (figura 7.8). Având logică inversă, timerul va începe numărarea la trecerea pinului T1G pe 0. Prin urmare, ieșirea comparatorului trebuie, de asemenea, inversată setând bitul CINV al registrului CMCON la valoarea 1.
VDD

VINPUT Prag

COUT

TIG

Timer1

Fig. 7.8: Utilizarea comparatorului analogic pentru măsurarea duratei unui impuls.

Circuit cu oprire automată Comparatorul analogic poate fi utilizat pentru detectarea duratelor de impuls PWM mai mari decât o anumită limită impusă (figura 7.9). Una din intrările comparatorului va contine o tensiune de referinţă, iar cealaltă va avea la intrare tensiunea unui ¸ condensator care este încărcat de către impulsurile PWM. Tensiunea condensatorului este definită prin relaţia 7.8. VC1 = VDD 1 − e
−R T C
1 1

(7.8)

unde T este durata impulsului semnalului PWM.
VREF=1.2 V

VIN (PWM)

R1 10k D1 1N4148 C1 220nF

C1

74LS08

Ieşire

R2 500

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

Dioda D1 este utilizată pentru descărcarea rapidă a condensatorului pe zona de nul a semnalului PWM.
76

11: Registrul de control al referinţei de tensiune. cele două tensiuni de intrare ale comparatorului sunt egale. respectiv. Când tensiunea de intrare este nenulă. COMPARATORUL ANALOGIC. VREN (PIC12F675). 7. Pentru detectarea impulsurilor PWM cu o durată mai mare de 1 ms. Când semnalul de intrare este nul. ceea ce determină trecerea ieșirii în stare 0 sau 1.25 V și o tensiune de alimentare VDD =5 V.CAPITOLUL 7. valorile rezistenţei R1 și C1 vor fi determinate. 7. rezultă că C1 =100 nF. Detector de trecere prin zero În unele aplicaţii este necesară detectarea momentelor în care un semnal are valoarea zero. 7. o tensiune de referinţă VREF =1. astfel: 1 25 = 5 1 − e 0 − R 001 C 1 1 =⇒ R1 C1 ∼ 3 48 · 10−3 = Alegând R1 =34.10.10: Utilizarea comparatorului analogic ca detector de trecere prin zero. 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) CVRCON VRCON CVREN VREN Bit 7 CVROE Bit 6 CVRR VRR Bit 5 Bit 4 CVR3 VR3 Bit 3 CVR2 VR2 Bit 2 CVR1 VR1 Bit 1 CVR0 VR0 Bit 0 16F88 12F675 Fig. Generatorul tensiunii de referinţă poate fi pornit sau oprit cu ajutorul bitului de control CVREN (PIC16F88) și.2 Referinţa de tensiune Generatorul tensiunii de referinţă din compunerea comparatorului analogic este construit sub forma uneu reţele de 16 rezistenţe care furnizează o tensiune fixă de referinţă atunci când comparatorul operează în cu referinţă de tensiune internă comună. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 Exemplu.8 kΩ. Acest lucru poate fi realizat cu ajutorul unui comparator analogic conectat ca în figura 7. VDD R1 10k R1 10k C1 Ieşire R2 10k VIN R2 10k Fig. tensiunea la intrarea negativă devine mai mare sau mai mică (în funcţie de polaritatea semnalului de intrare) decât tensiunea de referinţă de la intrarea pozitivă. 77 .

utilizând biţii CVR<3:0>. În figura 7.13 este prezentată schema electrică de principiu a utilizării comparatorului analogic cu semnal de intrare extern și tensiune de referinţă generată intern. valoarea biţilor VR<3:0> este 12 (sau binar 1100). 24 VDD CVR<3:0> = + VDD . dacă CVRR=0 4 32 VREF = (7.12: Schema bloc a generatorului tensiunii de referinţă (PIC16F88). CVR<3:0> VDD . Atunci când tensiunea de referinţă este conectată la pinul de ieșire. REFERINŢA DE TENSIUNE VDD CVREN x 16 8R R R R R 8R CVRR Pinul RA2/AN2/CVREF/VREF- CVROE Multiplexor analogic 16-la-1 La intrarea comparatorului CVR3 CVR2 CVR1 CVR0 Fig.9.7. Exemplul 7. astfel: pentru CVRR=1 domeniul este curpins între valorile 0 și 0. dacă CVRR=1. Pentru controlul tensiunii de referinţă se utilizează registrul CVRCON (PIC16F88) sau VRCON (PIC12F675).9.625·VDD cu pas de VDD /24. Bitul CVRR permite alegerea domeniului de valori ale tensiunii de referinţă. conform relaţiei 7.se generează un semnal triunghiular sau sinusoidal cu frecvenţă de 10 kHz. 7. Tensiunea de referinţă se stabilește cu ajutorul formulei 7.5 V. Cu ajutorul unui generator de semnal conectat la intrarea CIN . Utilizând referinţa internă de tensiune a microcontrolerului PIC12F675 se stabilește o tensiune de referinţă VREF =2.1.720·VDD cu pas de VDD /32.9) Conectarea sau deconectarea referinţei de tensiune ca pin de ieșire se poate face prin intermediul bitului de control CVROE (PIC16F88). generatorul tensiunii de referinţă poate fi utilizat ca un convertor analog numeric dacă la ieșire se conectează o sarcină cu impedanţă foarte mare. Stabilind modul VRR =1. VREF = 78 12 CVR<3:0> VDD = ·5=25 V 24 24 .2.250·VDD și 0. iar pentru CVRR=0 domeniul este între 0.

13: Schema electrică de principiu a utilizării comparatorului analogic cu semnal extern și referinţă internă (PIC12F675).CM1=1.CM2=0. CMCON.13. logica se inversează setând la 1 bitul CINV. TRISIO.14). CMCON. CMCON. \\ Exemplul 7. iar pinul de ieșire al comparatorului este setat ca ieșire digitală (figura 7. VRCON.VREN=1. 7. VRCON. } 79 // // // // Pinul Pinul Pinul Pinul COUT COUT CINCIN- ca pin de iesire ca digital ca pin de intrare analogic // Comparator cu Vref interna // (CM2:0=011) // Iesire inversata // // // // Activare referinta interna Selectare mod Vref VR=6 (VR3:0=1100) (Vref=Vdd/2) .CM0=1.VR0=0. Pinul de intrare al semnalului este setat în modul intrare analogică.B1=1.VR3=0.B2=0. 7.B2=0.B1=1.CAPITOLUL 7. CMCON.VRR=1. GP1/CINA GP2/COUT D VREF Fig. ANSEL.14: Modul de funcţionare al comparatorului analogic pentru schema din figura 7.VR2=1. VRCON. VRCON. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 Rs 10k Generator de semnal 4 7 8 7 6 PIC12F675 1 ICSP VPP VDD GND PGD PGC Ch1 Osciloscop Ch2 5 5 Fig.1: Comparator analogic cu Vref interna si iesire digitala void main() { TRISIO. VRCON. COMPARATORUL ANALOGIC.CINV=1. ANSEL.VR1=1. VRCON. Deoarece ieșirea comparatorului în operarea implicită are 0 logic atunci când semnalul de intrare este mai mare decât valoarea de referinţă.

2. Exemplul 7.5 V.5 V). orice variaţie a acesteia ducând automat și la modificarea referinţei. ICSP 1 VPP VDD GND PGD PGC Ch1 Osciloscop Ch2 5 5 R1 4k3 R2 4k3 Din relaţia 7. REFERINŢA DE TENSIUNE Fig. astfel: VAVG = 2 5 = 80 R2 R2 VDD = · 5 =⇒ R1 = R2 R1 + R2 R1 + R2 . cât și semnalul de la ieșirea comparatorului sunt vizualizate pe un osciloscop cu două canale (figura 7. 7. durata impulsului este teoretic jumătate din perioada semnalului.16: Schema electrică de principiu a utilizării comparatorului analogic cu histerezis (PIC12F675).15: Rezultate observate pe osciloscop pentru semnale utilizate în exemplul 7. se poate implementa comparatorul analogic cu histerezis.15). Similar aplicaţiei precedente. Pentru valoarea aleasă (VREF =2. Rs 10k Generator de semnal 4 7 8 7 6 PIC12F675 R3 1k4 Fig. Utilizând același generator de semnal și o tensiune de prag VAVG =de 2. ceea ce determină ca cele două noi valori de prag să fie VTL =1 V și VTH =4 V. 7. Durata impulsurilor pozitive este invers proporţională cu valoarea referinţei de tensiune.1.2. De reţinut că valoarea practică a referinţei este puternic depedentă de valoarea tensiunii de alimentare VDD .2 se determină cele două rezistenţe R1 și R2 . schema se poate modifica pentru introducerea unui ciclu de histerezis cu tensiunea VH =3 V.7. Atât semnalul generat.

TRISIO. ANSEL. ANSEL.CM1=0.CINV=1. \\ Exemplul 7. CMCON. GP1/CINA GP0/CIN+ A GP2/COUT D Fig.CAPITOLUL 7.B0=1. Folosind relaţia 7.18: Rezultate observate pe osciloscop pentru semnale utilizate în exemplul 7.B2=0. CMCON.2. CMCON.B1=1. În figura 7. CMCON. 7.CM0=1.CM2=0. } // // // // // // 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.3 se obţine valoarea rezistenţei R3 : R3 = R1 R2 R1 + R2 VDD −1 VTH − VTL = 2 15 5 −1 4−1 ∼ 1 43 kΩ = Comparatorul operează în modul cu ieșire fără referinţă internă (CM<2:0>=001).B1=1. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 Se alege ca valoare pentru celor două rezistenţe R1 =R2 =4.B2=0.18 se prezintă comparativ rezultatele obţinute pentru un semnal de intrare sinusoidal și triunghiular. TRISIO. 7.2: Comparator analogic cu histerezis si iesire digitala void main() { TRISIO.3 kΩ.B0=1.17: Modul de funcţionare al comparatorului analogic pentru schema din figura 7. COMPARATORUL ANALOGIC.16. 81 . ANSEL.

3.20: Modul de funcţionare al comparatorului analogic pentru schema din figura 7. De exemplu. se determină cu ajutorul relaţiilor 7.19: Schema electrică de principiu a utilizării comparatorului analogic cu feresatră (PIC16F88). Astfel.de la pinul RA1. câte unul pentru fiecare nivel de prag al ferestrei.45 V și VTH-HI =3.2 kΩ.55V C2OUT=VIN>VTH-LO R3 4k3 Fig. PIC16F88 Generator de semnal Ch3 Ch2 Ch1 1 4 14 5 13 12 18 17 R1 4k3 R2 6k2 R3 4k3 1 ICSP VPP VDD GND PGD PGC Osciloscop 3 2 5 Fig.de la pinul RA0. se pot utiliza valorile R1 =R3 =4.55V C1 C1OUT=1-(VIN>VTH-HI) VIN R2 6k2 C2 VTH-LO=1. iar pragul maxim VTH-HI este conectat la intrarea analogică C1IN.2. comparatorul C1 are ieșire neinversată (C1INV=0).3 kΩ și R2 =6. pentru VTH-LO =1. iar comparatorul C2 are ieșire inversată (C2INV=1). 82 . VDD R1 4k3 VTH-HI=3.55 V. se poate utiliza microcontrolerul PIC16F88 în modul cu două ieșiri digitale și referinţă comună externă folosită ca intrare pentru semnalul util (CM<2:0>=110). 7. Prin urmare. Semnalul de intrare este conectat la intrarea comună analogică a semnalului de referinţă CVREF de la pinul RA2. Cele trei rezistenţe cu ajutorul cărora se stabilesc cele două tensiuni de prag. Pentru a realiza un comparator cu fereastră este necesară utilizarea a două comparatoare. Cele două comparatoare au ieșiri complementare.5.4 și 7. 7.7. VTH-LO și VTH-HI .19. REFERINŢA DE TENSIUNE Exemplul 7. Tensiunea de prag minim VTH-LO este conectată la intrarea analogică C2IN.

CMCON.21: Rezultate observate pe osciloscop pentru semnale utilizate în exemplul 7. 83 .B0=1. \\ Exemplul 7.B1=1. precum și suma acestora (M/MATH).3. Exemplul 7.CM0=0. ANSEL. CMCON. COMPARATORUL ANALOGIC. TRISA.CM2=1.B2=1. TRISA. iar tensiunea de referinţă de la intrarea pozitivă VREF este de 1.C2INV=1.4.B3=0. TRISA.22 este prezentată o aplicaţie pentru implementarea unui circuit cu oprire automată la detectarea unui semnal PWM a cărui durată a impulsului depășește valoarea T=2 ms. ANSEL. Pe ecranul osciloscopului se pot observa semnalul sursă (CH3).3: Comparator cu fereastra si iesiri digitale void main() { TRISA.B2=1. cele două ieșiri digitale se conectează la un operator AND sau se sumează pe ecranul osciloscopului (figura 7.B1=1. CMCON. În figura 7. ANSEL. ANSEL.B0=1. TRISA.CAPITOLUL 7. Tensiunea de alimentare este VDD =5 V.B4=0.CM1=1.21).C1INV=0. ANSEL. CMCON. MICROCONTROLERELE PIC12F675 ȘI PIC16F88 Pentru realizarea impulsului corespunzător ferestrei de tensiune. } // // // // // // // // // // Pinul Pinul Pinul Pinul Pinul Pinul Pinul Pinul Pinul Pinul C1INC1INC1OUT C1OUT C2INC2INC2IN+ C2IN+ C2OUT C2OUT ca pin de intrare analogic ca pin de iesire ca digital ca pin de intrare analogic ca pin de intrare analogic ca pin de iesire ca digital // Comparatoare cu iesire C1OUT. CMCON.B3=0. semnalele rezultate la cele două ieșiri ale comparatoarelor (CH1 și CH2). 7.B4=0.25 V. C2OUT // (CM2:0=110) // Iesire C1OUT neinversata // Iesire C2OUT inversata Fig.

Fig. cu modificarea valorii biţilor CVR<3:0> la noua valoare calculată. 7. Conform relaţiei 7. se determină valoarea C1 =470 nF.4.9.14). 84 .22: Schema electrică de principiu a circuitului de oprire automată cu comparator analogic (PIC12F675).8. Comparatorul analogic pentru PIC12F675 funcţionează în modul CM<2:0>=011 cu tensiune de referinţă provenită de la modulul intern și ieșire digitală pe pinul COUT (identic celui din figura 7. produsul R1 C1 pentru C1 încărcat cu VREF la momentul T va fi: R1 C 1 = −0 002 −T ∼ −0 002 ∼ 0 7 · 10−3 = = = ln(1 − VREF /VDD ) ln(1 − 1 25/5) −0 287 Alegând R1 =1.1. în modul VRR=1 cu CVR<3:0>=0110 (zecimal 6).5 kΩ. 7. VREF = 6 · 5 = 1 25 V 24 Pentru setul de instrucţiuni se poate utiliza același ca și cel din exemplul 7.2. Tensiunea de referinţă se determină pe baza relaţiei 7. REFERINŢA DE TENSIUNE D1 R1 1N4148 18k Generator de semnal PWM Ch3 Ch2 Ch1 12F675 5 4 7 8 7 6 C1 390nF 1 ICSP VPP VDD GND PGD PGC Osciloscop 5 Fig.23: Rezultate observate pe osciloscop pentru semnale utilizate în exemplul 7.7.

85 . Modulul ADC are un număr de intrări analogice multiplexate.Analog Digital Converter) are ca scop conversia unei tensiuni analogice de intrare într-o valoare numerică (digitală). Pentru un convertor ADC pe 10 biţi. rezultatul digital poate lua valori cuprinse între 0 și 1023. Microcontrolerul PIC16F887 Convertorul analog-digital (ADC . Fiecare intrare analogică este cuplată la un capacitor de tip sample-and-hold care. la rândul său.Capitolul 8 Convertorul analog-digital. este conectat la intrarea convertorului propriu-zis. Convertorul ADC generează un rezultat digital a tensiunii analogice prin tehnica aproximărilor succesive. 8. AV SS VREFAV DD VCFG0 = 0 VREF+ VCFG0 = 1 VCFG1 = 0 VCFG1 = 1 AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 AN12 AN13 CVREF FixedRef 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 ADON VSS ADRESH GO/DONE ADFM ADC 10 0 = Left Justify 1 = Right Justify 10 ADRESL CHS<3:0> Fig.1: Schema bloc a convertorului analog numeric (PIC16F887). Poate fi întâlnit cu o rezoluţie de 8 sau 10 biţi. în funcţie de modelul de microcontroler.

8.2: Regiștrii de control al modului digital sau analogic al porturilor (PIC16F887). Convertorul analog numeric poate converti atân semnale analogice. • formatarea rezultatului conversiei. Convertorul analog numeric poate genera întreruperi la sfârșitul efectuării unei conversii. • controlul întreruperii. Selectarea canalului analogic. • selectarea canalului analogic. Portul de intrare trebuie setat corecpunzător tipului de semnal.3: Regiștrii de control al convertorului analog numeric (PIC16F887). Astfel. selectabile software ca fiind fie tensiunile de alimentare ale microcontrolerului (VDD și VSS ). una pozitivă și una negativă. Fiecare din biţii regiștrilor ANSEL și ANSELH au valoarea setată pe 1 dacă portul asociat bitului operează în modul analogic sau valoarea 0 dacă portul operează digital. • frecvenţa de conversie A/D. pentru semnale analogice. R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) R/W (1) ANSEL ANS7 Bit 7 U (0) ANS76 Bit 6 U (0) ANS5 Bit 5 R/W (1) ANS4 Bit 4 R/W (1) ANS3 Bit 3 R/W (1) ANS2 Bit 2 R/W (1) ANS1 Bit 1 R/W (1) ANS0 Bit 0 R/W (1) ANSELH Bit 7 Bit 6 ANS13 Bit 5 ANS12 Bit 4 ANS11 Bit 3 ANS10 Bit 2 ANS9 Bit 1 ANS8 Bit 0 Fig.Convertorul ADC dispune de două referinţe de tensiune. Pentru operarea cu convertorul analog numeric trebuie efectuate setări legate de: • configurarea porturilor. Întreruperea poate fi utilizată la revenirea microcontrolerului din modul SLEEP. Convertorul analog numeric este conectat la un moment dat la o singură intrare dintre cele posibile. portul de intrare se setează cu ajutorul regiștrilor TRIS și ANSEL sau ANSELH pentru lucru în modul intrare analogică. fie nivelurile de tensiune de la pinii VREF + și VREF -. • selectarea referinţei de tensiune. Configurarea porturilor. cât și digitale. 86 . R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) ADCON0 ADCS1 Bit 7 R/W (0) ADCS0 Bit 6 U (0) CHS3 Bit 5 R/W (0) CHS2 Bit 4 R/W (0) CHS1 Bit 3 U (0) CHS0 Bit 2 U (0) GO/DONE Bit 1 U (0) ADON Bit 0 U (0) ADCON1 ADFM Bit 7 Bit 6 VCFG1 Bit 5 VCFG0 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Fig. 8. Intrarea (canalul analogic) se selectează cu ajutorul biţilor CHS<3:0> ai registrului de control ADCON0.

Timpul necesar pentru efectuarea unei conversii complete TCNV este egal cu 11 ciclii de conversie specific TAD (figura 8. 8. FOSC /8 (01). Limita superioară poate fi fie VDD (VCFG0=0).0 µs pentru VREF ≥ 3 V sau între 3. 8. valoarea lui TAD trebuie să aibă valori valide.4).0 us 32 us 2-6 us Valori nevalidate Valori valide Fig. TAD trebuie să se situeze între 1.0 us 2-6 us 4 MHz 500 ns 2.6 și 9. Sursa semnalului de ceas care stabilește frecvenţa cu care este convertit semnalul analogic se stabilește prin biţii ADCS<1:0> ai registrului ADCON0. CONVERTORUL ANALOG-DIGITAL. cuprinse într-un interval specific fiecărui tip de microcontroler (figura 8. Frecvenţa de conversie A/D. 87 . Pentru modelul PIC16F887.4: Diagrama de timp a unei conversii analog numerice (PIC16F887).5: Duratele de timp ale conversiei în funcţie de frecvenţa oscilatorului (PIC16F887). GO TGO Q4 TAD A/D CLK A/D Data ADRES ADIF GO Sample TACQ Eșantionare oprită 9 8 7 6 3 2 1 0 (TOSC/2) TCNV 1 TCY Date anterioare Date noi 1 TCY DONE Fig.0 us 2-6 us 1 MHz 2. fie tensiunea prezentă la pinul VREF + (VCFG0=1). Pentru a realiza o conversie corectă.5). Timpul TAD TAD 2TOSC 8TOSC 32TOSC 2TRC ADCS 00 01 10 11 20 MHz 100 ns 400 ns 1. Exită patru opţiuni posibile: FOSC /4 (00).(VCFG1=1). FOSC /32 (10) sau frecvenţa FRC derivată dintr-un oscilator intern specific de maxim 500 kHz (11).0 us 4. Tensiunea de referinţă are a scop stabilirea limitei minime și maxime a intervalului de valori ale tensiunii semnalului de intrare.0 µs pentru întreaga gamă a VREF .6 us 2-6 us FOSC 8 MHz 250 ns 1. Aceste valori se stabilesc cu ajutorul biţilor VCFG<1:0> ai registrului de control ADCON1.CAPITOLUL 8. Selectarea referinţei de tensiune. în timp ce limita inferioară poate fi VSS (VCFG1=0) sau tensiunea de la pinul VREF . orice modificare a frecvenţei de ceas determină modificarea frecvenţei de conversie A/D.0 us 8.0 și 9.0 us 8. Pentru primele trei moduri. MICROCONTROLERUL PIC16F887 BSF ADCON0.

PIC16F884 Ceas Memorie Frecvenţa maximă de operare Memorie de program Flash Memorie de date SRAM Memorie de date EEPROM Periferice Module timer Revenire din modul Sleep la modificarea unui pin Intrări analogice Caracteristici Pini de intrare/ieşire Pini de intrare Rezistenţe de pull-up interne Comparatoare analogice Module EUSART Module MSSP (SPI. 8. iar timpul de pornire TGO este TOSC /2 în funcţionare normală sau TOSC /2+TCY în modul SLEEP. Ștergerea bitului de semnalizare ADIF se face prin intermediul registurlui PIR1. TMR2 (8-bit) Da 14 (10-bit ADC) 35 1 Da (Port B) 2 1 1 1/1 Da 35 40-pin PDIP. va seta bitul de semnalizare a întreruperii ADIF la valoarea 1 (dacă întreruperea este activată) și va actualiza regiștrii ADRESH și ADRESL cu rezultatul conversiei.6: Moduri de reprezentare a rezultatului conversiei analog digitale (PIC16F887).7: Caracteristici comparative ale microcontrolerelor PIC16F884/887. Formatarea rezultatului conversiei.5 µs.de achiziţie TACQ este de 11. modulul ADC va trece bitul GO/DONE în 0. 44-pin QFN. Î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. Numărul pe 10 biţi rezultat în urma conversiei poate fi reprezentat în două moduri posibile: cu aliniere la stânga (left justified) sau cu aliniere la dreapta (right jsutified). Controlul întreruperii. Cele două operaţii trebuie efectuate în instrucţiuni diferite. 8. 88 . La finalul conversiei. Formatul datelor se stabilește prin bitul ADFM din registrul ADCON0 (figura 8. TQFP PIC16F887 8192 words 368 bytes 8 MHz intern. ADRESH (ADFM=0) MSB LSB ADRESL left justified bit0 bit7 bit0 bit7 (ADFM=1) bit7 MSB LSB right justified bit0 bit7 bit0 Fig. Convertorul A/D poate genera o întrerupere la terminarea fiecărei conversii dacă opţiunea este activată cu ajutorul bitului ADIE din registrul PIE1. I2C) Module ECCP/CCP Interfaţă ICSP Număr de instrucţiuni Capsule 4096 words 256 bytes 256 bytes TMR0 (8-bit). nu în același ciclu.6). 20 MHz extern Fig. TMR1 (16-bit).

Configurarea portului: • Configurarea pinului în modul intrare (TRIS).5 µs.3V] VREF-= [(VREF+)-2. 8. 7. Configurarea întreruperii (opţional): • • • • Ștergerea bitului de semnalizare (ADIF). VSS-0. Pornirea modulului ADC (ADON). Așteptarea terminării conversiei A/D prin una din modalităţile următoare: • Verificarea continuă dacă valoarea bitului GO/DONE este 0. Activarea întreruperilor globale (GIE). Citirea rezultatului conversiei A/D din ADRESH și ADRESL. • Configurarea pinului ca analogic (ANSEL/ANSELH). 2. 3.. • Așteptarea generării întreruperii (ADIF=1).0V ..3V] 0x0000 (0) 0x03FF (1023) ADRESH+ADRESL Fig.. Configurarea tensiunilor de referinţă (VCFG<1:0>). 6.. 5. Pornirea conversiei A/D (GO/DONE=1). Ștergerea bitului de semnalizare a întreruperii (ADIF).5V .8: Stabilirea limitelor intervalului de conversie A/D (PIC16F887). Activarea întreruperii modulului ADC (ADIE). MICROCONTROLERUL PIC16F887 VIN VREF+= [VDD-2.CAPITOLUL 8. 8. Configurarea modulului ADC: • • • • • Selectarea frecvenţei de conversie (ADCS<1:0>). CONVERTORUL ANALOG-DIGITAL. Selectarea formatului rezultatului (ADFM). Așteptarea scurgerii timpului de achiziţie TACQ =11. 89 . Selectarea canalului de intrare (CHS<3:0>). VDD+0. Activarea întreruperilor periferice (PEIE). 4. Etapele necesare pentru realizarea unei conversii analog digitale sunt: 1.

RE3/MCLR/VPP RA0/AN0/ULPWU/C12IN0RA1/AN1/C12IN1RA2/AN2/VREF-/CVREF/C2IN+ RA3/AN3/VREF+/C1IN+ RA4/T0CKI/C1OUT RA5/AN4/SS/C2OUT RE0/AN5 RE1/AN6 RE2/AN7 VDD VSS RA7/OSC1/CLKIN RA6/OSC2/CLKOUT RC0/T0OSO/T1CKI RC1/T1OSI/CCP2 RC2/P1A/CCP1 RC3/SCK/SCL RD0 RD1 1• 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PIC16F887 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 RB7/PGD RB6/PGC RB5/AN13/T1G RB4/AN11 RB3/AN9/PGM/C12IN2RB2/AN8 RB1/AN10/C12IN3RB0/AN12/INT VDD VSS RD7/P1D RD6/P1C RD5/P1B RD4 RC7/RX/DT RC6/TX/CK RC5/SDO RC4/SDI/SDA RD3 RD2 Fig.32 12. 8.. În figura 8. Tensiunea de intrare VIN poate fi furnizată de la un rezistor semireglabil sau de la un generator de semnal. 90 . Cele două tensiuni sunt setate cu ajutorul a două rezistenţe semireglabile cu rol de divizor al tensiunii de referinţă VDD . LED10 VREFR12 220 VREF+ 10k R2 15k Fig.. RC7:6 R3 220 LED1 .9: Configuraţia pinilor pentru microcontrolerul PIC16F887. opţiune selectabilă cu ajutorul comutatorului K1.10 este prezentată schema de principiul pentru măsurarea unei tensiuni analogice și stabilirea intervalului de conversie A/D cu ajutorul pinilor VREF + și VREF -. PIC16F887 Generator de semnal VDD P3 10k 10 ICSP 1 VPP VDD GND PGD PGC K1 VIN 2 4 1 11.10: Schema electrică de principiu a utilizării convertorului A/D cu un singur semnal de intrare și cele două referinţe externe (PIC16F887). 8.31 40 39 5 P1 R1 10k P2 5k 5 RD0:7.

ADON=1.ADIE=1. Vref+ si Vref. delay_us(12).25 V. ADCON1. } // // // // // 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 // // // // // // Frecventa de esantionare 32Tosc (ADCS1:0=10) Tensiune Vref+ pe pinul RA3 Tensiune Vref. conversia A/D este continuă. PORTC=ADRESL. ADCON1.CHS1=0.GO_DONE=1. Astfel.CHS0=0.GO_DONE=1. iar pentru VREF între 0 V (VSS ) și 1.ADIF=0.externe.PEIE=1.CHS2=0.8. ADCON0. intrare pe AN0) *\ void interrupt() { PORTD=ADRESH.ADFM=0. PIE1. CONVERTORUL ANALOG-DIGITAL.5 V și 5 V (VDD ). ADCON0. Cei 10 biţi ai rezultatului conversiei se afișează vizual cu ajutorul a zece LEDuri (LED1-LED10) conectate la cei 8 biţi ai portului D (RD<7:0>) și la doi biţi ai portului C (RC<7:6>). ADCON0. R2 și rezistenţele semireglabile P1 . INTCON. MICROCONTROLERUL PIC16F887 Rezistenţele R1 . ADCON0.ADCS1=1. ANSELH=0xFF.GIE=1. ADCON0. Datorită resetării bitului GO/DONE la valoarea 1 la fiecare întrerupere. ADCON0. PIR1. ADCON1.ADCS0=0.ADIF=0. \* Exemplul 8.CAPITOLUL 8. ADCON0. delay_us(12). TRISD=0.VCFG0=1.CHS3=0. P2 se aleg astfel încât cele două tensiuni de referinţă să satisfacă regulile specificate în figura 8. } void main() { TRISA=0xFF. ANSEL=0xFF. TRISC=0.VCFG1=1. INTCON.1: Conversie A/D continua cu generare de intreruperi (ceas intern 8 MHz. ADCON0. ADCON0. se alege R2 =15 kΩ și P2 =5 kΩ. se alege R1 =P1 =10 kΩ. pentru ca VREF + să ia valori între 2.pe pinul RA2 Selectare canal de intrare AN0 (CHS3:0=0000) // Format date aliniat la dreapta // Pornire modul ADC // // // // Activare Activare Activare Stergere intrerupere ADC intreruperi periferice intreruperi globale flag intrerupere ADC // Asteptare Tacq // Pornire achizitie 91 . PIR1.

Deoarece registrul EEADR are 8 biţi. Registrul EECON1 are rolul de control al accesului către memoria EEPROM.1: Regiștrul de control al memoriei EEPROM (PIC16F88).Capitolul 9 Memoria EEPROM Memoria EEPROM a unui microcontroler este o memorie de date care poate fi citită sau scrisă pe parcursul funcţionării normale. se pot accesa până la 256 celule de memorie. EEDATA și EEADR. Durata unui ciclu de scriere al memoriei EEPROM variază de la un model de microcontroler la altul. R/W (x) U (0) U (0) R/W (x) R/W (x) R/W (0) R/S (0) R/S (0) EECON1 EEPGD Bit 7 Bit 6 Bit 5 FREE Bit 4 WRERR Bit 3 WREN Bit 2 WR Bit 1 RD Bit 0 Fig. Cel de-al doilea registru de control EECON2 nu este implementat fizic și este utilizat exclusiv în timpul procesului de scriere. Acești biţi pot fi doar setaţi prin software la valoarea 1 și nu pot fi șterși decât hardware la terminarea operaţiei. de asemenea. Din punct de vedere practic este util ca după fiecare proces de scriere să se verifice prin comparare datele scrise. Biţii de control RD și WR iniţiază operaţia de citire și. de scriere. rezultând un timp relativ important al procesului de scriere. iar registrul EEADR conţine adresa memoriei EEPROM care este accesată la un moment dat. La terminarea scrierii în memoria EEPROM se poate genera o întrerupere dacă aceasta este activată din registrul INTCON prin intermediul biţilor GIE și PEIE și din registrul PIE2 prin bitul EEIE. semnalizarea se face cu ajutorul bitului EEIF din registrul PIR2. Pentru scriere trebuie setat la 1. respectiv. 92 . Accesul memoriei EEPROM se face prin intermediul regiștrilor EECON1. iar la orice eroare sau reset se setează automat la valoarea 1 bitul de semnalizare a erorii WRERR. Scrierea unei informaţii într-o celulă de memorie implică ștergerea automată a conţinutului precedent (ștergere înaintea scrierii). Bitul EEPGD stabilește dacă operaţiile se fac în memoria de date (EEPGD=0) sau în memoria program (EEPGD=1). bitul de activare WREN. Registrul EEDATA conţine informaţia pe 8 biţi pentru scriere sau citire. 9. De asemenea.

Exemplu. Utilizând modulul Timer2. pentru a genera un semnal cu frecvenţa FO este necesară citirea datelor cu o frecvenţă FCLK egală cu: FCLK = N · FO (9. Un astfel de generator se semnal utilizează o formă de undă eșantionată pe un anumit număr de eșantioane care este stocată în memoria ROM și care. O perioadă completă a unui semnal sinusoidal este eșantionată pe 8 biţi (N=256 eșantioane). citită repetitiv cu o anumită frecvenţă.280 kHz. 93 . se poate stabili perioada de generare a întreruperilor TCLK egală cu inversul frecvenţei FCLK . În final.Direct Digital Synthesizer).CAPITOLUL 9.2 prezintă un generator de semnal de tip DDS utilizând convertorul numeric analogic Texas Instruments TLC7226 și microcontrolerul PIC16F88 cu 256 octeţi de EEPROM.1. TLC7226 4 Osciloscop 2 DB0:7 18 3 15 16 17 5 6 PIC16F88 4 14 5 13 12 16 1 ICSP VPP VDD GND PGD PGC RB0:7 8 15 20MHz C1 30pF 5 R1 220 LED1 . generează un semnal cu același formă și la o frecvenţă dorită de utilizator. pentru a obţine prin sinteză directă un semnal sinusoidal cu frecvenţa FO =630 Hz. Este preferabil ca citirea datelor din memoria EEPROM să se facă la momente de timp determinate prin generarea unor întreruperi cu ajutorul unui timer. MEMORIA EEPROM Generator de semnal cu sinteză directă (DDS) Un exemplu de aplicaţie este utilizarea memoriei EEPROM pentru stocarea formelor de undă ale unui generator de semnal cu sinteză directă (DDS . Schema din figura 9.2: Schema electrică de principiu a utilizării memoriei EEPROM pentru generarea DDS a unui semnal (PIC16F88). Considerând o perioadă a unei forme de undă eșantionată pe N de eșantioane.1) Semnalul cuantizat este ulterior transmis unui convertor digital-analogic (DAC Digital Analog Converter) care efectuează conversia eșantioanelor în tensiune.. semnalul analogic generat este trecut printr-un filtru trece-jos de refacere. este necesară o frecvenţă de citire a datelor FCLK =256·630=161. LED8 R8 220 C2 30pF Fig.. Conform relaţiei 9. 9.

Citirea memoriei EEPROM se face continuu prin incrementarea la fiecare întrerupere a unui contor de adresă (variabila i).2) unde n ia valori între 1 și 256.1: Generare semnal 630 Hz DDS cu EEPROM (mod HS) unsigned char i. la incrementarea valorii 255 acesta devine automat 0. Pentru fișierul de tip text. PIE1.5. PR2=30. \\ Exemplul 9. iar [·] este operatorul parte întreagă. Utilizând modulul Timer2 al unui microcontroler PIC16F88 care operează la frecvenţa FOSC =20 MHz. ANSEL=0.TMR2IE=1. PORTB=EEDATA. T2CON=0b00000100. PostS=1:1. INTCON.Cele 256 de eșantioanele ale semnalului sinusoidal având valori întregi între 0 și 255 pot fi generate cu ajutorul relaţiei 9. INTCON. Deoarece contorul este definit pe 8 biţi. } void main() { TRISB=0.2. iar la fiecare 16 octeţi prin caracterele LF (ASCII=10) și CR (ASCII=13). octeţii sunt separaţi prin caracterul TAB (ASCII=9).PEIE=1.GIE=1. postscalerul PostS=1:1 și se determină valoarea registrului PR2=31 (sau cea reală PR=30).TMR2IF=0. Scrierea datelor în memoria EEPROM poate fi făcută cu ajutorul unui fișier iHex sau text în care sunt dispuse cei 256 de octeţi ai sinusoidei discretizate. conform relaţiei 4. reluându-se ciclul de numărare. 1 4 = · Pres · PR2 · PostS =⇒ Pres · PR2 · PostS ∼ 31 = 6 161280 20 · 10 Se alege prescalerul PreS=1:1. void interrupt() { PIR1. rezultând un total de 784 octeţi. s[n] = 255 2 1 + sin 2π · n−1 256 (9. } 94 // Definire contor pe 8 biti // // // // // 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 // Activare intrerupere Timer2 // Activare intreruperi periferice // Activare intreruperi globale // Scriere valoare registru PR2 // Timer2 pornit. EECON1. se determină perioada întreruperilor. i++. EEADR=i.RD=1. PreS=1:1 .

95 . MEMORIA EEPROM Alte forme de undă pot fi generate similar. Semnal impuls: s[n] = Semnal dinte de fierăstrău: s[n] = n − 1 pentru 1 ≤ Semnal triunghiular: s[n] = 255(n − 1)/127 dacă 1 ≤ n ≤ 128 255(256 − n)/127 dacă 128 < n ≤ 256 (9.3: Semnale generate DDS cu ajutorul unor forme de undă stocate în memoria EEPROM.4) 255 dacă 1 ≤ n ≤ 128 0 dacă 128 < n ≤ 256 (9.3) Utilizând același cod precedent și modificând pe rând conţinutul memoriei EEPROM se obţin formele de undă din figura 9. 9. De reţinut faptul că această modalitate de generare nu permite obţinerea de frecvenţe mari (în general sub 1 kHz).CAPITOLUL 9. Fig.3. utilizând eșantioane generate și apoi stocate în memoria EEPROM a microcontrolerului.5) ≤ 256 (9.

ceea ce este suficient aplicaţiei.4). rezultă un necesar de 240 octeţi de memorie EEPROM. 9. TInt Timer1 = 4 FOSC · PS · (65536 − TMR1) = 4 · 8 · 15360 = 15 s 32768 Scrierea memorie EEPROM se face cu ajutorul unei secvenţe de cod care trebuie să conţină obligatoriu o secvenţă de scriere a valorii 0x55 urmate de scrierea valorii 0xAA în registrul EECON2 înainte de comanda propriu-zisă de scriere. Întreruperea este utilizată pentru a comanda efectuarea măsurării tensiunii și apoi scrierea valorii numerice rezultate în memoria EEPROM. Microcontrolerul PIC16F88 conţine o cantitatea de 256 octeţi. proporţională cu intensitatea luminii (figura 9.4: Schema electrică de principiu a utilizării memoriei EEPROM pentru înregistrarea datelor (PIC16F88). este utilă asigurarea unui consum cât mai mic. Considerând că microcontrolerul măsoară tensiunea divizorului pe parcursul unei ore la un interval de 15 secunde. toate întreruperile să fie dezactivate temporar. prin salvarea registrului INTCON într-o variabilă temporară și apoi ștergerea sa. Deoarece circuitul este destinat operării pe perioade mari de timp și independent. Se recomandă ca.Înregistrator de date (data logger) Memoria EEPROM poate fi utilizată pe parcursul funcţionării microcontrolerului pentru stocarea unor date sau măsurători efectuate periodic sau la anumite momente de timp. 96 . VDD R1 50k 17 R2 50k 15 PIC16F88 4 14 5 13 12 16 1 ICSP VPP VDD GND PGD PGC 5 Fig. Prin urmare. având frecvenţa de 32.768 kHz Utilizând relaţia 4. Valorile regiștrilor pe 8 biţi vor fi. Prescalerul PS ca avea factorul de divizare 1:8 iar registrul TMR1 va avea valoarea 50176 (65536-50176=15360). Acest lucru este important mai ales din punct de vedere al portabilităţii și stocării în timp la întreruperea funcţionării circuitului. Un exemplu de aplicaţie este monitorizarea pe parcursul unei zile a intensităţii luminoase dintr-o încăpere sau din exterior. prin urmare TMR1H=196 și TMR1L=0.4 se determină parametrii de lucru ai modulului Timer1 astfel încât să genereze o întrerupere la fiecare 15 secunde. pe timpul scrierii. Utilizând o fotorezistenţă (R1 ) se poate măsura la intervale bine definite de timp valoarea analogică a unui divizor rezistiv (R1 și R2 ). se alege utilizarea unui cristal de cuarţ extern de mică putere.

PORTA.WREN=1. Ștergerea bitului de semnalizare a întreruperii EEIF (dacă a fost activată). 9. 4.2: Logger de date in EEPROM (mod LP) unsigned char adresa. EEDATA=ADRESH. Scrierea datelor prin setarea bitului WR. while(ADCON0. adresa++. Selectarea memoriei EEPROM prin ștergerea bitului EEPGD. int k. Executarea secvenţei obligatorii: • scrierea valorii 0x55 în registrul EECON2. Scrierea adresei de memorie în registrul EEADR. unsigned char SaveInt.GO_DONE=1.WR=1. EECON1. Scrierea datelor pe 8 biţi în registrul EEDATA. EEADR=adresa. EECON2=0xAA.B2=!PORTA. Eliminarea posibilităţii de scriere în memorie prin ștergerea bitului WREN. 3. } // Variabila contor adresa // Variabila salvare reg.B2.B2. \\ Exemplul 9. EECON1. Activarea posibilităţii scrierii prin setarea bitului WREN. Verificare dacă nu există o scriere în curs (WR). 8. TMR1L=0.TMR1IF=0. 5.B2=!PORTA. INTCON=SaveInt. Reactivarea întreruperilor (dacă acestea au fost dezactivate). SaveInt=INTCON. 2.GO_DONE){}. EECON1.CAPITOLUL 9. INTCON=0. ADCON0. EECON1. 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 . PORTA. TMR1H=196. 7. EECON2=0x55. void interrupt() { PIR1.WREN=0.EEPGD=0. • scrierea valorii 0xAA în registrul EECON2. 6. 10. MEMORIA EEPROM Etapele necesare pentru scrierea în memoria EEPROM sunt: 1.

EEADR++. ADCON0. adresa=0. EECON2=0xAA.void main() { TRISA. delay_ms(6). EEADR=0. } // // // // // // // // // // // // // // // RA0 RA0 RB4 RA0 RB4 ca pin de intrare ca pin analogic ca pin de iesire ca pin digital initializat stins 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 // Dezactivare scriere in EEPROM // Initializare adresa // // // // // Tensiune Vref+ = Vdd Tensiune Vref.ADCS0=0. 98 .ADCS2=1. for (k=0.CHS1=0. EECON1. ADCON0. ADCON0.k<256.CHS0=0.T1CKPS1=1.TMR1CS=0. la ciclul de iniţializare prin ștergerea completă a memoriei este necesară includerea unui timp de așteptare minim la fiecare celulă accesată prin ștergere/scriere. 8 ms).ADCS1=1.CHS2=0.TMR1ON=1. INTCON.= 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 // Activare intrerupere Timer1 // Activare intreruperi periferice // Activare intreruperi globale Deoarece memoria EEPROM necesită un timp de scriere mare (TDEW =4 .GIE=1. INTCON. } EECON1. EECON2=0x55. T1CON. ADCON1.B2=0. TRISA.EEPGD=0.ADFM=0.WREN=1.B2=0. ADCON0.k++) { EEDATA=0x00..B0=1. ADCON0. ADCON1. EECON1.B0=1. PIE1.PEIE=1.VCFG1=0.B2=0.ADON=1. T1CON. ADCON0. T1CON. TMR1H=196.T1CKPS0=1. TMR1L=0. ANSEL. PORTA. ANSEL.WREN=0.TMR1IE=1. ADCON1. T1CON.VCFG0=0. ADCON1.WR=1. EECON1.

regiștrii de deplasare. prin master înţelegându-se dispozitivul care iniţiază comunicaţia. 10. comunicaţiile sincrone sunt realizate prin intermediul modulelor de tip SSP (Synchronous Serial Port) și sunt utilizate pentru a realiza legătura cu alte periferice (memorii EEPROM seriale. afișoare etc. • SS . senzori. convertoare A/D.Serial Data In (linie de recepţie).1): • SDO .1 Comunicaţia SPI Creată iniţial de către firma Motorola.1: Comunicaţia de tip SPI îintre un dispozitiv master și unul slave. Modulele SSP poate opera în două moduri: • SPI (Serial Peripheral Interface). • SCK .Serial Data Out (linie de transmisie). Dispozitivele conectate la magistrala SPI pot opera în modul master/slave. comunicaţia de tip SPI operează în modul full duplex cu un singur master și permite un schimb de date grupate pe 8 biţi cu ajutorul a patru linii de intrare/ieșire (figura 10. SCK SCK SDI SDO SS Master SPI SDO SDI SS Slave SPI Fig.Serial Clock (linie de sincronizare). În cazul microcontrolerelor. • SDI . 10.Slave Select (linie de selecţie a dispozitivului slave).Capitolul 10 Comunicaţiile seriale sincrone Comunicaţiile seriale sincrone sunt acele comuncaţii care necesită un canal suplimentar care să permită existenţa unui semnal de ceas cu care datele se sincronizează pe durata transmisiei sau recepţiei. 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 . • I2 C (Inter-Integrated Circuit).) sau cu alte microcontrolere.

100 . numărul acestora poate varia în funcţie de aplicaţie. Comunicaţia SPI permite semnale de ceas de până la 70 MHz și distanţe maxime de câtiva metri.1.10. Pe o magistrală de tip SPI pot fi conectate doar dispozitive slave care au ieșirile de tip tri-state. întregul lanţ funcţionând ca un registru de deplasare. pentru fiecare dispozitiv slave există câte o linie de selecţie SS separată. În modul independent. după care se efectuează o transmisie full-duplex implementată cu ajutorul a doi regiștrii de deplasare pe 8 biţi conectaţi în inel sub forma unui buffer circular (figura 10. Atunci când nu mai sunt date de transmis dispozitivul master oprește semnalul de ceas și deselectează dispozitivul slave. dispozitivul master efectuează mai întâi selecţia dispozitivului periferic cu care dorește a comunica. datele primite fiind retransmise de fiecare dispozitiv către următorul. dispozitivele slave nu necesită adrese unice iar consumul de putere este mic.2: Moduri de interfaţare a dispozitivelor slave în comunicaţia de tip SPI. • dispozitivul slave transmite un bit pe linia SPO a acestuia iar dispozitivul master citește bitul de la linia SPI proprie. Deoarece liniile de date sunt conectate împreună.a. acestea trebuie să fie de tip tri-state. denumit și daisy-chain (figura 10. Deși uzual.. fiind modul de lucru cel mai întâlnit.d. Pe parcursul fiecărui ciclu SPI se schimbă câte un bit de informaţie. astfel: • dispozitivul master transmite un bit pe linia SPO a acestuia iar dispozitivul slave citește bitul de la linia SPI proprie.m. COMUNICAŢIA SPI de selectare SS activă pe 0. transmisia nu este limitată la 8 biţi.2). Modul cooperativ presupune conectarea tuturor dispozitivelor slave la o singură linie de selecţie SS. Pentru iniţializarea unei transmisii de date. Conexiune SPI cu dispozitive slave independente SCK SDO SCK SDI SDO SS Conexiune SPI cu dispozitive slave cooperative SCK SCK SDI SDO SS Master SPI SDI SS1 SS2 SS3 Slave SPI Master SPI SDO SDI SS Slave SPI SCK SDI SDO SS SCK Slave SPI SDI SDO SS Slave SPI SCK SDI SDO SS SCK Slave SPI SDI SDO SS Slave SPI Fig. Avantajul este dat de interfaţarea simplă. Configurarea dispozitivelor slave conectate la magistrala SPI se poate face independent sau cooperativ. Ieșirea de date a primului dispozitiv slave este legată la intrarea celui de-al doilea ș.3). pentru transmiterea celor 8 biţi de date se utilizează opt cicli. 10.

iar datele de ieșire sunt transmise pe frontul descrescător al semnalului de ceas. în plus faţă de semnalul de ceas.CAPITOLUL 10. Acest lucru înseamnă. – CPHA=1: datele de intrare sunt recepţionate pe frontul crescător al semnalului de ceas. CPOL=0 SCK CPOL=1 SS Ceas CPHA=0 SDO SDI Z Z 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 Z Z Ceas CPHA=1 SDO SDI Z Z 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 Z Z Fig. se specifică faza semnalului de ceas când datele sunt citite (CPHA). • CPOL=1: – CPHA=0: datele de intrare sunt recepţionate pe frontul descător al semnalului de ceas. trebuie să seteze polaritatea acestuia în raport cu datele. iar datele de ieșire sunt transmise pe frontul descrescător al semnalului de ceas. iar datele de ieșire sunt transmise pe frontul crescător al semnalului de ceas. • CPOL=0: – CPHA=0: datele de intrare sunt recepţionate pe frontul crescător al semnalului de ceas. specificarea momentului când datele sunt citite. 101 . de fapt. Dispozitivul master. De asemenea.4: Diagrame de timp ale transmisiei SPI. COMUNICAŢIILE SERIALE SINCRONE Master SPI SCK 0 1 2 3 4 5 6 7 SDO SDI SDI SDO Slave SPI 0 1 2 3 4 5 6 7 Fig. 10. – CPHA=1: datele de intrare sunt recepţionate pe frontul descător al semnalului de ceas. respectiv pe frontul crescător (CPOL=0) sau cel descrescător al impulsurilor de ceas (CPOL=1). iar datele de ieșire sunt transmise pe frontul crescrescător al semnalului de ceas.3: Ciclul de transmisie în comunicaţia de tip SPI. 10.

Serial Clock (semnal de ceas).2 Comunicaţia I2 C I2 C reprezintă o comunicaţie serială multimaster creată de către firma Philips și este utilizată pentru a conecta periferice cu viteză mică de transfer. Distanţele sunt redeuse la câţiva metrii datorită capacităţii maxime a magistralei de 400 pF.5). Un dispozitiv master se află iniţial în modul de operare transmisie master și transmite un bit de START urmat de cei șapte biţi ai adresei dispozitivului slave cu care dorește comunicarea. • SDA . 1Mbps (în modul rapid plus) sau 3. datorită faptului că pot exista mai multe dispozitive master simultan: • Transmisie master: un dispozitiv master transmite date către un dispozitiv slave.5: Comunicaţia de tip I2 C îintre un dispozitiv master și alte dispozitive slave. COMUNICAŢIA I2 C 10.10. Variante recente ale I2 C permit viteze mai mari. în timp ce dispozitivele slave recepţionează semnalul de ceas și adresele. rezultând un maxim de 112 periferice care pot comunica pe aceiași magistrală. Dispozitivele master generează semnalul de ceas și adresa dispozitivelor slave.4 Mbps (în modul de mare viteză). 10. Magistrala I2 C utilizează două linii bidirecţionale de tip drenă deschisă.2. • Transmisie slave: un dispozitiv slave transmite date către un dispozitiv master. conectate implicit la VDD prin rezistenţe de pull-up (figura 10. acestea fiind predominant întâlnite pe sistemele embedded și având adresele definite pe 16 biţi.Serial Data Line (linie de date). Magistrala I2 C standard conţine un spaţiu de adrese pe 7 biţi cu 16 adrese rezervate. de 400 kbps (în modul rapid). • SCL . • Recepţie master: un dispozitiv master recepţionează date de la un dispozitiv slave. Vitezele uzuale pe magistrală sunt de 100 kbps (în modul standard) sau 10 kbps (în modul de viteză redusă). VDD RPU SDA SCL MCU Master ADC Slave DAC Slave MCU Slave Fig. Există patru moduri de operare pe magistrala I2 C. urmat în final de un bit prin care se specifică dacă masterul 102 .3 V și 5 V. Tensiunea de alimentare poate lua valori între 3. • Recepţie slave: un dispozitiv slave recepţionează date de la un dispozitiv master. deși se permit și alte valori. dar se pot alege și alte valori inferioare.

În cazul în care există dispozitivul slave cu adresa specificată.linie de date. în care un dispozitiv master trimite sau citește cel puţin de două ori consecutiv. ceilalţi biţi de start poartă denumirea de START repetitiv.CAPITOLUL 10.3 Comunicaţia PS/2 Interfaţa PS/2 a fost dezvoltată de către firma IBM în scopul conectării la un PC a dispozitivelor periferice de introdus date. Bitul STOP este transmis sub forma unei tranziţii de la 0 la 1 logic a liniei SDA în timp ce linia SCL este în 1 logic (figura 10. 103 . fiecare dintre ele fiind delimitate de biţii START și STOP: • mesaj simplu în care dispozitivul master trimite date către un dispozitiv slave. 10. COMUNICAŢIILE SERIALE SINCRONE dorește scrierea (0) sau citirea (1) datelor către slave. • mesaje combinate. Fiecare mesaj începe cu bitul MSB. Cu excepţia primului. Magistrala de date este de tip open-collector. • DATA . ceea ce semnifică faptul că următorul transfer face parte din același mesaj. respectiv recepţie sau transmisie slave.semnal de ceas. Comunicaţia I2 C conţine trei tipuri elementare de mesaje. fiecare citire sau scriere începe cu bitul START urmat de adresa dispozitivului slave. Dispozitivul master continuă operarea în modul transmisie sau recepţie master (în funcţie de bitul final). Bitul START este transmis sub forma unei tranziţii de la 1 la 0 logic a liniei SDA iar linia SCL trece în 1 logic. Comunicaţia este realizată prin intermediul unui protocol sincron bidirecţional serial cu primul bit LSB. Magistrala PS/2 conţine două linii care în lipsa comunicaţiei au starea 1 logic. În cazul unor mesaje combinate. fiind conectate la VDD prin intermediul unor rezistenţe de pull-up.6: Diagrama de timp ale transmisiei I2 C. SDA SCL 1 2 3 4 5 6 7 START STOP Fig. precum mouse-ul sau tastatura. 10.6). • CLOCK . • mesaj simplu în care dispozitivul master primește date de la un dispozitiv slave. acesta răspunde printr-un bit de confirmare ACK (Acknowledge). Acești biţi nu sunt precedaţi de biţi de STOP. în timp ce dispozitivul slave va opera într-un mod complementar.

De asemenea. În cazul transmisiei de la computer către periferic. Spre deosebire de celelalte tipuri de comunicaţii seriale sincrone unde valoarea exactă a frecvenţei semnalului de ceas nu era critică. În oricare dintre cele două situaţii. Transmisia este structurată pe 11 biţi.7 kHz.8: Diagrama de timp extinsă a transmisiei PS/2.3. în cazul comunicaţiei PS/2 duratele de timp trebuie realizate întocmai. Datele trimise de la periferic la computer sunt citite pe frontul descrescător al semnalului de ceas. astfel: un bit de START activ pe 0 logic. în timp ce datele transmise de la computer către periferic sunt citite pe frontul crescător. 8 biţi de date (LSB primul). există al 12-lea bit de confirmare (acknowledge). iar timpul cuprins între tranziţia bitului de date și momentul tranziţiei semnalului de ceas pe frontul descrescător trebuie să fie de minim 5 µs dar nu mai mult de 25 µs. un bit de paritate impară și un bit de STOP activ pe 1 logic. 10. timpul necesar trimiterii pachetului de date nu trebuie să depășească 2 ms. ceea ce se traduce printr-o o durată a impulsului de ceas cuprinsă între 30 și 50 µs. Durata de timp între momentul în care linia semnalului de ceas al computerului devine 0 logic și începutul generării semnalului de ceas de către periferic trebuie să nu fie mai mare de 15 ms. timpul cuprins între momentul tranziţiei semnalului de ceas pe frontul crescător și tranziţia bitului de date trebuie să fie de cel puţin 5 µs. De asemenea. depășirea duratei maxime determină generarea unei erori de către computer. < 15ms > 100us CLOCK < 2ms DATA START 1 2 3 4 5 6 7 8 P STOP CLOCK DATA ACK Fig. 104 PERIFERIC COMPUTER .10. 10. Semnalul de ceas trebuie săi aibă valoarea frecvenţei între 10 și 16. COMUNICAŢIA PS/2 VDD RPU DATA CLOCK Host PS/2 Keyboard PS/2 Mouse Fig.7: Comunicaţia de tip PS/2 îintre un dispozitiv host (computer) și dispozitivele de intrare.

Se așteaptă ca perifericul să trecă linia de ceas pe 1 logic. În concluzie. După recepţia semnalului de confirmare ACK. Se repetă pașii 5-7 pentru restul de 7 biţi și bitul de paritate. 6. 105 . 9. Se așteaptă ca perifericul să treacă linia de ceas pe 0 logic. 11. Se așteaptă ca perifericul să trecă linia de date și linia de ceas pe 1 logic. 1. 12. acesta nu trebuie să sosească într-un timp mai mare decât 20 ms. Se setează linia de date pe starea logică corespunzătoare primului bit de date. Se așteaptă ca perifericul să trecă linia de ceas pe 0 logic. Se trece linia de ceas pe 0 logic pentru minim 100 µs. Se trece linia de date pe 0 logic. 7. PERIFERIC CĂTRE COMPUTER CLOCK DATA START 1 2 3 4 5 6 7 8 P STOP COMPUTER CĂTRE PERIFERIC CLOCK DATA START 1 2 3 4 5 6 7 8 P STOP ACK Fig. COMUNICAŢIILE SERIALE SINCRONE Etapele parcurse de computer pentru transmisia datelor către periferic sunt descrise în cele ce urmează. 10. CLOCK=0. • Computerul cere date: DATA=0. astfel: • Stare neutră: DATA=1. • Stare blocată: DATA=1. Se așteaptă ca perifericul să trecă linia de ceas pe 0 logic. CLOCK=1. computerul poate trece linia semnalului de ceas în 0 logic pentru a împiedica orice comunicaţie pe perioada preocesării datelor. 8. 3. CLOCK=1. magistrala PS/2 se poate afla într-una din cele trei stări posibile. în caz contrar computerul generând o eroare. Se așteaptă ca perifericul să trecă linia de date pe 0 logic. Se trece linia de ceas pe 1 logic. 10. În cazul în care computerul trimite către periferic o comandă care necesită un răspuns. Se trece linia de date pe 1 logic. 2. 5.9: Diagramele de timp ale celor două tipuri de transmisii PS/2.CAPITOLUL 10. 4.

MODULUL SSP ÎN MODUL SPI Bitul de paritate impară determină dacă numărului de valori de 1 din compunerea celor 8 biţi de date este impar (P=0) sau par (P=1) și se determină cu relaţia 10. Suplimentar. cei 8 biţi sunt stocaţi în SSPBUF după care se generează o întrerupere (SSPIF=1) și se setează bitul de stare BF din registrul de stări SSPSTAT.8. SDI (Serial Data In) și SCK (Serial Clock).4. Transmisie date cu eroare.. Registrul SSPSR deplasează datele în și din dispozitiv. După citirea bufferului SSPBUF. Bitul de paritate are rolul de verificare la recepţie a erorilor de transmisie. Această dublă bufferare permite începerea recepţiei următorului pachet de 8 biţi înainte de citirea datelor tocmai primite.10. Transmisie date fără eroare. doar în modul slave. În acest scop se utilizează trei pini: SDO (Serial Data Out).2.1) Exemplul 10. începând cu MSB. k=1. La finalul transferului. se poate utiliza un pin SS (Slave Select). 8 P= 1+ k=1 Bk mod 2 (10. • 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 recepţionează 000100100 • B calculează paritatea (0+0+0+1+0+0+1+0+0+1) mod 2=1 • B raportează eroare prin nepotrivirea parităţilor Exemplul 10. 106 .1.4 Modulul SSP în modul SPI Comunicaţia SPI permite transmisia sincronă a 8 biţi de date.1 în care Bk sunt cei 8 biţi. Registrul buffer SSPBUF stochează temporar datele scrise în SSPSR până când datele recepţionate sunt gata. Datele transmise sau recepţionate sunt stocate în regiștrii SSPBUF și SSPSR. bitul BF este resetat automat. • 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 recepţionează 100100100 • B calculează paritatea (1+0+0+1+0+0+1+0+0+1) mod 2=0 • B raportează transmisie corectă prin potrivirea parităţilor 10.

SSPSR SSPSR Pasul 3. registrul SSPSR este plin. • selectarea dispozitivului slave (pinul SS doar în modul slave). • frecvenţa semnalului de ceas (doar în mod master). După recepţia celor 8 biţi. Datele sunt deplasare către ieşire pentru transmisie. acesta va efectua paşii 2-4 doar la primirea semnalului de ceas la pinul SCK.10: Conexiunea SPI între un dispozitiv master și unul slave. Datele pe 8 biţi sunt scrise în registrul SSPBUF. Pentru iniţializarea modului SPI se stabilesc o serie de opţiuni cu ajutorul registrului de control SSPCON. Dacă dispozitivul este slave. Dacă dispozitivul este master. Fig. • polaritatea semnalului de ceas (starea incativă a pinului SCK). 10. • modul slave (pinul SCK este intrare de ceas). 107 . Datele sunt preluate din registrul SSPBUF şi copiate în registrul SSPSR. SSPSR BF SSPIF SSPBUF Pasul 4. acesta va efectua automat paşii 2-4. precum: • modul master (pinul SCK este ieșire de ceas). în timp ce spaţiile goale sunt umplute simultan cu datele recepţionate sincron cu SCK.11.11: Secvenţele transmisiei SPI între un dispozitiv master și unul slave. • frontul semnalului de ceas (transmisia datelor pe frontul crescător sau descrescător al semnalului de ceas). Datele sunt mutate din registrul SSPSR în registrul SSPBUF pentru a fi preluate şi utilizate ulterior. Registrul SSPBUF nu este şters. 10. Pe scurt. transmisia SPI între un dispozitiv master și unul slave se face în următoarele secvenţe ilustrate în figura 10. Acest lucru este semnalizat prin setarea bitului BF al registrului SSPSTAT şi prin setarea bitului de semnalizare a întreruperii SSPIF. SSPBUF Pasul 2. COMUNICAŢIILE SERIALE SINCRONE Master Slave SSPBUF SCK SCK SSPBUF SDO SSPSR SDI SDO SSPSR SDI Fig. CPU SSPBUF Pasul 1.CAPITOLUL 10.

linia de ceas este în repaus (idle) în starea 1 logic. • 0010 . după caz. linia se află în repaus în starea 0 logic. 108 . astfel: dacă bitul CKP=1. efectuarea modificărilor din registrul SSPCON. Acești pini trebuie setaţi ca intrări sau ieșiri digitale. MODULUL SSP ÎN MODUL SPI R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) R/W (0) SSPCON WCOL Bit 7 R/W (0) SSPOV Bit 6 R/W (0) SSPEN Bit 5 R (0) CKP Bit 4 R (0) SSPM3 Bit 3 R (0) SSPM2 Bit 2 R (0) SSPM1 Bit 1 R (0) SSPM0 Bit 0 R (0) SSPSTAT SMP Bit 7 CKE Bit 6 D/A Bit 5 P Bit 4 S Bit 3 R/W Bit 2 UA Bit 1 BF Bit 0 Fig. • 0001 .4. iar dacă bitul CKP=0. existând următoarele posibilităţi: • 0000 . Registrul SSPSR va deplasa biţii prezenţi la intrarea SDI cu frecvenţa stabilită a semnalului de ceas. acesta poate iniţia transferul de date în orice moment de timp. urmată de setarea bitului SSPEN. După terminarea recepţiei celor 8 biţi.ieșirea modulului Timer2/2. Tot dispozitivul master determină momentul în care dispozitivul slave începe transmisia de date.FOSC /16. Polaritatea semnalului de ceas se stabilește cu ajutorul bitului CKP din registrul SSPCON. SCK și SS) în modul de lucru SPI.10. • SDO ca pin de ieșire. • SS ca pin de intrare. Acest lucru are ca rezultat setarea celor patru pini (SDO. octetul va fi transferat în registrul SSPBUF și se va semnaliza prin bitul BF și întreruperea SSPIF. 10.FOSC /64. Operarea în modul master Deoarece dispozitivul master deţine controlul liniei semnalului de ceas SCK. Resetarea sau reconfigurarea modului de operare SPI se face prin resetarea bitului SSPEN. • 0011 . iar pinul de transmisie SDO poate fi dezactivat. Activarea portului serial se face prin setarea bitului SSPEN din registrul SSPCON. Portul de recepţie SDI primește datele.FOSC /4. astfel: • SDI ca pin de intrare. Frecvenţa semnalului de ceas se stabilește cu ajutorul biţilor SSPM<3:0> din registrul SSPCON. • SCK (în mod master) ca pin de ieșire.12: Regiștrii de control al modulului SSP (PIC16F88). În modul master datele sunt transmise sau recepţionate imediat după ce registrul SSPBUF a fost scris. SDI. • SCK (în mod slave) ca pin de intrare.

Operarea în modul slave În modul slave. Prin urmare. După primirea ultimului bit se setează bitul de semnalizare a întreruperii SSPIF. Intrările SPI trebuie setate ca slave (SSPCON<3:0>=0100) iar pinii core109 . datele sunt transmise și recepţionate pe parcursul apariţiei impulsurilor de ceas pe linia SCK.14 și 10.CAPITOLUL 10. De asemenea. Polaritatea semnalului de ceas este selectată prin intermediul bitului CKP din registrul SSPSTAT (figurile 10.15). Pinul SS permite selectare mai multor dispozitive slave conectate la un singur master. CKE = 1) SDO (CKE = 0) SDO (CKE = 1) SDI (SMP = 0) bit7 Eşantionare date intrare (SMP = 0) SDI (SMP = 1) bit7 Eşantionare date intrare (SMP = 1) SSPIF Următorul ciclu Q4 după Q2 ¯ SSPSR către SSPBUF bit0 bit0 bit7 bit7 bit6 bit6 bit5 bit5 bit4 bit4 bit3 bit3 bit2 bit2 bit1 bit1 bit0 bit0 4 moduri de setare al semnalului de ceas Fig. Registrul SSPSTAT are ca scop stabilirea momentelor implusurilor de ceas când se efectuează recepţia și transmisia biţilor de date. CKE = 1) SCK (CKP = 1. Citirea datelor recepţionate se poate face la mijlocul fiecărui impuls de ceas (SMP=0) sau la sfârșitul impulsurilor de ceas (SMP=1). datele pot fi transmise pe frontul crescător (CKE=1) sau pe frontul descrescător al impulsurilor de ceas (CKE=0). CKE = 0) SCK (CKP = 0. viteza maximă de transfer se obţine la FOSC =20 MHz și are valoarea de 5 Mbps. 10. COMUNICAŢIILE SERIALE SINCRONE Scriere în SSPBUF SCK (CKP = 0. CKE = 0) SCK (CKP = 1.13: Diagrame de timp pentru comunicaţia SPI în modul master.

acestea sunt inactive iar pinul SDO este deconectat devenind ieșire de tip tri-state. SS opţional SCK (CKP = 0. CKE = 1) Scriere în SSPBUF SDO SDI (SMP = 0) Eşantionare date de intrare (SMP = 0) Bit semnalizare întrerupere SSPIF SSPSR către SSPBUF bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit7 bit0 Următorul ciclu Q4 după Q2 ¯ Fig. În aceste situaţii este indicată conectarea unor rezistenţe de pull-up. transmisia și recepţia sunt active. 110 . Atunci când linia SS devine 1. 10. CKE = 1) SCK (CKP = 1. CKE = 0) SCK (CKP = 1.15: Diagrame de timp pentru comunicaţia SPI în modul slave (CKE=1). Atunci când semnalul pe linia SS este 0. MODULUL SSP ÎN MODUL SPI spunzători trebuie setaţi ca intrări digitale. SS obligatoriu SCK (CKP = 0.14: Diagrame de timp pentru comunicaţia SPI în modul slave (CKE=0). 10.4. iar când SS este 1. CKE = 0) Scriere în SSPBUF SDO SDI (SMP = 0) Eşantionare date de intrare (SMP = 0) Bit semnalizare întrerupere SSPIF SSPSR către SSPBUF bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit7 bit0 Următorul ciclu Q4 după Q2 ¯ Fig. în funcţie de aplicaţie. toate modulele SPI ale dispozitivelor slave vor fi resetate.10.

16). fie prin ștergerea bitului SSPEN din registrul SSPCON (figura 10. contorul de bit este trecut forţat în 0. Pinul SDI poate fi păstrat ca intrare deoarece nu crează conflicte. 111 . Acest lucru se poate realiza fie prin forţarea pinului SS în stare 1 logic. CKE = 0) Scriere în SSPBUF SDO bit7 bit6 bit7 bit0 SDI (SMP = 0) Eşantionare date de intrare (SMP = 0) Bit semnalizare întrerupere SSPIF SSPSR către SSPBUF bit0 bit7 bit7 Fig. Atunci când se dorește utilizarea doar a recepţiei. Atunci când modulul SPI se resetează. Acest lucru dezactivează transmisia de la SDO. COMUNICAŢIILE SERIALE SINCRONE SS SCK (CKP=0. CKE = 0) SCK (CKP=1.CAPITOLUL 10. pinul SDO poate fi conectat la pinul SDI.16: Diagrame de timp pentru resetul comunicaţiei SPI în modul slave. 10. pinul SDO poate fi configurat ca intrare. Pentru a emula o comunicaţie pe două linii.

Deoarece conţine o singură linie.1 Comunicaţia 1-Wire Comunicaţia de tip 1-Wire a fost dezvoltată de către firma Dallas Semiconductor și permite transmisia de mică viteză și mică putere a datelor prin intermediul unei singure linii (de unde și denumirea).Capitolul 11 Comunicaţiile seriale asincrone 11. Este similară ca și concept cu comunicaţia I2 C dar permite distanţe mai mari și viteze de transfer mai mici. 112 .

Domeniul de studiu al roboţilor se numește robotică a fost încetăţenit de scriitorii americian de literatură știinţifico-fantastică Isaac Asimov și John W. Acest termen semnifică.Capitolul 12 Introducere în robotică Noţiunea de robot are o multitudine de moduri de definire. Într-o fabrică se construiau oameni artificiali numiţi roboţi. Ideea principală a scenei de teatru este dilema exploatării roboţilor și consecinţele unui astfel de tratament. acţiunile din romanele lui Isaac Asimov au impus apariţia unei legi suplimentare. în limbile slave. corespunzător. ca atare. atât timp cât acest lucru nu intră în contradicţie cu Legea 1 sau Legea 2. Ulterior. Aceste trei legi stabileau următoarele: • Legea 1: Un robot nu are voie să pricinuiască vreun rău unei fiinţe umane sau. apropiaţi ca aspect cu ideea modernă de androizi.R. legea 0 fiind supremă.1 Etimologie Termenul de robot a fost introdus de către scriitorul ceh Karel Čapek în piesa de teatru R. când aceștia au creat cele trei legi ale roboticii în scurta povestire Runaround din anul 1942. muncă sau figurativ muncă grea. specialiștii din domeniu nefiind de comun acord asupra unui mod unic. Roboţii puteau gândii singuri. prin neintervenţie. mai mult.U. Autorul explică mai târziu în anul 1933 prin intermediul unui articol din revista Lidové noviny (People’s News) că iniţial a preferat denumirea de laboři (muncitori) dar. asupra sistemelor care intră sub incidenţa termenului. la sugestia fratelui său Josef. • Legea 3: Un robot trebuie să-și protejeze propria existenţă. • Legea 2: Un robot trebuie să se supună ordinelor date de către o fiinţă umană. Acest lucru duce la multe confuzii asupra entităţii de robot și. Campbell. 113 . fiind însă bucuroși să efectueze munci de servitori. a ales în final termenul de robot. Celelalte trei legi au fost modficate. atât timp cât ele nu intră în contradicţie cu Legea 1. să permită ca unei fiinţe omenești să i se facă un rău. 12. (Rossum’s Universal Robots) din anul 1920. denumite Legea 0.

Westinghouse a creat robotul Elektro destinat exclusiv prezentărilor la expoziţii. Notiţele inventatorului. cunoscut și ca Edison al Japoniei. atunci când matematicianul grec Archytas din Tarentum a propus construcţia unei păsări mecanice care funcţiona pe bază de aburi. fiind denumit Unimate. firma americană Westinghouse Electric Corporation a creat primul robot destinat unei munci. capul și fălcile.C. În Japonia. de a înghiţi mâncare și de a da impresia de digestie prin eliminarea de excremente stocate într-un compartiment intern ascuns. Tesla spera să dezvolte un sistem de armament pentru marina Statelor Unite. să permită ca umanitatea să fie pusă în pericol. Ulterior. Roboţii purtau numele de Elmer și Elsie și erau capabili de a detecta lumina și contactul cu obiecte externe. biologistul Makoto Nishimura a creat primul robot japonez. 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. dispusă în mijlocul unui lac spre amuzamentul invitaţilor la petreceri. de a trage cu săgeţi sau chiar de a picta un caracter kanji. între anii 1948 și 1949. matematicianul și inventatorul grec Hero din Alexandria (10-70 A. propulsate pe baza apei și unui automat programabil. În epoca modernă timpurie.12. În 1930. Primii roboţi electrici autonomi au fost creaţi de către neurofiziologul american William Grey Walter (1910-1977) la Institutul Neurologic Burden din Bristol. Su Song a construit în China în anul 1088 un turn cu ceas în compunerea căruia intrau câteva figurine mecanice care anunţau ora exactă. inventatorul francez Jacques de Vaucanson (1709-1782) a expus câteva automate la scară reală care întruchipau un cântător la fluier sau o raţă mecanică. apei și aburului. prin neintervenţie. În anii 1738-39. În anul 1989.2. Leonardo da Vinci (1452-1519) a conceput schiţele unui robot umanoid în jurul anului 1495. utilizând acești stimuli pentru navigaţie. micșca braţele. Acesta era capabil de a se așeza. artizanul Hisashige Tanaka (1799-1881). denumit Televox. Primul exemplar a fost vândut în 1960 firmei 114 .. ridica. Roboţii erau reprezentaţi sub forma a patru muzicanţi într-o barcă.2 Istoric Începutul roboţilor poate fi considerat ca fiind secolul IV B. a creat o serie de jucării mecanice extrem de complexe. unele dintre acestea fiind capabile de a servi ceaiul. În 1928. 12. conţin descrieri detaliate ale unui cavaler mecanic cunoscut sub denumirea de robotul lui Leonardo. denumit Gakutensoku.) a creat o serie de dispozitive automate autoconfigurabile care funcţionau pe baza presiunii aerului. În anul 1926. sârbul Nicola Tesla a demonstrat public funcţionarea unei torpile radiocomandate. Pe baza patentului teleautomatului. redescoperite în anii 1950. ISTORIC • Legea 0: Un robot nu are voie să pricinuiască vreun rău umanităţii sau.D. Acesta din urmă avea posibilitatea de a-și flexa aripile si gâtul. Primul robot modern programabil și operabil digital a fost inventat de George Devol în anul 1954.

CAPITOLUL 12. în cele mai multe cazuri. sunt considerate roboţi. procesoare inteligente. Răspunsul la stimulii senzoriali permit controlul mișcării. 12. asamblare. împachetare. armament. fiind utilizaţi pentru a efectua sarcini cu precizie și fiabilitate mai mari și preţ de cost mai mic în raport cu operatorii umani. Odată avute informaţiile generale despre sarcina de efectuat.3 Clasificare În timp ce nu există o definiţie universal acceptată pentru termenul de robot. robotul poate decide singur care sunt următorii pași necesari pentru îndeplinirea sarcinii.5: roboţi cu posibilitate de adaptare la diferite situaţii cu ajutorul unor senzori și a unui sistem servo cu buclă închisă. • poate avea posibilitatea de a percepe sau absoarbe date de la obiecte fizice sau de la mediul înconjurător. După semnalarea secvenţei iniţiale de pași. instalaţi în zonele cu grad ridicat de murdărie sau pericol. • Generaţia 1. mecanismele cu aspect antropomorfic sau zoomorfic (permit controlul membrelor). explorare terestră sau spaţială. cu capacitate de generalizare. aceţia decid singuri modalitatea optimă de îndeplinire. • conţine un program electronic destinat efectuării unei sarcini specifice sau unui set de sarcini. un robot tipic va avea majoritatea caracteristicilor următoare: • este o mașină electrică care are posibilitatea de a interacţiona cu obiecte fizice. astfel: • Generaţia 1: roboţi cu program cu secvenţă fixă de operare. ca fiind un robot. În acest moment. Roboţii sunt utilizaţi în producţie. fiind instalat în anul 1961 în fabrica din Trenton. INTRODUCERE ÎN ROBOTICĂ General Motors. Scopul său era de a prelua și stoca obiecte metalice fierbinţi create de o presă. Din punct de vedere evolutiv. Vehiculele teleghidate sau autoghidate pot fi considerate ca roboţi. de a procesa datele și de a răspunde la anumiţi stimuli. • Generaţia 2: roboţi dotaţi cu sisteme de vedere și recunoaștere a vocii. cercetare de laborator sau în producţia de masă a bunurilor de consum și industriale. de asemenea. Prin urmare. nu sunt capabili independent de a lua o hotărâre fără intervenţia unui operator uman. Deși sunt capabili de a sesiza nereguli. roboţii industriali și comerciali sunt răspândiţi pe arie foarte largă în lume. New Jersey. chirurgie. 115 . Sunt.5: roboţi cu funcţii motorii perceptuale. un dispozitiv mecanic destinat efectuării unor operaţii prestabilite fără a avea posibilitatea de adaptare nu este considerat. Acest tip de roboţi are posibilitatea de a efectua independent corecţii minore și ajustări. • Generaţia 2. transport. De asemenea. roboţii aparţin unei anumite generaţii. Secvenţele de programare erau stabilite prin piedici mecanice sau comutatoare de limitare. Nu deţin senzori și operează în buclă deschisă. • Generaţia 3: roboţi inteligenţi.

32% în Europa. • Secvenţă continuă: au memorie mai mare decât tipul anterior și pot înregistra mai multe coordonate într-o secundă. care poate opera fix sau mobil în diverse aplicaţii industriale ce necesită automatizare". cu control automat. sunt roboţii mobili și roboţii industriali. Roboţii industriali constau din manipulatoare sub forma unor braţe articulate unite prin cuple cinematice. din punct de vedere constructiv.Automated Guided Vehicles).12. sub forma unor bunuri de consum care efectuează diferite sarcini. după nivelul de tehnologie. Roboţii mobili au capacitatea de deplasare în mediul propriu de operare și nu sunt fixaţi într-un anume loc. au 6-9 axe de mișcare și sarcini de ordinul a 100 kg. Roboţii mobili se regăsesc în industrie. sau nivelul de tehnologie. Pot axea până la 4 axe de mișcare și sarcini de ordinul a 10 kg. preluare și dispunere. Din punct de vedere al distribuţiei. și câte 1% în Australia și Africa. Cele două tipuri de roboţi vor fi tratate în capitolele următoare sub forma detaliată a elementelor componente comune sau distinctive (senzori. • Nivel mare tehnologic: utilizaţi pentru o multitudine de sarcini de manufacturare. De remarcat faptul că 30% din totalul roboţilor se regăsesc în Japonia. sursa de energie. roboţii pot avea: • Secvenţă limitată: utilizează contacte mecanice pentru limitarea ariei de mișcare. • Secvenţă punct-la-punct: dispun de senzori pentru informaţie de feedback și au memorie pentru stocarea coordonatelor pe fiecare axă. multiscop.3. • Nivel mediu tehnologic: utilizaţi pentru încărcare și descărcare. manipulatoare și sisteme de propulsie). CLASIFICARE Roboţii mai pot fi clasificaţi în funcţie de tipul controlerului. Standardul ISO 8373 definește un astfel de robot ca fiind compus dintr-un "manipulator programabil cu cel puţin trei axe. reprogramabil. precum și un instrument terminal cuplat la capătul ultimei articulaţii. 16% în America de Nord. ţara cea mai robotizată din lume. roboţii pot fi de tip electric. armată și medii ce necesită un anumit grad de securitate. Din punct de vedere al tipului controlerului. Apar. 116 . precum aspiratoarele. au 4-6 axe de mișcare și sarcini de ordinul a 100 kg. de asemenea. În final. Cele mai întâlnite tipuri de roboţi. acestea fiind capabile să urmărească marcaje sau fire dispuse pe podea sau să utilizeze viziunea. încărcări și descărcări sau pentru operaţii simple de asamblare. circa 50% din roboţi se găsesc în Asia. Din punct de vedere al sursei de energie. roboţii pot avea: • Nivel scăzut tehnologic: utilizaţi pentru manipulări de material. pneumatic sau hidraulic. actuatori. Exemple de astfel de roboţi sunt vehiculele ghidate automat (AGV .

Deciziile luate de arbitru se reflectă prin comenzi date unor elemente externe regăsite în partea de 117 . algoritmi ce fac conexiunea între senzori și actuatori. În cadrul acestui bloc se regăsesc algoritmii elementari comportamentali care sunt ulterior coenctaţi la un arbitru cu funcţie de inteligenţă. Acţiunea însumată a tuturor comportamentelor simple constituie acţiunea globală a robotului ca un întreg. denumite comportamente. partea senzorială.1: Exemplu de structură a unui robot autonom mobil comportamental. de fapt. denumită inteligenţă. Structura unui robot autonom este divizată în trei părţi principale. conţine toate acele elemente care permit măsurarea parametrilor din mediul de operare (denumiţi generic senzori).Capitolul 13 Roboţi autonomi Un robot autonom se bazează pe studiul comportamental al acestuia prin împărţirea acţiunii sale în acţiuni mai simple. 13. Senzorii furnizează date către partea de calcul și decizie. Un senzor este un traductor care efectuează conversia unei cantităţi dintr-o mărime fizică într-un semnal electric. primitive. care reprezintă. Prima dintre acestea. Ieşire Senzor tactil Dark-push Anti-molie Evitare Detector IR Acasă Croazieră Arbitru Senzori Inteligenţă Motor stânga Motor dreapta Fotocelulă Controler motoare Actuatori Fig.

1. denumită inteligenţă. închid un contact electric. Partea de actuatori este compusă din două motoare care permit propulsia robotului. transportul pe bandă rulantă) dar pot opera cu succes atât timp cât poziţia obiectelor este predictibilă. Există o multitudine de tipuri de comportamente primitive. Zonele de lucru industriale sunt foarte bine aranjate. 118 . Natura și localizarea obiectelor este cunoscută cu exatitate. La crearea inteligenţei unui robot concură proiectarea. în timp ce pădurile sau mlaștinile au o structură puternic neregulată. există un arbitru cu rol de stabilire a priorităţilor în selectarea acţiunii finale a robotului. aranjate dar într-un grad mai mic. Fotocelulele sunt senzori de lumină care permit măsurarea intensităţii luminoase incidente. pe de cealaltă parte. în timp ce roboţii mobili operează în medii din lumea reală care au un caracter puternic dinamic și nestructurat. Obiectele nerigide sunt. O altă diferenţă majoră între roboţii industriali și cei mobili este faptul că roboţii industriali cunosc în orice moment poziţia lor. Aceste două tipuri de roboţi operează în codiţii mult diferite.acţionare. robotul are în compunere trei tipuri de senzori. În cazul roboţilor mobili. enumerate în cele ce urmează. Un mediu dinamic este acel mediu în care lucrurile se schimbă. are în compunerea sa două elemente principale. programul software și. excluse din aceste medii structurate deoarece este dificil de descris unui robot forma și mișcarea unui astfel de obiect într-un mod matematic simplu. Roboţii industriali operează în medii statice și cu un grad ridicat de aranjare și structurare. În schema din figura 13. detectorii IR permit determinarea distanţei până la obiectul aflat direct în raza vizuală. electrovalve sau orice alt dispozitiv electromecanic care poate genera acţiuni asupra mediului de operare și obiectelor din acel mediu. Un robot industrial poate dispune de obiecte aflate în mișcare (de exemplu. În cele din urmă. se dispune de un set de comportamente primitive care operează direct pe baza datelor primite de la unul sau mai mulţi senzori iar. Partea centrală. aceștia nu dispun de o informaţie a priori despre obiectele prezente în mediul său înconjurător sau despre traiectoria acestora. în timp ce pentru roboţii mobili acest lucru este rareori valabili. Pe de o parte. Roboţii mobili au de rezolvat o problemă care nu apare în cazul roboţilor industriali de tip manipulator. birourile sau apartamentele sunt. eventual. Senzorii tactili reprezintă microcontacte care. De obicei se utilizează mai mulţi senzori cu orientări diferite. Un mediu structurat este acel mediu în care obiectele sunt dispuse deliberat în locuri precise. acestea fiind comandate direct prin intermediul unui controler de motoare. la lovirea unui obstacol. de obicei. Acești senzori sunt utilizaţi pentru detectarea coliziunilor cu pereţi sau obiecte ridige. Obiectele din acest mediu își pot modifica poziţia și orientare independent de robot. de asemenea. un robot nu poate fi cu adevărat inteligent dacă programul său nu este capabil să compenseze erorile inerente provenite de la senzori sau actuatori. În schimb. Aceasta poate fi compusă din motoare. mediul în care acesta operează.

declanșată prin intermediul unui trigger. De exemplu. În acel moment robotul va reacţiona.CAPITOLUL 13. căutând noua poziţie de echilibru. O componentă de control care transformă informaţia provenită de la senzor în comenzi pentru actuatori. ROBOŢI AUTONOMI 13. Uneori. deplasarea către o sursă de lumină denumită bază sau casă (de unde și numele acţiunii de acasă). componenta de declanșare are rolul simplu de a elimina comenzile de ieșire atunci când situaţia o cere. Comportamentele primare sunt construcţii generale care impun unele restricţii programului implementat. pe care robotul o efectuează pe tot parcursul funcţionării. Dacă sistemul de control rulează continuu. Comportament primitiv Trigger Sistem de control Semnal de control Fig. circuitul de declanșare este tot timpul activ.2): 1. 13. Din punct de vedere al sistemului ca un întreg. Există două tipuri majore de comportament: servo și balistic.1 Comportamente O operaţie pe care un robot mobil trebuie să fie capabil să o îndeplinească poate fi. proiectarea sistemului astfel încât sistemele de control să ruleze continuu conduc la o simplificare a programului. nu există nicio diferenţă dacă componenta de declanșare împiedică efectuarea de calcule pentru determinarea semnalului de control sau doar oprește trimiterea acestora către actuatori. Comportamentul servo implică existenţa unei bucle de control de reacţie ca și componentă de control. Acest lucru poate fi realizat cu ajutorul unor senzori care detectează sursa de lumină. Presupunând că intensitatea luminoasă se modifică atunci când robotul se află în echilibru. poziţionarea robotului în funcţie de o sursă de lumină este un comportament de tip servo. În acest caz. O componentă de declanșare (trigger) care determină momentul când componenta de control poate opera. Comportamentele primitive sunt compuse din două părţi (figura 13. Deplasarea către bază nu este o acţiunea continuă. 2.2: Structură unui comportament primitiv. 119 . ci temporară. de exemplu.

2 Vehiculele Braitenberg Vehiculele Braitenberg au fost cnvepute de către ciberneticianul italian Valentino Braitenberg pentru a ilustra într-un mod evolutiv proprietăţile unor agenţi simplii. După terminarea manevrelor. Vehiculul 1 Vehiculul 2a Vehiculul 2b Vehiculul 2c Fig. Spre deosebire de tipul 2a.2. Vehiculele reprezintă ceea mai simplă formă de inteligenţă artificială rezultată din interacţiunea dintre agent și mediul înconjurător fără a necesita existenţa unei memorii interne. robotul se va îndrepta continuu către aceasta fără oprire. Răspunsul robotului este diferit în funcţie de poziţia sursei de excitaţie a senzorilor.3: Vehiculele Braitenberg de tipul 1 și 2. comportamentul este inhibat prin oprirea circuitului de declanșare. atunci când robotul se lovește de un obiect și. motorul asociat acelei părţi va funcţiona mai rapid decât celălalt. Vehiculul 2a are senzorii conectaţi la motoarele de pe aceiași parte. 13.3). Un exemplu de astfel de comportament este modul evitare. Viteza motorului este controlată de senzor. b sau c). Dacă sursa este dispusă într-una din părţile laterale. cu diferenţa că există doi senzori și două motoare. Cel mai simplu vehicul de tip 1 este compus dintr-un senzor de lumină și un motor central (figura 13. trebuie să facă o serie bine definită de manevre de evitare a obstacolului. Dacă sursa este poziţionată frontal. proporţională cu valoarea detectată de senzor. 13. îndepărtând robotul de acea sursă. Vehiculul de tip 2 este similar primului tip. pentru a-și continua traiectoria. a reprezentării mediului sau a unor inferenţe. interconectate în diferite moduri (a. robotul va fi atras de către o sursă dispusă lateral.13. vehiculul de tipul 2b va avea un comportament complementar în cazul surselor dispuse lateral. deoarece motoarele sunt conectate la senzorii de pe partea opusă. 120 . Astfel. VEHICULELE BRAITENBERG Comportamentul balistic presupune parcurgerea unei traiectorii predictibile odată ce a fost activat circuitul de declanșare.

Vehiculul 3c Fig. temperatură etc. Vehiculul 2a Vehiculul 2b Vehiculul 3a Vehiculul 3b Fig. cât și excitativ (figura 13. Vehiculul 2c nu este altceva decât o variantă mai sofisticată a tipului 1. Senzorii sunt sensibili la mai multe tipuri de stimuli. 13.4: Vehiculele Braitenberg de tipul 2a. precum lumină. 3b. în timp ce vehiculul 2b are un comportament laș. 121 .CAPITOLUL 13. spre deosebire de tipul 2 (figura 13. astfel încât tipul 2a și 3b au comportament identic. Vehiculele de tipul 3 au caracter inhibitor asupra senzorilor. 2b și 3a. atât cu caracter inhibitor.5).4). 13. O variantă care să înglobeze toate tipurile de comportamente simultan este modelul 3c. la fel ca și tipul 2b și 3a.5: Vehiculul Braitenberg de tipul 3c. cuplaţi doi câte doi la fiecare din cele două motoare. Acesta conţine pe fiecare latură un set de patru senzori. ROBOŢI AUTONOMI Se poate considera că vehiculul 2a are un comportament emotiv. Comportamentul lor este complementar.

Vehiculul de tip 4a poate fi îmbunătăţit prin introducerea unor noi tipuri de senzori și conexiuni ai acestora cu motoarele.13. un caracter neliniar.2. V V Vehiculul 4a I Vehiculul 4b I Fig. De exemplu. de asemenea. 13.7). influenţa senzorilor asupra motoarelor nu mai are o lege netedă ci includ zone care impun frânări bruște sau viteze maxime (figura 13. Aceste legi pot avea.6: Comportamente ale vehiculului Braitenberg de tipul 4a.7: Legi posibile ale dependenţei vitezei motorului de intensitatea senzorului pentru vehicule de tipul 4. cât și pentru inhibarea motoarelor. VEHICULELE BRAITENBERG Fig. 122 . Primele trei tipuri de vehicule au o lege liniară de excitare sau inhibare a senzorilor.6). Aceiași lege poate fi aplicată atât pentru excitarea. În acest caz. o lege poate fi considerată excitarea gradual crescătoare a motorului până la un anumit nivel de la care excitarea acestuia scade (figura 13. 13.

ci și de valorile anterioare ale acestora. sistemul conţine o formă rudimentară de memorie. ușa pornește mișcarea în jos și se oprește la anclanșarea celui de-al doilea comutator de limitare. Butonul se află în două stări posibile. în schimb. ROBOŢI AUTONOMI 13. Bec Buton Aprins Baterie Buton apăsat Stins Buton apăsat Fig.8). modul de aranjare a unei încăperi are un spaţiu infinit de stări deoarece se pot genera mereu noi configuraţii.8: Reprezentarea unui circuit electric simplu sub forma unui automat cu stări finite. În cazul sistemelor robotice. mișcarea se oprește prin anclanșarea unui comutator mecanic de limitare.3 Analiza stărilor finite Comportamentele de tip servo acţionează în prezent. Computerul calculează exact ce are de efectuat. ușa deschisă. În contextul roboticii. În cazul unui sistem cu stări. acţiunea curentă nu este influenţată exclusiv de valorile curente ale senzorilor. în cazul de faţă fiind vorba despre apăsarea butonului. ușa în mișcare de deschidere și ușa în mișcare de închidere. Trecerile între stări se fac la apariţia unei acţiuni. Unele sisteme au un număr infinit de stări. atunci când ușa este deschisă. De asemenea. Când aceasta este total deschisă. De exemplu. Comportamentul prezent nu depinde de acţiunile trecute sau de cele ulterioare. ușa începe să se miște spre sus. Automatul are două stări posibile (reprezentate prin cercuri). Automatul cu stări finite este un tip de sistem cu număr finit de stări și care are reguli bine definite de trecere dintre stări. Tranziţiile dintre stări se fac la apăsarea butonului sau la anclanșarea unuia din cele două comutatoare mecanice (figura 13. 13. Acest tip de comportament nu are stări. acestea prezintă un număr finit de stări. aprins sau stins. O stare este un termen care se referă la toate configuraţiile posibile ale unui sistem. cuplat sau decuplat. 123 . Cel mai simplu mod de descriere al acestui sistem pleacă de la ipoteza existenţei a patru stări distincte: ușa închisă. Modul de operare este următorul: dacă ușa garajului este închisă și se apasă butonul de deschidere/închidere. Un exemplu foarte simplu de automat cu stări finite este un sistem compus dintr-un bec conectat la o baterie printr-un comutator. existenţa stărilor presupune existenţa unei memorii. Un exemplu mai complex de automat cu stări finite este reprezentat de sistemul de acces într-un garaj. în sensul că lumina rămâne aprinsă chiar și atunci când butonul nu este apăsat (memorie cu 1 bit). când ușa este complet închisă.CAPITOLUL 13. Dacă butonul este apăsat. Diagrama stărilor conţine două stări posibile (figura 13.9).

10).9: Reprezentare sub forma unui automat cu stări finite a ușii unui garaj (varianta 1). 13. Buton apăsat Uşa se deschide Uşa închisă Uşa se opreşte din deschidere Buton apăsat Comutator deschidere anclanşat Buton apăsat Buton apăsat Comutator închidere anclanşat Buton apăsat Uşa se opreşte din închidere Uşa deschisă Uşa se închide Buton apăsat Fig. ANALIZA STĂRILOR FINITE Buton apăsat Uşa se deschide Uşa închisă Comutator deschidere anclanşat Comutator închidere anclanşat Uşa deschisă Uşa se închide Buton apăsat Fig. Sistemul real poate fi complicat prin introducerea psibilităţii schimbării sensului de mișcare al ușii în timp ce aceasta se deschide sau închide. 13. iar la a doua apăsare de buton.13.3. La prima apăsare a butonului ușa se oprește din mișcare. ușa pornește o mișcare în sens opus celei anterioare (figura 13.10: Reprezentare sub forma unui automat cu stări finite a ușii unui garaj (varianta 2). 124 .

incluzând 12 stări. în final își continuă mișcarea precedentă. Sistem uşă Buton apăsat Sistem iluminare Buton apăsat Oprire Mişcare în direcţia d Stins Aprins Buton apăsat Buton apăsat sau anclanşare comutator d=1-d Scurgere 4. 13. b θ f Inactiv Coliziune Mişcare înapoi Rotire stânga Mişcare înainte Inactiv Fig. Etapele care trebuie parcurse de robot aparţin unui comportament balistic și sunt ilustrate în figura 13. nu într-o stare. sistemul de iluminare și sistemul ușii pot fi separate. După detectare. ROBOŢI AUTONOMI Dacă se dorește includerea unui iluminator exterior.CAPITOLUL 13. Simplificarea schemei rezultă din stocarea direcţiei de deplasare a ușii într-o variabilă.5 minute Fig. după care se rotește cu un unghi θ în jurul axei proprii iar. Înainte de detectarea unei coliziuni.12: Etape parcurse pentru acţiunea de ieșire din zonă după detecţia unei coliziuni. este de dorit simplificarea tuturor diagramelor de stare pentru ușurinţa implementării practice. sistemul este inactiv. 13. robotul se oprește și se mișcă spre înapoi o anumită distanţă. Un exemplu din lumea roboticii îl reprezintă mecanismul de ieșire a unui robot după lovirea unui obstacol. 125 .10 se poate complica. Astfel. diagrama în starea din figura 13. Mai mult.12. ca în figura 13.11. În schimb.11: Reprezentare sub forma unui automat cu stări finite a ușii unui garaj (varianta 3). se poate utiliza o variabilă d care să memoreze ultima direcţie de mișcare a ușii.

126 . ANALIZA STĂRILOR FINITE Inactiv Deplasare distanţă f Lovire stânga d=dreapta Lovire dreapta d=stânga Mers înapoi Mers înainte Deplasare distanţă b Rotire Terminare rotire cu θ Fig.13: Diagrama stărilor finite ale acţiunii din figura 13.13.3. 13.12.

de asemenea. limitând erorile. . fizice. Sistemele inertiale pot oferi pozitii relative . . Pozitia curentă este . informatii lipsesc sau sunt eronate. Alte echipamente . . avans . sistemele inertiale sunt autonome si nu pot fi bruiate (perturbate) din exterior. Sistemele de navigatie inertiale depind de măsurători efectuate în întregime în . . . nu absolute. si navigatie. în timp ce sistemele bazate pe GPS oferă pozitii absolute. ci folosind sisteme de navigatie inertiale autonome care isi . . . Pentru vechiculele exterioare sunt. interiorul vehiculului. dar intervenind altele. . . . bazându-se doar pe măsurătorile obtinute de la senzorii inertiali. . 127 . este necesar ca acesta să poată naviga în medii nestructurate. . precise pe termen scurt. . erori cauzate cel mai frecvent de alunecări ale rotilor sau de neregularităti ale terenu. . pot fi combinate în cadrul aceluiasi vehicul. Acestea sunt susceptibile la . Tehnicile traditionale interactionează cu mediul vehiculului prin intermediul unor . în concordantă cu legile de miscare si gravitationale ale lui New. lui. . . furnizată de acestia este folosită pentru evitarea obstacolelor.Capitolul 14 Senzori de navigatie . . . . definit de timp. . Unele dintre acestea depind de receptia informatiei din exteriorul vehiculului. În cazul unui vehicul mobil exterior flexibil. . ton. de . senzori care permit determinarea pozitiei si orientării. Prin urmare. precum driftul. la sol sau din aer. Prin urmare. mentin performantele în mod continuu. . . sistemele de navigatie inertiale si cele bazate pe GPS . . Senzorii de distantă sunt utilizati. din cauze naturale sau artificiale. obtinută prin adăugarea unei valori de avans la valoarea anterioară a pozitiei. 1 Din latinescul navis = navă si agere = miscare. Informatia . performante degradabile. Aceste ultime echipamente oferă măsurători relative ale pozitiei. . Cei mai utilizati senzori sunt cei ultrasonici si cei optici. . de asemenea. . . navigatia este susceptibilă la erori atunci când aceste . depind de informatii provenite din interiorul vehiculului si nu depind de mediul exterior. în care unele sisteme de navigatie pot fi inoperative sau cu . Prin urmare. disponibile sistemele bazate pe Sistemul de Pozitionare Globală (GPS). Navigatia1 poate fi definită ca procesul de directionare al miscării unui vehicul între . . în cadrul vehiculelor. . două puncte. . eliminând problemele precedente. . determinat pornind de la informatiile de traiectorie si viteză măsurate într-un interval . . La baza echipamentelor de navigatie stau o mare varietate de principii . urmărirea traiectoriilor . . .

. . Odată cu dezvoltarea noilor tipuri de senzori si cresterea puterii de calcul. scăzut.1. . dimensiuni compacte si greutate redusă. . se pot măsura practic doar fortele ce actionează într-un punct si vitezele unghiulare instantanee. . . . surătorile inertiale pot doar estima acceleratiile liniare si vitezele unghiulare. constantă. . . precum si pozitia unghiulară. pentru aplicatiile de robotică acestea rămân . . Prin urmare. stabilizate fizic . centrului din Peenemünde. combinate cu unele sisteme . . . mă. legate de miscarea sau orientarea raportată la restul universului. În cazul sistemelor cardanice (gimballed). Primele sisteme de navigatie inertială (INS) au fost utilizate de către cercetătorii . . în timpul celui de-al doilea război mondial. Dezoltările recente în domeniul tehnologiei accelerometrelor si giroscoapelor a con. Acestea oferă performante ridicate si fiabilitate la un pret . . lizat este cel al estimării. platformă girostabilizată în care un rotor de mare viteză mentine orientarea spatială . două ori pentru obtinerea pozitiei. zori de precizie pentru a compensa problemele majore de drift care apăreau datorită dublei integrări a mărimilor accelerometrelor în scopul determinării pozitiei. . Se utilizează un set de trei accelerometre pentru măsurarea acceleratiilor pe trei axe ortogonale. hiculului iar datele giroscopice sunt utilizate pentru transformarea datelor accelerometrelor în referinte de navigatie. trei giroscoape în scopul măsurării vitezelor de rotatie în jurul celor trei axe ortogo. . Viteza . . sisteme cardanice . girostabilizate. . spre deosebire de cele cardanice. Pentru a compensa rotatia corpului. . . pot fi obtinute prin integrare. . Principiul de bază uti. . Aceste sisteme pot fi considerate ca fiind sisteme de . sistemele . . În cazul sistemelor fixe (strapdown). NAVIGATIA INERTIALĂ SI SENZORI INERTIALI . . se utilizează . . dus la obtinerea unor noi senzori având un pret de cost scăzut. . inertială fixe bazate pe acesti senzori oferă performante potrivite unor aplicatii din . totusi costisitoare. consum mic de putere. (giroscopic). iar valorile acestora sunt integrate de . si pozitia liniare. . . . accelerometrele sunt mentinute pe o . . si a pozitiei pornind de la măsurătorile senzorului inertial. 128 . nu si alte mărimi . . nale. Sistemele de navigatie . domeniul robotilor mobili. limitează erorile de drift absolute. axei principale. de navigatie fixe au devenit din ce în ce mai precise si mai potrivite pentru aplicatii . navigatie stabilizate computational. 14. pornind de la . INS au devenit din ce în ce mai răspândite în cadrul aplicatiilor de avionică si navale.1). . toti senzorii sunt fixati pe corpul ve. . . Sistemele de navigatie inertiale implementează procesul de determinare a vitezelor .14. de pozitionare externe absolute. . că pretul acestor sisteme a scăzut în timp. de obicei. bazându-se pe un ansamblu giroscopic care controla al. oferind un sistem de . Germania. Cu toate . pentru ghidarea rachetelor V2 (figura 14. care cer precizie ridicată. titudinea si pe un accelerometru integrator pentru a măsura acceleratia de-a lungul . . . . experimente fizice în interiorul unui sistem închis izolat. Sistemele de navigatie inertială de mare precizie utilizau. . . fiind bazate pe componente mecanice cu cost ridicat si necesitând sen. . Aceste sisteme pot fi utilizate pentru determinarea unor coordonate de pozitie relative precise pe termen scurt care.1 Navigatia inertială si senzori inertiali . Principiul relativitătii generalizate a lui Einstein afirmă faptul că. Acestea au reprezentat unul dintre primele exemple de ghidare inertială.

Aces. . În cadrul aplicatiilor cu roboti . . de rotatie. gravitational. astfel încât se pot face unele . sau schimbarea miscării liniare în cazul accelerometrului. accelerometrele se regăsesc în compunerea robotilor cu autoechili. . alarmelor autovehiculelor. brare. . în cazul giroscopului. 14. . rezistentă la modificarea unui moment. De exemplu. . de asemenea.1: Sistemul de navigatie inertial al rachetei A-4/V-2.2 Accelerometre Accelerometrele reprezintă dispozitive care permit măsurarea acceleratiei. Din punct de vedere al . Acestea măsoară orientarea vectorului . . . . . simplificări. ploatează proprietatea de inertie. . . tea pot fi utilizate în diferite aplicatii. 14. airbag sau a monitoarelor miscării. . acestia nu efectuează deplasări pe distante lungi. . Încli. . Giroscoapele si accelerometrele sunt cunoscute ca senzori inertiali deoarece ex. . . sistemelor . senzori inertiali. 129 . controlerelor de jocuri. pentru determinarea acceleratiei. . si efectuează compensări. navigatie potrivit. înclinării. pilotilor automati. . nometrele sunt. . aplicatiilor posibile. unghiului . SENZORI DE NAVIGATIE . vibratiei. . coloziunii sau a gravitatiei. Sistemele de navigatie complete iau în consideratie anumiti factori. mobili. Fig. vectorul acceleratie rezultat actionând în functie de senzor. . precum rotatia pământului.CAPITOLUL 14.

. în cazul unei supraamor. giropendule. este un criteriu important. piezorezistive. cu vibratie. .2: Schema unui accelerometru elementar. În cazul unei subamortizări. tivul reprezintă un instrument de măsurare a fortei care rezolvă ecuatia F = . În practică. vor apărea oscilatii iar timpul de reactie va fi foarte mic. incluzând gravitatia. Accelerometrele pot fi electro. F= · = · (14. capacitive etc. forta de acceleratie este în echilibru . . unui arc elastic (conform legii lui Hooke). cu forta de deformare elastică a arcului având constanta si deplasarea : . . sensibilitatea sistemului de măsurare va fi: 130 . .14. Un corp cu o masă de referintă este suspendat cu ajutorul . În cazul sistemelor care măsoară deplasarea. există sisteme care pot determina fie deplasarea . iar este acceleratia senzorului. ACCELEROMETRE arc elastic c 0 masă m amortizor p Fig. . supus unei acceleratii . . Senzorii de acceleratie măsoară forta F care actionează asupra unui corp de masă . alegerea corectă a amortizării . accelerometrele variază din punct de vedere al proiectării si tehnologiei .2). denumită masă seismică. de fabricatie. . . corpului sub actiunea acceleratiei. 14.1) Prin urmare. un corp de masă . magnetice. În practică. . . corpul. fie deformarea mecanică a acestuia. . Un accelerometru simplu poate fi construit ca un sistem elementar de tip arc elastic cu greutate (figura 14. optice. dar toate au la bază ecuatia F = . este masa corpului. . În functie de acceleratia de la baza cadrului. În cazul unei acceleratii constante. Prin urmare. timpul de reactie va fi foarte mare. tizări. iar răspunsul acestui sistem va depinde de valoarea amortizării. piezoelectrice. unde . este atasată elastic de către corpul senzorului a cărui acceleratie se doreste a . . . Dispozi. în timp ce. Sistemul arc-masă amortizat reprezintă un sistem mecanic de ordinul doi. .2. Astfel. fi determinată. . . iar pentru control se introduce un amortizor. . arcul trebuie să ofere o fortă care să tină . alungirea arcului permite obtinerea unei măsuri a acceleratiei.

sensibilitatea măsurării este dependentă direct . Forta de amortizare este proportională cu viteza ˙ si este descrisă de con. trolat invers prin intermediul unei forte de reactie (figura 14. . . .3). Forta de inertie este proportională cu acceleratia ¨. . . pe lângă constanta de .2). . astfel: . frecventa de rezonantă a sistemului va fi: . . Prin urmare. .3) Neglijând amortizarea ( = 0). . mărimea care o generează (e. . sensibil este parte componentă a unui sistem în buclă închisă. Ecuatia . elementul .5) Pentru a obtine o proportionalitate corespunzătoare între variabila măsurată si de. se iau în consideratie si forta de amortizare. În cazul unei miscări dinamice. . . curent. . plasare. SENZORI DE NAVIGATIE . Sistemele care măsoară deplasarea masei seismice permit aplicarea principiului compensări. ω0 = (14.4) Prin urmare. rezultantă caracterizează un sistem rezonant: F= · = · + ·˙+ ·¨ (14. conform căruia un sistem deformat ca urmare a unei acceleratii este con. . este necesar să se opereze cu mult sub valoarea frecventei de rezonantă a . Forta de reactie sau . .CAPITOLUL 14. . . . elasticitate a arcului. .g. 14. 131 . precum si forta de . sistemului. conform ecuatiei (14. S= / = / (14. stanta de amortizare . .2) Acest lucru specifică faptul că sensibilitatea creste atunci când masa corpului este . inertie. 2 ω0 · S = 1 (14. tensiune) actionează ca o măsură a acceleratiei. Deplasarea rezultată este convertită în semnal electric prin intermediul unor tehnici adecvate. . a m x a x=0 Fm UA ~ x ~ a a) b) Fm IA ~ a Fk Fig. Sistemul operează în buclă închisă aproape de punctul de echilibru si permite obtinerea . de frecventa de rezonantă. în care acceleratia variază. mare si constanta elastică scade. . . .3: Senzori de acceleratie în buclă deschisă (a) sau în buclă închisă (b).

. în timp ce altele dispun de bucle de reactie care echilibrează si mentin elementul sensibil în pozitie centrală. Există. . a încurajat dezvoltarea senzorilor pe bază de siliciu. trebuie dispuse în imediata vecinătate a acestora. mare decât în cazul sistemelor necontrolate. Pentru a evita rezonatele excesive care pot cauza interferente. liniaritatea. sensibilitate tri-axială. Da. . acceleratia determină miscarea masei în raport cu cadrul fix. Necesitătile industriei de autovehicule. sistemele cu defor. . piezoelectrice si piezorezis. . . . factorul de amortizare D rezultat este definit astfel: D= 2· · ω0 = √ 2 · (14. pozitivele mai noi sunt construite în buclă deschisă. Sistemele cu buclă închisă de control al pozitiei oferă o gamă dinamică superioară. . . În practică se preferă valori cuprinse între 0.14. pararea diferitelor sisteme rezonante. limitată doar de valoarea fortei de reactie. în special pentru costructia airbagurilor. scăzut. Acesti senzori sunt construiti astfel încât să maximizeze sensibilitate pe . cuprinse între ± 2 g si ± 2000 g. Această modificare este utilizată pentru . Senzorii actuali incorporează amplificatoare. Deoarece măsurarea se face pe baze . . capacitive. Avantajul unor micromecanisme de suprafată este posibilitatea pe care aceastea o . . Accelerometrele piezorezistive nu au răspuns în curent continuu. . acceleratiei si modificând valoarea capacitătii. semnalul măsurat este determinat doar de către geometria si parametrii .5 si . . Dis. . schimbând valoarea acestuia. mărind astfel . ACCELEROMETRE unui grad mare de liniaritate. . aparitia unui stres în piezorezistor. circuitele electronice aferente măsurătorii . . stabili de material. . fapt care implică . 132 . axa principală si să minimizeze sensibilitatea în afara acesteia. În ultimii ani accelerometrele bazate pe micromecanisme (MEMS) au devenit disponibile pe scară largă. nefiind influentat de către alti factori precum temperatura. . torită valorilor foarte mici ale capacitătilor. . . incorporând trei accelerometre. În cazul unui coeficient de amortizare . câte unul pentru fiecare axă. În cazul senzorilor piezorezis. . electrozilor de măsură sau unui set suplimentar de electrozi. precum si circuite de compensare a temperaturii. precum si o frecventă de rezonantă mai . . . tive. tivi se bazează pe deplasarea unei armături capacitive mobile în functie de valoarea . . oferă de a controla pozitia sau deformarea cu ajutorul unei forte electrostatice aplicate . generarea unui semnal proportional cu valoarea acceleratiei aplicate senzorului.7. tipuri de accelerometre MEMS de pret scăzut: capacitive. Majoritatea senzorilor de acceleratie utilizati în mod curent sunt produsi cu aju. de semnal. Senzorii capaci.6) Factorul de amortizare Lehr este adimensional si permite descrierea simplă si com. Unele dispozitive au . în princal. trei . făcând posibilă producerea în serie a accelerometrelor integrate. . Acesti senzori permit game . torul micromecanismelor pe suprafată de siliciu.2. fapt care simplifică montarea si alinierea dispozitivului. 0. . . conditionere . tivi. datorită în principal capacitătii de productie si a pretului de cost . ceea ce le face inutilizabile pentru sistemele de navigatie inertială. mare necesită amortizări independente de temperatură.

14. . . dar au impedantă mare si nu . În pofida limitărilor. îmbunătătirea performantelor si scăderea pretului de . . . Accelerometrele piezoelectrice se bazează pe depunerea unui strat piezoeletric pe arcurile elastice din siliciu. termina dezvoltarea tehnologiei. piezoelectrice. magnetice. . pe baza deplasării masei. Această tehnologie a fost utilizată în senzorii de presiune de mare rezolutie si cu cost ridicat. . fiind potrivite pentru sistemele de navigatie inertiale. Pentru mărirea preciziei. Aplicatiile uzuale din industria autovehiculelor includ sisteme pentru airbag frontal. Accelerometrele . prin . sunt implementate bucle închise cu forte de echilibrare. capacitive. îsi găsesc întrebuintare în monitorizarea vibratiilor industriale.1 Accelerometre piezorezistive Primul prototip de accelerometru pe bază de siliciu a fost conceput în anul 1976. de cele mai . singur cristal de siliciu. . a reprezentat un pas important tehnologic: atasarea unor senzori de siliciu pe o diafragmă metalică si difuzia unor rezistori pe un . . . Accelerometrele optice au la bază modificările caracteristicilor unei cavităti optice. Astfel. . fie pentru a controla bucla de echilibrare. 133 . piezoelectrice sau electrostatice. . va fi dată în functe de valoarea fortei necesare pentru a echilibra masa. Piezorezistori consolă simplă Siliciu consolă dublă Cadru consolă dublă cu arcuri Masă Siliciu Fig. transporturilor. multe ori. 14. controlul suspensiilor si al frânării sau teste de impact. Domeniul larg de întrebuintare va de. . se pot utiliza o serie . era fragil si trebuia . De asemenea. echilibrare sunt minimizate erorile cauzate de distorsiuni si de neliniaritatea masei. . . Acestea oferă un răspuns mare la curenti mici. Fortele utilizate sunt. Structura de bază este prezentată în figura 14. accelerometrele .CAPITOLUL 14. Aceste forte sunt aplicate masei pentru a o echilibra. depinde ca bandă spectrală de deplasarea masei din interior. Radiatia care penetrează cavitatea .4: Schema unui accelerometru piezorezistiv.4. iar gama dinamică si banda sunt mărite. . SENZORI DE NAVIGATIE . cost. . amortizat cu lichid. Acesta dispunea de o singură structură de tip consolă (cantilever). piezorezistive si capacitive oferă ambele răspuns continuu si au pret de cost scăzut. . . . . În scopul măsurării deplasării masei din interiorul senzorului. . . de tehnici: piezorezistive. oferă un răspuns continuu. . precum si în controlul miscării. . Valoarea de iesire a senzorului . fie pentru a furniza direct semnalul de iesire. monitorizarea socurilor . termale sau optice.2.

presupun existenta unei capacităti suplimentare care stochează sarcina electrică. piezo poate fi de tip longitudinal. urmare. . gitudinale si transversale intervin în cazul structurilor cu un singur cristal. În cazul elementelor ideale. Senzorii cu amplificator de sarcină . În acest ultim caz. Prin . rezistenta internă are valoare infinită. În am. Structura cu două console . . Pe cele două suprafete se conectează electrozi. . transversal sau de forfecare. Sub actiunea unei forte F . tuia (sistem de tip masă-arc). 14. internă capacitivă. dar este fragilă si cauzează aparitia multor erori în afara axei principale. .2 Accelerometre piezoelectrice Senzorii piezoelectrici se bazează pe efectul piezoelectric care determină deplasarea sarcinilor electrice într-un cristal piezo sub influenta unei forte externe aplicate aces. . permit deplasări mai lungi într-un spatiu restrâns. ACCELEROMETRE Structura cu o sigură consolă are. Preluarea tensiunii se poate face cu ajutorul unui amplificator electrometric sau a unui amplificator de sarcini electrice. în timp ce efectul de forfecare apare în cazul structurilor cu două cristale cu polaritate opusă. un material piezoelectric generează la suprafata sa o . senzorului. . bele cazuri. Senzorii piezoelectrici pot fi modelati sub forma unor surse de tensiune cu rezistentă .14. 14. reducând astfel pretul de cost al . . Sarcina este . Sistemul este susceptibil la capacităti parazite. . teoretic. pe cele două cristale. tensiunea la cei doi electrozi este amplificată cu ajutorul unui amplificator cu impedantă de intrare foarte mare (figura 14. .2.5: Semnale proportionale cu acceleratia pentru senzorii piezoelectrici. rezultanta acestora fiind proportională cu valoarea acceleratiei. sarcină electrică Q. . . Arcurile îndoite . În cazul amplificatorului electrometric. . . proportională cu stresul mecanic generat de către forta F . Efectele piezoelectrice lon. capacitătile parazite nu mai influentează valoarea semnalului rezultat. în paralel cu senzorii se conectează rezistori. . Efectul .2. . cea mai mare sensibilitate. torsionarea structurii bimorfe determină aparitia unor tensiuni diferite . Aceste tipuri de senzori sunt utilizate îndeosebi pentru măsurarea acceleratiilor vehiculelor si pentru determinarea vitezei de giratie.5). 134 . . . compensează erorile din afara axei principale si este mult mai robustă. CM F F pin Q U U pin Q CP U = Q/CM U Măsurarea tensiunii Măsurarea sarcinii Fig.

135 .2. element termic de încălzire. Bucla de reactie trebuie să fie sufi. iar pe armătura centrală tensiunea este nulă. . .4 Accelerometre termice Senzorii de acceleratie termici generează o bulă de gaz încins prin intermediul unui . mai rece. tensiune proportională cu valoarea acceleratiei. 14. . impulsurilor de pe armătura centrală si a impulsului de comandă considerat referintă. Aparitia unei acceleratii . celulă bară acceleraţie bară celulă Ca fixări Cb Ca Cb Fig. ceea ce cauzează un cuplaj capacitiv mai mare între armăturile care sunt mai apropiate. . care . tensiunea armăturii centrale fiind nenulă. Prin urmare. Fiecare din armăturile centrale se întrepătrunde cu două armături fixate pe bară. cele două capacităti sunt aprox.6: Schema unui accelerometru capacitiv. 14.2. Dispunerea permite detectarea acceleratiilor pozitive si neg. Semnalul corespunzător acceleratiei este determinat prin diferenta de fază a . 14. regiunea cu densitate .3 Accelerometre capacitive În cazul accelerometrelor capacitive. cient de rapidă pentru a realiza echilibrarea înaintea altor modificări ale acceleratiei. ca în figura 14. deplasarea masei modifică geometria unui element sensibil capacitiv.CAPITOLUL 14. Semnalul astfel rezultat este utilizat într-o buclă închisă pentru a forta echilibrarea . se întrepătrund cu armăturile atasate pe fiecare parte a cadrului. formând un divizor capacitiv. . . fromând o structură . prin comanda armăturilor centrale cu o . Una din modalitătile de realizare a accelerometrelor capacitive utilizează o bară . . având frecventa de 1 MHz. . ative de-a lungul axei barei în planul senzorului. . SENZORI DE NAVIGATIE . . Atunci când nu există acceleratie. Forta de echilibrare se obtine electrostatic. imativ egale. . . la capetele căreia se conectează două arcuri. principală care constituie masa. În cazul aparitiei unei acceleratii laterale.6. este necesară utilizarea unui demodulator asincron pentru extragerea semnalului de joasă frecventă proportional acceleratiei. . determină o deplasare a plăcilor fixate pe bară. . simetrică de tip pieptăn. . . senzorului si repozitionarea lui la valoarea initială corespunzătoare acceleratiei 0 g. . Gazul încins are o densitate mai mică decât gazul înconjurător. Cele două armături fixe sunt comandate cu semnale dreptunghiulare de amplitudine egală dar cu polaritate opusă. Bara dispune de mai multe armături centrale situate la unghiuri drepte fată de bară. . .

2. . . V . Deviatia. cu termocuplu sau cu rezistente.2. Din punct de vedere al semnalului de iesire furnizat de accelerometre. scăzută corespunzătoare gazului încălzit se deplasează în interiorul zonei cu temperatură rece. . valoarea si sensul acceleratiei la momentul respectiv (figura 14.9). ACCELEROMETRE y y x x Fig. . Tensiunea măsurată în punte reprezintă semnalul . tensiunea la iesirea senzorului Analog De. formulă specificată în foaia de catalog de producător (figura 14. În cazul accelerometrelor cu iesire analogică. Pentru accelerometrele cu iesire modulată PWM. pot fi în. . acceleratia este exprimată sub forma deviatiei fată de o tensiune constantă echiva. . Asimetria rezultată este ulterior detectată prin intermediul unei punti . . . . 14. precum si sensul acesteia în raport cu tensiunea de referintă. . proportional valorii acceleratiei. . . exprimă . +3V VS XOUT ADXL322 VS = 3V +2 g CDC AC AMP SENSOR DEMOD OUTPUT AMP OUTPUT AMP VS/2 0g A(g) RFILT 32kΩ COM ST RFILT 32kΩ YOUT CY XOUT CX GND -2 g Fig. Impulsurile PWM pot fi covertite în semnal analogic prin utilizarea unui filtru RC pentru extragerea componentei continue.7: Principiul măsurării acceleratiei statice cu ajutorul accelerometrului termic. lentă unei acceleratii nule. . 14.8: Accelerometru analogic cu două axe (Analog Devices ADXL322). 14. tâlnite variante analogice sau digitale. vices ADXL330 la o acceleratie de 0 si o tensiune de alimentare de 3 V este de 1. De exemplu.8).5 Semnalul de iesire .14. 136 .5 . acceleratia se calculează după o .

+3. senzorii de acest tip functionează ca accelerometre cu două axe (figura 14. 137 .0V TO +5.10: Accelerometru digital cu comunicatie serială (Analog Devices ADIS16006).5% 0g = 50% DUTY CYCLE T2 = RSET/125MV Fig. controlere.CAPITOLUL 14. mediul comunicatiilor seriale de tip SPI sau I2 C. Gama . VCC ADIS16006 SCLK DUAL-AXIS ±5g ACCELEROMETER CDC SERIAL INTERFACE DIN DOUT CS TCS TEMP SENSOR COM ST YFILT CY XFILT CX Fig. 14. . . Accelerometrele care dispun de iesire PWM pot fi mai usor de interfatat cu micro.5)/12. Datorită constructiei.25V CX VDD VDD XFILT SELF TEST X SENSOR CDC DEMOD RFILT 32kV ADXL202/ ADXL210 X OUT DUTY CYCLE MODULATOR (DCM) C O U N T E R OSCILLATOR RFILT 32kV DEMOD Y SENSOR mP Y OUT T2 COM YFILT CY T2 RSET T1 A(g) = (T1/T2 — 0. suplimentar pentru încălzirea gazului de referintă din interior. 14. De asemenea. dinamică uzuală este de ±2 g. . . Senzorii termici dispun de iesiri analogice sau PWM. . circuite pentru controlul întreruperilor sau managementul puterii consumate. . . acestea pot integra .11). SENZORI DE NAVIGATIE . Unele modele de accelerometre permit comunicatia cu microcontrolere prin inter. în timp ce senzorii cu iesire analogică necesită un convertor analog/numeric.9: Accelerometru cu semnal de iesire de tip PWM (Analog Devices ADXL202/210). dar au în compunere un sistem .

. . astfel încât pot fi întâlnite în diferite variante tehnologice. . . caz în care senzorii se numesc înclinometre sau clinometre. uneori.7) este acceleratia gravitatională. si de celelalte acceleratii prezente în acel moment. de gaz se miscă sub actiunea gravitatiei. Atunci când senzorul este înclinat. deoarece înclinometrele măsoară . . ci unghiul: α = α + arctan unde 138 (14.6 Înclinometre Accelerometrele pot fi utilizate pentru măsurarea unghiului de înclinare.11: Accelerometru termic cu două axe si semnal de iesire de tip PWM (Memsic MX2125). .14. a metodei de . O altă modalitate constructivă este cea care presupune includerea bulei de aer în interiorul unui senzor capacitiv având forma unei cupole împărtite în patru cadrane. actiunea gravitatiei. . La utilizarea înclinometrelor trebuie să se tină cont. . zorului cu un unghi α fată de orizontală si al existentei unei acceleratii în sensul . înclinometrele au tendinta de a avea o întârziere a răspunsului. . În cazul înclinării sen. semnalul diferentă rezultat este proportional cu unghiul de înclinare al elementului . pe lângă acceleratia gravitatională. ACCELEROMETRE Sck Internal Oscillator Temperature Sensor Tout CLK Voltage Reference Vref Heater Control Continuous Self-Test X axis Low-Pass Filter Aout X Factory Adjust Offset & Gain Y axis Low-Pass Filter Aout Y Vdd GND Vde Fig. . pozitia bulei de aer se schimbă în interiorul cupolei. acesta nu va măsura direct valoarea acceleratiei . bula . a timpului de stabilizare si. . . modificând valoarea capacitătilor celor două . Semnalul diferentă rezultat reflectă înclinarea relativă pe axa . vectorului rezultantă a tuturor acceleratiilor de pe acea axă. sensibilă.2. . măsurare. 14. elemente sensibile. . . 14. Principiul de operare este similar unui boloboc. Sub . .2. . . Principiul senzorului este bazat pe un dielectric fluid situat între armăturile unui condensator si care contine o bulă de aer. acest lucru . Datorită inertiei fluidului. sensibil. determinând modificarea capacitătilor din fiecare cadran. . axei de sensibilitate al senzorului. . Similar cazului precedent.

2 Giroscoape cu fibră optică Datorită dezvoltării industriei de comunicatii. platformei pe care dispozitivul este montat. În afara giroscoapelor mecanice. . îsi modifică foarte putin pozitia fată de modificarea care ar interveni în cazul în care . . cu fibră optică sau cu laser. orientarea acestuia va rămâne fixă indiferent de miscarea . 139 . . fiind utilizată din ce în ce mai des pentru construirea giroscoapelor la pret de cost scăzut. . . 14. sau giroscoapele cuantice de mare sensibilitate.3. precum cele microelectromecanice (MEMS). Unitatea inertială .CAPITOLUL 14. Deoarece cuplul extern este minimizat prin montarea dispozitivului într-un sistem cardanic. . .1 Giroscoape mecanice Un giroscop mecanic este compus în principal dintr-un disc care se roteste în jurul .3. 14. scară largă.12). cardan cadrul giroscopului moment unghiular disc rotor ax de rotație Fig. fibra optică a devenit disponibilă pe . discul nu s-ar roti.3 Giroscoape Un giroscop este un dispozitiv care permite măsurarea sau mentinerea orientării si . 14.12: Principiul constructiv al unui giroscop mecanic cu trei axe (stânga). de orientare (figura 14. 14. care are la bază efectul de conservare a momentului de rotatie unghiular. giroscopică a rachetei balistice intercontinentale LGM-118 Peacekeeper (dreapta). există o serie de alte tipuri. axei proprii cu o viteză unghiulară foarte mare si care nu are constrângeri mecanice . În urma actiunii unui cuplu extern. Giroscopele cu fibră optică (FOG sau OFG) utilizează interferenta . axa de rotatie a discului . SENZORI DE NAVIGATIE .

forta Coriolis determină aparitia unei vibratii secundare. Atunci când această structură este . va căpăta o acceleratie Coriolis − care depinde de viteza unghi. → → ulară a cadrului − si de viteza liniară relativă − a obiectului. mină aparitia unei viteze liniare a structurii rigide. în final. fasciculul care circulă . 14.14. . . o struc. → referintă rotativ. bră optică bobinată circular (figura 14. brantă poate lua forma unei prisme. . . Diferenta de fază rezultată influentează interferenta celor două fascicule atunci . cul. avut-o giroscoapele pe micromecanisme vibrante. Acestea au la bază efectul Coriolis conform căruia un obiect aflat în miscare liniară si situat în interiorul unui cadru de . . Acest lucru se . . . Vibratia deter. cilindru sau a unei furci. . Datorită efectului Sagnac.3. pe cei doi vectori: → − → → = 2− × − ω (14. . Senzorul este compus din 5 km de fi. de . GIROSCOAPE bobină de fibră optică axa de sensibilitate divizor de fascicul sursă de lumină detector optic Fig.3 Giroscoape cu structură vibrantă Evolutia cea mai dramatică din punct de vedere al costului si al miniaturizării au . obtine prin aplicarea unei tensiuni alternative pe electrozii primari. când acestea sunt combinate. Două fascicule de lumină circulă prin fibra optică din cele două directii opuse. a cărei amplitudine este proportională cu viteza unghiulară de rotatie. orientată perpendicular ω . 14. .13). . . . de frecventa unghiulară a dispozitivului. 140 . optică pentru a determina o rotatie mecanică. . Structura vi.3. . Intensitatea fasciculului combinat depinde. în sens opus sensului rotatiei va parcurge o distantă mai mică decât celălalt fasci.13: Principiul de functionare al unui giroscop cu fibră optică.8) Pentru a utiliza efectului Coriolis în scopul detectării rotatiei unghiulare. În cazul în care un element sensibil este făcut să vibreze într-o anumită directie. tură rigidă este fortată să vibreze la frecventa proprie de rezonantă. rotită sub un anumit unghi.

141 .CAPITOLUL 14. . SENZORI DE NAVIGATIE . unei vibratii pe axa având aceiasi frecventă ca cea initială. vibratii va fi proportională cu viteza de rotatie imprimată. rotirea senzorul în jurul axei va avea ca efect aparitia . Amplitudinea acestei noi . . exemplu de-a lungul axei . Giroscopul cu prismă vibrantă. . . . .

Coordonatele omogene extind translaţia și rotaţia prin intermediul unei a patra coordonate denumite factor de scalare. 15. atât autonom cât și comandaţi.1 Sisteme de coordonate omogene În caracterizarea manipulatoarelor din punct de vedere mecanic. pentru o multitudine de astfel de translaţii și rotaţii. pentru realizarea translaţiilor se utilizează operaţiile de sumare cu un vector de dimensiune 3 × 1. Operaţia de transformare conţine simultan un factor de rotaţie și unul de translaţie și este definită prin multiplicarea matricelor transformărilor individuale. roboţii staţionari din domeniul industriei de autovehicule dispun de braţe manipulatoare destinate vopsirii sau sudurii diferitelor părţi componente. însă. de exemplu.Capitolul 15 Manipulatoare robotice Marea majoritate a roboţilor mobili și staţionari. Pentru a descrie aceste două noţiuni este nevoie de un sistem de coordonate rigid atașat întregului sistem. Matricea de translaţie:  1  0 Trans(vx vy vz ) =   0 0 0 1 0 0  0 vx 0 vy   1 vz  0 1 (15. Acest lucru. braţele și uneltele. problemele ce intervin sunt definirea coordonatelor pentru localizarea obiectelor în spaţiul tridimensional și cinematica.1) 142 . este dotată cu manipulatoare. În industria farmaceutică există roboţi care au ca scop efectuarea de împachetări sau dozări realizate tot prin intermediul unor manipulatoare. Obiectele ce intră în compunerea unui manipulator sunt articulaţiile. cei care deservesc centrale nucleare sau roboţii militari. de asemenea. Acestea sunt caracterizate prin două atribute: poziţie și orientare. Geometria în spaţiu tradiţională. Roboţii dotaţi cu braţe manipulatoare pot opera. De exemplu. iar pentru rotaţie se folosește multiplicarea cu o matrice de dimensiune 3 × 3. Soluţia problemei rezultă din utilizarea coordonatelor omogene. în medii periculoase ca. implementarea nu poate fi făcută printr-o singură operaţie.

CAPITOLUL 15. MANIPULATOARE ROBOTICE

Matrice de rotaţie:  1 0 0  0 cos θ − sin θ Rot(x θ) =   0 sin θ cos θ 0 0 0 cos θ  0 Rot(y θ) =   − sin θ 0    0 0   0  1

(15.2)

 0 sin θ 0 1 0 0   0 cos θ 0  0 0 1  0 0   0  1

(15.3)

cos θ − sin θ  sin θ cos θ Rot(z θ) =   0 0 0 0

0 0 1 0

(15.4)

15.2

Structură

Manipulatoarele sunt compuse din legături rigide (links) conectate prin intermediul unor articulaţii sau cuple cinematice (joints) având ca rezultat efectuarea de mișcări relative. Cuplele cinematice au, de obicei, în compunere senzori de poziţie care permit determinarea precisă a poziţiei lor în raport cu celelalte legături vecine. Cuplele cinematice pot fi de rotaţie (R) sau de translaţie (P) (figura 15.1).

Cuple cinematice de rotaţie / revoluție (R)

Cuple cinematice de translaţie / prismatice (P)

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

Manipulatoarele pot fi clasificate în diferite grupuri, în funcţie de geometria acestora, de formă sau de structura cinematică. În funcţie de structura cinematică, manipulatoarele se clasifică în: articulate (RRR), sferice (RRP), SCARA (RRP), cilindrice (RPP) și carteziene (PPP). În funcţie 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.

Numărul gradelor de libertate (DoF - Degree of Freedom) definește numărul variabilelor independente care trebuie specificate pentru a localiza toate componentele mecanismului. Cel mai des întâlnit tip de manipulator constă dintr-o platformă (denumită bază), trei braţe (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

θ3

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 știinţa dinamicii care se ocupă cu studiul mișcării în raport cu forţele care o cauzează. În cadrul cinematicii se studiază poziţia, viteza, acceleraţia și alte derivate de ordin superior.

144

CAPITOLUL 15. MANIPULATOARE ROBOTICE

Cinematica manipulatoarelor se ocupă cu următoarele probleme de bază, definite pentru o anumită geometrie a unui manipulator: 1. Cinematica directă: Pentru un număr dat de cuple cinematice, care este pozitiţia efectorului final? 2. Cinematica inversă: Care sunt unghiurile cuplelor cinematice necesare pentru o poziţie dată a efectorului final? 3. Ecuaţia de mișcare: 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 transformările sale începând cu baza și terminând cu efectorului final. Fiecare transformare parţială dintre două cuple succesive poate fi definită cu ajutorul unei matrice omogene de dimensiune 4×4. Mișcarea completă a întregului manipulator se determină prin multiplicarea tuturor matricelor 4 × 4, numărul acestora fiind egal cu numărul gradelor de libertate. Denavit și Hartenberg au dezvoltat o notaţie standard care permite descrierea oricărei cuple cinematice utilizând doar patru transformări între două cuple cinematice succesive, n-1 și n. Transformarea pornește de la următoarele condiţii iniţiale: 1. Axa zn este axa de rotaţie al cuplei cinematice n; 2. Axa xn este paralelă la normala comună: xn = zn × zn−1 ; 3. Axa yn este aleasă utilizând regula mâinii drepte. Transformarea este descrisă cu ajutorul a patru parametrii, cunoscuţi sub denumirea de parametri D-H: • rn (lungimea braţului): distanţa dintre zn și zn+1 de-a lungul axei xn ; • αn−1 (torsiunea braţului): unghiul dintre zn−1 și zn de-a lungul axei xn−1 ; • dn (decalajul braţului): distanţa dintre xn−1 și xn de-a lungul axei zn ; • θn (unghiul cuplei cinematice): unghiul dintre xn−1 și xn de-a lungul axei zn .

Pornind de la cei patru parametrii D-H se construiesc patru transformări, două
145

9) Determinarea poziţiei efectorului final pornind de la prima cuplă cinematică se face 146 . CINEMATICA r a z1 O1 d q x0 y0 Fig.6) Rot(xn−1 αn−1 ) Trans(0 0 dn−1 ) (15.8). 15.3.8) Fiecare din cele patru transfomări pot fi reunite sub forma unei matrice unice n−1 Tn al cărei conţinut este prezentat în ecuaţia 15.7) Rot(zn θn ) (15.5)     (15. astfel:  1 0 0 rn  0 1 0 0   =   0 0 1 0  0 0 0 1  1 0 0 0  0 cos αn−1 − sin αn−1 0 =   0 sin αn−1 cos αn−1 0 0 0 0 1   1 0 0 0  0 1 0 0   =   0 0 1 dn−1  0 0 0 1   cos θn − sin θn 0 0  sin θn cos θn 0 0   =   0 0 1 0  0 0 0 1  Trans(rn 0 0) (15. y1 x1 z0 O0 rotaţii și două translaţii.4: Sistemul de coordonate pentru convenţia Denavit-Hartenberg.15.5-15.9. Această matrice unică este obţinută prin efectuarea produsului celor patru matrice individuale ale transformărilor (15. n−1 Tn = Rot(zn θn ) · Trans(0 0 dn−1 ) · Trans(rn 0 0) · Rot(xn−1 αn−1 )   cos θn − sin θn cos αn−1 sin θn sin αn−1 rn cos θn  sin θn cos θn cos αn−1 − cos θn sin αn−1 rn sin θn   =   0  sin αn−1 cos αn−1 dn 0 0 0 1 (15.

Dacă axele z sunt paralele. parametrii D-H ai fiecărei cuple cinematice sunt scriși într-un tabel specific. Stabilirea axelor xn pe direcţia normalei produsului vectorial zn × zn−1 și trecând prin origini. De asemenea.1. se aleg originile cuplelor cinematice. 4. axele zk sunt paralele.10) În cazul cuplelor cinematice care se rotesc în același plan. Procedura de determinare a soluţiei problemei cinematicii directe poate fi descrisă pe scurt prin parcurgerea următorilor pași: 1. 5. Determinarea efectorului final.5: Exemplu de manipulator articulat cu 3 DoF. Construirea tabelului conţinând cei patru parametrii D-H. n = 1 3. Determinarea axelor yn conform regulii mâinii drepte. (Manipulator planar cu 3 DoF ) Se dă un manipulator format din trei braţe rigide cu lungimile Ln . Stabilirea și numerotarea tuturor axelor de rotaţie proprii ale cuplelor cinematice z0 zN−1 .CAPITOLUL 15. Pentru ușurinţa scrierii. Exemplul 21. Determinarea bazei și axelor de coordonate asociate x0 și y0 pe baza regulii mâinii drepte. 3. Matricea D-H (Denavit-Hartenberg) asociată parametrilor manipulatorului este prezentată în figura 15. Deoarece toate cele trei cuple cinematice au axele zn paralele. toate cele trei braţe sunt conectate prin intermediul unor cuple cinematice rotative. q2 L2 L1 q3 L3 q1 Fig. 147 . astfel: 0 TN =0 T1 ·1 T2 · ·N−1 TN (15. De asemenea. Localizarea originii sistemelor de coordonate n = 1 N − 1 în punctul de intersecţie dintre normala produsului vectorial zn × zn−1 și axa zn . Prin urmare. distanţele dk pot fi alese convenabil ca fiind nule. 6. 15. o platformă fixă care dispune de o cuplă cinematică rotativă pentru fixarea primului braţ și un instrument dispus în capătul celui de-al treilea braţ. 2. unghiurile α asociate sunt nule. MANIPULATOARE ROBOTICE prin produsul tuturor matricelor unice de transformare.6. 7.

De asemenea..a. cijk = cos(θi + θj + θk ) ș.15.m. unghiurile αn−1 sunt nule.9 și citirea ultimei coloane. 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).3. toate cuplele cinematice se rotesc în același plan. s-au utilizat notaţiile ci = cos θi . 15.5. cij = cos(θi + θj ).12)  (15.11) 1 T2 2 T3 Determinarea coordonatelor vârfului braţului rigid de lungime L3 în raport cu coordonatele bazei se face prin multiplicarea celor trei matrice definite conform relaţiei 15.6: Sistemele de coordonate ale cuplelor cinematice pentru manipulatorul din figura 15. n 1 2 3 αn−1 0 0 0 rn L1 L2 L3 dn 0 0 0 θn θ1 θ2 θ3 Matricele transformărilor 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 cos θ2 − sin θ2  sin θ2 cos θ2 =   0 0 0 0 cos θ3 − sin θ3  sin θ3 cos θ3 =   0 0 0 0   0 L2 cos θ2 0 L2 sin θ2    1 0 0 1 0 L3 cos θ3 0 L3 sin θ3    1 0 0 1  (15. de asemenea. 148 . si = sin θi . nule. Prin urmare. distanţele dn sunt. Pentru reducerea spaţiului.d. CINEMATICA y2 q2 y3 q3 x2 y0 x0 z0 z2 x1 y1 z1 q1 z3 x3 Fig.

de exemplu. θ2 = 90◦ și θ3 = −90◦ . √ θ2 = −30◦ și θ3 = −60◦ (figura 15. pentru valorile θ1 = 30◦ . Py = 0 5 · L1 − 3/2 · L3 și Pz = 0.5. rezultă poziţia vârfului P al braţului de lungime L3 . 149 . MANIPULATOARE ROBOTICE q 3 = -90° L3 L2 L1 q 1 = 0° q 2 = 90° Fig.CAPITOLUL 15. 15.   1 0 0 L1 + L3   0 1 0 L2 0  T3 =    0 0 1 0 0 0 0 1 Alt rezultat al poziţiei punctului P se obţine. Py = L2 și Pz = 0.5. 15. pentru valorile unghiurilor cuplelor cinematice conform figurii 15.8). Punctul P are coordonatele Px = 3/2 · L1 + L2 + √ 0 5 · L3 .8: Valori particulare ale unghiurilor cuplelor cinematice pentru manipulatorul din figura 15.7: Valori particulare ale unghiurilor cuplelor cinematice pentru manipulatorul din figura 15. q 2 = -30° L2 L1 q 3 = -60° L3 q 1 = 30° Fig.7 cu θ1 = 0◦ . Punctul P va avea coordonatele determinate pe cele trei axe ca fiind Px = L1 + L3 . 0 T3 = T ·1 T2 ·2 T3 1 c123 −s123  s123 c123 =   0 0 0 0 0  0 L1 · c1 + L2 · c12 + L3 · c123 0 L1 · s1 + L2 · s12 + L3 · s123    1 0 0 1 De exemplu.

Deoarece forma este complexă. q3 L3 L2 q4 L4 q5 L5 q2 q1 L1 Fig. Coordonatele efectorului final pot fi determinate prin efectuarea unei simple translaţii a coordonatelor determinate ale ultimei cuple cinematice. aceasta nu este prezentată explicit. care prezintă un efector final sub forma unui clește (gripper) rotativ.9 este prezentată o configuraţie de manipulator articulat cu cinci grade de libertate.3. Modelul este specific manipulatoarelor de tip Lynxmotion SES Arm (figura 15.9: Exemplu de manipulator articulat cu 5 DoF.15. 150 . putând fi determinată numeric cu ajutorul unui program de simulare. CINEMATICA 05  −√3/2 0 T3 =   0 0  √ 3/2 05 0 0 0 0 1 0 √ 3/2 · L1 + L2 + 0 5 · L3 √ 0 5 · L1 − 3/2 · L3 0 1     Exemplul 21. 15. αn−1 -90 90 0 0 90 θn θ1 θ2 θ3 θ4 θ5 n 1 2 3 4 5 rn 0 L1 L2 L3 L4 dn 0 0 0 0 0 Înmulţind cele cinci matrice de transformare omogene ale sistemelor de coordonate asociate cuplelor cinematice. (Manipulator articulat cu 5 DoF ) În figura 15.3).10. Sistemele de coordonate asociate fiecărei cuple cinematice sunt evidenţiate în figura 15.2. rezultă matricea transformării omogene 0 T5 .

15)  (15.CAPITOLUL 15. Matricele transformărilor 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 cos θ2  sin θ2 =   0 0   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  (15.13) 1 T2 2 T3 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   3 T4 4 T5 0 sin θ5 L5 cos θ5 0 − cos θ5 L5 sin θ5    1 0 0 0 0 1 151 .9.10: Sistemele de coordonate ale cuplelor cinematice pentru manipulatorul din figura 15.14)  (15. 15. MANIPULATOARE ROBOTICE y3 q3 y4 q4 x5 z5 q5 x3 z3 x2 q2 z4 x4 y5 y2 y0 x0 z0 z2 z1 y1 x1 q1 Fig.16)  (15.

3. θ3 = −90◦ .2 Cinematica inversă Problema cinematicii inverse este mult mai dificilă decât cea a cinematicii directe și nu de multe ori. 152 . Problema cinematicii inverse este mult mai utilă deoarece permite cunoașterea modului de control al cuplelor cinematice în scopul poziţionării efectorului final la o anumită coordonată. θ2 = 90◦ . CINEMATICA Pentru cazul particular în care unghiurile cuplelor cinematice sunt θ1 = 0◦ . structuri cinematice au fost reproiectate pentru a permite obţinerea unor soluţii mai simple ale cinematicii inverse. se obţine următoarea matrice de transformare omogenă:   c1 c234 s1 −c1 s234 c1 (L4 c234 + L3 c23 + L2 c2 + L1 )  sc −c1 s1 s234 s1 (L4 c234 + L3 c23 + L2 c2 + L1 )  0  T5 =  1 234  s234  1 −c234 L4 s234 + L3 s23 + L2 s2 0 0 0 1 15.3. θ4 = 0◦ .15. θ5 = 0◦ . nu există metode unice care să permită determinarea soluţiei cinematicii inverse. Din nefericire. soluţiile obţinute pot fi adesea multiple. De asemenea.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.