Controlul Unui Aer Conditionat cu Ajutorul Unui Microcontroller

Controlul unui aer condiționat cu ajutorul unui microcontroller

I. INTRODUCERE

Datorită evoluției tehnologiei în zilele noastre și pasiunii mele pentru informatică și electronică, am ales ca după liceu să urmez o facultate, mai exact Electronică, Telecomunicații și [NUME_REDACTAT] din cadrul [NUME_REDACTAT] [NUME_REDACTAT]. Acest sagiu de pregătire a fost o provocare pentru mine, având un nivel de dificultate destul de ridicat pentru a te ține tot timpul in priză.

Aici am învățat cum poate controla un tranzistor un motor, cum funcționează un senzor și cât de mult ne ușurează munca un microcontroller.

Toate cunoștințele acumulate le-am folosit pentru realizarea proiectului de licență.

Pentru lucrarea mea, am folosit un microcontroller, un afișaj de tip LCD, doi senzori, un motor și un tranzistor. Cunoștințele de hardware le-am pus în practică atunci când am realizat montajul circuitului, când am lipit conectorii pe LCD și senzorii dar și când am realizat încapsularea circuitului electric.

Partea software m-a ajutat pentru realizarea codului pentru microcontroller, astfel încât să poată realiza cerințele. Am ales să folosesc o plăcuță de dezvoltare [NUME_REDACTAT] datorită numărului suficient de pini (analog si digitali din cele trei porturi) și datorită implementării relativ simplă a codului în C/C++.

Acest proiect este destinat controlului automat și manual al unui aer condiționat ( motor în cazul meu) care poate fi ușor adaptat pentru alte proiecte.

II. Plăcuța de dezvoltare [NUME_REDACTAT]

Arduino UNO  este o platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des întâlnită variantă) construită în jurul unui procesor de semnal și este capabilă de a prelua date din mediul înconjurător printr-o serie de senzori și de a efectua acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, și alte tipuri de dispozitive mecanice. Procesorul este capabil să ruleze cod scris într-un limbaj de programare care este foarte similar cu limbajul C++.

[NUME_REDACTAT] este o plăcuță de dezvoltare cu microcontroller ATmega328P. Are 14 pini digitali de intrare / ieșire (din care 6 pot fi utilizați ca ieșiri PWM), 6 intrări analogice, un rezonator ceramic 16 MHz, o conexiune USB, o mufă de alimentare, un antet ICSP și un buton de resetare. Acesta conține tot ce este necesar pentru a sprijini microcontroller-ul, pur și simplu îl conectați la un computer cu un cablu USB sau de alimentare cu un adaptor AC-DC sau baterie pentru a începe.

[NUME_REDACTAT] Uno conține mai multe module care sunt conectate între ele. Modulele au diferite funcții:

-[NUME_REDACTAT] de dezvoltare – este placa electronică ce conține microcontroller-ul care poate fi programat. Limbajul de programare este un limbaj foarte asemănător cu C-ul. Aceste placaje electronice sunt fabricate în Italia sau China.

-Modulul de intrare – aceste module sunt formate din senzori care se conectează la platformă pentru a trimite către aceasta informații. Modulul de intrare este format din butoane, senzori de temperatură, de distanță și potențiometre.

-Modulul de ieșire – conectat la platform Arduino transmite informații către lumea exterioară (relee, difuzoare, LCD).

-Module de date – permit platformei Arduino să comunice direct cu alte dispozitive digitale (internet, rețea locală, module USB sau GSM).

-Accesorii – accesoriile care se conectează la platforma Arduino nu sunt considerate module deoarece sunt o parte de folosință a proiectelor.

Conectarea modulelor

Conectorul USB este necesar pentru programarea microcontroller-ului. Prin intermediul acestuia, platforma se conectează la un computer pe care se scrie, se compilează și se încarcă programul dorit.

Mufa de alimentare – platforma Arduino se alimentează prin portul USB. Plaja de alimentare dată de producător este cuprinsă între 7V-12V.

Pinii disponibili

Conectorii de pe platformele de dezvoltare Arduino sunt conectori mama. Pinii de pe placa de dezvoltare au următoarele funcții, conform etichetelor tipărite pe placă:

GND — ground, masă, polul negativ al circuitului, tensiune 0 V;

5V — 5V, pin care prezintă o tensiune de 5 volți față de GND, indiferent de tensiunea de alimentare;
N.B.: în funcție de modelul platformei de dezvoltare, tensiunea de lucru poate fi 5V sau 3.3V;

VCC — tensiunea de intrare. [NUME_REDACTAT] se alimentează fie prin conectorul USB, fie prin mufa de alimentare; acest pin prezintă tensiunea de alimentare neschimbată, indiferent că este 3.3V, 5V, 9V, 12V;

Digital 0, Digital 1, …, Digital N — pini de intrare/ieșire digitală. Pinii digitali au doar două stări: 1 sau 0 (logic), HIGH sau LOW (notația în cod), 5V sau 0V.

Analog 0, Analog 1, …, Analog N — pini exclusiv de intrare analogică. Aceștia pot citi valori discrete între 0 și 1023, corespunzătoare în mod proporțional tensiunii de intrare (între 0 și 5V).

Mai există câțiva pini cu funcții speciale: funcții auxiliare sau suplimentare.

Pe aproape toate platformele Arduino și compatibile pinul digital 13 corespunde și unui LED lipit direct pe placă; acesta este un martor util pentru experimente în timpul dezvoltării.

Pinii marcați cu PWM pe placă sunt pinii care pot fi folosiți pentru a trimite semnal digital modulat, util de exemplu pentru a simula intensitatea luminoasă variabilă a unui LED.

Conectarea propriu-zisă

Orice modul extern are nevoie de cel puțin trei fire de conectare: două pentru alimentare (GND și 5V) și cel puțin unul pentru semnal (înspre sau dinspre modul, în funcție de natura acestuia).

Unele module funcționează la 3.3V iar altele la 5V. Dacă alimentați un modul de 3.3V la pinul de 5V al unei platforme Arduino sunt toate șansele să ardem modulul respectiv.

Programarea microcontroler-ului

Pentru a programa microcontroller-ul placa Arduino trebuie conectată la un computer pe care este instalat mediul de dezvoltare și driverele necesare (Arduino 1.0 sau o versiune mai nouă). Mediul de dezvoltare este disponibil în mod gratuit pe site-ul producătorului pentru diverse sisteme de operare.

După ce am conectat placa Arduino la calculator prin modulul USB, se va aprinde un LED pe placa electronică. Se pornește mediul de dezvoltare executând (C:\arduino-1.0\arduino.exe), după care se indică modelul plăcii folosite (Tools > Board). Indicarea portului la care se conectează placa Arduino se face cu comanda Tools > [NUME_REDACTAT] și în cele din urmă se poate porni un exemplu de proiect.

Limbaj și structură

Limbajul folosit este o variantă simplificată de C/C++, cu diverse biblioteci specifice platformei Arduino. Este foarte ușor de folosit pentru orice persoană cu cunoștințe minime de programare structurată.

III. Microcontroller-ul ATMega328P

1) Caracteristici:

-performanțe înalte, consum redus;

-Arhitectura RISC avansată (131 instrucțiuni puternice ;

– Cele mai sigur ciclu de execuție clock, 32 x 8 registre generale de lucru, până la 20 MIPS la 20 MHz);

– Memorie non-volatilă (32K Bytes de sistem cu memorie Flash auto-programabilă, 1K Bytes EEPROM, 2K Bytes internă SRAM, Scriere / Ștergere – Cicluri: 10.000 Flash/100,000 EEPROM, păstrarea datelor: 20 de ani la 85 ° C/100 ani la 25 ° C (1));

– Caracteristici periferice (2 timere pe 8-biți / contoare cu prescalere separate, un timer pe 16-biți / counter cu prescalere separat, mod separare, și mod de captare, contor timp real cu oscilator separat, șase canale PWM, 8-canale pe 10-biți ADC în pachetul TQFP și QFN / MLF,6-canale pe 10-biți ADC în pachetul PDIP);

