Sunteți pe pagina 1din 18

UNIVERSITATEA POLITEHNICA BUCURESTI FACULTATEA DE TRANSPORTURI Catedra Telecomenzi si Electronica in Transporturi

Proiect MICROCONTROLLERE Simularea bloc comanda grup de dou ascensoare pentru 4 etaje

Autori : GROSU Roxana 8314 BURLAC Aurelian 8314 -2011-

Indrumator As. Ing. NICULESCU Mihai

Cuprins

Cap.I Tema Cap.II Proiectare Hardware - 2.1 Schema bloc -2.2 Descriere blocuri - 2.3 Schema electrica generala Cap.III Proiectare software - 3.1 Descriere Generala - 3.2 Schema Logica - 3.3 Listing software Cap.IV Software utilizate Cap.V Bibliografie

I.Tema

Tema proiectului o contituie simularea bloc comanda grup de dou ascensoare pentru 4 etaje. Pentru acceasta este nevoie sa folosim un microcontroller impreun cu circuitele aferente si un programator impreuna cu un program. Am ales pentru acest proiect microcontrolerul Atmega16 deoarece: microcontrolerele Atmel sunt substanial mai ieftine, au flash i protecii, au activat un pin de protecie i la o urmtoare tentativ de a citi ROM-ul, returneaz c este gol. Avr-urile (familia Atmega) sunt mai rapide dect pic-urile; au semnificativ mai mult RAM i, de obicei, n aceeai capsul mai mult flash i EEPROM. Structura intern a avr-urilor este mai bine conceput. Un alt motiv pentru a alege microcontrolerul Atmega16 este c n cadrul Facultaii "Telecomenzi i Electronic n Transporturi" exist sisteme de dezvoltare EasyAVR4 care reprezint o soluie complet pentru aplicaiile cu microntrolere AVR Atmel. Alte motive pentru care am ales microcontrolerele din familia Atmega sunt: Microcontrolerele din familia AVR prezint o organizare de tipul RISC executnd o instuciune / ciclu maina. Prezena unor blocuri interne ca: oscilator intern, timere, unitate UART, SPI, rezistoare pull-up, PWM ( pulse widith modulation), ADC, comparatoare, determin utilizarea acestor microcontrolere ntr-o gam foarte larg de aplicaii. Instruciunile acestei familii de microcontrolere au fost proiectate pentru a reduce dimensiunea unui program scris n limbaj C sau n limbaj de asamblare. Posibilitatea programrii memoriei FLASH i a memoriei EEPROM, determin ca aceste microcontrolere s aib o larg utilizare datorat costului mic de dezvoltare a unei aplicaii (timpul de proiectare scurt). O alt calitate remarcabil a acestor microcontrolere este consumul foarte mic de energie. Domeniul tensiunilor de alimentare este cuprins ntre 1.8 i 5V. Prezint 6 moduri diferite de stand-by ceea ce ne asigur c aceste microcontrolere nu vor consuma energie dect atunci cnd este nevoie. Controlul software al frecvenei garanteaz o vitez maxim de execuie atunci cnd este nevoie, iar n restul timpului, microcontrolerul poate trece n stand-by unde consumul de energie este minim. Utilizarea acestor microcontrolere poate reduce semnificativ timpul de dezvoltare a unei aplicaii datorit prezenei pe acestea a unui bloc de depanare n timp real, circuitul aflndu-se chiar pe placa ce reprezint aplicaia. Se pot face n timp real operaii de watch asupra unor regitri, operaii de rulare pas cu pas, operaii de oprire n breakpoint. Sunt produse microcontrolere de uz general precum i microcontrolere cu funcii specializate.

II. Proiectare Hardware

