Sunteți pe pagina 1din 20

Universitatea Politehnica Bucureti

Facultatea Transporturi
Catedra Telecomenzi i Electronic n Transporturi

PROIECT MICROCONTROLERE

Tem proiect: Msurarea tensiunii electrice

Student: Beir Levent

ndrumtor:Prof.Dr. Ing. Angel Ciprian Cormo

Grupa: 8315

AN UNIVERSITAR
2015-2016

Cuprins
Prezentare comercial
Scurt Istoric...
Schema bloc a circuitelor......
Schema electric..
Descrierea funcionrii..
Organigrama Software
Softul..
Cablaj imprimat...
Cost de producie..
Bibliografie.

-2-

3
4
5
7
11
12
13
17
19
20

Prezentare comercial

Voltmetrul digital, unul din cele mai necesare aparate de msur n electronica modern. Eficiena
aparatelor digitale dar i precizia este cu mult peste cele ale aparatelor analogice.
De ce sa alegei acest voltmetru digital?

Ofer o precizie ridicat n msurare


Este mult mai uor de folosit dect cele analogice
Nu necesit multe componente externe
Prezint o bun portabilitate
Componentele folosite sunt modulare, putnd fi nlocuite n orice moment

Este perfect pentru aplicaii de test n laboratoare colare dar i n cele de specialitate atunci cnd este
necesar un aparat simplu din punct de vedere al construciei i utilizrii.

-3-

Scurt Istoric
Voltmetrul este un aparat electric de msur folosit pentru msurarea tensiunilor n circuitele electrice.
O alt definitie valabil spune c, voltmetrul este un aparat de msur care
msoar diferena de potenial electric dintre dou puncte. Voltmetrele clasice
sunt compuse din dispozitive de msur propriu-zise, alturi de care pentru
extinderea domeniului de msur sau/i divizarea n game de msur sunt
incluse n construcie rezistene adiionale i divizoare de tensiune.

Primul voltmetru, numit galvanometru, a fost inventat de Johann Schweiggerin in anul


1820. Galvanometrul este un instrument de msur utilizat pentru punerea n eviden a
unor cureni electrici de slab intensitate. Este gradat n uniti de intensitate, de tensiune sau
de sarcin electric. Primele galvanometre nu erau foarte precise sau rezistente.

In anul 1954 Andrew Kay a inventat primul voltmetru digital. Voltmetrul digital afiseaza tensiunea
electrica pe un display folosind un convertor Analogic-Digital care converteste un semnal de intrare
in valori numerice.

-4-

Schema bloc a circuitelor


Modulul de recepie

Modulul de emisie

Masurare

Afisare:

Tensiune

Tensiunea este
de

Codare

Microcontroler

Microcontroler

ATmega32

ATmega32

Alimentare

Codare

Alimentare

Transmisie de date pentru afisare

Raspuns primire date

-5-

Descrierea Blocurilor

Alimentare: blocul de alimentare realizeaz conectarea circuitului respectiv la sursa extern


de tensiune.

Msurare tensiune: acest bloc folosete un divizor de tensiune pentru a aduce


tensiunea msurat analogic la maxim +5V i transmiterea acesteia ctre modulul
ADC al microcontrolerului.

Microcontroler ATmega32: este un microcontroler RISC pe 8 bii, cu 32 de porturi de


I/O, realizat de firma Atmel. Acesta conine un convertor analog-digital, modul Usart
pentru comunicaie serial, comparator analogic i dispune de un oscilator intern.

Codare: codarea blocurilor se face n limbaj de asamblare pentru modulul de emisie i


n limbaj C pentru modulul de recepie.

Afiare: pentru afiaz s-a folosit un LCD 2X16, o component uor de procurat i
programat avnd opiunea de introducere chiar i a caracterelor personalizate.

-6-

Schema electric a circuitului


Schema electric a modulului de emisie

Componentele folosite:

U1
U2
C1/C2
R1/R2/R3
1XPush-Button

Microcontroler ATMega32 pe 8 biti


Stabilizator de tensiune pentru alimentarea microcontrolerului
Condensatoare de 470nF/100nF
Rezistoare de 10k/30k/10k

-7-