– Caracteristici speciale pentru microcontroller (power-on reset și brown-out detection programabile, oscilator intern calibrat, surse interne și externe de întrerupere, șase moduri sleep: Repaus, ADC [NUME_REDACTAT], Power-save, Power-down, în așteptare și de așteptare extins).
– Tensiune de operare între 1.8 – 5.5 V ;
– Interval de temperatură între 40 ° C la 85 ° C;
– Viteza de grad: 0 – 20 MHz la 1.8 – 5.5V;
– Consum redus de energie la 1 MHz, 1.8V, 25 ° C (mod activ: 0,2 mA, power-low mode: 0,1 mA, power-save mode: 0.75 uA );

2) Prezentare generală Microcontroller ATMega328P

ATmega328P este un microcontroller low-power CMOS pe 8-biți bazat pe o arhitectură RISC avansată. Prin instrucțiunile de executare puternice într-un singur ciclu de clock, ATmega328P atinge valori apropiate de 1 MIPS pe MHz care permit proiectantul sistemului să optimizeze consumul de energie comparativ cu viteza de procesare.
Nucleul AVR combină 32 de regiștri cu un set bogat de instrucțiuni. Toti cei
32 de regiștri sunt conectați direct la unitate logică aritmetică (ALU), permițând regiștrilor să fie accesați într-o singură instrucțiune executată într-un ciclu de clock.

Rezultatul arhitecturii este un cod mai eficient în timp ce atingerea capacității de până la zece ori mai repede decât convenționalele microprocesoare cu arhitectură CISC.

Dispozitivul este fabricat folosind tehnologia Atmel, folosind tehnologie înaltă pentru memoria non-volatilă.

Programul de încărcare poate folosi orice interfață pentru a descărca un program de aplicație în memoria [NUME_REDACTAT]. Software-ul continuă să ruleze în timp ce secțiunea [NUME_REDACTAT] este actualizată, oferind adevăratul Read-time-[NUME_REDACTAT]. Prin combinarea unei arhitecturi RISC de 8-bit cu memorie flash auto-programabilă cu cip monolit, Atmel ATmega328P este un microcontroler puternic care oferă o soluție extrem de flexibilă și rentabilă de a controla mai multe aplicații embeded.

În figura de mai jos este prezentată diagramă bloc a ATMega328P.

3) [NUME_REDACTAT]

VCC

Tensiunea de alimentare digital.
GND
Masă.
Port B (PB7: 0) XTAL1/XTAL2/TOSC1/TOSC2
Portul B este un bi-direcțional de port I / O de 8-biți cu rezistențe pull-up interne (selectate pentru fiecare bit).
Ieșirile portului B au caracteristici de unitate simetrică atât de scurgere mare cât și de sursă capacitivă. Ca intrări, pinii portului B, care sunt puși ca ieșiri pe LOW vor genera curent în cazul în care rezistențele de pull-up sunt active. Pinii portului B au trei stări declarate atunci când o stare de reset devine activă, chiar dacă clock-ul nu se execută.

În funcție de selecția setărilor de siguranță ale clock-ului, PB6 poate fi folosit ca intrare pentru oscilatorul inversor amplificator și intrare pentru circuitul de operare ceas intern. În cazul în care este folosit oscilatorul RC intern calibrat ca sursă de clock pe cip, PB7 .. 6 este folosit ca TOSC2 .. 1 de intrare pentru Timer/Counter2 asincron dacă bitul AS2 în RSSA este setat.

Port C (PC5: 0)
Portul C este un port bi-direcțional I/O pe 7-biți cu rezistențe pull-up interne (selectate pentru fiecare bit). Ieșirile PC5..0 au caracteristici de acționare simetrice, au proprietatea atât de intrare mare cât și de sursă. Ca intrări, pinii portului C, care sunt puși ca ieșiri pe LOW vor genera curent în cazul în care rezistențele de pull-up sunt active. Pinii portului C au trei stări atunci când o stare de reset devine activă, chiar dacă clock-ul nu se execută.

PC6/RESET
În cazul în care siguranța RSTDISBL este programată, PC6 este folosit ca un pin I/O. Caracteristicile electrice ale pinului PC6 diferă de cele ale restul pinilor portului C. În cazul în care siguranța RSTDISBL este neprogramată, PC6 este folosit ca o intrare de resetare. Un nivel scăzut de pe acest pin pentru o perioada mai mare decât lungimea minimă a impulsului va genera o resetare, chiar dacă clock-ul nu funcționează. Impulsuri scurte nu generează de fiecare dată o resetare.

Port D (PD7: 0)
Port D este un port bi-direcțional de I/O pe 8-biți cu rezistențe pull-up interne (selectate pentru fiecare bit).

[NUME_REDACTAT] D are caracteristici de conducție simetrice atât de intrare cât și de sursă
mare. Ca intrări, pinii Portului D care sunt puși ca ieșiri pe LOW vor genera curent în cazul în care rezistențele pull-up sunt active. [NUME_REDACTAT] D au trei stări atunci când o stare de reset devine activă, chiar dacă clock-ul nu funcționează.
AVCC
AVCC este PIN-ul de tensiune de alimentare pentru convertorul A/D, PC3: 0, și ADC7: 6. Ar trebui să fie în exterior conectat la VCC, chiar dacă ADC nu este folosit. Dacă se utilizează ADC, ar trebui să fie conectat la VCC printr-un filtru trece-jos. De reținut este că pinii PC6..4 utilizeaza surse de tensiune digitale, VCC.

[NUME_REDACTAT] este PIN-ul de referință analogica pentru convertorul A/D.

ADC7: 6 (TQFP și QFN / MLF doar pachetul)
În TQFP și pachetul QFN / MLF, ADC7: 6 servesc ca intrări analogice pentru convertorul A/D.
Acesti pini sunt alimentați de la rețeaua analogică și servesc drept canale ADC de 10-biți.

4) Arhitectura AVR,CPU [NUME_REDACTAT] secțiune discută arhitectura de bază AVR, în general. Funcția principală a nucleului CP este de a asigura executarea corectă a programului.CPU trebuie să aibă , prin urmare, posibilitatea de a accesa amintiri,să efectueze calcule, periferice de control și întreruperi.

În figura de mai jos este prezentată diagrama pentru arhitectura AVR

În scopul de a maximiza performanța, AVR folosește o arhitectură Harvard – cu
memorii separate și magistrale pentru program și date. Instrucțiunile în memoria program sunt
executate cu un singur nivel pipelining. În timp ce o instrucțiune este executată, instrucțiunea următoare este preluată din memoria program. Acest concept permite instrucțiunii care urmează să fie executate în fiecare ciclu de clock. Memoria program este memoria flash reprogramabilă.

[NUME_REDACTAT] File-acces conține 32 x 8-biți de uz general, registre de lucru cu un singur
ciclu de clock de timp de acces. Acest lucru permite un singur ciclu de unitate logică aritmetică (ALU).

Șase dintre cele 32 de registre pot fi folosite pe 16-biți. Unul dintre indicii acestor adrese poate fi, de asemenea, utilizat ca un indicator pentru adresă.

Aceste registre adăuga funcții pe 16-biti X-, Y-și Z-registru, descrise mai târziu în această secțiune.
ALU susține operații aritmetice și logice între registre sau între o constantă și un registru. Operațiuni cu un singur registru pot fi, de asemenea, executate în ALU. După o operație aritmetică, registrul de stare este actualizat pentru a reflecta informații despre rezultatul operației. Debitului de program este oferit de salt condiționat și necondiționat și instrucțiuni de apel, în măsură să adreseze în mod direct întregul spațiu de adrese. Cele mai multe instrucțiuni AVR au un singur format 16-biți de cuvânt. Fiecare adresă de memorie program conține un 16 – sau 32-biți de instrucțiuni. Programul spațial de memorie flash este împărțit în două secțiuni, secțiunea programului de încarcare și secțiunea programului de aplicații. Ambele secțiuni au dedicați biți fixați pentru a scrie și a citi.

