Sunteți pe pagina 1din 18

Universitatea Lucian Blaga Sibiu Facultatea de Inginerie Hermann Oberth

Proiect: Termostat cu Microcontroller PIC16F819

Mazilu Alexandru Lucian Facultatea de Inginerie Hermann Oberth Sibiu Electronica Aplicata 332/1

Proiect: Termostat cu Microcontroller PIC16F819

Coninut proiect:

1. Introducere. De ce am ales acest proiect? Avantaje i dezavanataje 2. Microcontroller-ul PIC16F819 3. Proiectare Hardware: 3.1 Schema bloc a dispozitivului 3.2 Schema electric a echipamentului 3.3 Mod de functionare 4. Algoritm i codul scris in C 5. Simularea schemei si a codului n Proteus. 6. Concluzii 7. Anex 8. Bibliografie

Mazilu Alexandru Lucian

-2-

Proiect: Termostat cu Microcontroller PIC16F819

1. Introducere. De ce am ales acest proiect? Avantaje i

dezavanataje
n proiectul de fa propun s realizez un termostat care sa comande o centrala termica. Circuitul poate fi adaptat i pentru alte aplicaii, dar voi orienta atenia spre obiectul menionat mai sus.

De ce am ales acest proiect? Consider ca realiznd acest proiect, poate fi o alternativ mai uoara de a intelege funionarea unui microcontroller mai ales ca , cuprinde instruciuni si funcii studiate in timpul laboratoarelor ct i la curs. Spre exemplu termostatul de faa va avea nevoie de urmatoarele: Debounce (pentru butoanele de incrementare si decrementare a valorii temperaturii dorite in habitat), conversie AD ( pentru citirea valorii de pe sensor), afiare pe LCD, dar i utilizarea limbajului de programare C. De ce microcontroller? Utiliznd un microcontroller pentru realizarea acestui dispozitiv, vom reduce dimensiunile si beneficiem de comfort datorit posibilitaii de a prescire si a citii valorile pe LCD. Costurile de producie sunt relativ mici, in funcie si de ce microcontroller folosim. Realizarea programului unui astfel de dispozitiv poate fi dificil daca se utilizeaza limbajul de asamblare, dar exista si alternative, spre exemplu utilizarea unor compilatoare

Mazilu Alexandru Lucian

-3-

Proiect: Termostat cu Microcontroller PIC16F819

C sau variante i mai simple cum ar fi FlowCode. n acest proiect voi utiliza MikroC, soft care foloseste limbajul C.

2. Microcontroller-ul PIC16F819
Am decis sa utilizez acest microcontroller din urmtoarele motive: acoper numarul de pini minim include convertor analogic digital include 2 porturi

Alte caracteristici: current maxim absorbit/generat pe portul A: 100mA current maxim absorbit/generat pe portul B: 100mA current maxim pe alimentare : 200mA tensiune alimentare: -0.3 la VDD + 0.3V tensiune pe oricare pin: -0.3 Vdd+0.3V putere disipata: 1W

Din componenta acestui model vom folosi urmatoarele: Unitatea intrare-ieire


Mazilu Alexandru Lucian

-4-

Proiect: Termostat cu Microcontroller PIC16F819

Aceste locaii sunt numite "porturi". Sunt diferite tipuri de porturi: intrare, ieire sau porturi pe dou-ci. Cnd se lucreaz cu porturi, mai nti de toate este necesar s se aleag cu ce port urmeaz s se lucreze, i apoi s se trimit date la, sau s se ia date de la port.

Cnd se lucreaz cu el portul se comport ca o locaie de memorie. Ceva este pur i simplu scris n sau citit din el, i este posibil de a remarca uor aceasta la pinii microcontrolerului.

Convertorul Analog-Digital Pentru c semnalele de la periferice sunt substanial diferite de cele pe care le poate nelege microcontrolerul (zero i unu), ele trebuie convertite ntr-un mod care s fie neles de microcontroler. Aceast sarcin este ndeplinit de un bloc pentru conversia analogdigital sau de un convertor AD. Acest bloc este responsabil pentru convertirea unei informaii despre o anumit valoare analogic ntr-un numr binar i pentru a o urmri pe tot parcursul la un bloc CPU aa ca blocul CPU s o poat procesa.

