proiect af

15
3 Coala Mod Nr Document Semnătura Data UTM 529.1.270.ME Introducere INTEL în anul 1971 a anunţat producerea primului microprocesor, acest eveniment se considera momentul trecerii de la electronica implementată cablat la electronica realizată programat. Primul microprocesor 4004 a fost conceput de M.E. Hoff ca un procesor puţin simplificat pentru a putea fi implementat, la vremea aceea, pe un singur chip în siliciu. Iniţial, microprocesorul nu a fost un computer -on-a-chip, deşi în timp a ajuns la acest stadiu; conceptul de microprocesor s-a dezvoltat şi spre alte implementări specifice: microcontroller, microcalculator, procesor de semnale (DSP). Oricare din aceste circuite, pentru a deveni parte a unui sistem, impune un proces de proiectare care se bazează în egală măsură atât pe componenta hardware cât şi pe componenta software. Microprocesorul, sau celelalte variante ale sale, integrat într -un system aduc acestuia acea performanţă, care atunci când este realizată de fiinţa umană este referită ca inteligenţă. În general, microprocesorul este integrat ca unitate central de procesare în sistemele digitale de calcul. Actual, aproape toate sistemele au o arhitectură de sistem digital particularizându-se în funcţie de aplicare/utilizare. Forţa care a impus sistemele pe bază de microcontroller constă în programabilitatea unei componente de serie. Pentru sistemele la care o component de serie, chiar programabilă în software, nu duce la rezultatele cele mai bune au apărut implementările pe bază de circuite ASIC (Application Specific Integrated Circuits). Spre deosebire de sistemele pe bază de microcontroller, unde funcţionarea dorită se obţine, în software, printr-un anumit program, la sistemele pe bază de circuite ASIC funcţionarea dorită se obţine prin structurarea hardwareului cu un anumit program. Alegerea între o implementare pe bază de microcontroller, o implementare pe bază de circuit ASIC sau una combinată depinde de aplicaţia respectivă şi de cerinţele impuse. Privind evoluţia istorică a operaţiei de comandă a unui proces putem contura imaginea unui microcontroller. Un controller este un sistem folosit pentru a comanda şi a prelua stări de la un proces sau un aspect al mediului înconjurător. La început un

Upload: ion-caimacan

Post on 24-Dec-2015

42 views

Category:

Documents


0 download

DESCRIPTION

Proiect AF

TRANSCRIPT

Page 1: Proiect AF

3

3

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

Introducere

INTEL în anul 1971 a anunţat producerea primului microprocesor, acest

eveniment se considera momentul trecerii de la electronica implementată cablat la

electronica realizată programat. Primul microprocesor 4004 a fost conceput de M.E.

Hoff ca un procesor puţin simplificat pentru a putea fi implementat, la vremea aceea,

pe un singur chip în siliciu. Iniţial, microprocesorul nu a fost un computer-on-a-chip,

deşi în timp a ajuns la acest stadiu; conceptul de microprocesor s-a dezvoltat şi spre

alte implementări specifice: microcontroller, microcalculator, procesor de semnale

(DSP). Oricare din aceste circuite, pentru a deveni parte a unui sistem, impune un

proces de proiectare care se bazează în egală măsură atât pe componenta hardware

cât şi pe componenta software.

Microprocesorul, sau celelalte variante ale sale, integrat într-un system aduc

acestuia acea performanţă, care atunci când este realizată de fiinţa umană este referită

ca inteligenţă. În general, microprocesorul este integrat ca unitate central de procesare

în sistemele digitale de calcul. Actual, aproape toate sistemele au o arhitectură de

sistem digital particularizându-se în funcţie de aplicare/utilizare.

Forţa care a impus sistemele pe bază de microcontroller constă în

programabilitatea unei componente de serie. Pentru sistemele la care o component de

serie, chiar programabilă în software, nu duce la rezultatele cele mai bune au apărut

implementările pe bază de circuite ASIC (Application Specific Integrated

Circuits). Spre deosebire de sistemele pe bază de microcontroller, unde funcţionarea

dorită se obţine, în software, printr-un anumit program, la sistemele pe bază de

circuite ASIC funcţionarea dorită se obţine prin structurarea hardwareului cu un