Mrimile de intrare ale modelului de ascensor sunt de dou feluri: mrimi logice, conectate la portul de ieire al microcontroller-ului i mrimi analogice care sunt recepionate de la portul de ieire de putere sau de la ieirea PWM a microcontroller-ului. n Tabelul nr.1 se prezint denumirea mrimilor de intrare, notaia utilizat, pinii microcontroller-ului de care sunt legate i descrierea lor. Tabel nr.1 Marimi de intrare Pin de legatura la Marimea de intrare Simbol Descriere C Led extern pentru nivelul 0 Indica faptul ca liftul 1 L1E0 PA7 Liftul1 se afla la nivelul 0 Led extern pentru nivelul 1 Indica faptul ca liftul 1 L1E1 PA6 Liftul1 se afla la nivelul 1 Led extern pentru nivelul 2 Indica faptul ca liftul 1 L1E2 PA5 Liftul1 se afla la nivelul 2 Led extern pentru nivelul 3 Indica faptul ca liftul 1 L1E3 PA4 Liftul1 se afla la nivelul 3 Led extern pentru nivelul 4 Indica faptul ca liftul 1 L1E4 PA3 Liftul1 se afla la nivelul 4 Led extern pentru nivelul 0 Indica faptul ca liftul 2 L2E0 PB7 Liftul2 se afla la nivelul 0 Led extern pentru nivelul 1 Indica faptul ca liftul 2 L2E1 PB6 Liftul2 se afla la nivelul 1 Led extern pentru nivelul 2 Indica faptul ca liftul 2 L2E2 PB5 Liftul2 se afla la nivelul 2 Led extern pentru nivelul 3 Indica faptul ca liftul 2 L2E3 PB4 Liftul2 se afla la nivelul 3 Led extern pentru nivelul 4 Indica faptul ca liftul 2 L2E4 PB3 Liftul2 se afla la nivelul 4 Mrimile de ieire ale modelului de ascensor sunt de dou feluri: mrimi logice, conectate la portul de intrare al microcontroller-ului i mrimi analogice care sunt transmise portului analogic al microcontroller-ului. n Tabelul nr.2 se prezint denumirea mrimilor de ieire, notaia utilizat, pinii microcontroller-ului de care sunt legate i descrierea lor.

Tabel nr.2

Marimi de iesire Simbol BE4 BE3 BE2 BE1 BE0 B0 B1 B2 B3 B4 Pin de legatura la C PD7 PD6 PD5 PD4 PD3 PD7 PD6 PD5 PD4 PD3 Descriere Chemarea liftului la nivelul 4 Chemarea liftului la nivelul 3 Chemarea liftului la nivelul 2 Chemarea liftului la nivelul 1 Chemarea liftului la nivelul 0 Comanda deplasarea liftului catre nivelul 0 Comanda deplasarea liftului catre nivelul 1 Comanda deplasarea liftului catre nivelul 2 Comanda deplasarea liftului catre nivelul 3 Comanda deplasarea liftului catre nivelul 4

Marimea de iesire Buton extern 4 Buton extern 3 Buton extern 2 Buton extern 1 Buton extern 0 Buton intern 0 Buton intern 1 Buton intern 2 Buton intern 3 Buton intern 4

Schema de ansamblu a grupului de ascensoare

2.1 Schema bloc

afisor leduri (4x8)

Atmega16

bloc comanda push-butoane

On-board usb 2.0 programmer

Unitate Centrala cu comunicatie serial USB 2.0

2.2 Descriere blocuri


Placa de dezvoltare Easy AVR este compusa din cinci blocuri functionale si structurale: -Microcontroller ATMEGA 16 -On-board usb 2.0 programmer -Bloc push-butoane -Bloc diode -COMPUTER cu comunicatie USB ATmega 16 este un microcontroler CMOS de 8 bii de mic putere bazat pe arhitectura RISC AVR mbuntit. Dispune de un set de 131 de instruciuni i 32 de regitri de uz general. Cele 32 de registre sunt direct adresabile de Unitatea Logic i Aritmetic (ALU), permind accesarea a dou registre independente ntr-o singur instruciune. Se obine, astfel, o eficien sporit n execuie (de pn la zece ori mai rapide dect microcontrorelerele convenionale CISC). ATmega16 este un microcontroler RISC pe 8 bii realizat de firma Atmel. Caracteristicile principale ale acestuia sunt: - 16KB de memorie Flash reinscriptibil pentru stocarea programelor ; - 1KB de memorie RAM ; - 512B de memorie EEPROM ; - dou numrtoare/temporizatoare de 8 bii ; - un numrtor/temporizator de 16 bii ; - conine un convertor analog digital de 10 bii, cu intrri multiple ; - conine un comparator analogic ; - conine un modul USART pentru comunicaie 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 RAM i memoria EEPROM ; - liniile de intrare (porturile I/O Lines) i celelalte blocuri de intrare/iesire. Aceste ultime module sunt controlate de un set special de registre, fiecare modul avnd asociat un numr de registre specifice. Memoria Flash de program mpreun cu ntreg blocul de extragere a instruciunilor, decodare i execuie comunic printr-o magistral proprie, separat de magistrala de date menionat mai sus. Acest tip de organizare este conform principiilor unei arhitecturi Harvad i permite controlerului s execute instruciunile foarte rapid. Modul Power-Down salveaz coninutul registrelor, dar blocheaz Oscilatorul, dezactivnd toate celelalte funcii al chip-ului pn la urmatoarea ntrerupere extern sau Reset Hardware. n modul Power-Save, timer-ul asincron continu s mearg, permind user-ului s menin o baz de timp n timp ce restul dispozitivului este oprit. n modul Stand-by, Oscilatorul funcioneaz n timp ce restul despozitivului este oprit. Acest lucru permite un start foarte rapid combinat cu un consum redus de energie. n modul Stand-by extins (Extended Stanby Mode), att Oscilatorul principal, ct i timer-ul asincron continu s funcioneze. Memoria Flash (On-chip) permite s fie reprogaramat printr-o interfa serial SPI, de ctre un programator de memorie nonvolatil convenional, sau de ctre un program de boot On8