În timpul întreruperilor, adresa returnată a [NUME_REDACTAT]-ului (PC) este stocată pe stivă. Stiva este efectiv alocată, în datele generale SRAM, și , în consecință dimensiunea stivei este limitată doar de dimensiunea SRAM totală și utilizarea SRAM. Toate programele utilizatorului trebuie să inițializeze stiva în rutină. Stiva pointer (SP) poate fi citită / scrisă în spațiul de I / O. Datele SRAM pot fi accesate cu ușurință prin cele cinci moduri diferite de adresare acceptate în arhitectura AVR.

Spațiile de memorie în arhitectura AVR sunt toate hărțile liniare și regulate de memorie.

Un modul de întrerupere flexibil are registrele de control în spațiul de I / O cu un [NUME_REDACTAT] Enable bit suplimentar în registrul de stare. Toate întreruperile au o întrerupere Vector separată în tabelul de interrupt vector. Întreruperile au prioritate în conformitate cu poziția lor de întrerupere Vector. Cu cât e mai joasă adresa în interrupt vector, cu atât are mai mare prioritate.

ALU-unitatea logică și aritmetică

Performanța AVR ALU funcționează în legătură directă cu toate cele 32
registre de lucru. În cadrul unui singur ciclu de clock, operațiile aritmetice între registre cu scop general sau între un registru si unul imediat sunt executate. Operațiunile ALU sunt împărțite în trei categorii principale – aritmetice, logice, și funcții de biți. Unele implementări ale arhitecturii oferă, de asemenea, un factor de multiplicare puternic care suportă multiplicarea atât semnată cât și nesemnată și formatul fracțional.

[NUME_REDACTAT]

Registrul de stare conține informații despre rezultatul aritmetic cel mai recent executat
de instrucțiuni. Aceste informații pot fi folosite pentru modificarea fluxului de program, în scopul de a efectua operațiuni condiționate. De reținut este că registrul de stare este actualizat după toate operațiile ALU.

– Bit 7 – I: [NUME_REDACTAT] Global- trebuie să fie setat pentru ca întreruperile să fie active. [NUME_REDACTAT] [NUME_REDACTAT] Register este pus pe 0, niciuna dintre întreruperi nu sunt activate independent de setarea pe 1 a intreruperii individuale. Bitul I este șters de hardware după ce o întrerupere a avut loc, și este stabilită de către instrucțiunea RETI pentru a activa întreruperile ulterioare.

-Bit 6 [NUME_REDACTAT]- Instrucțiunile BLD (LOAD bit) și BST (Store bit) utilizează T-biți ca sursă sau destinație pentru un bit operat.

– Bit 5 – H:[NUME_REDACTAT] Flag – indică o pauză Carry(transport) în unele operații aritmetice. Este util în aritmetica BCD.

– Bit 4 – S: bitul de semn, S = N ⊕ V- S-bit este întotdeauna exclusiv sau între [NUME_REDACTAT] N și 2 complimente [NUME_REDACTAT] V .

– Bit 3 – V: Two’s [NUME_REDACTAT] Flag-susține aritmetica complement.

– Bitul2-N:NegativeFlag
Indica un rezultat negativ la o aritmetică sau o operație logică.

– Bitul 1 – Z: [NUME_REDACTAT]-[NUME_REDACTAT] Z indică un rezultat zero, într-o operație logică sau aritmetică.

– Bitul 0 – C: [NUME_REDACTAT]- Indică o reportare într-o operație aritmetică sau logică.

Regiștrii X,Y și Z

Aceste registre au 16-biți indici adresă pentru abordarea indirectă a spațiului de date.

Stivă([NUME_REDACTAT])

Stiva este folosită în principal pentru stocarea datelor temporare, pentru stocarea variabilelor locale și pentru stocarea revenirilor adreselor după întreruperi și apeluri de subrutină. Stiva este pusă în aplicare de la locații de memorie mai mari în creștere la locații de memorie mai mici. [NUME_REDACTAT] înregistrează întotdeauna în partea de sus a stivei. O comandă PUSH Stivă va scădea [NUME_REDACTAT]. Stiva în SRAM de date trebuie să fie definită de către program înainte de apelul subrutină.

[NUME_REDACTAT] AVR este implementat sub formă a două registre de 8 biți în spațiul de I / O. Numărul de biți utilizați efectiv sunt independenți de implementare. Spațiul de date, în unele implementări de arhitectura AVR este atât de mic încât este nevoie de doar SPL. În acest caz, SPH registrul nu va fi prezent.

5) Memoriile AVR

Această secțiune descrie memoriile diferite ATmega328P. Arhitectura AVR are două locuri principale de memorie, memoria și spațiul de memorie program. În plus, ATmega328P dispune de o memorie EEPROM pentru stocarea de date. Toate cele trei spații de memorie sunt liniare și regulate.

EEPROM memoria de date

Microcontrolerul conține 1000 octeți de date de memorie EEPROM.
Acesta este organizat ca un spațiu separat de date, în octeții unici care pot fi citiți și scriși. EEPROM are o rezistență de cel puțin 100.000 cicluri de scriere / ștergere. Accesul între EEPROM și CPU este descris în cele ce urmează, precizând EEPROM [NUME_REDACTAT], EEPROM [NUME_REDACTAT], și EEPROM [NUME_REDACTAT]. Registrele EEPROM de acces sunt accesibile în spațiul de I / O. Atunci când este puternic filtrat VCC este probabil să crească sau să scadă.

În scopul de a preveni scrierea neintenționată a EEPROM-ului, o procedură specifică de scriere trebuie să fie urmată. Când EEPROM este citit, CPU este oprit pentru patru cicluri de clock înainte de următoarea instrucțiune executată. Când EEPROM este scris, CPU este oprit pentru două cicluri de clock înainte de următoarea instrucțiune executată.

[NUME_REDACTAT] EEPROM

În timpul perioadelor în care tensiunea VCC este căzută, datele EEPROM pot fi corupte, deoarece tensiunea de alimentare este prea mică pentru CPU și EEPROM să funcționeze corespunzător.
Corupția unui EEPROM de date poate fi cauzată de două situații atunci când tensiunea este prea mică. În primul rând, o secvență de scriere regulat pentru a EEPROM necesită o tensiune minimă pentru a funcționa corect. În al doilea rând, CPU poate executa instrucțiuni incorect, în cazul în care tensiunea de alimentare este prea mică.
Corupția EEPROM de date poate fi ușor evitată prin urmare a acestei recomandări de proiectare:păstrați RESET AVR activă (scăzut) în timpul perioadelor de tensiune de alimentare insuficiente.

[NUME_REDACTAT]/[NUME_REDACTAT]/Output și perifericele sunt plasate în spațiul de I / O. Toate locațiile input/output pot fi accesate de către LD / LDS / LDD și ST / STS / instrucțiuni de STD, care transferă date între cele 32 de registre de uz general. Pentru compatibilitatea cu dispozitivele viitoare, biții rezervați ar trebui să fie scrise la zero, dacă sunt accesați.
Unele dintre steagurile de stare sunt eliminate prin scrierea logică pentru ei. Spre deosebire de cele mai multe AVR, instrucțiunea CBI și instrucțiunea SBI vor funcționa numai pe biții specificați și pot, prin urmare, să fie utilizați pe registre care conțin astfel de steaguri. Instrucțiunile CBI și SBI lucrează cu registre.

6) [NUME_REDACTAT] și [NUME_REDACTAT]

În figura de mai jos se prezintă principalele sisteme clock în AVR și distribuția lor. Toate clock-urile nu trebuie să fie active la un moment.

Figura.5

Oscilatorul cu cristal și energie redusă

