Universitatea Politehnica București Facultatea Transporturi Catedra Telecomenzi și Electronică î n Transporturi
PROI ECT M I CROCONTR OCONTROLE OLE RE
Temă proiect : Măsurarea tensiunii electrice
Student: Beșir Levent
Îndrumător:Prof.Dr. Ing. Angel Ciprian Cormoș
Grupa: 8315
AN UNIVERSITAR 2015-2016
Cuprins
Prezentare comercială………………… …………………………… Scurt Istoric……………………………………………………… Istoric…………………………………………………………… ……... ... Schema bloc a circuitelor …………………………………………...... …………………………………………...... Schema electrică…………………………………………… electrică……………………………………………………….. ………….. Descrierea Descrierea funcționării……………………………… funcționării……………………………………………….. ……………….. Organigrama Software………………………………………… Software………………………………………………… ……… Softul…………………………….. Softul…………………………… ..……………………………………… ……………………………………… Cablaj imprimat ………………………………………………………... ………………………………………………………... Cost de producție……………………………… de producție……………………………………………………… ……………………….. .. Bibliografie……………………………………………………………… Bibliografie………………………………………………………………..
-2-
3 4 5 7 11 12 13 17 19 20
Prezentare comercială
Voltmetrul digital, unul din cele mai necesare aparate de m ăsur ă în electronica modern ă. Eficiența aparatelor digitale dar și precizia este cu mult peste cele ale aparatelor analogice. De ce sa alege ți acest voltmetru digital?
Ofer ă o precizie ridicat ă în măsurare
Este mult mai u șor de folosit decât cele analogice
Nu necesită multe componente externe
Prezintă o bună portabilitate
Componentele folosite sunt modulare, putând fi înlocuite în orice moment
Este perfect pentru aplica ții de test în laboratoare școlare dar și în cele de specialitate atunci când este necesar un aparat simplu din punct de vedere al construc ției și utilizării.
-3-
Scurt I stor ic Voltmetrul este un aparat
electric de măsură folosit pentru măsurarea tensiunilor în circuitele electrice. O altă definitie valabilă spune că, voltmetrul este un aparat de măsură care măsoară diferența de potențial electric dintre două puncte. Voltmetrele clasice sunt compuse din dispozitive de măsură propriu-zise, alături de care pentru extinderea domeniului de măsură sau/și divizarea în game de măsură sunt incluse în construcție rezistențe adiționale și divizoare de tensiune.
Primul voltmetru, numit galvanometru, a fost inventat de Johann Schweiggerin in anul 1820. Galvanometrul este un instrument de măsură utilizat pentru punerea în evidență a unor curenți electrici de slabă intensitate. Este gradat în unități 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 cir cui tel or Modulul de recepție
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 circuit ului de tensiune.
respectiv la sursa externă
Măsurare tensiune: acest bloc foloseș te un divizor de tensiune pentru a aduce tensiunea măsurată analogică la maxim +5V și transmiterea acesteia către modulul ADC al microcontrolerului.
Microcontroler ATmega32: este un microcontroler RISC pe 8 biț i, cu 32 de porturi de I/O, realizat de firma Atmel. Acesta conți ne un convertor analog-digital, modul Usart pentru comunicație serială, comparator analogic și dispune de un oscilator intern.
Codare: codarea blocurilor se face în limbaj de asamblare pentru modulul în limbaj C pentru modulul de recepție.
de emisie și
Afișare: pentru afișaz s-a f olosit un LCD 2X16, o componentă ușor de procurat și programat având opțiunea de introducere chiar și a caracterelor personalizate.
-6-
Schema electrică a circuitului Schema electrică a modulului de emisie
Componentele folosite:
U1
Microcontroler ATMega32 pe 8 biti
U2
Stabilizator de tensiune pentru alimentarea microcontrolerului
C1/C2
Condensatoare de 470nF/100nF
R1/R2/R3
Rezistoare de 10k/30k/10k
1XPush-Button
-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 folosește tensiunea de la portul USB asigurând un voltaj de 5V. Condensatoarele C2 este folosit pentru filtrarea curentului
ce intră prin stabilizatorul de tensiune.
-8-
Schema electrică a modulului de recepție
Componentele folosite:
Microcontroler ATMega32 pe 8 biți
U1 U2
C1/C2
Condensatoare de 100nF/100nF
R3
Rezistoar de 10k
1XPush-Button
LCD1 RV1
Stabilizator de tensiune pentru alimentarea microcontrolerului
LCD_2X16 Potențiometru 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 folosește la filtrarea curentului ce intra prin stabilizator.
- 10 -
Descrierea Funcționării Pentru a măsur a tensiuni de la 0 la 20 de Volți vom folosi un divizor de tensiune format din două rezistențe 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 același timp, în acest caz vom folosi pinul ADC06. Modulul ADC al microcontrolerului convertește semnalul în numar binar de 10 biti, dar noi vom alinia rezultatul la stânga astfel reducând rezoluția la 8 biți.
Tensiunea de intrare se calculează cu rezultatul conversiei și pasul Modului ADC folosind următoarea formula:
C-rezultatul conversiei 1LSB-pasul modulului de conversie
- tensiunea de referință, aleasă pe pinul al microcontrolerului
Rezultatul obținut este convertit în cod ASCII iar apoi este transmis pentru afișare către modulul de recepție.
- 11 -
Organi grama Software
- 12 -
Software M odul ul de emi si e .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 -
M odul ul de r ecep ț i e #define F_CPU 8000000 #define USART_BAUDRATE 9600 // rata de transfer #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) #include
#include #define LCD_DATA PORTA //portul de date al LCD #define ctrl PORTD #define en PD3 // activeaza semnalul #define rs PD2 // rs= pd2 void void void void
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);
// cursor ON
_delay_ms(1);
LCD_cmd(0x80); _delay_ms(1); return;
// Prima linie la inceput
} void LCD_cmd(unsigned char cmd) { LCD_DATA=cmd; ctrl =(0<
} void LCD_write(unsigned char data) { LCD_DATA= data; ctrl = (1<> 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 -
Cablaju l impri mat PCB modul de emi sie
- 17 -
PCB modul de recepție
- 18 -
Costul de producție M icr ocontr oler AT mega32
2x40 RON
Afișor L CD 16x2
1x22 RON
Potențiometru 10kΩ
1x7 RON
Condensator 100nF
4x0,5 RON
Rezistor 10kΩ
3x0,2 RON
Rezistor 30kΩ
1x0,22 RON
Push button
2x0,2 RON
Stabi li zator de tensiu ne
2x20 RON
Total: 152,22 RON
- 19 -
Bibliografie
www.Tet.pub.ro
http://www.atmel.com/webdoc
http://microcontrollerslab.com/
http: //www.avr fr eaks.net/sites/defaul t/f iles/voltmeter 1.txt
- 20 -