anumit program. Alegerea între o implementare pe bază de microcontroller, o

implementare pe bază de circuit ASIC sau una combinată depinde de aplicaţia

respectivă şi de cerinţele impuse.

Privind evoluţia istorică a operaţiei de comandă a unui proces putem contura

imaginea unui microcontroller. Un controller este un sistem folosit pentru a comanda

şi a prelua stări de la un proces sau un aspect al mediului înconjurător. La început un

Page 2: Proiect AF

4

4

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

controller era un echipament de mari dimensiuni. După apariţia microprocesoarelor

dimensiunile controller-elor s-au redus. Procesul de miniaturizare a continuat, toate

componentele necesare unui controller au fost integrate pe acelaşi chip. S-a născut

astfel calculatorul pe un singur chip specializat pentru implementarea operaţiilor de

control; acesta este microcontroller-ul. Un microcontroller este un circuit realizat pe

un singur chip care conţine tipic:

• unitatea centrală;

• generatorul de tact (la care trebuie adăugat din exterior un cristal de cuarţ

sau în aplicaţii mai puţin pretenţioase, un circuit RC);

• memoria volatilă (RAM);

• memoria nevolatilă (ROM/PROM/EPROM/EEPROM);

• dispozitive I/O seriale şi paralele;

• controller de întreruperi, controller DMA, numărătoare/temporizatoare

(timers), covertoare A/D şi D/A, etc.;

• periferice.

Preţul unui MC este redus din cauza cantităţilor mari în care se fabrică. Preţul

mic al MC aduce cu sine şi micşorarea preţului sistemelor de control (se micşorează

inclusiv costul proiectării). Diferenţele dintre microprocesor şi unitatea centrală a MC

se atenuează în timp. Astfel, marii constructori de procesoare au realizat nişte circuite

care s-ar putea numi super-microcontroller-e, aşa cum sunt Motorola 68EC300,

INTEL 386EX sau IBM PowerPC 403GB, care sunt microcalculatoare pe un singur

chip. Cu un MC se poate realiza un controller integrat (Embedded Controller, EC).

Un controller integrat face parte dintr-un sistem construit cu un anumit scop, altul

decât calcule generale. Pe lângă MC, un controller integrat are nevoie de hardware

suplimentar pentru a-şi îndeplini funcţia. Importanţa MC este dovedită incontestabil

de piaţa care este în continuă creştere.

Page 3: Proiect AF

5

5

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

Sarcina tehnica

Proiectul dat din punct de vedere a părtii sale electronice, va fi realizat în baza

microcontrolerului ATmega32, scopul principal fiind realizarea unui sistem de

monitorizare a traficului rutier. La realizarea proiectului voi utiliza mediul de

proiectare AVR-Studio pentru elaborarea si compilarea programului

microcontrolerului. Pentru simularea circuitului voi folosi pachetul de programe

pentru simulare Proteus şi schema electrica va fi realizată în Eagle.

1. Structura şi principiul de funcţionarea al microcontrolerului

1.1.Arhitectura MCU ATmega32

ATmega32 este un microcontroler CMOS de 8 biţi de mică putere bazat pe

arhitectura RISC AVR imbunătăţită.

Dispune de un set de 131 instrucţiuni şi 32 de registre de uz general. Cele 32 de

registre sunt direct adresabile de Unitatea Logica Aritmetica(ALU), permiţînd

accesarea a două registre independente într-o singură instrucţiune. Se obtine astfel o

eficienţă sporită în execuţie(de pînă la zece ori mai rapide decît microcontrorelerele

conveţionale CISC).

ATmega32 este un microcontroler RISC pe 8 biţi realizat de firma Atmel.

Caracteristicile principale ale acestuia sunt:

- 32KB de memorie Flash reinscriptibilă pentru stocarea programelor

- 2KB de memorie SRAM

- 1024B de memorie EEPROM

- două numărătoare/temporizatoare de 8 biţi

- un numărător/temporizator de 16 biţi

- conţine un convertor analog – digital de 10 biţi, cu intrări multiple

- conţine un comparator analogic

Page 4: Proiect AF

6

6

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