Pinii XTAL1 și XTAL2 sunt de intrare și de ieșire, respectiv, a unui amplificator inversor, care poate fi configurat pentru utilizare ca un oscilator on-chip. Poate fi folosit fie un cuarț cristal sau un rezonator. Acest oscilator este un oscilator de putere mică, cu leagăn de tensiune redusă pe ieșire XTAL2. Acesta oferă cel mai mic consum de energie, dar nu este capabil de a conduce alte intrări de clock, și pote fi mai sensibil la zgomot în medii zgomotoase. Valorile lui C1 și C2 trebuie să fie întotdeauna egale atât pentru cristale și rezonatoare. Valoarea optimă a condensato-rilor depinde de cristal sau rezonator în uz, cantitatea de capacitățile parazite, și zgomot electro-magnetic al mediului.

7) [NUME_REDACTAT] și modurile sleep

[NUME_REDACTAT] permite închiderea modulelor neutilizate în MCU, economisind astfel
putere. AVR oferă diferite moduri de sleep care permit utilizatorului să adapteze consumul de energie la cerințele aplicației.

Când este activată, [NUME_REDACTAT]-out (BOD) monitorizează activ tensiunea sursei de alimentare în timpul perioadei de somn. Pentru a economisi în continuare puterea, este posibil să dezactivați CBO în unele moduri de somn. Pentru a economisi energie, BOD se dezactivează, prin software-ul pentru unele dintre modurile de somn.

În modul sleep consumul de energie va fi apoi la același nivel ca și atunci când este BOD la nivel global dezactivat de siguranțe. În cazul în care CBO este dezactivată, funcția de CBO este oprită imediat după intrarea în modul sleep. La trezire din somn, CBO este activat automat din nou.
Acest lucru asigură funcționarea în condiții de siguranță, în cazul în care nivelul VCC a scăzut în cursul perioadei de somn.

Modul inactiv permite MCU să se trezească la întreruperile externe care s-au declanșat, precum și interne cele, cum ar fi depășirea timer-ului și USART Transmit întreruperi complete. Dacă trezire din întrerupere comparator analogic, nu este necesară, comparatorul analogic poate fi oprit de la setarea bit ACD în control comparator analogic și registrul de stare – ACSR. Acest lucru va reduce consumul de energie în modul Repaus. În cazul în care ADC este activat, o conversie începe automat atunci când acest mod este înscris.

Modul de reducere a zgomotului(ADC [NUME_REDACTAT] Mode).Acest lucru îmbunătățește mediul de zgomot pentru ADC, care permite măsurători de rezoluție mai mare. Dacă ADC este activat, o conversie începe automat atunci când acest mod este înscris.

8) [NUME_REDACTAT]/[NUME_REDACTAT] porturile AVR au funcționalitate când se utilizează ca porturi digitale I / O.
Acest lucru înseamnă că direcția de pini poate fi schimbată fără a schimba în mod neintenționat direcția de orice alt pini cu SBI și instrucțiunile CBI.Același lucru este valabil atunci când se schimbă valoare (dacă a fost configurată ca o producție) sau activarea / dezactivarea de pull-up. PIN-ul este suficient de puternic pentru a conduce afișaje cu LED direct. Toți pinii portului au în mod individual selectați rezistori pull-up, cu o rezistență de alimentare de tensiune invariantă.

Configurarea pinilor se face astfel:

Fiecare pin conține 3 biți: DDxn, PORTxn, și PINxn. Așa cum se arată în "[NUME_REDACTAT] ", biții DDxn sunt accesate la adresa DDRx, biții PORTxn la adresa PORTx ,precum și biți PINxn la adresa PINx .

În cazul în care este scris în PORTxn unu logic atunci când pinul este configurat ca un pin de intrare, rezistorul pull-up este activat. Pentru a comuta rezistor pull-up off, PORTxn trebuie să fie scris la zero logic sau pinul trebuie să fi configurat ca un pin de ieșire. Pinii portului au tri declarati atunci când condiția de resetare devine activă.

[NUME_REDACTAT] se face astfel:

Scrierea unui unu logic la adresa PINxn comută valoarea PORTxn, independent de valoarea DDRxn. Instrucțiunea SBI poate fi folosită pentru a comuta într-un port.

Comutarea între intrare și ieșire:

Când se face trecerea între cele trei stări ({DDxn, PORTxn} = 0b00) de ieșire mare ({DDxn, PORTxn}= 0b11), o stare intermediară, fie cu pull-up activat {DDxn, PORTxn} = 0b01) sau de ieșire scăzută ({DDxn, PORTxn} = 0b10) trebuie să aibă loc. Dacă unii pini sunt neutilizați, se recomandă să se asigure că aceste pini au un nivel definit.Chiar dacă cele mai multe dintre intrările digitale sunt dezactivate în modurile de somn profund așa cum este descris mai sus, intrările float ING ar trebui evitate pentru a reduce consumul de curent în toate celelalte moduri în care intrările digitale sunt activate (Reset, modul activ și modul Repaus).

Cea mai simplă metodă de a asigura un nivel definit unui pin neutilizat, este de a permite pull-up-ul intern.În acest caz, pull-up va fi dezactivat în timpul de resetare. În cazul în care consumul de energie redus în timpul de resetare este important, este recomandat să utilizați pull-up sau pull-down. Conectarea pinilor neutilizați direct la VCC sau GND nu este recomandată, deoarece acest lucru poate cauza curenți excesivi, dacă pinul e configurat accidental ca o ieșire.

9) [NUME_REDACTAT]

Comparatorul analogic, compară valorile de intrare pe pinul pozitiv AIN0 și pinul negativ AIN1. Atunci când tensiunea pe PIN-ul AIN0 este mai mare decât tensiunea de pe pinul AIN1, comparatorul analogic de ieșire, ACO, este setat. Comparatorul de ieșire poate fi setat pentru a declanșa funcția de Timer/Counter. În plus, compararea poate declanșa o întrerupere separat, exclusiv la comparatorul analogic. O schemă bloc de comparație și logica sa înconjurătoare este indicată în figura de mai jos

Este posibil să selectați oricare dintre pinii ADC7…0 pentru a înlocui intrarea negativă a comparatorului analogic. ADC multiplexor este folosit pentru a selecta această intrare, și, în consecință, trebuie pus pe 0 ADC pentru a utiliza această caracteristică. Dacă este setat bitul de analog comparator permite multiplexorului (ACME în ADCSRB) și ADC este oprit (ADEN în ADCSRA este zero), MUX2…0 în ADMUX selectați PIN-ul ca intrare pentru a înlocui intrarea negativă a comparatorului analogic. Dacă ACME este deselectată sau ADEN este stabilit, AIN1 se aplică ca intrare negativă a comparatorului analogic.

Comparatorul analog și [NUME_REDACTAT]

Descrierea biților din registru Status:

-Bitul 7(ACD) dezactivează comparatorul analog-Când acest bit este scris unu logic, comparatorul analogic este oprit. Acest bit poate fi setat în orice moment pentru a opri comparatorul analogic. Acest lucru va reduce consumul de energie în modul activ și inactiv.

-Bitul 6(ACBG) [NUME_REDACTAT] cu separație energetică între două benzi-Când acest bit este setat, o tensiune de referință fixǎ dintre benzile de separare energetice înlocuiește pinul pozitiv de intrare la comparatorul analogic. Când acest bit este deselectat, este aplicat la intrarea pozitivă a lui AIN0 a comparatorului analogic.

-Bitul 5 (ACO)- Ieșirea comparatorului analogic-pe acest pin comparatorul analogic este sincronizat și apoi conectat direct la ACO. Sincronizarea introduce o întârziere de 1-2 cicluri de ceas.

-Bitul 4 (ACI) Flag-ul de intrerupere- Acest bit este setat de hardware-ul atunci când un eveniment declanșează o întrerupere pe comparatorul de ieșire în modurile de întrerupere definite de ACIS1 și ACIS0.

