Sunteți pe pagina 1din 16

UNIVERSITATEA DIN ORADEA

FACULTATEA DE INGINERIE
ELECTRICĂ ȘI TEHNOLOGIA
INFORMAȚIEI

Proiect Termometru digital in Celsius,


Fahrenheit si Kelvin

Profesor coordonator: Studenți:


dr.ing. Daniella Gabriella MAȘTEI Fasie Alex-Iulian
Horvath Sandor-David

Oradea, 2020

1
1. Specificarea temei

O să construim un aparat care să ne arate valoarea temperaturii în Kelvin Celsius și


Fahrenheit pe un display LCD 2×16 I2C.
O să folosim urmatoarele materiale:

1. Placa de dezvoltare UNO R3 ATmega328p


2. Shield LCD cu butoane 1602
3. Senzor temperatură DHT11

2. Schema bloc

2
Placa de dezvoltare Arduino UNO R3

Arduino este o companie open-source care produce atat placute de dezvoltare bazate
pe microcontrolere, cat si partea de software destinata functionarii si programarii
acestora.
Proiectul este bazat pe designul placilor cu microcontroler produse de cativa furnizori,
folosind diverse tipuri de microcontrolere. Aceste placi pun la dispozitia utilizatorului pini
I/O digitali si analogici, care pot fi interfatati cu o gama larga de placute numite scuturi
(shield-uri) si/sau cu alte circuite. Placile au interfete de comunicatii seriale,
inclusiv USB pe unele modele, pentru a incarca programe din calculatoarele personale.

3
Pentru programarea microcontrolerelor, Arduino vine cu un mediu de dezvoltare integrat
(IDE) bazat pe proiectul Proccesing, care include suport pentru limbaje de programare
precum C si C++.
Primul Arduino a fost lansat in 2005, avand ca tinta asigurarea unei solutii ieftine
si simple pentru incepatori si profesionisti spre a crea dispozitive capabile sa
interactioneze cu mediul, folosind senzori si sisteme de actionare. Cele mai comune
exemple sunt dispozitivele pentru utilizatorii incepatori precum: robotii simpli,
termostatele si/sau detectoarele de miscare.
O placuta Arduino este compusa dintr-un microcontroller Atmel AVR de 8-, 16-
sau 32-biti cu componente complementare care faciliteaza programarea si incorporarea
in alte circuite. Un aspect important la Arduino este ca acesta dispune de conectori
standard, care permit utilizatorului sa conecteze plăcuta cu procesorul la diferite module
interschimbabile numite shield-uri. Uneleshield-uri comunica cu Arduino direct prin pinii
digitali sau analogici, dar altele sunt adresabile individual prin magistrala seriala I²C; la
Arduino uno pini 4(SDA – pinul serial de date) și 5(SCL – pinul de ceas), datorita
librariei Wire pentru intrarile si iesirile acestor pini se pot utiliza functiile: read() si write()
precum si utilizarea mai multor module in paralel.
Placa de dezvoltare Uno R3 este o versiune de Uno, cu o interfață USB noua și
îmbunătățită. Ca și Uno are slot de expansiune cu suport pentru 3,3 V, pin de RESET și
un sistem de selecție automat pentru sursa de alimentare USB sau DC. Uno este
compatibil din perspectiva codului și a formatului cu cu Duemilanove, Diecimilla și alte
versiuni mai vechi de Arduino, deci toate librăriile și modulele pe care le ai vor funcționa
fără nici o problema. Uno R3 oferă în plus o concesiune usb îmbunătățită, pini în plus
pentru suportul I2C și IORef.
La nivel conceptual, cand se foloseste mediul de dezvoltare integrat Arduino,
programarea tuturor plăcutelor se face prin conexiune seriala. Implementarea acesteia
difera infunctie de versiunea hardware. Unele placute Arduino au implementate
convertoare de nivel logic pentru a realiza conversia intre nivélele logice RS-232 si cele
TTL. Placutele Arduino din prezent sunt prográmate prin USB, avand integrate cipuri de
conversie USB-serial.

4
Arduino Uno schematic

Componente placă: • Digital I/O Pins: 14 (of which 6 provide


PWM output)
• Microcontroller: ATmega328p
• Analog Input Pins: 6
• USB Chip: CH340G
• DC Current per I/O Pin: 40 mA
• Operating Voltage: 5V
• DC Current for 3.3V Pin: 50 mA
• Input Voltage (recomandat): 7-9V
• Flash Memory: 32 KB (ATmega328) of
• Input Voltage (limite absolute): 6-12V which 0.5 KB used by bootloader