- conţine un modul USART pentru comunicaţie serială (port serial)

- dispune de un cronometru cu oscilator intern

- oferă 32 de linii I/O organizate în patru porturi (PA, PB, PC, PD).

Structura internă generală a controlerului este prezentată în Figura 1. Se poate

observa că există o magistrală generală de date la care sunt conectate mai multe

module:

- unitatea aritmetică şi logică (ALU)

- registrele generale

- memoria SRAM şi memoria EEPROM

- liniile de intrare (porturile – I/O Lines) şi celelalte blocuri de intrare/ieşire. Aceste

ultime module sunt controlate de un set special de registre, fiecare modul avînd

asociat un număr de registre specifice, Memoria Flash de program împreună cu

întreg blocul de extragere a instrucţiunilor, decodare şi execuţia comunică printr-o

magistrală proprie, separată de magistrala de date menţionată mai sus. Acest tip de

organizare este conform principiilor unei arhitecturi Harvad şi permite

controlerului să execute instrucţiunile foarte rapid.

Modul Power-down salvează conţinutul registrelor, dar blochează

Oscilatorul, dezactivînd toate celelalte functii ale chip-ului pînă la urmatoarea

Intrerupere Externa sau Reset hardware. In modul Power-save, timer-ul asincron

continuă să meargă, permiţînd user-ului să menţină o bază de timp în timp ce restul

dispozitivului este oprit.

În modul Standby, Oscilatorul funcţioneaza în timp ce restul despozitivului este

oprit. Acest lucru permite un start foarte rapid combinat cu un consum redus de

energie. În modul stanby extins(Extended Stanby Mode), atît Oscilatorul principal

cît şi timer-ul asincron continuă să funcţioneze.

Memoria flash (On-chip) permite să fie reprogaramată printr-o interfaţă serială

Page 5: Proiect AF

7

7

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

SPI, de către un programator de memorie nonvolatilă convenţional, sau de către un

program de boot On-chip ce rulează pe baza AVR. Programul de boot poate folosi

orice interfata să încarce programul aplicaţie în memoria Flash de aplicaţie.

ATmega32 AVR este susţinut de o serie completă de instrumente de program şi

de dezvoltare a sistemului, care include: compilatoare C, macroasambloare, programe

debug/ simulare etc.

1.2. Interfata seriala RS-485

Interfetele seriale sunt utilizate, in general, pentru a conecta circuite periferice la

microcontroller. Aceste interfete permit conectarea de dispozitive diverse, cum ar fi :

ceas de timp real, memorii nevolatile pentru stocarea unor parametrii, interfete cu

senzori. Standardul RS485 a fost conceput cu scopul de a extinde si imbunatati

posibilitatile de comunicatie pe o linie seriala. Dintre imbunatatirile avute in vedere se

pot aminti :

- cresterea distantei maxime de comunicatie ( aprox. 1 Km)

- cresterea imunitatii la zgomot

- posibilitatea realizarii unei comunicatii multipunct ( comunicatie in retea)

- utilizarea unui mediu ieftin de comunicatie

Transmiterea de date prin interfata RS485 consta intr-o transmisie seriala de

informatii la distante de pana la 1200m. Daca se respecta anumite specificatii tehnice

poate fi folosita si in medii industrial. Intr-o retea, numarul maxim de dispozitive care

se pot conecta la magistrala RS485este 32. Daca se folosesc repetoare, distanta si

numarul de dispozitive conectate la magistrala sunt nelimitate.

Acest protocol specifica urmatoarele :

- se utilizeaza un tronson de cablu bifilar torsadat, care are la cele doua

capeteterminatoare (rezistente) ; ambele linii se utilizeaza pentru transmisie, neexistind

fir demasa.

- codificarea datelor binare se face prin tensiuni diferentiale pozitive si

negativemasurate pe cele doua linii ale tronsonului ; tensiunea diferentiala

minimaconsiderata o data valida este de +/-200 mV.

- circuitele de emisie conectate pe acelasi tronson au iesiri de tip tri-state, pentru

a permite accesul multiplu, al mai multor echipamente, la acelasi tronson decomunicati

e ; accesul se face multiplexat in timp.

Comunicatiile digitale care implementeaza standardul RS-485 pot fi utilizate cu