-Bitul 3(ACIE) Interrupt enable(permite întreruperea)-atunci când ACIE este unu logic și bitul I din registrul status este setat întreruperea este activată. Când este zero logic întreruparea este dezactivată.

-Bitul 2(ACIC) Input capture enable-Când este unu logic, acest bit permite funcția de captură de intrare în Timer/Counter1 pentru a fi declanșată de Comparatorul analogic. Comparatorul de ieșire în acest caz este conectat direct la logica front-end a capturii de intrare, făcând comparație între zgomot și marginea selectată a caracteristici de întrerupere Timer/Counter1 Input captura. Când este zero logic, nu există nici o legătură între comparatorul analogic și funcția capture.

-Bitul 1,0(ACIS1,ACIS0) [NUME_REDACTAT] Select-Aceste biți determină care evenimente de comparație declanșează întrerupere pe comparatorul analogic.

10) [NUME_REDACTAT]-Digital

ATmega328P dispune de o aproximare de 10-biți succesivi ADC. ADC este conectat la 8 canale analogice. Multiplexarea permite intrărilor pe soclul unic tensiune construită la pinii de pe Port A. Tensiunea de soclu unic se referă la 0V (GND).

ADC conține un circuit de probă care asigură că tensiunile de intrare a ADC sunt păstrate la un nivel constant în timpul conversiei. ADC are un pin de tensiune de alimentare distinct analogic, cca. CCA nu trebuie să difere cu mai mult de ±0.3V de VCC. Tensiuni interne de referință nominal 1.1V sau cca sunt furnizate pe cip. Referința de tensiune externă poate fi decuplatǎ de la un condensator pentru zgomot mai bun.

ADC convertește o tensiune de intrare analogică la o valoare de 10 biți digitală prin apropierea succesivă.

Valoare minimă reprezintă GND și valoarea maximă reprezintă tensiunea pe pinul1 LSB. Opțional, cca sau unei 1.1V interne de referință de tensiune poate fi conectat la pinul REFSn în registrul de ADMUX. Referința internă de tensiune poate fi astfel decuplatǎ de un condensator extern la PIN-ul pentru a îmbunătăți imunitatea la zgomot.

După ce este citit ADCL, ADC accesul la registrele de date este blocat. Acest lucru înseamnă că, dacă ADCL a fost citit, și o conversie completează înainte de ADCH, canalul de intrare analogic este selectat pentru scris pentru a muta MUX în ADMUX. Oricare dintre pinii de intrare ADC, precum și GND și o referință de tensiune de bandgap fix, pot fi selectate. Tensiunile de intrare de referință și selecțiile de canal nu vor intra în vigoare până când nu este setat ADEN. ADC nu consumă puterea la neselectarea lui ADEN, deci este recomandat să opriți ADC înainte de a intra în modurile de somn pentru a economisi energie. ADC generează un rezultat de 10 biți care este prezentat în registrele de date ADC, ADCH și ADCL. În mod implicit, rezultatul este prezentat drept ajustat, dar opțional pot fi prezentate prin setarea ADLAR bit în ADMUX. În cazul în care rezultatul este ajustat și trebuie cel mult 8-biți de precizie, este suficientă pentru a citi ADCH. În caz contrar, ADCL trebuie să fi citit în primul rând, apoi ADCH, pentru a se asigura că conținutul de registre de date aparține de aceeași conversie.

Diagrama bloc a [NUME_REDACTAT] –[NUME_REDACTAT] Registrului ADMUX([NUME_REDACTAT])

-Bitul 7,6 (REFS1:0)-[NUME_REDACTAT] Bits(selecție biți de referințǎ)

-Bitul 5 (ADLAR) -ADC [NUME_REDACTAT] Result(ajustare în stânga a rezultatului)

-Bitul 4 [NUME_REDACTAT](bit rezervat)

Bitul 3:0 (MUX3:0)- [NUME_REDACTAT] [NUME_REDACTAT](canal analogic pentru selectarea biților).

11) Memoria de programare

ATmega328P oferă șase biți de blocare, care pot fi lăsați neprogramați ("1") sau pot fi programați ("0") pentru a obține caracteristici suplimentare. Blocarea biților pot fi șterse numai la "1" logic cu cip de șterge.

Parametrii de programare paralelă.

Această secțiune descrie cum se programează paralel și se verificǎ memoria Flash, memoria EEPROM, memoria pentru blocarea biților. Impulsurile sunt presupuse a fi cel puțin 250 ns excepția cazului în care se menționează altfel.

Unii pini de pe ATmega328P sunt referințe de semnal în timpul programării paralele. Pinii XA1/XA0 determină acțiunea atunci când pe pinul XTAL1 este dat un impuls pozitiv. Când pulsează WR sau OE, comanda încărcata determină acțiunea executată.

Introducerea modului de programare paralelă:

Următorul algoritm pune dispozitivul în modul de programare paralelă (înaltă tensiune):

1. Set Prog_enable PIN resetează pinii la 0V și VCC la 0V.

2. Aplicați 4.5 – 5.5V între VCC și GND. Se asigură că VCC atinge cel puțin 8V în următorii 20 μs.

3. Așteptați μs 20-60, și se aplică 11.5 – 12.5V la resetare.

4. Să păstreze Prog_enable PIN neschimbat pentru cel puțin 10μs după ce s-a aplicat voltajul mare pentru a asigura Prog_enable a fost fixat.

5. Așteptați cel puțin 300 μs înainte de a da orice comandă de programare paralelă.

6. Ieșiți din modul de programare și se reseteazsǎ aducând pinul la 0V.

Ștergerea cipului va șterge dispozitivul Flash EEPROM de memorie. Biții blocați nu sunt resetați până când memoria program a fost complet ștersǎ. Biți de siguranță nu sunt modificați. Ștergerea unui cip trebuie să fie efectuaǎ înainte ca memoriile Flash și/sau EEPROM să fie reprogramate.

1. Memoria EEPRPOM este păstrată în cip în timpul ștergerii dacă EESAVE Fuse este programat.

Comanda "[NUME_REDACTAT]" de încărcare 1 setați XA1, XA0 "10". Acest lucru permite comanda de încărcare.

2.Se stabilește BS1 la "0"logic.

3. Setați datele "1000 0000". Aceasta este comanda pentru ștergere cip.

4. Dă XTAL1 un impuls pozitiv. Aceasta încarcă comanda.

5. Dă WR un puls negativ. Acest lucru începe ștergerea cipului. RDY/BSY merge scăzut.

6. Așteptați până când RDY/BSY merge înainte de a încărca o nouă comandă.

Programarea memoriei [NUME_REDACTAT] când se programează memoria Flash, programul de date este fixat într-un tampon de filme. Acest lucru permite o pagină program de date pentru a fi programate simultan. Următoarea procedură descrie cum să programez întreaga memorie Flash:

A. Comanda de începere: "scrie Flash"

1. Setați XA1, XA0 "10". Acest lucru permite comanda pentru încărcare.

2. Stabilite BS1 la "0"logic.

3. Setați datele "0001 0000". Acest l este comanda pentru a scrie Flash.

4. XTAL1 este un impuls pozitiv. Acesta încarcă comanda.

B. Sarcina adresa Low octet

1. Setați XA1, XA0 "00". Aceast permite adresa de încărcare.

2. Stabilite BS1 la "0". Acesta selectează adresa .

3. Setați datele = adresa octet Low (0x00 – 0xFF).

4. XTAL1 este un impuls pozitiv. Aceasta încarcă octetul la adresa .

C. Încarcă bitul [NUME_REDACTAT]

1. Setați XA1, XA0 la "01". Acesta permite încărcarea de date.

2. Setați datele = date octet Low (0x00 – 0xFF).

3. XTAL1este un impuls pozitiv. Aceasta încarcă octeți de date.

D. se încarcă bytul [NUME_REDACTAT]

1. Stabilite BS1 la "1".

2. Setați XA1, XA0 la "01". Acesta permite încărcarea de date.

3. Setați datele = date octet High(0x00 – 0xFF).