5
• SRAM: 2 KB (ATmega328) • Clock Speed: 16 MHz
• EEPROM: 1 KB (ATmega328)

Schemă electrică

Există 14 pini digitali de intrare / ieşire (I/O sau input/output).


Aceştia operează la o tensiune de 5 volţi şi pot fi controlaţi cu una din funcţiile
pinMode(), digitalWrite() şi digitalRead().

6
Fiecare pin poate primii sau trimite o intensitate de maxim 40 mA şi au o rezistenţă
internă între 20-50 kOhmi (default deconectată). În afară de semnalul standard I/O, unii
dintre pini mai au şi alte funcţii specializate.
0 (serial) RX – pin serial, utilizat în special pentru recepţia (intrare – Rx) datelor seriale
asincrone (asynchronous serial communication) Protocolul serial asincron este o
metodă foarte răspândită în electronică pentru a trimite şi recepţiona date între
dispozitive. Acest protocol este implementat în dispozitiv numit UART (Universal
Asynchronous Receiver/Transmitter)
1. (serial) TX – pin serial, utilizat pentru trimiterea datelor asincrone (ieşire – Tx). TTL
vine de la transistor-transistor logic.
2. (External Interrupts) întrerupere externă. Acest pin poate fi configurat pentru a
declanșa o întrerupere la o valoare mică, un front crescător sau descrescător, sau o
schimbare în valoare. Vezi detalii despre posibile comenzi la attachInterrupt()
3. (External Interrupts + PWM) întrerupere externă. Identic cu pinul 2. Suplimentar, toţi
pinii marcaţi cu semnul ~ pot fi folosiţi şi pentru PWM (pulse with modulation)
4. (I/O) pin standard intrare/iesire
5. (PWM) poate furniza control de ieşire pe 8-bit pentru controlul PWM. Vezi detalii
despre posibile comenzi la analogWrite()
6. (PWM)
7. (I/O) pin standard intrare/ieşire
8. (I/O) pin standard intrare/ieşire
9. (PWM)
10. (PWM + SPI) – suportă comunicare prin interfaţa serială (Serial Peripheral
Interface). SPI-ul are patru semnale logice specifice iar acest pin se foloseste pentru SS
– Slave Select (active low; output din master). Pinii SPI pot fi controlaţi folosind libraria
SPI.
11. (PWM + SPI) – suportă SPI, iar acest pin se foloseşte pentru MOSI/SIMO – Master
Output, Slave Input (output din master)
12. (SPI) – suportă SPI, iar acest pin se foloseşte pentru MISO/SOMI – Master Input,
Slave Output (output din slave)
13. (LED + SPI) – suportă SPI, iar acest pin se foloseşte pentru SCK/SCLK – Ceas
serial (output din master). De asemenea, pe placă este încorporat un LED care este
conectat la acest pin. Când pinul este setat pe valoarea HIGH este pornit, când are
valoarea LOW este oprit.
14. (GND) – împământare. Aici se pune negativul.

7
15. (AREF) – Analog REFference pin – este utilizat pentru tensiunea de referinţă pentru
intrările analogice. Se poate controla folosind funcţia analogReference().
16. (SDA) – comunicare I2S
17. (SCL) – comunicare I2S

Shield LCD cu butoane 1602

LCD1602 sau 1602 de caractere cu cristale lichide de caractere, este un fel de


modul matrice punctual pentru a afisa litere, numere si caractere si asa mai
departe. Este alcatuita din pozitii de matrice cu puncte 5x7 sau 5x11; fiecare
pozitie poate afisa un caracter. Exista un punct între două caractere si un spatiu

8
intre linii, separand astfel caracterele si liniile. Modelul 1602 inseamna ca
afiseaza 2 linii cu 16 caractere.
In general, LCD1602 are porturi paralele, adica ar controla mai multi pini
in acelasi timp. LCD1602 poate fi clasificat în conexiuni cu opt porturi si patru
porturi. Daca se utilizeaza conexiunea cu opt porturi, toate porturile digitale ale
placii SunFounder Uno sunt aproape complet ocupate. Daca doriti sa conectati
mai multi senzori, nu vor fi disponibile porturi. Prin urmare, conexiunea cu patru
porturi este utilizata aici pentru o aplicare mai buna.
Modulul conține un ecran LCD 1602 (2 rânduri a câte 16 caractere) de culoare
albastră, compatibil cu HD44780 și 6 butoane
Pinii folosiți sunt în număr de 8, conform schemei atașate: pinii 4, 5, 6, 7, 8, 9, 10
pentru LCD și pinul A0 pentru a citi butoanele.