chip ce ruleaz pe baza AVR. Programul de boot poate folosi orice interfa pentru a ncrca programul de aplicaie n memoria Flash . Combinnd un CPU RISC de 8 bii cu un Flash In-system auto programabil pe un chip monolitic, ATmega 16 este un microcontroler puternic ce ofer o soluie extrem de flexibil i cu un cost redus n comparaie cu multe altele de pe pia. ATmega 16 AVR este susinut de o serie complet de instrumente de program i de dezvoltare a sistemului, care include: compilatoare C, macroasambloare, programe debug/ simulare etc.

Descrierea pinilor:

VCC Sursa de curent GND Masa Port A (PA7 .. PA0) Port-ul A servete drept port de intrri analogice pentru Convertorul A/D. Port-ul A servete, de asemenea, i ca un port bidirecional I/O de 8 bii, n cazul n care convertorul A/D nu este folosit. Pinii de port pot fi conectai opional la VCC prin rezistori interni, (selectai pentru fiecare bit). Buffer-ele de ieire ale Portului A au caracteristici de amplificare . Port B (PB7.. PB0) Portul B este un port I/O de 8 bii bidirecional cu rezistori interni (opionali). Buffer-ele de ieire ale Port-ului B au caracteristici de amplificare. Port-ul B ndeplinete, de asemenea, funcii speciale ale microcontrolerului ATmega 16.

Port C (PC7PC0)
9

Portul C este un port I/O de 8 bii bidirecional cu rezistori interni (opionali). Buffer-ele de ieire ale Port-ului C au caracteristici de amplificare. Dac interfaa JTAG (de depanare) este activat, rezistorii pinilor PC5 (TDI), PC3 (TMS) i PC2 (TCK) vor fi activai, chiar dac are loc o resetare.Port-ul C ndeplinete, de asemenea, funcii ale interfeei JTAG i alte funcii speciale ale ATmega 16. Port D (PD7PD0) Portul D este un port I/O de 8 bii bidirecional cu rezistori interni conectai opional la VCC (selectai pentru fiecare bit). Buffer-ele de output ale Port-ului D au caracteristici de amplificare. Port-ul D ndeplinete, de asemenea, funcii speciale ale ATmega 16. Reset Un nivel sczut la acest pin mai mare ca durat dect o valoare prestabilit, va genera o iniializare. XTAL 1: Intrare pentru amplificatorul inversor al Oscilatorului ; XTAL 2: Ieire pentru amplificatorul inversor al Oscilatorului. AVCC: AVCC este pin de alimentare pentru Port-ul A i 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: AREF este pinul de referin analogic pentru Convertorul A/D.

On-board usb 2.0 programmer


Nu este nevoie de un echipament extern pentru programare, deoarece sistemul de dezvolatren EasyAVR4 are propriul su USB 2.0 programmer. Tot ceea ce trebuie fcut este conectarea sistemului la PC folosind cablul USB urmnd apoi ncrcarea programului n microcontroler prin AVRprog programare software

Bloc leduri
Light Emitting Diodes (LEDs) sunt cele mai des folosite componente, de obicei pentru prezentarea strilor digitale ale pinilor. EasyAVR4 are 32 de leduri care sunt conectate la PORTA,PORTB, PORTC si PORTD ale microcontrolerului. Fiecare grup de opt leduri poate fi conectat sau nu, folosind switch-ul SW2 arat conexiunea ledurilor la PORT A . Un rezistor este folosit n serie cu ledul pentru limitarea curentului. n acest caz valoarea rezistorului este 1K. Ledul este conectat cnd switch-ul corespunztor, SW2 este ON. Cnd sunt conectate,ledurile vor arta starea pinilor corespunztori microcontrolerului; cnd nu sunt conectate, ledurilentotdeauna vor fi OFF (stinse), necontnd ce stare are portul.

Bloc push-butoane
Easy AVR4 are 32 butoane push. Acestea pot fi folosite pentru schimbarea starilor intrrilor digitale ale porturilor microcontrolerului. Acolo este de asemenea un switch care actioneaz ca RESET. Apsarea butonului produce conectarea pinului port la +5.Astfel, doar cnd butonul este apsat starea pinului microcontrolerului va fi 1 logic, altfel va fi ntotdeauna 0 logic.

COMPUTER cu comunicatie USB


Prin intermediul programului AVR Studio si a comunicatiei seriale USB este posibila programarea Microcontrolerului ATMEGA 16

2.3 Schema electrica generala


10

1 1 R 1 2 3 4 5 6 L L L L L 1 1 1 1 1 E E E E E 4 3 2 1 0 U 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 0 1 2 3 4 5 6 7 8 9 0 1 c A A A A A A A A E E E C C C C C C C C g a P B 0 V P B 1 P P B 2 P P B 3 P P B 4 P P B 5 P P B 6 P P B 7 P R E S E PT P D 0 P P D 1 P P D 2 P P D 3 P P D 4 P P D 5 P P D 6 P P D 7 P X T A L 2P X T A L 1P G N D P A T m e V 4 c3 03 13 23 33 43 53 63 73 03 12 22 72 62 52 42 32 22 12 0 C 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 C

I P

- 2

2 3 4 5 6

L L L L L

2 2 2 2 2

E E E E E

4 3 2 1 0

r e s

e t 1 0 k 1 0 0 E E E V C C j u 2m 1 p e E r E 4 3 2 1 0 n

V V 5 V d C c C

1 6

Pushbutoanele BE0, BE1, BE2, BE3, BE4 sunt conectate la pinii 7-3 ai portului D ele reprezint comanda pentru chemarea liftului i totodat comanda din interiorul cabinei. Pushbutoanele sunt conectate la o surs de tensiune de 5V prin intermediul jumper-ului astfel atunci cand se execut apsarea la portul D al microcontrollerului se va citi valoarea logic 1. Ledurile indic pozitia cabinei liftului, ele sunt conectate la pinii 7-3 ai portului A(liftul 1) si la pinii 7-3 ai portului B (liftul 2). In momentul in care se aplic tensiune pe porturile microcontrolerui ledurile se aprind dac SW_1 este conectat la mas, seturile de rezistori R1 sunt pentru protecie. La pinul RESET este conectat circuitul de reset format din: pushbutonul reset, o surs de tensiune de 5V, o rezisten de 10k si un condensator de 100nF. In momentul n care butonul reset este apsat la pinul RESET se aplic o tensiune de de 0V (valoarea logica 0)

III Proiectare Software


11

3.1 Descriere General


Se initializeaz stiva dup care se iniializeaz poturile A,B de iesire si portul D de intrare cu rezistene de pull-up activate. Pe portul D sunt iniializate pushbutoanele pd7 pentru parter, pd6 pentru etajul 1 si aa mai departe pan la pd3 pentru etajul4. Se verific starea butoanelor de pe portul D, dac nu e nici un buton apsat programul asteapt pan cnd unu din butoanele portului D se apas, apoi verific care din pushbutoane s-a apsat pentru a ti la ce etaj s urce sau s coboare liftul. n r18 este memorat poziia primului lif, n r19 poziia celui de-al doilea lift, iar n r20 poziia unde trebuie sa urce/coboare liftul. Se face compararea dintre r18 i r20 respectiv 19 si r20 pentru a ti care lift e mai aproape de poziia dorit i se face diferena apoi rezultatul se incarc n r21 respectiv r22. Pentru micare lift 1 sau lift 2 se face compararea dintre r21 si r22 dac valoarea este mai mic se va misca liftul 1 dac rezultatul comparrii este mai mare se va misc liful 2 si se va adresa una din etichetele miscare_lift_1 sau miscare_lift_2. Se va compara valoarea din r19 (unde este incarcata pozitia liftului) cu cea din r20 (unde trebuie s ajung liftul) daca valoarea este mai mic liftul va urca dac este mai mic va cobor. Urcare_lift_x:se apeleaz eticheta Wait_1sec, apoi se incrementeaz r18 i se incarc in r16 valoarea portuluiX, funcia lsr are rolul de a deplasa spre stnga valoarea din r16, se incarc valoarea rezultat in portulX dup care face un salt la eticheta miscare_lift_x iar programul intr intr-o bucl pna cnd r18=r20. Coborare_lift_x: se apeleaz eticheta wait_1sec, se decrementeaza r18 si se incarc in r16 valoarea portuluiX, funcia lsl are rolul de a deplasa spre dreapta valoarea din r16, se incarc valoarea rezultat in portulX dup care se face salt la eticheta coborare_lift_x iar eticheta intr intr-o bucl pna cnd r18=r20. Dupa finalizarea operaiei se asteapt din nou apsarea unuia din butoanele de pe portul D.