Mazilu Alexandru Lucian

-5-

Proiect: Termostat cu Microcontroller PIC16F819

3.

Proiectare Hardware

3.1 Schema bloc a echipamentului

Comand releu

Msurarea Temperaturii

CPU

LCD

Inc Dec Comand

Se observ in schema bloc a circuitului ca vom avea nevoie de urmatoarele echipamente periferice: un sensor de temperatur un releu doua butoane ( incrementare si decrementare ) un ecran LCD

n urma procesrii valorilor releul va actiona centrala termica conectat la acest termostat.

3.2Schema electrica a echipamentului


Mazilu Alexandru Lucian

-6-

Proiect: Termostat cu Microcontroller PIC16F819

Mazilu Alexandru Lucian

-7-

Proiect: Termostat cu Microcontroller PIC16F819

Mazilu Alexandru Lucian

-8-

Proiect: Termostat cu Microcontroller PIC16F819

Mazilu Alexandru Lucian

-9-

Proiect: Termostat cu Microcontroller PIC16F819

Componente: Senzor temperatur LM35 2 rezistoare 1K LCD 2x16 LM016L Releu 5 V Tranzistor 2N6660 Dioda 1N4004 3.3 Modul de funcionare Senzorul de temperatur LM35 scoate la iesire 10mv/ C, iar aceast valoare va fi convertit intr-un numr binar de catre convertorul AD al microcontroller-ului utilizat, dupa care va fi afisat pe LCD. Cu ajutorul butoanelor vom prescrie o valoarea temperaturii pe care o dorim in habitat ( la fel ca si la senzor si aceasta valoare este afisata ). Se oberva ca am folosit rezistente de pull down, atunci cand vom aveam semnal 0 logic pe intrarea microcontroller-ului, soft-ul care urmeaz a fi scris va incrementa valoarea. Daca temperatura prescris de noi este mai mare decat cea masurat de senzor atunci microcontroler-ul va comanda releul prin intermediul driver-ului acestuia ( tranzistorul 2N6660 ). Dioda 1N4004 are rol de protectie.

4. Algoritm si codul scris in C

4.1 Algoritm

Mazilu Alexandru Lucian

- 10 -

Proiect: Termostat cu Microcontroller PIC16F819

Start

X=17 ;
S w in c
DA

Setm temperatura initiala

NU

X=X

X++

NU

S w d ec
DA

X=X

X--

Temperatur msurata de senzor

Afiare X&Z

NU

If (x>z)

DA

Stop

Start

4.2 Codul scris in C

Mazilu Alexandru Lucian

- 11 -

Proiect: Termostat cu Microcontroller PIC16F819

Codul de mai jos este scris in limbaj C cu ajutorul compilatorului MikroC. Acest compilator pune la dispoziie anumite funcii care nu necesita includerea de librarii. // TERMOSTAT CU PIC16F819 SI AFISAJ ELECTRONIC PE LCD // MAZILU ALEXANDRU LUCIAN 332/1, ELECTRONICA APLICATA // FACULTATEA DE INGINERIE HERMANN OBERTH SIBIU // ======================================================= // variabile globale unsigned int temp_masurata; unsigned int temp_grade; char txt[6]; unsigned int x=17; char oldstate=0; unsigned char txt2[6]; void main(){ TRISA=0xFF; //configurare port A ca intrare TRISB=0; // configurare port B ca iesire

// initializam LCD Lcd_Init(&PORTB); Lcd_Cmd(Lcd_CLEAR); Lcd_Out(1, 4, "Termostat"); //se definesc pinii de transmisie a datelor // sterge tot ce e pe display //afiseaza pe linia 1 a lcd-ului textul

Lcd_Cmd(Lcd_CURSOR_OFF) ; //opreste cursorul

Lcd_Out(2,1,"Alex Mazilu 2011"); //afiseaza pe linia 2 a lcd-ului textul delay_ms(1500); Lcd_Cmd(Lcd_CLEAR); //asteapta 1,5 sec //sterge ce a fosta fist

Mazilu Alexandru Lucian

- 12 -

Proiect: Termostat cu Microcontroller PIC16F819