4. XTAL1este un impuls pozitiv. Aceasta încarcă octeți de date.

Programarea memoriei EEPROM

EEPROM este organizată în pagini. Atunci când se programează memoria EEPROM, programul de date este fixat într-un tampon de filme. Acest lucru permite o singură pagină de date pentru a fi programate simultan. Algoritmul de programare pentru memorie EEPROM este după cum urmează):

1. A: Încarca virgulă "0001 0001".

2. G: Încarca octetul High la adresa: (0x00 – 0xFF).

3. B: Încarca octetul Low la adresa: (0x00 – 0xFF).

4. C: Încărcǎ date la adresa (0x00 – 0xFF).

Formele de undă a memoriei EEPROM

12) Controlul PWM

[NUME_REDACTAT] Modulation, sau PWM, este o tehnică pentru obținerea de rezultate analogice cu mijloace digitale. Control digital este folosit pentru a crea un semnal pătrat, un semnal modificat între pornit și oprit. Acest tipar pornit-oprit poate simula tensiuni între complet pornit (5 volti) si oprit (0 volți) prin schimbarea raportului dintre perioada în care semnalul stă pe HIGH și perioada în care semnalul stă pe LOW. Durata "pornit" se numește durata impulsului. Pentru a obține diferite valori analogice, trebuie schimbată, sau modulată, lățimea impulsului. Dacă repetați aceast tipar pornit-oprit suficient de rapid cu un LED de exemplu, rezultatul este ca în cazul în care semnalul este o tensiune constantă între 0 și 5V care controlează luminozitatea LED-ului.

În graficul de mai jos, liniile verzi reprezintă o perioadă de timp regulată. Această durată sau perioadă este inversul frecvenței PWM. Cu alte cuvinte, cu frecvența PWM-ului la aproximativ 500Hz, liniile verzi ar măsura 2 milisecunde fiecare. Un apel la analogWrite () este pe o scară de la 0 la 255, astfel încât analogWrite (255) solicită un ciclu de 100% (mereu pornit), și analogWrite (127) este un factor de umplere de 50% (la jumătate din timp).

Funcția analogWrite()

Scrie o valoare analogică (semnal PWM) la un pin. Poate fi folosit pentru a aprinde un LED la străluciri diferite sau conduce un motor la viteze diferite. După un apel la analogWrite (), PIN-ul va genera un semnal pătrat constant de ciclul de lucru specificat până la următorul apel la analogWrite () (sau un apel la digitalRead () sau digitalWrite () de pe același cod PIN). Frecvența semnalului PWM pe cele mai multi pini este de aproximativ 490 Hz.

Această funcție funcționează pe pinii 3, 5, 6, 9, 10, și 11 la acest micocontroller.
Funcția analogWrite nu are nimic de-a face cu pinii analogici sau funcția analogRead.

Sintaxă
analogWrite (pin, valoare)
Parametrii
PIN: PIN-ul pentru a scrie.
Valoarea: ciclul de funcționare: între 0 (întotdeauna oprit) și 255 (întotdeauna pornit).
Valoare returnata
Void( nimic)

IV. [NUME_REDACTAT] (elementul sensibil) detector sau captor, este elementul specific fiecărui traductor și are funcția de a detecta mîrimea fizicî ce trebuie măsurată. Senzorul detectează doar mărimea de intrare X, eliminând sau reducând la minim influențele celorlalte mărimi fizice existente în mediul respectiv. Sub acțiunea mărimii de intrare are loc o modificare de stare a elementului sensibil, modificare ce se manifestă sub forma unui semnal electric la ieșirea senzorului.

SCHEMA BLOC A UNUI TRADUCTOR ELECTRONIC

Traductoarele se clasifică după urmatoarele criterii:

1. După natura mărimii fizice neelectrice de intrare:

– traductoare pentru semnale radiante, termice, chimice, mecanice, magnetice, etc.

2. După modul în care se face transformarea semnalului:

– traductoare directe și complexe.

3. După principiul de funcționare:

– traductoare parametrice (modulatoare) și

– traductoare energetice (generatoare).

4. După forma semnalului electric de ieșire:

– traductoare analogice și

– traductoare numerice.

În acest proiect am folosit următorii senzori :

Senzor de temperatură

Senzor de umiditate

1)Senzorul de temperatură

[NUME_REDACTAT] de temperatură se împart în două tipuri:

1. cu contact cu obiectul de măsurat

2. fără contact cu obiectul de măsurat

1.Senzorii cu contact cu obiectul de măsurat se împart în alte categorii:

a) cu senzori neelectrici:-bazate pe dilatarea solidelor, lichidelor sau gazelor;

-cu senzori chimici la care orice dilatare poate fi preluată de un sensor de deplasare, realizându-se astfel un termometru bazat pe dilatare.

b) cu senzori electrici:termorezistoare , termocupluri, joncțiuni p-n.

Atunci când se folosesc senzori fără contact cu obiectul de măsurat deoarece nu este posibil (temperaturi înalte sau punctul de măsurare nu este accesibil), pentru măsurarea temperaturii se utilizează pirometre, senzori cu fibră optică.

Adaptorul electronic folosit trebuie poziționat, lângă punctul de măsurare, pentru a preveni degradarea semnalului datorită erorilor introduse de diferențele de temperatură.

Tensiunile furnizate de termocupluri sau adaptoarele electronice ale termorezistoarelor și termistoarelor au nivel mic și sunt supuse la zgomot. Unitățile de condiționare folosite asigură atât filtrarea trece jos, pentru eliminarea zgomotelor de înaltă frecvențǎ, cât și izolarea electrică, pentru eliminarea buclelor de masă.

Un traductor cu intrări și ieșiri numerice, datele numerice reprezintă temperaturi care sunt

transmise spre un microcontroller printr-o magistrală serie. Pe aceeași magistrală sunt transmise și datele de la microcontroller la traductor pentru a stabili limita de temperaturǎ la care o ieșire numerică de la traductor va întrerupe microcontroller-ul.

Traductoarele din a treia clasă au diverse tipuri de ieșiri numerice pe o singură linie. A patra clasă de traductoare de temperatură, pentru monitorizarea proceselor, în plus fațǎ de facilitățile celor cu intrări și ieșiri numerice, monitorizează tensiunile de alimentare ale sistemului.

1.2 Senzori de temperatură cu termorezistoare

Acești senzori de temperatură cu termorezistoare funcționează pe baza creșterii rezistivității odată cu creșterea temperaturii. La folosirea termorezistoarelor se folosește material precum platina(-200,+800C), nichelul(-60,+150C) și cuprul(-50,+150C).

Platina este cel mai folosit material deoarece are o gamă mare de temperatură și stabilitate la agenții chimici de coroziune.

Termorezistoarele d.p.d.v constructivi sunt: – cu teacă de protecție

– fără teacă de protecție

Pentru a realiza legăturile electrice se folosesc două sau trei fire la scheme de măsurare wheatstone. Varianta cu două fire de legătură este destinată aplicatiilor în care termorezistorul este conectat direct la schema de măsurare. Când distanța crește se folosesc trei fire pentru conectare.

Termorezistoarele bobinate au o înfășurare plană sau cilindrică pe suport izolat din mică sau ceramic. În interiorul carcasei se introduce praf de ceramic de mare puritate iar conexiunile de legătură sunt scoase printr-un izolator de ceramic.

Avantajele termorezistoarelor sunt:

-repetabilitate și stabilitate;

-sensibilitate mai mare decât la termocupluri;

-flexibilitate;

-folosesc fire de legătură de Cu și nu necesită compensări suplimentare.

1.3 Senzorul de temperatură Lm50

