PROIECT 2012
Proiectele realizate in cadrul Laboratorului de SMP 2012, Fiecare echipa are de completat in pagina WIKI corespunzatoare proiectului in cadrul tabelului de mai jos, in functie de grupa de care apartine La o grupa se poate implementa o singura data un proiect.
Lista cu proiectele disponibile o gasiti AICI.
Punctaj Proiect
-
2p Pagina Wiki in format HTML cu capitolele create - poze(diferite stadii ale proiectului) + schema hardware + listing software (microcontroller + OpenWatcom la Z3)
-
5p Functionalitate proiect - punctaj in functie de cerintele cerute/realizate
-
1p Calitatea proiectului - cat de organizati ati fost in realizarea acestuia, cod format frumos, optimizari etc...
-
2p Nota individuala - participarea voastra in proiect, raspunsul vostru la intrebarile laborantului la presentarea proiectului
Cerinte general valabile:
- Toate proiectele se vor integra software si/sau hardware cu placa EV/Z3. Pentru integrarea hardware se va folosi portul serial al placii EV/Z3
- Logica software de baza se va regasi pe placa EV/Z3 si va fi realizata în C + inline assembly folosind template-ul OpenWatcom de la laborator
- Pagina de wiki trebuie sa contina o descriere a ce a realizat fiecare student in cadrul proiectului
- Daca nu puneti pe site alta schema de proiectare hardware se va folosi cea cu PIC16F628A pusa la dispozitie
- Wiki-ul trebuie updat ca sa vad stadii intermediare ale proiectului
Elemente de electronica
-
Pentru a vedea/comanda un pret estimativ a componentelor va propun www.conexelectronic.ro . Gasiti si alte magazine pe Maica Domnului.
-
Letconul ar trebui sa aiba cam 40W , nu mai mult de 60 oricum , iar fludorul la 1mm-1.5mm. Sa aveti si un voltmetru cu voi.
-
Va recomand inainte sa alegeti proiectul sa cititi cateva elemente de electronica de AICI.
2012_332AB_P3
Wiki error: Section name cannot be repeated ' '
Table of contents
1. Project Name: Cod Morse [edit]
2. [edit]
2.2.1. Theacher Proposal
2.2.2. - atmega 16, 50*100 placa de test, fudor.
2.2.3. 8 leduri simulati codul Morse.
2.2.5. - simulati cu buzzerul codul morse
2.3. III. User Flow
2.5. Rezulatatele simularii in Proteus pentru caracterele '6' si '5'
2.6. VI. Software Design
2.7. VII. Results
2.8. VIII. Download
2.9. IX. Status
2.15. Update-uri saptamanale:
2.16. -saptamana 23 aprilie - cumpararea pieselor si lipirea lor
2.17. -saptamana 28 aprilie - elaborarea programelor pentru microcontroller si placa EV/Z3
2.18. -saptamana 4 mai - debugging si retusarile finale ale programelor
2.19. X. Personal Contribution
Project Name: Cod Morse [edit]
[edit]
I. Project Description
Scopul proiectului este implemenarea unui traducator de cod Morse pe o placuta cu 8 leduri. Pana la urma, am folosit tot PIC-ul propus la laborator. Microcontrollerul primeste pe seriala, de la EV/Z3 doua caractere care reprezinta codul ASCII al literei ce se vrea tradusa si in functie de acesta, aprinde ledurile (2 leduri aprinse inseamna o lunie, unul singur inseamna punct). De asemenea, microcontrollerul transmite inapoi pe seriala litera corespunzatoare codului ASCII, litera fiind afisata pe LCD-ul placii EV/Z3. De exemplu, cand se introduce de la tastatura lui EV/Z3 "65", pe display apare 65A, iar pe placa ledurile apar sub forma 10 11 00 00 (1 insemnand ca led-ul e aprins, 0 ca e stins).
II. Project Requirements
Pentru implementarea proiectului, am folosit placa, dupa montajul recomandat in laborator. In plus fata de placa basic, am adaugat 8 leduri, fiecare cu cate o rezistenta aferenta (am folosit microcontrollerul PIC16F628). Pentru programarea microcontrollerului, am plecat de la template-ul oferit pentru, afisajul cu 7 segmente. La initializarea placutei, toate ledurile sunt aprinse (am pus 1 pe fiecare pin). Ledurile sunt conectate, in ordine la urmatorii pini: RB3, RB0, RA3, RA2, RA1, RA0, RB5, RB4. Microcontrollerul asteapta 2 caractere, cod_1 si cod_2. In functie de valorile din cele 2 variabile (care sunt retinute ca char-uri), se retine intr-o variabila de tipul long int, led un numar de forma 10110000, iar pe TXREG se pune litera aferenta. Intr-un vector de 8 elemente (numit pin), se retine fiecare cifra a variabilei led (1 sau 0) si apoi pentru fiecare pin din cei 8 se da valoarea pin[i]. Pentru programarea placii EV/Z3, am folosit template-ul OpenWatcom de la laborator, iar cu kIo.SerialWrite scriem pe seriala, iar cu kIo.SerialRead citim. Probleme au aparut deoarece in momentul in care am incercat sa scriem de la tastatura placii, deoarece cand se apasa pe tasta "4" de ex, nu se trimite codul ASCII al lui "4". Am folosit 2 abordari: fie apasam direct tastele de pe coloana 1 a tastaturii (0,2,4,6,8) sau de pe coloana 3 (1,3,5,7,9), sau, pentru a fi mai natural, am identificat ce transmite placa cand se apasa o anumita cifra si am facut o structura de inlocuire (de ex, cand caracterul primit este '<', il inlocuim cu '4').
Theacher Proposal
- atmega 16, 50*100 placa de test, fudor.
8 leduri simulati codul Morse.
Soft: Z3 trimite codul ascii al literelor apasate prin seriala - placa va arata linie -punct in functie de codul morse.
- simulati cu buzzerul codul morse
III. User Flow
Placuta este o placuta de tip hobby, dar, aceasta functioneaza la fel de bine conectata la un PC prin intermediul unui HyperTerminal. Placuta poate avea un rol de amuzament, se pot face mici jocuri, prin care o persoana trimite litere placutei, iar alta persoana trebuie sa ghiceasca mesajul. De asemenea, se pot face jocuri de lumini, aducand mici modificari codului de pe placuta.
IV. Required components
Lista de componente este urmatoarea:
R1,R6 |
2x 100K/0.25W |
R4 |
1x 100R/0.25W |
C3-C7 |
5x 1MF/50V 4*7mm |
C8-C9 |
2x 47NF/630V NEPOL. |
B1 |
1x PUSH BUTTON KRS1273 |
PIC16F628A |
1x PIC16F628AI/P |
MAX232 |
1x MAX232 CPE |
LM7805 |
1x 7805 |
soclu 18 pini pt PIC+MAX |
2x LC18 |
placa test 50x100 pastile |
1x placa test 50x100 |
1 mufa DB9 TATA |
2x DB9PF |
Baterie |
1x 9v |
D1,D2...D8 |
8x led 3v |
R2,R3...R8 |
8x 330/0.25w |
V. Hardware Design
Circuitul implementat in Proteus
Rezulatatele simularii in Proteus pentru caracterele '6' si '5'
VI. Software Design
Programul din microcontroller este facut astfel incat sa primeasca 2 caractere si apoi, prin intermediul unor if-uri, asociaza aprinderea aferenta a led-urilor. Functia care se ocupa de traducere este DisplayChar(rcv,c). rcv este ceea ce s-a primit pe seriala, iar c este un contor. In momentul in care c este par se retine primul caracter din codul ASCII, iar cand c este impar se retine cel de-al doilea. Sectiunea din main este:
DisplayChar(rcv,c);
c++;
Partea de cod in care se face retinerea codului (format din cod_1 si cod_2):
if (cont % 2 == 0){
cod_1 = toPrint;//atoi(&toPrint);
TXREG = toPrint;
return;
}
else {
cod_2 = toPrint;//atoi(&toPrint);
TXREG = toPrint;
//cod = cod_1*10 + cod_2;
}
Un exemplu de testare a codului, pentru a retine corespondenta:
if ( cod_1 == '6' && cod_2 == '5') {led = 10110000; TXREG = 'A';}
if ( cod_1 == '6' && cod_2 == '6') {led = 11101010; TXREG = 'B';}
if ( cod_1 == '6' && cod_2 == '7') {led = 11101110; TXREG = 'C';}
Am procedat in mod analog pentru toate literele A-Z.
Modul in care se pun efectiv valorile logice pe pinii la care sunt conectate ledurile:
for (i=0; i<=7; i++){
pin[i] = led % 10;
led = led/10;
}
PORTBbits.RB3 = pin[7];
PORTBbits.RB0 = pin[6];
PORTAbits.RA3 = pin[5];
PORTAbits.RA2 = pin[4];
PORTAbits.RA1 = pin[3];
PORTAbits.RA0 = pin[2];
PORTBbits.RB5 = pin[1];
PORTBbits.RB4 = pin[0];
Pentru programarea placii EV/Z3, a trebuit facuta conversia, deoarece tastatura nu furnizeaza cifra care este scrisa pe ea:
if(buffer[0]== ':') buffer[0]='1';
if(buffer[0]== '1') buffer[0]='2';
if(buffer[0]== ';') buffer[0]='3';
if(buffer[0]== '2') buffer[0]='4';
if(buffer[0]== '<') buffer[0]='5';
if(buffer[0]== '3') buffer[0]='6';
if(buffer[0]== '=') buffer[0]='7';
if(buffer[0]== '4') buffer[0]='8';
if(buffer[0]== '>') buffer[0]='9';
if(buffer[0]== '0') buffer[0]='0';
In buffer[0], respectiv buffer[1] se retine codul ASCII. Acesta se transmite pe seriala cu: kIo.SerialWrite(COM1, buffer, 2);
Caracterul transmis inapoi de microcontroller (corespondentul codului ASCII) este citit de pe seriala cu: kIo.SerialRead(COM1, buffer+2,1);
Afisarea pe LCD-ul lui EV/Z3 a codului trimis si a literi primite s-a facut cu: kIo.DisplayString(buffer);
VII. Results
Data about the final project implementation. Includes screenshots, movies, comments about your project in action.
VIII. Download
After you have presented your project at the laboratory (week 13-14) you will add all your sources here. Any hardware simulation used, code archive and so on.
IX. Status
Componente:
Lipire componente:
Update-uri saptamanale:
-saptamana 23 aprilie - cumpararea pieselor si lipirea lor
-saptamana 28 aprilie - elaborarea programelor pentru microcontroller si placa EV/Z3
-saptamana 4 mai - debugging si retusarile finale ale programelor
X. Personal Contribution
Grigore Mihai:
Am cumparat componente;
Am lipit componentele pe placa de test;
Stoica Ovidiu:
Am programat microcontrollerul;
Am facut simularea in Proteus;
Activitate comuna:
Am facut debug la placa de test;
Am conceput programul incarcat pe placa EVZ3;