do{ ADCON1 = 7; //seteaza intrarile in modul digital //debounce pentru butoanele de incrementare si decrementare if (Button(&PORTA, 1, 1, 1)) { oldstate = 1; } // Update flag // detectare apasare buton

if (oldstate && Button(&PORTA, 1, 1, 0)) { // daca butonul este eliberat Delay_ms(200); // if (x>=17&&x<30) x = x +1; //incrementeaza variabila x oldstate = 0; } if (Button(&PORTA, 2, 1, 1)) { oldstate = 1; } // Update flag // // detectare apasare buton // Update flag asteapta 200 ms

if (oldstate && Button(&PORTA, 2, 1, 0)) { // Ddaca butonul este eliberat Delay_ms(200); // asteapta 200 ms if (x>17&&x<=30) x = x-1; //decrementeaza variabila x oldstate = 0; } ByteToStr(x, txt); //transforma in foramt ASCII pt a putea afisa pe display Lcd_Out(1, 1, "T.Dorita :"); //afiseaza text Lcd_Out(1, 10, txt);
Mazilu Alexandru Lucian

//afiseaza variabila x - 13 -

Proiect: Termostat cu Microcontroller PIC16F819

Lcd_Chr_Cp(223); Lcd_Out(1, 14, "C"); //Conversia ADC

//afiseaza simbol grade // afisaza caracter "C"

ADCON1 = 0x80; //seteaza toate intrarile de tip analogic temp_masurata= Adc_Read(0); //se citeste valoare de pe convertor ADC temp_grade=0.245*temp_masurata*2; // 10mV/1 grad C :pregateste valoarea pentru a fi afisata cat si comparata ByteToStr(temp_grade, txt2); Lcd_Out(2, 10, txt2); Lcd_Chr_Cp(223); Lcd_Out(2, 14, "C"); if(x>temp_grade) { TRISA=0b111110111; PORTA=255; } else PORTA=0; } while(1); //0 logic pe iesire //bucla infinita //seteaza pinul 3 al portului A ca iesire // 1 logic pe iesire //transforma in foramt ASCII pt a putea afisa pe display //afiseaza valoarea citita de senzor //afiseaza simbol grade //afiseaza caracter C //daca temperatura prescrisa (variabila x) este mai mare Lcd_Out(2, 1, "T.Actuala:"); //afiseaza text

decat temperatura citita de senzor

5.Simularea schemei i a codului n Proteus

Mazilu Alexandru Lucian

- 14 -

Proiect: Termostat cu Microcontroller PIC16F819

Pentru realiarea schemei electrice cat si a simularii acesteia am folosit soft-ul Proteus. In ce priveste programarea microcontroller-ului nostru, programul dispune si de aceasta opiune, aceea de a instala fisierul .hex . In prima figura se poate oberva termostatul in starea inchis ( releul nu actioneaza centrala conectata la echipamentul nostru).

Fig.1 Simularea Schemei Electrice si a codului

n urma incrementarii valorii temperaturii dorite, cu ajutorul butonului INC , iar aceasta este mai mare decat temperatura masurata de senzor, atunci releul va porni centrala termica (n caul de faa simbolizata de LED). n figura urmatoare se poate vedea acest lucru.

Mazilu Alexandru Lucian

- 15 -

Proiect: Termostat cu Microcontroller PIC16F819

Fig.2 Simularea Schemei Electrice si a codului

5. Concluzii
m urma realizrii acestui proiect am ajuns la urmatoarele concluzii: utilind microcontrolere ne este usor sa modificam codul, pentru a adapta circuitul la nevoile noastre; costul de productie a unui echipament poate fi mai mic, datorita reducerii de componente; dimensiunile unui echipament pot fi reduse considerabil creste performana; ofera comfort utiliatorului.

ANEXA

Mazilu Alexandru Lucian

- 16 -

Proiect: Termostat cu Microcontroller PIC16F819

Bibliografie
Mazilu Alexandru Lucian

- 17 -

Proiect: Termostat cu Microcontroller PIC16F819

Dogan Ibrahim - Advanced PIC Microcontroller Projects in C Nigel Gardner - An introduction to programming the Microchip in CCS C MikroC Manual www.mikroelektronika.com

Mazilu Alexandru Lucian

- 18 -