Documente Academic
Documente Profesional
Documente Cultură
Capitolul 5 - 1
5.3. Proiectarea blocului de senzori
+5
v1 v2 v3 v4
R1 R2 R3 R4
1k 1k 1k 1k
Vout [V]
3.5
3.0
2.5
2.0
1.5
1.0
0.5
0.0
100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000
R[ohm]
Figura 5.3. Valoarea tensiunii de iesire din divizorul rezistiv in functie de gradul de
iluminare
Capitolul 5 - 2
Se observa ca in cazul unui grad de iluminare ridicat valoarea rezistentei
fotorezistorului este aproape 200Ω, deci valoarea tensiunii de iesire din divizor este sub 0,5V.
Acesata valoare creste invers proportional cu gradul de iluminare.
Capitolul 5 - 3
100N U3 7805/TO220
V Alimentare
2200uF/10V 100N +5
1 1 3
2 IN OUT
GND
C5 +
J1 C3 C4
2
0
0 0 0 0
Reset-ul
Capitolul 5 - 4
Pentru a preveni ajungerea unui zero logic la pinul MCLR accidental (linia de
deasupra înseamnă că resetul este activat de un zero logic), MCLR trebuie să fie conectat
printr-un rezistor la polul pozitiv al sursei de alimentare. Rezistorul trebuie să fie între 5 şi
10k. Acest rezistor a cărui funcţie este de a menţine o anumită linie la starea logică unu ca o
prevenire, se numeşte o scoatere-pull up.
Microcontrolerul PIC 16F876 are câteva surse de reset:
a) Reset la alimentare, POR (Power-On Reset)
b) Reset în timpul lucrului obişnuit prin aducerea unui zero logic la pinul MCLR al
microcontrolerului.
c) Reset în timpul regimului SLEEP
d) Reset la depăşirea timer-ului watchdog (WDT)
e) Reset în timpul depăşirii WDT în timpul regimului SLEEP.
Cele mai importante resurse de reset sunt a) şi b). Prima are loc de fiecare data când
este alimentat microcontrolerul şi serveşte la aducerea tuturor regiştrilor la starea iniţială a
poziţiei de start. A doua este pentru a aduce un zero logic la pinul MCLR în timpul operaţiei
normale a microcontrolerului. Este des folosită în dezvoltarea de programe.
În timpul unui reset, locaţiile de memorie RAM nu sunt resetate. Ele sunt necunoscute
la alimentare şi nu sunt schimbate la nici un reset. Spre deosebire de acestea, regiştrii SFR
sunt resetaţi la o stare iniţială a poziţiei de start. Unul din cele mai importante efecte ale
resetului este setarea contorului de program (PC) la zero (0000h), ceea ce permite
programului să înceapă executarea de la prima instrucţiune scrisă.
În cadrul proiectului am ales o rezistentă cu valoarea de 1K/0,25W.
Capitolul 5 - 5
J5
+5 ICSP
1
2
3
4
5
R6
1k
SW4
0
Reset +5
U4
0
1 28
MCLR/VPP/THV RB7/PGD
v1 2 27
RA0/AN0 RB6/PGC
v2 3 26
RA1/AN1 RB5
v3 4 25
RA2/AN2/VREF- RB4
v4 5 24
RA3/AN3/VREF+ RB3/PGM
6 23
RA4/T0CKI RB2
7 22
RA5/SS/AN4 RB1
8 21
GND RB0/INT
9 20
OSC1/CLKIN VDD
10 19
OSC2/CLKOUT GND
11 18
RC0/T1OSO/T1CKI RC7/RX/DT
12 17
RC1/T1OSI/CCP2 RC6/TX/CK
13 16
RC2/CCP1 RC5/SDO
14 15
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
Oscilatorul XT
Oscilatorul cu cristal se află într-o carcasă metalică cu doi pini pe care este înscrisă
frecvenţa la care cristalul oscilează. Mai este necesar câte un condensator ceramic de 22pF cu
celălalt capăt la masă, de a fi conectaţi la fiecare pin.
Oscilatorul şi condensatorii pot fi încapsulaţi împreună într-o carcasă cu trei pini. Un
asemenea element se numeşte rezonator ceramic şi este reprezentat în scheme ca cel de mai
jos. Pinii centrali ai elementului sunt masa, iar pinii terminali sunt conectaţi la pinii OSC1 şi
OSC2 ai microcontrolerului. Când se proiectează un aparat, regula este să plasaţi oscilatorul
cât mai aproape de microcontroler, pentru a elimina orice interferenţă de pe liniile pe care
microcontrolerul primeşte tactul de ceas.
După alimentare, oscilatorul începe să oscileze. Oscilaţia la început are o perioadă şi o
amplitudine instabile, dar după un timp devin stabilizate.
Capitolul 5 - 6
U4
1 28
MCLR/VPP/THV RB7/PGD
2 27
RA0/AN0 RB6/PGC
3 26
RA1/AN1 RB5
4 25
RA2/AN2/VREF- RB4
5 24
RA3/AN3/VREF+ RB3/PGM
6 23
RA4/T0CKI RB2
7 22
RA5/SS/AN4 RB1
8 21
GND RB0/INT +5
0 9 20
OSC1/CLKIN VDD
10 19
OSC2/CLKOUT GND
C1 C2 11 18
RC0/T1OSO/T1CKI RC7/RX/DT
22p20MHz 22p
12 17
0 0 RC1/T1OSI/CCP2 RC6/TX/CK
13 16
RC2/CCP1 RC5/SDO
14 15
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
Capitolul 5 - 7
pe linia de intrare AN3 am conectat intrarea semnalului de la al patrulea
divizor rezistiv;
Pentru a prelucra semnalele analogice este necesara conversia lor din analogic in
digital, lucru practic realizabil cu ajutorul unui convertor A/D.
Convertorul AD
Capitolul 5 - 8
intrări analogice (RA3 poate fi şi intrare analogică de tensiune de referinţă) sau ca I/O
digitale.
Configurarea regiştrilor este următoarea :
ADCON0 REGISTER (ADDRESS 1Fh)
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE — ADON
bit 7 bit 0
bit 7-6 ADCS1:ADCS0: A/D Conversion Clock Select bits = 10 pentru Clock
Conversion = Fosc/2
bit 5-3 CHS2:CHS0: Analog Channel Select bits folosit pentru selecţia canalului ,
astfel :
000 = Channel 0 (AN0)
001 = Channel 1 (AN1)
010 = Channel 2 (AN2)
011 = Channel 3 (AN3)
100 = Channel 4 (AN4)
101 = Channel 5 (AN5)
110 = Channel 6 (AN6)
111 = Channel 7 (AN7)
Regiştrii ADRESH;ADRESL conţin cei 10 biţi ai rezultatului conversiei A/D. Când
conversia este completă , rezultatul este plasat în cei doi regiştrii , bitul GO/DONE
(ADCON0.2) este resetat şi bitul indicator al întreruperii ADIF este setat.
Capitolul 5 - 9
Setăm bitul PEIE
Setăm Bitul GIE
2. Aşteptăm timpul necesar pentru achiziţie
3. Pornim conversia
setăm bitul GO/DONE (ADCON0)
Aşteptăm până când conversia este completă
testăm bitul GO/DONE dacă a fost resetat sau
Aşteptăm întreruperea A/D
4. Citim rezultatul conversiei A/D care se află în regiştrii pereche
(ADRESH;ADRESL) , resetăm bitul ADIF dacă este necesar(lucrul cu întreruperi)
5. Pentru conversia următoare se trece din nou la pasul 1 sau dacă este necesar la
pasul 25.3 Proiectarea orientarii panourilor pentru maximizarea puterii
Programarea microcontrollerului.
Pentru programarea microcontrollerului am folosit un programator PICKit2 produs de
firma Microchip. Acesta se conectează pe portul USB al calculatorului, iar pentru
microcontroller are un conector ICSP.
PIN3 GND
Capitolul 5 - 10
Figura 5.7 - Programator PICKit2
J5
ICSP
1
2
3
4
5
+5
U4
1 28
MCLR/VPP/THV RB7/PGD
2 27
RA0/AN0 RB6/PGC
3 26
RA1/AN1 RB5
4 25
RA2/AN2/VREF- RB4
5 24
RA3/AN3/VREF+ RB3/PGM
6 23
RA4/T0CKI RB2
7 22
RA5/SS/AN4 RB1
8 21
GND RB0/INT
9 20
OSC1/CLKIN VDD
10 19
OSC2/CLKOUT GND
11 18
RC0/T1OSO/T1CKI RC7/RX/DT
12 17
RC1/T1OSI/CCP2 RC6/TX/CK
13 16
RC2/CCP1 RC5/SDO
14 15
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
Capitolul 5 - 11
5.5. Driverul de comanda al motorului pas cu pas
U4 U2 J2 J3
+5
1 28 1 18 1 1
MCLR/VPP/THV RB7/PGD 2 IN1 OUT1 17 2 2
2 27 3 IN2 OUT2 16 3 3
RA0/AN0 RB6/PGC 4 IN3 OUT3 15 4 4
3 26 5 IN4 OUT4 14
RA1/AN1 RB5 6 IN5 OUT5 13
4 25 7 IN6 OUT6 12 Motor - Motor +
RA2/AN2/VREF- RB4 8 IN7 OUT7 11
5 24 IN8 OUT8
RA3/AN3/VREF+ RB3/PGM 10
6 23 COM
RA4/T0CKI RB2
7 22 ULN2803
RA5/SS/AN4 RB1
8 21
GND RB0/INT +5
9 20
OSC1/CLKIN VDD
10 19
OSC2/CLKOUT GND
11 18
RC0/T1OSO/T1CKI RC7/RX/DT
12 17
RC1/T1OSI/CCP2 RC6/TX/CK
13 16
RC2/CCP1 RC5/SDO
14 15
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
Capitolul 5 - 12
Figura 5.8. Diagrama interna a ULN2803 (pentru un canal)
2200uF/10V 100N +5
1 1 3 J5
2 IN OUT
GND
C5 + +5 ICSP
J1 C3 C4
2
1
2
3
4
5
0 R6
1k
SW4
0
0 0 0 0
Reset +5
U4 U2 J2 J3
0 +5
1 28 1 18 1 1
MCLR/VPP/THV RB7/PGD 2 IN1 OUT1 17 2 2
2 27 3 IN2 OUT2 16 3 3
v1 RA0/AN0 RB6/PGC IN3 OUT3
4 15 4 4
+5 3 26 5 IN4 OUT4 14
v2 RA1/AN1 RB5 IN5 OUT5
6 13
4 25 7 IN6 OUT6 12 Motor - Motor +
v3 RA2/AN2/VREF- RB4 IN7 OUT7
PR1 PR2 PR3 PR4 8 11
R R R R 5 24 IN8 OUT8
v4 RA3/AN3/VREF+ RB3/PGM 10
6 23 COM
v1 v2 v3 v4 RA4/T0CKI RB2
7 22 ULN2803
R1 R2 R3 R4 RA5/SS/AN4 RB1
1k 1k 1k 1k 8 21
GND RB0/INT +5
0 9 20
OSC1/CLKIN VDD
0 10 19
OSC2/CLKOUT GND
C1 C2 11 18
RC0/T1OSO/T1CKI RC7/RX/DT
22p20MHz 22p
12 17
0 0 RC1/T1OSI/CCP2 RC6/TX/CK
13 16
RC2/CCP1 RC5/SDO
14 15
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
Capitolul 5 - 13
5.6. Proiectarea software
Capitolul 5 - 14
La alimentarea montajului, microcontrollerul isi configureaza PORT-ul A ca port de
conversie analog-digital, iar PORT-ul B ca port de iesire digital. Intr-o bucla infinita
microcontrollerul achizitioneaza valorile tensiunilor provenite de la blocul senzori de lumina
si le transforma din valori analogice in valori digitale.
La pasul urmator incepe sa compare cele 4 valori primite cu o valoare de referinta
setata software, valoare considerate pentru o iluminare optima. In cazul in care diferentele
dintre valorile senzorilor din capete fata de valoarea de referinta sunt mici (sub 40% di
valoarea de referinta) se comanda rotirea motorului in sensul dorit cu un pas. Daca
diferentele sunt mai mari de 40% se comanda rotirea motorului in sensul dorit cu doi pasi.
Astfel am incercat ca in cazul in care panoul este pozitionat in apropierea punctului optim de
functionare, orientarea sa se faca cu un pas mai mic, iar daca pozitia panoului fata de pozitia
optima este foarte departata sa se realizeze o orientare mai rapida.
Capitolul 5 - 15
Figura 5.13. Rotire motor in sensul acelor de ceasornic (V1<V2)
Capitolul 5 - 16
Figura 5.15. Forma semnalelor de comanda la iesirea din microcontroller (amplitudine
semnal 5V)
Figura 5.15. Forma semnalelor de comanda la pinii motorului pas cu pas (amplitudine semnal
12V)
Capitolul 5 - 17
5.8. Realizare cablajului imprimat
100N U3 7805/TO220
V Alimentare
GND
C5 + +5 ICSP
J1 C3 C4
1
2
3
4
5
0 R6
1k
SW4
0
0 0 0 0
Reset +5
U4 U2 J2 J3
0 VCC
1 28 1 18 1 1
MCLR/VPP/THV RB7/PGD 2 IN1 OUT1 17 2 2
2 27 3 IN2 OUT2 16 3 3
v1 RA0/AN0 RB6/PGC IN3 OUT3
4 15 4 4
+5 3 26 5 IN4 OUT4 14
v2 RA1/AN1 RB5 IN5 OUT5
6 13
4 25 7 IN6 OUT6 12 Motor - Motor +
v3 RA2/AN2/VREF- RB4 IN7 OUT7
PR1 PR2 PR3 PR4 8 11
R R R R 5 24 IN8 OUT8
v4 RA3/AN3/VREF+ RB3/PGM 10
6 23 COM
v1 v2 v3 v4 RA4/T0CKI RB2
7 22 ULN2803
R1 R2 R3 R4 RA5/SS/AN4 RB1
1k 1k 1k 1k 8 21
GND RB0/INT +5
0 9 20
OSC1/CLKIN VDD
0 10 19
OSC2/CLKOUT GND
C1 C2 11 18 C4
RC0/T1OSO/T1CKI RC7/RX/DT
22p20MHz 22p
12 17 C3
0 0 RC1/T1OSI/CCP2 RC6/TX/CK
13 16 C2
RC2/CCP1 RC5/SDO
14 15 C1
RC3/SCK/SCL RC4/SDI/SDA
PIC16F876
2
D3 D4 D2 D5
1N4001 1N4001 1N4001 1N4001
1
1
C1 Q3 C2 Q4 C3 Q2 C4 Q5
R7 330 BC107 R8 330 BC107 R5 330 BC107 R9 330 BC107
0 0 0 0
J6
Motor 1 1
Motor 2 2
Motor 3 3
Motor 4 4
CON4
Capitolul 5 - 18
Figura 5.16. Cablaj general
Capitolul 5 - 19
Figura 5.17. Cablaj circuit imprimat (fata BOTTOM)
Capitolul 5 - 20
Figura 5.18. Cablaj amplasare componente
Capitolul 5 - 21
Figura 5.19. Montajul realizat practic
Capitolul 5 - 22