hu:arduino:temperature

DS18B20

Hőmérséklet mérés

Ezen az oldalon a csak hőmérsékletmérésre alkalmas megoldásokat sorolom fel. A páratartalom-méréssel kombinált hőmérséklet-mérő modulokat, mint például az SI7021-t ott lehet megtalálni: Páratartalom-mérés.

A DS18B20 digitális hőmérséklet-érzékelő szenzort, a Maxim (formailag a Dallas) fejlesztette ki. A szenzor 1-Wire buszon keresztül kommunikál, méréstartománya -55 °C ~ 125 °C-ig terjed. Alapvetően a környezeti (levegő) hőmérséklet mérésére lett kifejlesztve, Arduino-s környezetben a legelterjedtebb ilyen szenzor.

A DS18B20 modulra szerelt változata a KY001 névre hallgat:

KY001 hőmérséklet-érzékelő modul

DS18B20 tokozás

  • Méréstartománya: -55 °C és + 125 °C között (-67 °F és + 257 °F között)
  • Pontossága: ± 0,5 °C / -10 °C és + 85° C között
  • Felbontása: programozható felbontás 9 - 12 bit
  • Vezetékek száma: Parazita üzemmódban csak 2 vezetéket igényel (DQ és GND)
  • Azonosítás: Minden szenzor rendelkezik egy egyedi 64 bites azonosítóval, mely a ROM-ban került tárolásra
  • Paraméterezése: Rugalmas, felhasználó által definiálható, nem felejtő (NV) riasztási beállítások (Alarm Search Command segítségével)
  • tokozása: TO-92, SO, uSOP

DS18B20 vízálló tokozással

A szenzornak létezik vízálló változata is, ennél a vezetékek kiosztása:

  • fekete: GND
  • fehér/sárga: DATA
  • piros: Vdd (5V+)

A csatlakozókon is érdemes ezt a sorrendet tartani (fekete, fehér/sárga, piros), mert ha valami nem stimmel, tesztelésként egy mezítlábas IC-vel behelyettesíthető a csatlakozó.

A data és Vdd (5V+) vezetékeket minden mód esetében itt is egy 4,7k-s ellenállással kell összekötni.

Normál módParazita mód
Normál módParazita mód
Normál, 3-vezetékes módban a tápellátást a Vdd felől az IC-k Vdd lábaira kötött vezeték látja elParazita, 2-vezetékes módban az IC-k Vdd lábait a GND-re kell lekötni, a tápellátás a Data vezetéken kerül megvalósításra.

A DS18B20 bekötése

A fenti képen egy darab szenzor 3 vezetékes, normál módú bekötése látható. A data és Vdd (5V+) vezetékeket minden mód esetében egy 4,7k-s ellenállással kell összekötni. Ha a méréseredmény -127, akkor a bekötéssel valami nem stimmel.

/********************************************************************/
// First we include the libraries
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino 
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices  
// (not just Maxim/Dallas temperature ICs) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
void setup(void) 
{ 
 // start serial port 
 Serial.begin(9600); 
 Serial.println("Dallas Temperature IC Control Library Demo"); 
 // Start up the library 
 sensors.begin(); 
} 
void loop(void) 
{ 
 // call sensors.requestTemperatures() to issue a global temperature 
 // request to all devices on the bus 
/********************************************************************/
 Serial.print(" Requesting temperatures..."); 
 sensors.requestTemperatures(); // Send the command to get temperature readings 
 Serial.println("DONE"); 
/********************************************************************/
 Serial.print("Temperature is: "); 
 Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?  
   // You can have more than one DS18B20 on the same bus.  
   // 0 refers to the first IC on the wire 
   delay(1000); 
}

Az LM75A egy nagysebességű I²C interfésszel rendelkező digitális hőmérsékletérzékelő modul. A modul 4 adatregiszterrel rendelkezik a különböző működési módok beállításához. Az LM75A-val szerelt OPEN-SMART modulon (képe fent jobbra) nyolc I²C címet lehet beállítani (leforrasztani) egy egységhez. A modul túlmelegedés elleni védelmet is biztosít - jelentsen ez bármit is.

További I²C-s modulok: Arduino I²C kommunikáció

- Kompatibilitás: Arduino UNO R3 / Arduino Mega2560
- Működési feszültség: 2.8..5.5V DC
- Áramfelvétel: 2mA (max)
- Interfész: standard I²C interfész
- Felbontás: 0,125 °C
- Méréstartomány: -55 ~ 125 °C
- Pontosság: ± 2 °C -25 ~ + 100 °C; ± 3 °C -55 ~ + 125 °C

LM75A bekötési sémája

LM75A címzése

A termisztorokról bővebben a szenzorok fejezetben olvashat.

KY-013 analóg termisztoros hőmérő modul

A KY-013 analóg hőmérséklet-érzékelő modul NTC termisztorból és 10 kΩ-os ellenállásból áll. A termisztor ellenállása a környező hőmérséklettől függően változik, a Steinhart-Hart egyenletet használjuk a termisztor hőmérsékletének precíz meghatározásához.

Technikai adatok:

  • Üzemi feszültség: 5V DC
  • Hőmérsékletmérési tartomány: -55 °C .. 125 °C között [-67 °F - 257 °F]
  • Mérési pontosság: ± 0,5 °C

KY-013 vezetékezés

  • S: Pin A0
  • középső: 5V DC
  • -: GND

Az alábbi Arduino program a termisztor hőmérsékletét a Thermister funkcióban megvalósított Steinhart-Hart egyenlet felhasználásával számítja ki .

#include <math.h>
 
double Thermister(int RawADC) {
	double Temp;
	Temp = log(((10240000/RawADC) - 10000));
	Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
	Temp = Temp - 273.15; // konvertálás Kelvin -> Celcius
	return Temp;
}
 
void setup() {
	Serial.begin(9600);
}
 
void loop() {
	Serial.print(Thermister(analogRead(0))); // pin A0 olvasása
	Serial.println("c");
	delay(500);
}
  • hu/arduino/temperature.txt
  • 2022/04/21 15:02
  • ()