3.2 Schema logica


12

start

stiva

initializare porturi A,B iesiri D intrare, cu rezistenta de pull-up activate

nu

buton apasat port D?

iesire

da

PD7 apasat?

da

r20=0

r18<r20 ?

da r21<r20-r18 nu

nu

r21<r18-r20

PD6 apasat? nu

da

r20=1 r19<r20 ? da r22<r20-r19

nu PD5 apasat? nu da r20=2

r22<r19-r20

r21<r22 ? da

da

miscare_lift_1

miscare lift 1

PD4 apasat? nu

nu r20=3 miscare_lift_2

miscare lift 2

PD3 apasat?

da

r20=4

13

miscare lift 2 miscare_lift_2 r19<r20 ? da asteapta o secunda inc r19 urca un etaj iesire

nu

asteapta o secunda

dec r19

coboara un etaj

nu

r19=r20 ? da

iesire

miscare lift 1

miscare_lift_1

r18<r20 ?

da asteapta o secunda inc r18 urca un etaj

nu

asteapta o secunda

dec r18

coboara un etaj

nu

r18=r20 ?

da

iesire

3.3 Listing program


14

.include "m16def.inc" rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset rjmp reset reset: ldi r16,high(ramend) out sph,r16 ldi r16,low(ramend) out spl,r16 ser r16 out ddra,r16 out ddrb,r16 clr r16 out ddrd,r16 ser r16 out portd,r16 ldi r18,0b00000000 clr r19 sbi porta,pa7 sbi portb,pb7 port_d: in r16,pind cpi r16,255 breq port_d sbrs r16,pd7 ldi r20,0
15

sbrs r16,pd6 ldi r20,1 sbrs r16,pd5 ldi r20,2 sbrs r16,pd4 ldi r20,3 sbrs r16,pd3 ldi r20,4 cp r18,r20 brge pc+4 mov r21,r20 sub r21,r18 rjmp pc+3 mov r21,r18 sub r21,r20 cp r19,r20 brge pc+4 mov r22,r20 sub r22,r19 rjmp pc+3 mov r22,r19 sub r22,r20 cp r21,r22 brlo miscare_lift_1 brne miscare_lift_2 rjmp miscare_lift_1 miscare_lift_1: cp r18,r20 brlo urcare_lift_1 brne coborare_lift_1 rjmp port_d miscare_lift_2: cp r19,r20 brlo urcare_lift_2 brne coborare_lift_2 rjmp port_d urcare_lift_1: call wait_1sec inc r18 in r16,pina lsr r16
16

out porta,r16 rjmp miscare_lift_1 coborare_lift_1: call wait_1sec dec r18 in r16,pina lsl r16 out porta,r16 rjmp miscare_lift_1 urcare_lift_2: call wait_1sec inc r19 in r16,pinb lsr r16 out portb,r16 rjmp miscare_lift_2 coborare_lift_2: call wait_1sec dec r19 in r16,pinb lsl r16 out portb,r16 rjmp miscare_lift_2 wait_1sec: ldi r16,0x1e out ocr1ah,r16 ldi r16,0x84 out ocr1al,r16 ldi r16,0b00001101 out tccr1b,r16 in r16,tifr sbrs r16,ocf1a rjmp pc-2 clr r16 out tccr1b,r16 in r16,tifr cbr r16,ocf1a out tifr,r16 ret

17

Cap.IV Software utilizate


-AVR Studio -Orcad capture -Rfflow -Microsoft Word

V. Bibliografie
- Curs Microcontrollere Atmega16 - http://lift.ablog.ro/ - http://www.sangari.ro/

18

S-ar putea să vă placă și