[NUME_REDACTAT] continuare vom prezenta senzorul de temperatură Lm50. Acest sensor este fabricat de cei de la [NUME_REDACTAT]. Este un circuit integrat care măsoară temperatura în grade Celsius. Plaja de măsură este cuprinsǎ între valorile -40 grade Celsius și +125 grade Celsius utilizând o singură sursă de alimentare pozitivă. Tensiunea de ieșire a senzorului este liniar proporționala cu temperatura(+10mV/gradC) și are un curent de offset de +500mV. Offsetul citește temperatura negativă fără a avea nevoie de o sursă negativă de alimentare. Tensiunea ideală de ieșire a lui Lm50 este de la +100mV la +1.75V pentru -40grade C la 125 grade C. Acest senzor nu necesită o calibrare externă. Ieșirea liniarǎ, offsetul de +500mV și factorul de calibrare simplificǎ circuitele necesare într-un singur mediu de aprovizionare unde citirea temperaturilor negative este cerută. Deoarece curentul este mai mic de 130 μA, auto-încălzirea este limitată la o temperatură foarte scăzută de 0.2 grade C în aer.

Caracterictici

-este calibrat direct în grade Celsius;

-factor de scală liniar +10mV/grad C;

-acuratețe de ±2°C la +25grade C;

-Potrivit pentru aplicații de la distanțǎ;

-operațional de la 4.5V la 10V;

-curentul de drenă mai puțin de 130μA;

[NUME_REDACTAT], LM50 poate fi montat în interiorul un tub metallic care poate fi înmuiat în baie sau înșurubat într-o gaură filetată într-un rezervor. Circuitele de însoțire trebuie păstrate izolate și uscate, pentru a evita scurgerile și coroziunea. Acest lucru este valabil mai ales în cazul în care poate apărea condensul. Circuit imprimat este acoperit cu vopsea, acesta fiind folosită pentru a se asigura că umezeala nu poate coroda LM50 sau conexiunile sale. LM50 poate fi aplicat cu ușurință în același mod ca și ceilalți senzori de temperatură de circuite integrate. Poate fi lipit sau cimentat pe o suprafață.

Acest lucru presupune că temperatura aerului ambiant este aproape la fel ca temperatura de suprafață. Dacă temperatura aerului ar fi mult mai mare sau mai mică decât temperatura de suprafață, temperatura reală ar fi la o temperatură intermediară între temperatura suprafeței și temperatura aerului.

Pentru a asigura buna conductivitate termică partea din spate a LM50 este atașat direct la PIN-ul GND.

În figura de mai jos este prezentat senzorul Lm50 cu filtru pentru mediul zgomotos:

LM50 are o impedanță de ieșire 2 kΩ nominală. Coeficientul de temperatură al rezistenței de ieșire este în jur de 1300 ppm / ° C. Luând în considerare acest coeficient de temperatură și toleranța inițială la impentanța de ieșire, LM50 nu va depăși 4 kΩ. Într-un mediu extrem de zgomotos, sunt necesare filtre pentru a minimiza zgomotul pickup. Se observă că 0.1 μF se adaugă de la VIN la masă. Într-un mediu zgomotos, poate fi necesar să adăugați un condensator de ieșire la sol. Un condensator de ieșire de 1μF cu 4 kΩ impedanța de ieșire va forma un filtru trece jos de 40 Hz. Deoarece constanta termică de timp a LM50 este mult mai lentă decât constanta de timp de 25 ms format de RC, timpii de răspuns global de LM50 nu vor fi afectați în mod semnificat.

Diagrama bloc a senzorului Lm50:

2)Senzorul de umiditate

2.1 [NUME_REDACTAT] este volumul de apă dintr-un material solid, lichid sau gazos. La materialele lichide sau solide umiditatea se exprimǎ relativ, iar măsurarea ei se face cu instrumente numite umidimetre. Măsurarea umidității gazelor se realizează cu instrumente denumite higrometre.

Umidimetrele electronice se pot clasifica în:

-umidimetre bazate pe măsurarea caracteristicilor electrrice ale corpurilor, în funcție de conținutul lor de apă.

-umidimetre în infraroșu, bazate pe absorbția relativă a energiei infraroșii de către corpurile umede.

În cazul lichidelor sau pulberelor, permitivitatea dielectrică depinde liniar de concentrația volumului de apă.

Umiditatea gazelor se determinǎ prin măsurarea permitivității dielectrice, prin variația de rezistențǎ sau capacitate electrică a senzorului datorită absorbției apei din gaz.

2.2 Senzori pentru măsurarea umidității gazelor

Instrumentele de măsurare a umidității se calibrează folosind următoarele standarde:

primare,de transfer și dispositive secundare.

Standarde primare de umiditate:

Instrumentul standard folosit la laboratoarele calibrate naționale este higrometrul gravimetric.

Acest instrument cântărește o cantitate de gaz uscat și o compara cu cantitaea gazului de test. Se determină mai întâi cantitatea de apă și apoi presiunea vaporilor. La nivelele scăzute de umiditate, dispozitivul are nevoie de mai multe ore de funcționare pentru a obține un eștantion bun. La nivelele mai scăzute de umiditate mai slabă se folosesc ca standarede primare generatoare cu două presiuni și generatoare cu două temperaturi.

b) Standarde de transfer de umiditate se bazează pe principii fundamentale și au rezultate bune, stabile și repetabile. Ca standard de transfer se folosesc:

– Higrometrul cu oglinda răcită, care se află în contact cu debitul de gaz care trebuie monitorizat.

-Higrometrul electrolitic-folosește principiile electrolizei lui Faraday pentru a determina cantitatea de umezeală dintr-un debit de gaz.

-Psihrometrul-diferența de temperatură se măsoară cu doi senzori de temperatură: unul uscat și unul umed, expuși simultan la un jet de gaz umed.

c) Standardele secundare de umiditate nu sunt instrumente fundamentale și trebuie calibrate de fiecare dată. Ele sunt rar folosite pentru calibrări de laborator, dar au aplicații în industrie și monitorizarea clădirilor.

Un senyor secundar măsoară vibrațiile din propriile caracteristici ca rezultat al expunerii la un fenomen sau proprietate. Senzorii secundari răspund la umiditatea relativă sau la cea absolută prin detectarea:-variației de lungime a unui material

-variației de greutate

-variației de impendanță sau capacitate

Umiditatea relativă(RH) este raportul dintre presiunea vaporilor de apă și presiunea vaporilor saturați.

Higrometrele cu variația impendanței sunt realizate în trei variante:ceramic, cu oxid de aluminiu,cu oxid de siliciu, care se bazează pe variația unei mărimi electrice a unui strat poros. Calibrate și folosite corect aceste dispozitive asigură funcționarea continuă bună.

Senzorii pentru umiditate relativă cu strat din polimer cu dielectric din higroscopic și au răspuns electric corespunzător umidității relative. Au preț scăzut, dar aplicațiile limitate datorită variabilelor multiple (temperatură,presiune,etc.)

Senzorii capacitivi sunt utilizați pentru determinarea sau măsurarea umidității relative (RH [%]).

Senzorul de umiditate Brick (SYH-2R)

Descriere generală

Senzorul SHY-2R este un senzor capacitiv de umiditate, proiectat pentru măsurarea umidității relative.
Are o mare sensibilitate și liniaritate, dimensiune mică, histerezis mic și gamă largă de funcționare. Potrivit pentru umidificatoare de aer și uscătoare, sisteme de ventilație și aer condiționat, purificatoare de aer, incubatoare, sere, vehicule, etc.

Acest senzor este compus dintr-o peliculă de polimer, care este elementul sensibil, unde absoarbe sau degajă vaporii de apă din sau în aerul înconjurător, după cum umiditatea relativă ambiantă crește sau scade.