Circuitul Reset este realizat dintr-un Pushbuton,


o rezistenta de 10k si un condensator C3 de 100nF.
Rezistenta confera condensatorului timp sa se incarce
iar condensatorul e folosit pentru stabilizarea
circuitului, la specificatiile producatorului.

Circuitul Divizorului de tensiune modifica tensiunea maxima care intra


prin pinul ADC6 in microcontroler sa ajunga la maxim +5V, asta
datorita specificatior microcontrolerului ATmega32 .

Circuitul de alimentare folosete tensiunea de la portul USB


asigurnd un voltaj de 5V.
Condensatoarele C2 este folosit pentru filtrarea curentului
ce intr prin stabilizatorul de tensiune.

-8-

Schema electric a modulului de recepie

Componentele folosite:
U1
U2
C1/C2
R3
1XPush-Button
LCD1
RV1

Microcontroler ATMega32 pe 8 bii


Stabilizator de tensiune pentru alimentarea microcontrolerului
Condensatoare de 100nF/100nF
Rezistoar de 10k
LCD_2X16
Poteniometru pentru reglarea contrastului

-9-

Circuitul Reset este realizat dintr-un Pushbuton,


o rezistenta de 10k si un condensator de 100nF.
Rezistenta confera condensatorului timp sa se incarce iar condensatorul e
folosit pentru stabilizarea circuitului, la specificatiile producatorului.

Circuitul de afisare LCD e format dintr-un display 2x16.


Potentiometrul RV1 este conectat pentru a regla contrastul
displayului pentru o mai buna claritate .

Circuitul de alimentare foloseste tensiunea de la stabilizatorul de tensiune


asigurand o tensiune de 5V. Condensatorul folosete la filtrarea
curentului ce intra prin stabilizator.

- 10 -

Descrierea Funcionrii
Pentru a msura tensiuni de la 0 la 20 de Voli vom folosi un divizor de tensiune format din dou
rezistene R1=30k si R2=10k, astfel tensiunea maxim care trece n pinul ADC6 al microcontrolerului
ATmega32 va fi de 5V, asta n cazul in care se aplica tensiunea maxima de 20V.
Formula divizorului de tensiune:

Microcontroletrul ATmega32 are 8 canale (pini) multiplexate pentru a realiza Conversii AnalogDigitale n acelai timp, n acest caz vom folosi pinul ADC06. Modulul ADC al microcontrolerului
convertete semnalul n numar binar de 10 biti, dar noi vom alinia rezultatul la stnga astfel reducnd
rezoluia la 8 bii.
Tensiunea de intrare se calculeaz cu rezultatul conversiei i pasul Modului ADC folosind urmtoarea
formula:

C-rezultatul conversiei
1LSB-pasul modulului de conversie

- tensiunea de referin, aleas pe pinul

al microcontrolerului

Rezultatul obinut este convertit n cod ASCII iar apoi este transmis pentru afiare ctre modulul de
recepie.

- 11 -

Organigrama Software

- 12 -

Software
Modulul de emisie
.include"m32def.inc"
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp reset
jmp USART_RXC
jmp reset
jmp reset
jmp Conversie
jmp reset
jmp reset
jmp reset
jmp reset
Reset:
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
main:
cli
ldi r16, 0b10111000
out UCSRB, r16
ldi r16, 0b10000110
out UCSRC , r16
ldi r16, 0x00
out UBRRH, r16
ldi r16, 0x33
asincron normal
out UBRRL, r16
ldi r16, 0x16
out ADMUX, r16
ldi r16, 0b10001110
nu este automat
out ADCSRA, r16
sei
sbi ADCSRA, ADSC
bucla:
rjmp bucla

; Intrerupere de confirmare a transmisiei

; ADC Conversion Complete Handler

; initializare
; pointer
; de
; stiva
; dezactiveaza intreruperi
;activ. intrp. La emis. si rec. si reg. emisie gol, activ. Unit. Rec. si tran.
; un bit de stop,m.asincron normal
; incarcam MSB in UBRRH
; si
; LSB in UBRRL => viteza de com. De 9600b/s, frecv 8MHz,

; folosim Aref. (5V), alin. Stanga, selectare canal ADC06


