Sunteți pe pagina 1din 9

Universitatea Dunrea de Jos Galai

Facultatea de Automatic,
Calculatoare, Inginerie Electric si Electronic
Specializarea Electronic Aplicat

Proiect Circuite Complexe

Profesor Coordonator:
FRANGU Laurentiu

Studenti:
SORCARU Dragos
ROPOTAN Daniel
an IV EA

Anul universitar
2012-2013

Inclinometru electronic

Tema acestui proiect este masurarea inclinatiei utilizand un accelerometrul si afisarea


acesteia pe 8 leduri cu ajutorul unui microcontroller.
Accelerometrul ales este ADXL 202 acest tip de accelerometru furnizeaz att semnal
analogic (variaie analogic a tensiunii de ieire cu variaia acceleraiei) ct i semnal digital
ciclu de lucru modulat care ofer o mai bun acuratee a semnalului.
ADXL202 este realizat de firma Analog Devices n tehnologie MEMS i este
disponibil sub forma unui circuit integrat cu 8 pini. Principalele performane tehnice ale
acestui senzor sunt:
- Dimensiuni: 5 mm x 5 mm x 2mm;
- Plaja de msurare: 2g;
- Rezoluie: 2 mg pentru frecvena de 60 Hz;
- Consum de curent: sub 0.6mA
- Tensiune de alimentare: 3 V - 5,25 V;
- ocuri maxime suportate: 1000 g.
Pentru masurarea inclinatiei, acelerometrul foloseste forta gravitationala pentru a
determina pozitia unui obiect in spatiu. Sensibilitatea este crescuta atunci cand integratul este
paralel cu suprafata pamantului.

Microcontrolerul necesar pentru realizarea afisarii inclinatiei pe cele 8 leduri trebuie sa


aiba: cel putin o intrare analogica atasata la un convertor analogic-digital, 8 iesiri numerice, 2
pini de programare si pin de reset.
Microcontrolerul ales este PIC16F917 acesta acopera cerintele necesare, functionand
cu oscilatorul intern de maxim 8MHz, dar si cu oscilator extern de maxim 32MHz, pentru
realizarea afisarii este suficient ocilatorul intrern astfel il vom folosi pe acesta.
Pentru realizarea inclinometrului se mai foloseste:
-un filtru trece-jos pozitionat intre iesirea analogica a accelerometrului si intrarea analogica a
microcontrolerului pentru pentru a facilita trecerea semnalelor de joasa frecventa si si
atenuarea (reducerea amplitudinii) semnalelor care au o frecventa mai mare decat frecventa de
taiere.
-un buton de reset de tip R-C-tasta.
-8 leduri rosii cu o cadere de tensiune de 2V si curentul maxim de 15mA.
-8 rezistente pentru a limita curentul ce trece prin leduri.
R= == 0.2k = 200 astfel am ales rezistente de 200 .

Schema circuitului:

Lista de componente:
Item
1
2
3
4
5
6
7
8

Cantitate
1
1
1
1
1
2
8
8

Referinta
U1
U2
U3
C1
C2
R9,R10
R1-R8
D1-D8

Organigrama programului:

Valoare
PIC16F917
ADXL202
BUTON
1nf
2.2uf
10k
200
LED-RED

Setam oscilatorul intern la 8 MHz ,RA0 intrare analogica, convertorul A/D foloseste
ca intrare pinul RA0 modul A/D pornit, ceasul modulului A/D Fosc/16, port RA0 intrare axa
Y accelerometru, port B iesiri LED-uri, port B initiat cu valoarea 0, Delay_ms(5);
Citim valoarea de pe RA0
daca yval>=0.75 Aprinde primul led
altfel daca yval>=0.5 Aprinde ledul 2
altfel daca yval>=0.25 Aprinde ledul 3
altfel daca yval>=0.0 Aprinde ledul 4
altfel daca yval>=-0.25 Aprinde ledul 5
altfel daca yval>=-0.5 Aprinde ledul 6
altfel daca yval>=-0.75 Aprinde ledul 7
altfel aprinde ledul 8

Programul in asamblare:

double Yval, centru=2.3;


void main() {
OSCCON=0b01110000;
ANSEL=0b00000001;
ADCON0=0b00000001;
ADCON1=0b01010000;
TRISA=0b00000001;
TRISB=0b00000000;
PORTB=0b00000000;
Delay_ms(5);
while(1) {
Yval = ADC_read(0);
Yval= (Yval * 5 / 1024 - centru) / 0.6 ;
if
(Yval >= 0.75) PORTB=0b10000000;
else if (Yval >= 0.5) PORTB=0b01000000;
else if (Yval >= 0.25) PORTB=0b00100000;
else if (Yval >= 0.0) PORTB=0b00010000;
else if (Yval >= -0.25) PORTB=0b00001000;
else if (Yval >= -0.5) PORTB=0b00000100;
else if (Yval >= -0.75) PORTB=0b00000010;
else
PORTB=0b00000001;
}
}

Descrierea programului:
- 2.3V cand axa Y e la 0 grade
- oscilator intern este setat la 8 MHz
- RA0 folosita ca intrare analogica
- convertorul A/D foloseste ca intrare pinul RA0, modul A/D pornit
- ceasul modulului A/D Fosc/16
- port RA0 intrare axa Y accelerometru
- port B iesiri LED-uri
- port B initiat cu valoarea 0
- accel. are nevoie de aprox 1.5 ms timp de pornire
-citim valoarea de pe RA0
- ecuatie: transformam intervalul 0-1024 in 0-5V (cu rezolutiede ~5mV), scadem valoarea
tensiunii la 0g(~2.3V) apoi impartim la valoarea sensitivitatii accelerometrului (ADXL202
600mV/g deci 0.6) pentru a da un interval intre -1 si 1
- Ex: 90 grade spre dreapta (2.9 - 2.3)/0.6 = 1 (90 grade stanga= -1 la 0 si 90 grade dreapta= 0
la 1)
- if-uri: impartim intervalul de la -1 la 1 in 8 intervale egale si pentru fiecare interval aprindem
un LED diferit

Cablaj

Schema circuitului pentru cablaj:

Desen de asamblare:

Desen de gaurire:

Bottom:

Montaj 3D:

Montaj fizic breadboard:

Bibliografie:
Microchip PIC16F917 DataSheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/41250E.pdf
ADXL210 DataSheet:
http://resenv.media.mit.edu/classes/MAS836/Inertialnotes/ADXL202_10_b.pdf

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