Senzorul de umiditate este o componentă care sesizează nivelul de umiditate al mediului. Într-o cameră obișnuită, valoarea citită pe portul analogic variază între 900  (mediu saturat cu vapori de apă ) și 300 (foarte uscat). Pinul de semnal (stânga) se conectează la un pin analogic al Arduino. Acest senzor nu este calibrat (în sensul că nu obțineți direct o valoare a umidității relative exprimate în procente), ci dvs. trebuie să interpretați datele citite conform caracteristicii din datasheet-ul asociat. În schimb, valoarea citită indică gradul de umiditate din mediu (în sensul că la valoarea "X" citită întotdeauna în aer se afla aceeași cantatitate de umiditate, indiferent de momentul citirii.

[NUME_REDACTAT] (SYH-2). Acest sensor este foarte important deoarece, factorul de umiditate este important pentru comfortul personal dar și pentru calitatea controlului pentru material, mașini industriale, etc.

[NUME_REDACTAT] de tensiune AC 1VRMS;

Rata de putere AC 0.22mV;

Temperatura de operare 0-60 grade Celsius;

Uniditatea de operare 20-95%RH;

Timpul de răspuns <60 sec.(40-80%RH);

Caracteristicele standard 33kΩ(la 25 grade Celsius,60%RH);

Contraindicații:

– În cazul în care există un condens pe senzorul de umiditate de suprafață peste 6 ore, membrane din polimer a senzorului se pot dilua.

-În cazul în care senzorul de umiditate se înmoaie în materialul de lichid (solventul.. etc) peste 30 min, membrane din polimer a senzorului poate să se topească în solvent10-4. Prin urmare, dacă senzorul de umiditate este expus atmosferei ionice (aer Sărat, anionici ionizatorul de apă.. etc) pentru o perioadă lungă de timp, poate schimba caracteristicile de rezistență.

V. Afișajul LCD Hitachi HD44780

Caracteristici

-număr de caractere:32(16×2);

-mărimea punctului:0.55×0.65mm;

-mărime caractere:2.95×5.95;

-controler: HD44780;

-dimensiuni: 80mm x ;36mm;

-culoare caractere: negru;

-culoare background: verde;

1) Descriere generală

Display-ul LCD este construit dintr-un controler LSI, operatorul are două registre de 8 biți, un registru de instruire (IR) și o dată de înregistrare (DR). Registrul de instruire IR, conține coduri de instruire, precum afișaj clar și trecerea cursorului, și adresa de informații pentru afișarea de date RAM (DDRAM) și generator de caracter (CGRAM). IR poate fi scris numai la MPU. DR stochează temporar date pentru a fi scris sau de a citi la DDRAM sau CGRAM. În cazul în care adresa de informații este scris în IR, date este stocată în DR DDRAM sau CGRAM. De către registrul selectorul (RS), aceste două registre pot fi selectate.

Poziția de afișare DDRAM adresa

2) Interfața pinilor

PIN SIMBOL NIVEL DESCRIERE

1 Vss 0V Ground(masa)

2 Vdd 5V Tensiunea de alimentare

3 VO [NUME_REDACTAT] contrast

4 RS H /L H:date;L:instrucțiune cod

5 R/W H/L H:Read;L:Write

6 E H,H-L Cipul permite semnal

7 DB0 H/L Magistrala de date

8 DB1 H/L Magistrala de date

9 DB2 H/L Magistrala de date

10 DB3 H/L Magistrala de date

11 DB4 H/L Magistrala de date

12 DB5 H/L Magistrala de date

13 DB6 H/L Magistrala de date

14 DB7 H/L Magistrala de date

15 A –– LED+

16 K –– LED–

3)Inițializarea pe 4 biți și pe 8 biți

VI. Descrierea funcționării circuitului

Acest circuit electric este folosit pentru controlul automat și manual al unui aer condiționat. În zilele călduroase de vară un aparat pentru răcirea locuinței sau a oricărei încăperi este de mare folos. Totodată este foarte folosit în companii, unde angajaților le trebuie un mediu ambiant plăcut pentru a da randament maxim, sau în fabrici unde anumite componente trebuie răcite pentru a funcționa corect și chiar pentru a se evita riscul unei supraîncălziri ce ar putea duce la reacții nedorite.

Circuitul electric este format din mai multe componente electronice: o plăcuță de dezvoltare [NUME_REDACTAT] cu microcontroler (ATMega328P), un senzor de temperatură Brick (LM50), un senzor de umiditate Brick (SYH-2R), un LCD pe care se face afișarea, un tranzistor TBJ, un motor de curent continuu, două componente pasive și anume două potențiometre cu valoarea de 10kΩ, un breadboard cu care se realizează conexiunea între componente și patru butoane. Se mai folosesc conectori (fire de conexiune tată-tată) care au rolul de a realiza conexiunea dintre componentele electronice.

În figura de mai jos este prezentată schema circuitului, realizată în programul Proteus.

Din schema de mai sus reiese conectarea componentelor în felul următor :

Lcd-ul

Pinul 1 (VSS) se conectează cu pinul 5 (RW) la un capăt al potențiometrului și la masă. Pinul 2 (VDD) se conectează cu celălalt capăt al potențiometrului la alimentarea de 5V de la microcontroller. Pinul 3 (VD) se conectează la ieșirea potențiometrului. Pinul 4 (RS) se conectează la pinul 12 al plăcuței de dezvoltare, iar pinul 6 (E) se conectează la pinul 11. Urmează unirea pinilor de date și anume pinii 11 (D4), 12 (D5), 13 (D6) și 14 (D7) la pinii 5, 4, 3 și 2 ai microcontroller-ului.

[NUME_REDACTAT] se conectează prin 3 fire: două de alimentare (la 5V) și unul pentru semnalul de ieșire. Semnalul de la senzorul de temperatură este citit pe pinul A1, iar cel de la senzorul de umiditate la pinul A2.

[NUME_REDACTAT] leagă la circuit prin intermediul tranzistorului tbj tip122. Tranzistorul este alimentat de la plăcuță și comandat prin pinul 9. Ieșirea acestuia valua o valoare in funcție de valoarea primită in bază.

Controlul manual

Se realizează cu ajutorul unui potențiometru alimentat la 5V și care este citit pe pinul A5.

Acesta se activează doar după apăsarea unui buton.

Funcționarea propriu-zisă

După alimentarea plăcuței pe afișajul Lcd va apărea afișată temperatura actuală. La apăsarea primului buton (cel de selectare), se va afișa temperatura dorită (care poate fi modificată prin apăsarea celui de-al doilea buton si anume T–) pe primul rând, iar pe al doilea rând se va afișa starea motorului (ON/OFF) și turația. Dacă se va ține apăsat cel de-al treilea buton, se va afișa umiditatea actuala (intre 200+900) și procentajul (0-100%). Pentru controlul manual se apasă butonul al patrulea, iar apoi se poate modifica turația din potențiometrul din dreapta acestuia.

Citirea și afișarea datelor inainte de afișare

Senzorul LM50 capturează temperatura din exterior și o transformă într-o valoare corespunzătoare de tensiune. În acest circuit, am conectat ieșirea Vo a senzorului de la PIN-ul A2 pe Arduino, care o transformă la o valoare de temperatură, și apoi, o afișează pe LCD.

Calculul de conversie de tensiune la temperatură se face cu ajutorul software-ului. În acest senzor, pentru fiecare 1ºC primite, Vo de ieșire este adăugat în 10mV, într-un interval de la 0 la 5V, cu 10 biți de rezoluție pentru conversie Analog/Digital (1024 valori diferite pentru a reprezenta temperatura). Astfel, valoarea maximă (1023, prin urmare, este de la 0 la 1023) va fi 5V. Jumătate va potrivi 511 sau 2.5V, și așa mai departe. Din motive de calcul, ar fi 5V în producția de senzorul pentru o valoare de temaperatură de 500ºC (care este diferit într-o situație reală). Cu toate acestea, această privință, ne permite să generalizăm următoarea relație:

Temperatura……….Vin

500ºC………………1023 (valori maxime)

Deci, va fi: temperatura = (500 * Vin) / 1023, dar așa cum este în ° C, iar această valoare este imprimată pe LCD.

După ce temperatura este citită și convertită într-o valoare de tensiune de către senzor, acest semnal este transmis, prin ieșirea pinului OUT la pinul analogic A2 al plăcuței Arduino.

Similar Posts