Documente Academic
Documente Profesional
Documente Cultură
Proiect MICROCONTROLLERE Simularea bloc comanda grup de dou ascensoare pentru 4 etaje
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.
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
Atmega16
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.
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.
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)
start
stiva
nu
iesire
da
PD7 apasat?
da
r20=0
r18<r20 ?
da r21<r20-r18 nu
nu
r21<r18-r20
PD6 apasat? nu
da
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 ?
nu
asteapta o secunda
dec r18
coboara un etaj
nu
r18=r20 ?
da
iesire
.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
V. Bibliografie
- Curs Microcontrollere Atmega16 - http://lift.ablog.ro/ - http://www.sangari.ro/
18