; pornim ADC, nu incepe conversia, fosc/64, setare intrerupere, modul

; activare intreruperi
; datorita sbi ADSC ia valoare 1=> incepe conversia

Conversie:
in r20, SREG
- 13 -

in r17,ADCH
Stanga)
ldi r16,20
mul r17,r16
movw r16, r0
out UDR, r16
out SREG, r20
reti
USART_RXC:
in r20,SREG
in r16, UDR
cpi r16,0x88
brne Conversie
out SREG, r20
reti

; se citeste rezultatul conversiei, pastrand precizie de 8 biti (alin.

;inmultesc rezultatul conversiei cu 20(mV)


; transmit conversia

; citesc daca s-a rezultatul conversiei a fost transmis


;0x88 <> confirmare de receptie

- 14 -

Modulul de recepie
#define F_CPU 8000000
#define USART_BAUDRATE 9600 //
#define BAUD_PRESCALE (((F_CPU
#include<avr/io.h>
#include<util/delay.h>
#define LCD_DATA PORTA
#define ctrl PORTD
#define en PD3
//
#define rs PD2
//
void
void
void
void

rata de transfer
/ (USART_BAUDRATE * 16UL))) - 1)

//portul de date al LCD


activeaza semnalul
rs= pd2

LCD_cmd(unsigned char cmd);


init_LCD(void);
LCD_write(unsigned char data);
LCD_clear();

void usart_init();
void usart_putch(unsigned char send);
unsigned int usart_getch();
int main()
{
unsigned char value;
DDRD=0xff;
// portul D e setat ca port de iesire
init_LCD();
_delay_ms(50);
// intarziere 50ms
usart_init();
// initializare USART
while(1)
{
value=usart_getch(); // functie pentru a primi date din usart
LCD_cmd(0x40);
// a doua linie, la inceput a LCD
LCD_write(value);
// scrie
}
return 0;
}
void init_LCD(void)
{
LCD_cmd(0x38);
_delay_ms(1);

// initializare LCD 16x2

LCD_cmd(0x01);
_delay_ms(1);

// clear LCD

LCD_cmd(0x0E);
_delay_ms(1);

// cursor ON

LCD_cmd(0x80);
_delay_ms(1);
return;

// Prima linie la inceput

}
void LCD_cmd(unsigned char cmd)
{
LCD_DATA=cmd;
ctrl =(0<<rs)|(1<<en);
_delay_ms(1);
ctrl =(0<<rs)|(0<<en);
_delay_ms(50);
return;

- 15 -

}
void LCD_write(unsigned char data)
{
LCD_DATA= data;
ctrl = (1<<rs)|(1<<en);
_delay_ms(1);
ctrl = (1<<rs)|(0<<en);
_delay_ms(50);
return ;
}
void usart_init()
{
UCSRB |= (1 << RXEN) | (1 << TXEN);
// activeaza circuiteul de transmitere si
receptie
UCSRC |= (1 << URSEL) | (0<<USBS) | (1 << UCSZ0) | (1 << UCSZ1);
// foloseste caractere de 8 biti
UBRRL = BAUD_PRESCALE;
// incarca bitul inferior rata de transfer
UBRRH = (BAUD_PRESCALE >> 8); // incarca bitul superior
}
unsigned int usart_getch()
{
while ((UCSRA & (1 << RXC)) == 0);
// nu face nimic pana cand nu s-au primit date la UDR si sunt gata de afisat
return(UDR=0x88); // returnteaz bit de confirmare}

- 16 -

Cablajul imprimat
PCB modul de emisie

- 17 -

PCB modul de recepie

- 18 -

Costul de producie
Microcontroler ATmega32

2x40 RON

Afior LCD 16x2

1x22 RON

Poteniometru 10k

1x7 RON

Condensator 100nF

4x0,5 RON

Rezistor 10k

3x0,2 RON

Rezistor 30k

1x0,22 RON

Push button

2x0,2 RON

Stabilizator de tensiune

2x20 RON

Total:152,22 RON

- 19 -

Bibliografie

www.Tet.pub.ro
http://www.atmel.com/webdoc
http://microcontrollerslab.com/
http://www.avrfreaks.net/sites/default/files/voltmeter1.txt

- 20 -