11
Universitatea “Dunărea de Jos” Galaţi Facultatea de Automatică, Calculatoare, Inginerie Electrică si Electronică Specializarea Electronică Aplicată Proiect Circuite Complexe Profesor Coordonator: Studenti: FRANGU Laurentiu SORCARU Dragos

Proiect Circuite Complexe Final

Embed Size (px)

DESCRIPTION

proiect

Citation preview

Page 1: Proiect Circuite Complexe Final

Universitatea “Dunărea de Jos” GalaţiFacultatea de Automatică,

Calculatoare, Inginerie Electrică si ElectronicăSpecializarea Electronică Aplicată

Proiect Circuite Complexe

Profesor Coordonator: Studenti:

FRANGU Laurentiu SORCARU Dragos

ROPOTAN Daniel

an IV EA

Anul universitar2012-2013

Page 2: Proiect Circuite Complexe Final

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ă atât semnal analogic (variaţie analogică a tensiunii de ieşire cu variaţia acceleraţiei) cât şi semnal digital – ciclu de lucru modulat – care oferă o mai bună acurateţe a semnalului.

ADXL202 este realizat de firma Analog Devices în tehnologie MEMS şi este disponibil sub forma unui circuit integrat cu 8 pini. Principalele performanţe tehnice ale acestui senzor sunt:

- Dimensiuni: 5 mm x 5 mm x 2mm;- Plaja de măsurare: ± 2g;- Rezoluţie: 2 mg pentru frecvenţa 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.

Page 3: Proiect Circuite Complexe Final

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 Cantitate Referinta Valoare 1 1 U1 PIC16F9172 1 U2 ADXL2023 1 U3 BUTON4 1 C1 1nf5 1 C2 2.2uf6 2 R9,R10 10k7 8 R1-R8 200Ω8 8 D1-D8 LED-RED

Organigrama programului:

Page 4: Proiect Circuite Complexe Final

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 RA0daca yval>=0.75 Aprinde primul ledaltfel daca yval>=0.5 Aprinde ledul 2altfel daca yval>=0.25 Aprinde ledul 3altfel daca yval>=0.0 Aprinde ledul 4altfel daca yval>=-0.25 Aprinde ledul 5altfel daca yval>=-0.5 Aprinde ledul 6altfel daca yval>=-0.75 Aprinde ledul 7altfel aprinde ledul 8

Programul in asamblare:

Page 5: Proiect Circuite Complexe Final

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

Page 6: Proiect Circuite Complexe Final

Schema circuitului pentru cablaj:

Desen de asamblare:

Desen de gaurire:

Page 7: Proiect Circuite Complexe Final

Bottom:

Page 8: Proiect Circuite Complexe Final

Montaj 3D:

Montaj fizic breadboard:

Page 9: Proiect Circuite Complexe Final

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