Butoanele se citesc cu ajutorul perifericului ADC, acestea generând tensiuni


diferite prin apăsarea lor. Valorile generate sunt aproximativ egale cu: 30, 150,
360, 535, 760.

Contrastul LCD-ului poate fi reglat cu ajutorul potențiometrului.

Senzor temperatură DHT11

9
DHT11 este un senzor digital de temperature si umiditate, care are
incorporat un senzor de umiditate capacitiv si un termistor, pentru a masura aerul
din jur si da un semnal digital pe pinul de date (nu necesita pini de intrare
analogici LCD).
Senzorul DHT11 ofera o calibrare extrem de precisa a camerei de calibrare a
umiditătii. Coeficientii de calibrare sunt stocati in memoria programului OTP,
senzorii interni detecteaza semnalele in proces.Sistemul de interfata seriala cu
un singur fir este integrat pentru a fi rapid si usor. Are dimensiuni reduse, cu o
putere redusa ce pot transmite semnalul de pana la 20 de metri.
DHT11 masoara umiditatea relative analizand vaporii de apa prin
masurarea rezistentei electrice dintre doi electrozi. Componenta de detectare a
umiditătii este un substrat de mentinere a umiditătii cu electrozii aplicati pe
suprafata. Cand vaporii de apa sunt absorbiti de substrat, ionii sunt eliberati de
substrat, ceea ce mareste conductivitatea dintre electrozi. Schimbarea rezistentei
dintre cei doi electrozi este proportionala cu umiditatea relativa. Umiditatea
relative mai mare scade rezistenta dintre electrozi, in timp ce umiditatea relative
mai mica creste rezistenta dintre electrozii.
DHT11 masoara temperatura cu un senzor de temperatura NTC
(termistor) montat pe suprafata, integrat in unitate.
DH11 este un senzor digital de temperatura si umiditate, low-cost. Acesta
incorporeaza un senzor de umiditate capacitiv si un termistor, pentru a masura
aerul din jur si da un semnal digital pe pinul de date (nu necesita pini de intrare
analogici). Este simplu de utilizat, dar necesita sincronizare atenta pentru a
culege datele. Singurul dezavantaj real al acestui senzor este faptul ca obtii date
noi la fiecare 2 secunde.

Specificații tehnice
Alimentare si I / O: 3 - 5V
Curent maxim: 2.5mA
Pentru intervalul de umiditate 20-80% are o precizie de 5%
Pentru intervalul de temperatura 0-50°C are o precizie de ± 2°C
Rata de esantionare de 1 Hz (o data pe secunda)
Dimensiuni: 15.5mm x 12mm x 5.5mm

10
Schema electrică hardware

11
Schema logică(organigrama) programului
Start

#include <DHT.h>

#include
<LiquidCrystal.h>

#define DHTPIN A1

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Setup()

lcd.begin(16, 2);

dht.begin();

Loop

float f = dht.readTemperature(true);

float t = dht.readTemperature();

float hic = dht.computeHeatIndex(t, h,false);

lcd.setCursor(3, 0);

lcd.print("F:");

lcd.print(f);

lcd.print((char)223);

lcd.setCursor(0, 1);

lcd.print("C");

lcd.print(t);

lcd.print((char)223);

lcd.setCursor(8, 1);

lcd.print("K");

lcd.print(t+273.15);
12
Stop
Codul sursă a programului

13
14
15
Modul de utilizare al aplicației
 Pentru utilizarea aplicatiei, montajul se cuplează la un port USB al calculatorului
 Se lansează Arduino IDE și se incarcă programul pe placă iar acesta va porni
automat
 Pentru stingerea/aprinderii luminii de fundal se apasă butonul SELECT
 In caz de legare gresita a senzorului o sa ne apara un mesaj de eroare

Bibliografie
1. https://en.wikipedia.org/wiki/Arduino
2. https://www.optimusdigital.ro/ro/senzori-senzori-de-temperatura/99-senzor-de-temperatura-
si-si-umiditate-dht11.html
3. https://microcontrolere.wordpress.com/2016/08/10/arduino-uno/
4. https://create.arduino.cc/projecthub
5. https://www.optimusdigital.ro/ro/shield-uri-pentru-arduino/274-shiel-pentru-arduino-cu-lcd-si-
tastatura-.html
6. https://www.optimusdigital.ro/ro/content/10-tutorial-instalare-biblioteca

16

S-ar putea să vă placă și