Documente Academic
Documente Profesional
Documente Cultură
Facultatea Transporturi
Catedra Telecomenzi i Electronic n Transporturi
PROIECT MICROCONTROLERE
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?
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.
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-
Modulul de emisie
Masurare
Afisare:
Tensiune
Tensiunea este
de
Codare
Microcontroler
Microcontroler
ATmega32
ATmega32
Alimentare
Codare
Alimentare
-5-
Descrierea Blocurilor
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-
Componentele folosite:
U1
U2
C1/C2
R1/R2/R3
1XPush-Button
-7-
-8-
Componentele folosite:
U1
U2
C1/C2
R3
1XPush-Button
LCD1
RV1
-9-
- 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
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
; 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,
; 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
- 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)
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);
LCD_cmd(0x01);
_delay_ms(1);
// clear LCD
LCD_cmd(0x0E);
_delay_ms(1);
// cursor ON
LCD_cmd(0x80);
_delay_ms(1);
return;
}
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 -
- 18 -
Costul de producie
Microcontroler ATmega32
2x40 RON
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 -