succes pe distante lungi si in medii afectate de interferente. Pot fi conectati mai multi

receptori intr-o asemenea retea intr-o configuratie lineara. Acest standard ofera viteza

de transmisie a datelor de 35 Mbit/s pana la 10 m si 100 kbit/s pana la 1200 m. De

asemenea, poate acoperi distante relativ mari (pana la 1200 m). O regula spune ca

viteza masurata in bit/s inmultita cu viteza in metri nu ar trebui sa depaseasca 108.

Page 6: Proiect AF

8

8

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

1.3.Elaborarea şi descrierea schemei

Pentru execuţia practică a proiectului, apare necesitatea de a elabora schema

electrică a sistemului proiectat.

Page 7: Proiect AF

9

9

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

1.4. Simularea dispozitivului în Proteus

Fig. 2. Schema electrică pentru simulare în Proteus

2.Argumentarea alegerii tipurilor de elemente elecronice

2.1 Descrierea microcontrolerului

Fig. 3.Configurarea pinilor microcontrolerului ATmega32.

ATmega32 conţine 32 de registre de uz general şi 64 de registre speciale pentru

modulele I/O. Aceste registre sunt mapate la adrese din memoria RAM cuprinse între

0000h şi 005Fh.

Page 8: Proiect AF

10

10

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

2.2. Descrierea pinilor

Port A (PA7 .. PA0)

Port-ul A serveşte drept port de intrări analogice pentru Convertorul A/D.

Port-ul A serveşte de asemenea şi ca un port bidirecţional I/O de 8 biţi, în cazul în

care Convertorul A/D nu este folosit. Pinii de port pot fi conectaţi optional la VCC

prin rezistori interni, (selectaţi pentru fiecare bit). Buffer-ele de ieşire ale Portului A

au caracteristici de amplificare .

Port B (PB7.. PB0)

Portul B este un port I/O de 8 biţi bidirecţional cu rezistori interni (opţionali).Buffer-

ele de ieşire ale Port-ului B au caracteristici de amplificare. Port-ul B indeplineşte de

asemenea funcţii speciale ale microcontrolerului ATmega32

Port C (PC7…PC0)

Portul C este un port I/O de 8 biţi bidirecţional cu rezistori interni (opţionali). Buffer-

ele de ieşire ale Port-ului C au caracteristici de amplificare. Daca interfaţa JTAG (de

depanare) este activată, rezistorii pinilor PC5(TDI), PC3(TMS) si PC2(TCK) vor fi

activaţi, chiar dacă are loc o resetare. Port-ul C îndeplineşte de asemenea funcţii ale

interfeţei JTAG şi alte funcţii speciale ale ATmega32.

Port D (PD7…PD0)

Portul D este un port I/O de 8 biţi bidirecţional cu rezistori interni conectaţi opţional

la VCC (selectaţi pentru fiecare bit). Buffer-ele de output ale Port-ului D au

caracteristici de amplificare. Port-ul D îndeplineste de asemenea funcţii speciale ale

ATmega32. Reset - Un nivel scăzut la acest pin mai mare ca durata decît o valoare

prestabilită, va genera o initializare.

XTAL 1: Intrare pentru amplificatorul inversor al Oscilatorului;

XTAL 2: Iesire pentru amplificatorul inversor al Oscilatorului.

Page 9: Proiect AF

11

11

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

AVCC: pin de alimentare pentru Port-ul A si Convertorului A/D. Trebuie conectat

extern la Vcc, chiar dacă ADC nu este folosit. Dacă ADC este folosit , ar trebui

conectat la Vcc printr-un filtru trece jos.

AREF : pinul de referinţă analogică pentru Convertorul A/D

2.3 Diagrame bloc

Fig.4. Diagrama Bloc a Microcontrolerului ATmega32

Page 10: Proiect AF

12

12

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

Fig.5. Diagrama Bloc a arhitecturii Microcontrolerului ATmega32

Page 11: Proiect AF

13

13

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

CONCLUZII:

În zilele de astăzi trăim într-o lume a automatizării şi a controlului de către

dispozitivele electronice, domeniul IT cunoscind o dezvoltare foarte mare, continua,

