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_P17
PROJECT NAME
Project Description
Centru meteorologic, pentru care vom folosi 2 senzori: unul de temperatura si unul de presiune. Informatiile prelucrate de la cei 2 senzori se vor duce printr-un circuit auxiliar la placa EV/Z3.
Project Requirements
Senzor presiune MPX 2010DP pentru care folosim o schema de amplificare diferentiala formata din 2 amplificatori si un numar de 5 rezistente.
Senzor temperatura pentru care folosim o rezistenta de 4.7k, acesta legandu-se direct la pic. Este un sezor digital.
Deoarece pic-ul recomandat nu a corespuns cerintelor noastre am folosit un al pic :PIC16F88.
User Flow
Proiectul este foarte usor de utilizat: masoara temperatura si presiunea atmosferica.
Sectiunea aceasta va fi completata cu screenshot-uri ale proiectului vostru in functiune - frumos ar fi un film pe youtube.
Required components
Componentele pe care le-ati folosit:
Pentru senzorul de temperatura DS1820:
-este un senzor care implementeaza protocolul One-Wire si are 3 pini, unul de ground,unul alimentare si unul de date. Pentru conectarea la PIC vom lega pinul de date la un pin al picului ce contine convertor ADC. Pentru legarea senzorului la Vcc vom folosi o rezistenta de tip pull-up de 4.7k.
Pentru senzorul de presiune MPX2010DP:
-schema de amplificare contine 2 rezistente de 1k si 150R conectate in pararel intre Vcc si ground. Pe schema am mai utilizat urmatoarele rezistente: R1=39.2k, R2=90.9, R3=909, R4=392k. Am mai folosit 2 amplificatori operationali MC33272.
De asemenea trebuie sa adaugati si o schema (poza) cu simularea aplicatiei vostre intr-un IDE.
Daca folositi schema cu PIC16F628A trebuie sa adaugati la ea componentele folosite (sa legati ledurile de exemplu la PIC) si sa puneti un screenshot,
Functii folosite:
-UART1_Init() ->Initializeaza modulul de UART cu un boud rate.
-UART_Write_Text("Text") -> transmite un text pe seriala
-UART_Write() -> transmite un byte pe seriala
-Ow_Reset -> returneaza 0 daca DS1820 este prezent si 1 daca nu este
-Ow_Read -> citeste un byte de date de la un dispozitiv extern prin magistrala OneWire.
-Ow_Write ->scrie un byte de date prin magistrala OneWire.
Software Design
Codul pentru senzorul de temperatura:
sbit DQ at RA1_bit;
char uart_rd;
// Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
// 18S20: 9 (default setting; can be 9,10,11,or 12)
// 18B20: 12
const unsigned short TEMP_RESOLUTION = 9;
char *text = "000.0000";
unsigned temp;
void Display_Temperature(unsigned int temp2write) {
const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
char temp_whole;
unsigned int temp_fraction;
// Check if temperature is negative
if (temp2write & 0x8000) {
text[0] = '-';
temp2write = ~temp2write + 1;
}
// Extract temp_whole
temp_whole = temp2write >> RES_SHIFT ;
// Convert temp_whole to characters
if (temp_whole/100)
text[0] = temp_whole/100 + 48;
else
text[0] = '0';
text[1] = (temp_whole/10)%10 + 48; // Extract tens digit
text[2] = temp_whole%10 + 48; // Extract ones digit
// Extract temp_fraction and convert it to unsigned int
temp_fraction = temp2write << (4-RES_SHIFT);
temp_fraction &= 0x000F;
temp_fraction *= 625;
// Convert temp_fraction to characters
text[4] = temp_fraction/1000 + 48; // Extract thousands digit
text[5] = (temp_fraction/100)%10 + 48; // Extract hundreds digit
text[6] = (temp_fraction/10)%10 + 48; // Extract tens digit
text[7] = temp_fraction%10 + 48; // Extract ones digit
}
void main() {
// ANSEL = 0; // Configure AN pins as digital I/O
// ANSELH = 0;
// C1ON_bit = 0; // Disable comparators
// C2ON_bit = 0;
ADCON1 |= 0x0F; // Configure AN pins as digital
CMCON |= 7; // Disable comparators
while (1) { // Endless loop
UART1_Init(9600); // Initialize UART module at 9600 bps
Delay_ms(100); // Wait for UART module to stabilize
UART1_Write_Text("Temperatura: ");
Ow_Reset(&PORTA, 0); // Onewire reset signal
Ow_Write(&PORTA, 0, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 0, 0x44); // Issue command CONVERT_T
Delay_us(120);
Ow_Reset(&PORTA, 0);
Ow_Write(&PORTA, 0, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 0, 0xBE); // Issue command READ_SCRATCHPAD
temp = Ow_Read(&PORTA, 0);
temp = (Ow_Read(&PORTA, 0) << 8) + temp;
Delay_ms(500);
UART1_Write_Text("Temperatura: ");
UART1_Write(temp); // and send data via UART1
UART1_Write(223);
UART1_Write('C');
}
}
Results [edit]
O imagine de ansamblu a cum functioneaza proiectul, screenshoturi, filmulete cu proiectul functionand. Alte detalii care le credeti importante.
Download [edit]
Se va adauga si modalitatea de compilare, ce IDE(Proteus, AVR Studio, Open Watcom) ati folosit in compilareArhiva 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
O pagina in care sa updatati saptamanal cum stati cu proiectul. Sa spuneti ziua in care ati realizat diferite componente
Eg
1 Mai - board finaly done
15 Mai - board working - starting to write EV/Z3 software part