PROIECTE 2011
Proiectele realizate in cadrul Laboratorului de SMP, 2011, le gasiti mai jos, Fiecare echipa are de completat in pagina WIKI corespunzatoare proiectului sau capitolele existente.
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 . Mi-a fost recomandat si mie de ceilalti laboranti.
-
Pentru conectarea la porturile de I/O trebuie sa izolati galvanic folosind optocuploare, ex LTV817 - puteti sa cautati pe site, si rezistente sa limiteze curentul maxim la 5mA U=R*I si trebuie avut in vedere ca rezistentele sa reziste la puterea la care e proiectat circuitul P=U*I...
-
Pentru alte elemente elecronice puteti folosi diode 1N4007, tranzistori BD139/140 de putere mare. Binenteles ca nu sunteti limitati la folosirea acestora, e doar o propunere.
-
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.
2011_P3
(Restore this version)
Modified: 6 April 2010, 8:19 PM User: Paraschiv Madalina → PM
STATIE METEOROLOGICA
Project Description
In cadrul proiectului se vor afisa pe placuta EV/Z3 valorile obtinute de la senzori. Printre elementele masurate se numara:
- temperatura, cu un termistor;
- intensitatea luminoasa, cu o fotorezistenta;
Datele preluate vor fi retinute in registrii microcontroller-ului si apoi transmiti prin interfata seriala catre placuta EV/Z3. In cadrul placii EV/Z3, la apasarea tastei "1" se va afisa temperatura si la apasarea oricarei alte taste, intensitatea luminoasa.
Project Requirements
Se va construi o placuta auxiliara, ce va contine un microcontroler de tip ATMega, precum si senzorii (desigur, si restul componentelor necesare).
Trebuie sa aveti cel putin doi senzori, cum ar fi termorezistenta (termistor), fotorezistenta, etc. , conectati la pinii analogici.
Software-ul de pe EV/Z3 va pune la dispozitie 2/x butoane pentru fiecare senzor. La apasare va afisa pe LCD ce valoare are acel senzor + descriere
Comunicatia dintre placa EV/Z3 si microcontroler se va realiza prin seriala.
User Flow
Se va conecta placuta auxiliara la placa EV/Z3 printr-un cablu serial. Se porneste EV/Z3. La apasarea tastei "1", pe display va fi afisat un mesaj de forma "t= x oC " unde x reprezinta valoarea temperaturii. La apasarea unei alte taste, pe display va fi afisat un alt mesaj de forma "lumina=y", unde y poate avea valoarea "Da", in cazul in care se detecteaza lumina, sau "Nu", in situatia in care nu este detectata lumina.
Required components
Componentele folosite la realizarea placutei auxiliare sunt urmatoarele:
- 1 conector USB
- 1 conector adaptor
- 6 condensatoare 10μF
- 4 leduri rosii
- 2 leduri verzi
- 1 microcontroler ATMega168
- 1 soclu microcontroler
- 1 MAX232
- 5 condensatoare 100 nF
- 1 tranzistor BC547
- 2 stabilizatoare 7805
- 1 Quartz 16MHz
- 2 condensatori 15pF
- 2 conectori DB9 mama
- 4 rezistente 4k7 Ω
- 2 rezistente 10k Ω
- 1 rezistenta 15k Ω
- 6 rezistente 1k Ω
- 1 rezistenta 2.2k Ω
- 2 rezistente 100 Ω
- 4 diode Zener 3V3
- 4 conectori bareta SIL
- 2 push button
- o placuta 30x48 gauri
Schema interfata seriala programator
Schema modul de alimentare
Schema microcontroler
Schema interfata seriala(RS232)
Interfata programator USB
Software Design
#include <stdio.h>
#include <avr\io.h>
#include <avr\interrupt.h>
int uart_putchar(char c, FILE *unused);
int uart_getchar(FILE* f);
FILE mystdout = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
FILE mystdin = FDEV_SETUP_STREAM(NULL, uart_getchar, _FDEV_SETUP_READ);
int val;
uint8_t channel = 0;
int ADC_get(uint8_t channel)
{
//setati canalul de pe care vreti sa faceti citirea
ADMUX &= 0xE0;
ADMUX |= channel;
ADCSRA |= _BV(ADEN)|_BV(ADSC); //asteptati sa se termine o conversie
while(!(ADCSRA & (1<<ADIF)));
//returnati rezultatul conversiei return ADC;
}
void ADC_init(void)
{
// AVCC cu condesator pe AREF; PA7 ca input single ended; rezultat left-adjusted (8 biti de date)
ADMUX = (1<<REFS0) | (1<<MUX1);
// activeaza ADC si intreruperea de conversie. Prescaler de ceas la maximum
ADCSRA = (1<<ADEN) | (1<<ADATE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
}
void USART_init(void)
{
// Initializare modul USART pt comunicatie la 9600bps, 8 biti de date, la 16MHz
UBRRH = 0;
UBRRL = 103;
UCSRB = 0x18;
UCSRC = _BV(URSEL) | _BV(UCSZ1) | _BV(UCSZ0);
}
void Timer1_init(void)
{
// Initializare timer 1 compare match A pentru a avea un timer la nivel de 1 secunda, 16MHz
OCR1A = 15624;
TCCR1A = 0;
TCCR1B = (1<<WGM12)|(1<<CS12)|(1<<CS10); TIMSK |= _BV(OCIE1A);
}
// Exemplu de functie ce se apeleaza la interval de 1 secunda, intrerupere generata de timerul 1
SIGNAL(SIG_OUTPUT_COMPARE1A)
{
// Cod ce se apeleaza 1 data pe secunda
uint8_t i;
val = ADC_get(channel);
//citim valoarea de la ADC
printf("\n%4d ", val);
//afisam valoarea citita
for(i=0; i< (val/50); i++)
//afisam un fel de histograma
printf("%c", 219);
//219 este codul ascii pentru bara neagra. Setati fontul terminalului din Proteus pe "Terminal" ca sa vedeti bine
}
int main(void)
{
uint8_t key;
USART_init();
stdin = &mystdin;
stdout = &mystdout;
ADC_init();
Timer1_init();
for(;;)
{
cli();
//oprim sistemul de intreruperi (timerul e inactiv pana cand selectam canalul la ADC)
printf("\nEnter ADC channel(0-7): ");
scanf("%d",&channel);
printf("\nReading ADC channel %d. Press 'q' to stop.", channel);
sei();
//dam drumul la "threadul" SIGNAL(SIG_OUTPUT_COMPARE1A) care va face citirea de la ADC odata pe secunda
do
// cat timp nu se apasa 'q' threadul main se blocheaza si ruleaza numai citirea de la ADC pe intreruperea de timer.
{
scanf("%c", &key);
}
while(key !='q');
}
return 0;
}
// Functie ce trateaza trimiterea unui caracter pe seriala
int uart_putchar(char c, FILE *unused)
{
if (c == '\n') uart_putchar('\r', 0);
loop_until_bit_is_set(UCSRA, UDRE);
UDR = c;
return 0;
}
// Functie ce trateaza primirea unui caracter pe seriala
int uart_getchar(FILE* f)
{
char c;
loop_until_bit_is_set(UCSRA, RXC);
c = UDR;
if(c=='\r') c='\n';
uart_putchar(c,NULL);
return c;
}
Results
Download
Arhiva cu schema hardware + cod microcontroller + tot proiectul OpenWatcom.
Arhiva va contine 2 directoare (1 singur pentru proiecte doar software)
Hardware design - schema uC + codul folosit pentru a genera fisierul .HEX
Software design - template-ul Open Watcom folosit
Status
17 Aprilie - 1 Mai - incercare de realizare a unei placute tip Arduino
1 Mai - 7 Mai - incercare de realizare a unei placute cu microcontroler de tip PIC16F628A (s-a ars microcontrolerul)
7 Mai - 17 Mai - realizarea actualei placute(care functioneaza)
17 Mai - prezent - programarea microcontrolerului si realizarea comunicarii cu EV/Z3