Kliknite tukaj, da si ogledate profil, kot ga vidijo drugi

Merjenje temperature na Arduino z DHT11

Delite vsebino na Facebooku
Delite vsebino na Twitterju
  V tokratni lekciji bomo uporabili senzor DHT11 ter ga priklopili na Arduino ter z njim merili trenutno temperaturo in vlago.
 
 
1
 
 
 
 
2
 
 

Za priklop senzorja potrebujemo tri žice.

Prvi dve žici sta namenjeni za napajanje senzorja.

Senzor deluje na 5V, zato ga lahko priklopimo direktno na Arduino na 5V izhod (oranžna žica).

Drugo žico priklopimo na GND (bela žica).

 
 
3
 
 

Tretja žica je namenjena sprejemanju signala o trenutni temperaturi in vlagi.

Priklopimo jo na poljuben digitalni izhod. V mojem primeru sem izbral izhod 2 (zelena žica).

 
 
4
 
 

Vse tri žice sedaj priklopimo na senzor.

Senzor ima na eni strani oznako S, ki predstavlja pin za sprejemanje signala (zelena) ter znak -, na katerega priklopimo povezavo iz GND (oranžna).

Tako ostane samo še srednji pin, kamor priklopimo 5V napajanje (rdeča).

 
 
 
 
 
5
 
 

Sedaj bo potrebno opraviti še nekaj programiranja, da bo senzor pravilno deloval.

Za delovanje senzorja moramo najprej naložiti knjižnico DHT11, ki jo lahko dobite na naslovu www.zmaga.com/prenosi/DHT11.zip

Knjižnjico je potrebno odpakirati v mapo libraries, kjer imate nameščen program Arduino.

 
 
6
 
 

Sedaj je potrebno sestaviti še program.

Na začetku programa najprej dodamo kodo:

#include

#define DHT11PIN 2
dht11 DHT11;


Z include smo vključili našo knjižnico.
Z define smo določili, da signal sprejemamo na pinu 2.
Z dht11 pa smo ustvarili nov objekt, preko katerega bomo brali temperaturo.

 
 
7
 
 

V okviru funkcije setup omogočimo izpisovanje na serijski izhod ter izpišemo verzijo knjižnice.

void setup() {               
  Serial.begin(9600);
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION); 
}

 
 
8
 
 

V glavni zanki loop sedaj beremo in izpisujemo temperaturo:

void loop() {
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Branje senzorja: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  } 
 
  Serial.print("Vlaga (%): ");
  Serial.println((float)DHT11.humidity, 2);

  Serial.print("Temperatura (oC): ");
  Serial.println((float)DHT11.temperature, 2);

  delay(2000);       // wait for a second
}

 
 
9
 
 

Program sedaj prevedemo in naložimo na Arduino s klikom na puščico v levem zgornjem kotu.

Ko je program uspešno naložen, v desnem zgornjem kotu vklopimo serijski vmesnik.

 
 
10
 
 
 
 
Komentiraj
 
 
 
 
 
8.4.2013, 7:08
Zelo so mi všeč te Arduino lekcije.
Upam, da bo v kratkem še več podobnih.
 
 
 
 
8.4.2013, 12:10
Bo več podobnih. Imam sedaj doma cel kup senzorjev in bom za vsakega pripravil lekcijo.

Drugače pa, če koda zanima omenjeni senzor, se po moje najceneje dobi na DealExtream:
http://dx.com/p/arduino-digital-temperat....
 
 
 
 
8.4.2013, 12:43
Jaz imam namen pripraviti Arduino lekcijo z Ping))) senzorjem...,ki bo verjetno prišel po pošti malu.
 
 
 
 
7.4.2017, 11:46
Super lekcije! A mogoče kdo ve, ali se bi dalo narediti krmiljenje vžiga z zakasnitvijo oz. v praksi za variabilen predvžig? Torej, ko pride input signal, bi krmilnik vrnil output signal z določenim zamikom, ki se mora z višanjem frekvence (vrtljajev) zmanjševati?
Kakršenkoli nasvet bo dobrodošel (pa naj bo enostaven, za amaterje )
 
 
 
 
10.4.2017, 16:28
Iz strojnega vidika težko pomagam, ker ne poznam, kako naj bi variabilni vžig deloval.

Iz programskega stališča in Arduion, pa bi bilo to dokaj enostavno narediti.

Ko dobiš signal, enostavno prebereš frekvenco ter nato pokličeš funkcijo, ki glede na podan parameter frekvence najprej naredi delay, ter nato po delay-u vrne signal.

Recimo primer take funkcije:

function delaySignal(frequency)
{
delay(100 + 100000 / frequency); // počaka fiksno 100ms + še čas, odvisen od frekvence - pri frekvenci 1000 je recimo še dodatnih 100ms
analogWrite(ledPin, 255);
}
 
Prijava in registracija
 
 
 
Zmaga.com ponuja brezplačno in razumljivo učenje računalniških programov, vas na enkraten način spozna z različnimi svetovnimi jeziki, s podrobno obrazloženimi recepti prikaže čare kulinarike in vam prežene strahove pred domačimi opravili.
 
 
Poleg tega lahko prebirate poučne članke, ki so namenjene širjenju naše splošne razgledanosti ter preverite svoje znanje z priljubljenim in enostavnim sistemom za preverjanje znanja. Če med vsebinami, ki se dodajajo vsak dan, ne najdete želenega znanja, je za vaša vprašanja na voljo dobro obiskan forum, kjer lahko tudi aktivno sodelujete. V primeru, da bi radi svoje praktično znanje delili z ostalimi, pa to lahko storite preko preprostega vmesnika za dodajanje vsebin. Zmagajte z znanjem z Zmaga.com!