nu exista o zi fara sa apara un element nou pe piata mondena. Toate aceste

automatizări sunt realizate cu ajutorul microcontrolerelor. Ele sunt prezente peste tot:

la dispozitivele de afişare, la dispozitivele audio, în prelucrarea informaţiei etc.

Odată cu evoluţia microprocesoarelor, proiectarea dispozitivelor a devenit

accesibilă practic tuturor doritorilor, deoarece a apărut accesul la diverse componente

electronice, despre care inainte nici nu se cunostea.

Prin realizarea acestui proiect am făcut un mare pas spre performanţele în lumea

ingineriei, deoarece am înţeles că de şi e destul de dificil de programat, este ceva

foarte interesant şi foarte eficient pentru evoluţia sistemelor de calcul.

Page 12: Proiect AF

14

14

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

BIBLIOGRAFIE:

1. Calmîcov I. ,,Conspectul de curs PSM”

2. DataSheet AtMega32

3. http://www.atmel.com/

4. http://www.google.com/

5. http://www.cadsoftusa.com/

Page 13: Proiect AF

15

15

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

ANEXĂ

Page 14: Proiect AF

16

16

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

Listingul programului:

/* * Created: 28.11.2014 19:42:40 * Author: Andrei */ #define F_CPU 16000000UL #define USART_BAUDRATE 19200 #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1) #define nrBenzi 6 #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <avr/interrupt.h> //6 benzi de circulatie int banda[nrBenzi] = {}; int workingMode = 0; int toggle = 0; char strBuff[5]; void USART_Init(void){ UBRRL = (unsigned char)BAUD_PRESCALE; UBRRH = (unsigned char)(BAUD_PRESCALE >> 8); UCSRB = ((1<<TXEN)|(1<<RXEN)| (1<<RXCIE)); } void USART_SendByte(uint8_t u8Data){ while((UCSRA &(1<<UDRE)) == 0); UDR = u8Data; } void USART_putstring(char* StringPtr){ while(*StringPtr != 0x00) { USART_SendByte(*StringPtr); StringPtr++; } } ISR(USART_RXC_vect) { while(!(UCSRA & (1<<RXC))); switch(UDR) { case '0': workingMode = 0; USART_putstring("Mod de lucru 0;\r"); resetArrayValue(&banda); break; //mode de lucru 1, raporteaza banda pe care trece masina case '1': workingMode = 1; USART_putstring("Mod de lucru 1;\r"); resetArrayValue(&banda); break; // mode de lucru 2, aduna numarul de masini si raporteaza la cerere case 'r': sendReport(); break; } return UDR; } void resetArrayValue(int *buff) { for(int i=0;i<nrBenzi;i++) { buff[i] = 0; } } void sendReport()

Page 15: Proiect AF

17

17

Coala

Mod Nr Document Semnătura Data

UTM 529.1.270.ME

{ for(int i=nrBenzi-1;i>=0;i--) { itoa(banda[i],strBuff,10); USART_putstring(strBuff); if((i-1)<nrBenzi) USART_SendByte(','); } USART_SendByte(';\r'); resetArrayValue(&banda); } int main(void) { DDRB = 0x60; //pe portul b PORTB = 0xC0; //pull up pe pinii 7 si 8 DDRA = 0x0; PORTA = 0xFF; //pull up pe PA DDRC = 0x0; PORTC = 0xFF; //pull up pe PC DDRD = 0x0; PORTD = 0xFF; USART_Init(); sei(); int portBVal = 0; USART_putstring("Mod de lucru 0;\r"); USART_putstring("Moduri disponibile:\r0 - raporteaza live;\r1 - colecteaza date;\r"); while(1) { portBVal = PINB; for(int i=0;i<nrBenzi;i++) { if( ((portBVal>>i)&1 == 1) ) { toggle |= 1<<i; } else if( (toggle>>i)&1 == 1) { if(workingMode == 1) { banda[i]++; } else { banda[i]++; if(banda[i] % 2 == 0) { itoa(i,strBuff,10); USART_putstring(strBuff); USART_putstring("\r"); banda[i] = 0; } } toggle &= ~(1<<i); } } _delay_ms(50); } }