marți, 27 decembrie 2016

Controlul unui senzor de temperatură și umiditate cu Arduino Uno



În această postare veți afla cum să configurați un senzor de temperatură folosind Arduino Uno. Această aplicație este destinată în special celor care au deja un minim de cunoștințe despre folosirea unui modul Arduino Uno.

Senzorul folosit este următorul: TH06
Pinii senzorului sunt VDD (alimentarea pozitivă), SDA (linia de date), SCK(sau SCL- linia de ceas/clock) și GND.  Ordinea este conform imaginii de mai sus - pentru verificare se citesc pe spatele plăcuței senzorului.

Câteva informații despre acest senzor:

  • interval de măsurare temperatură: -40...125°C
  • domeniu de măsură pentru umiditatea relativă: 0...100%
  • tensiune de alimentare: 1,9...3,6 V
  • acuratețe măsurare temperatură: ±1°C (interval -10...85°C)
  • acuratețe măsurare umiditate: ±5%
  • interfață: I2C
Ceea ce este important de specificat încă o dată este tensiunea pe care o vom folosi la alimentarea senzorului. Modulul Arduino Uno are o ieșire de 3.3 V și o vom folosi pe aceasta. A nu se folosi o tensiune mai mare, de exemplu cea de 5 V, deoarece senzorul se va strica.

Pentru mai multe informații despre acest senzor puteți consulta foaia tehnică (datasheet) a produsului:


Pentru a realiza citirea datelor de la senzor, componentele necesare sunt: Arduino Uno, 2 rezistori de 10k, senzorul TH06, breadboard și fire conectoare.

Conectăm senzorul la plăcuța Arduino, conform schemei din datasheet, iar plăcuța Arduino Uno o conectăm la computer, prin intermediul cablului USB.

Pentru conectarea senzorului se folosește schema următoare:

Aducem pe breadboard un fir de la ieșirea de 3.3V a plăcuței Arduino. De la punctul de 3.3V ducem un fir pe pinul VDD al senzorului și câte o rezistență de 10k la SDA și SCL(sau SCK pe senzor). De asemenea conectăm pinul GND al senzorului cu unul din pini GND de la Arduino. Întrucât condensatorul de 0,1uF din schemă este deja pe senzor, mai ramâne să conectăm SDA la pinul A4 și SCL la pinul A5, ai plăcuței Arduino.

Realizarea practică a montajului este în felul următor

















Deschidem programul Arduino IDE și introducem codul de mai jos.Verificăm în meniul Tools, la Board să fie selectat Arduino/Genuino Uno, iar apoi la Port să fie selecta cel corespunzător, pe care am introdus cablul USB. Acum, încărcăm programul pe plăcuța Arduino Uno și trebuie să ne apară Done uploading. Acum putem vedea în fereastra Serial Monitor, temperatura și respectiv umiditatea din încăpere, actualizate la fiecare 15 secunde.

Codul folosit este următorul:

// Senzor de temeratura si umiditate - TH06
// Alimentare 3.3V
// Conexiuni senzor - Arduino: Vdd-3.3V, SDA-A4, SCK-A5, GND-GND
// La pinii SDA si SCK se mai conecteaza cate un rezistor de 10k de la 3,3V

// Folosirea librariei pentru senzori I2C
#include<Wire.h>

void setup() {
  
// Initializarea comunicarii seriale si a senzorului
Serial.begin(9600);
Wire.begin();
}

// Variabile necesare citirii si memorarii valorilor temperaturii si umiditatii
unsigned int r, r1;
float t,h;

void loop() {
  
// Citirea umiditatii de la senzor
Wire.beginTransmission(0x40); 
   Wire.write(0xE5);
Wire.endTransmission();
   Wire.requestFrom(0x40, 2);
   if (Wire.available()>0)
    {r1=Wire.read();
    r1=r1<<8;
    r1=r1|Wire.read();}

// Citirea temperaturii
Wire.beginTransmission(0x40);
  Wire.write(0xE0);
Wire.endTransmission();
  Wire.requestFrom(0x40, 2);
  if (Wire.available()>0)
    {r=Wire.read();
    r=r<<8;
    r=r|Wire.read();}

// Formule pentru transformarea valorilor citite de senzor in valoare zecimala
h=(125.0*r1)/65536.0-6.0;
t=(175.72*r)/65536.0-46.85;

// Afisarea temperaturii si a umiditatii
Serial.print("Temperatura este: ");
Serial.println(t);
Serial.print("Umiditatea relativa este: ");
Serial.println(h);
Serial.println("");

// Intervalul de timp pana la urmatoare citire
delay(15000);
}

Dacă doriți să aflați mai multe despre librăria senzorului consultați: https://www.arduino.cc/en/Reference/Wire

Dacă ați urmat cu atenție pași descriși mai sus, în fereastra Serial Monitor trebuie să obțineți următorul rezultat:

Acum puteți modifica codul după bunul plac.
Mult succes!



3 comentarii: