Na voljo so različni senzorji vlažnosti in temperature, kot npr LM35. Nekateri so vgrajeni v module za posebno uporabo z Arduinom. Toda na splošno morajo meriti suho temperaturo, to je temperaturo zraka. Vendar obstaja konkreten model, ki deluje izmeri temperaturo v tekočinah in se imenuje DS18B20. Posebnost, ki vam lahko pride prav pri nekaterih bolj eksotičnih DIY projektih, kjer se igrate tudi s kakšno vrsto tekočine, za katero morate poznati ta parameter.
DS18B20 dejansko ne meri samo temperature v tekočinah, ampak je lahko zelo koristno za merjenje temperature v vlažnem okolju in tudi pod nekaj tekočine. Tako ga lahko uporabite tudi za merjenje temperature zraka, če je okolje precej obremenjeno z vlago. In kot sem rekel, je lastnost, da ga lahko potopimo v tekočino za merjenje njegove temperature, ena od lastnosti, zaradi katere je neverjetno praktičen.
Kaj je DS18B20?
No, mislim, da je že postalo povsem jasno, gre za elektronski senzor, ki lahko meri temperaturo plinastih ali tekočih medijev. Poleg tega obstajajo drugačna embalaža ali pakiranje DS18B20, kot je osnovna, ki jo vidite na glavni sliki, ali pa jo je mogoče vgraditi tudi v nekatere PCB-je, potopne sonde itd. Za svoj projekt izberite najprimernejšo obliko glede na to, kaj želite.
Na primer, poleg tipičnega TO-92 obstaja tudi mikroSOP. Mogoče za integracijo z Arduinom je najprimernejši TO-92, saj je s svojimi tremi zatiči zelo enostavno vstaviti v ploščo za povezavo.
Pinout
El DS18B20 pinout je enostavno prepoznati. Če na primer vzamete za referenco paket Dallas TO-92, ki je eden izmed najbolj priljubljenih, lahko vidite, da ima tri nožice. Če jo postavite od spredaj, torej z zaobljenim odsekom nazaj in gledate ravno ploskev, kjer se napisi nahajajo, je zatič na vaši levi 1, tisti na vaši desni pa 3. Zato bi bil 1 za GND ali ozemljitev, 2 je za podatke in 3 za napajalno napetost.
Tu moramo reči, vrednote, ki bi jih morali poznati:
- Pin 1: priključiti ga morate na GND pin Arduina, to je na 0v.
- Pin 2: ta pin je DQ ali podatki, tisti, ki bo poslal temperature, izmerjene s senzorjem, Arduinu prek določenega protokola, znanega kot 1-Wire, in ki bo potreboval posebno knjižnico in funkcije za Arduino IDE. To bo omogočilo uporabo samo enega zatiča Arduino za povezavo več senzorjev s tem protokolom ...
- Pin 3: Napaja se lahko od 3 do 5,5 v, tako da ga lahko priključite na 5-voltni izhod Arduino.
Tehnične značilnosti in tehnični podatki DS18B20
Kot vedno je zanimivo vedeti tehnične značilnosti senzorja, da ve, kako deluje, da ga ne poškodujemo, predvsem pa, da vemo, kje so njegove merilne meje, saj če vrednosti, ki jih želimo izmeriti, niso med njimi, nam ne bo pomagalo in poiskati bi morali drugo možnost.
Če želite to narediti, je najbolje prenesti datoteko podatkovni list proizvajalca, kot tista v Dallasu lahko vidite tukaj. Tam boste našli vse potrebne informacije. In ne pozabite, da čeprav so vsi DS18B20 morda podobni, boste morda našli nekaj sprememb glede na proizvajalca ali paket ...
Ne glede na muhe pa jih je tu nekaj osnovni tehnični podatki:
- Temperaturno območje: -55 do 125 ° C, zato lahko meri plin ali tekočino pri zelo nizkih in tudi visokih temperaturah.
- Napake: DS18B20 je občutljiv na zunanji hrup ali motnje, ki lahko pri meritvah dajo napačne vrednosti. Dovoljena napaka je plus minus 2 ° C, čeprav bi bila pri temperaturah med -10 ° C in 85 ° C, torej kadar nismo blizu meja, lahko le pol stopinje.
- Resolucija: Delate lahko z več ločljivostmi ali minimalnimi različicami, ki jih zaznate z analognimi nožicami Arduino. Podpira 9-bitne, 10-bitne, 11-bitne in 12-bitne (privzeto). To pomeni, da lahko meri od pol do pol stopinje, od četrtine do četrt stopinje, od 0,125 do 0,125 ° C oziroma od 0,0625 ° C. To programiranje lahko spremenite s programsko kodo.
- Napajalna napetost: 3 do 5,5 v
- cena: 1 do 3 €
Integracija z Arduinom
Čeprav obstajajo različne načine za njegovo povezavo, najprimernejša je tista, ki jo vidite na tem diagramu. Precej preprosto je, da z zatičem GND v ustrezni povezavi plošče Arduino napajalnik enak in nato podatki v analog Arduino, ki ste jih izbrali v programski kodi v Arduino IDE. Dobro pa je tudi, da nastavite vlečni upor 4,7 k (če je razdalja senzorskega kabla večja, mora biti upor manjši, na primer za 5 m 3,3 k, za 10 od 2,2, XNUMX k, ...) za podatkovni zatič in tako naj bo vedno visok.
Za programiranje v Arduino IDE in zaradi dobre integracije z DS18B20 in natančno tem protokolom je priporočljivo, da prenesete knjižnice Dallas temperatura y OneWire iz okolja. In osnovna koda je lahko nekaj takega kot ta primer, ki ga pokažem:
#include <OneWire.h> #include <DallasTemperature.h> // Pin donde se conecta el bus 1-Wire (DQ) const int pinDatosDQ = 9; // Instancia a las clases OneWire y DallasTemperature OneWire oneWireObjeto(pinDatosDQ); DallasTemperature sensorDS18B20(&oneWireObjeto); void setup() { // Iniciamos la comunicación serie a 9600 baudios Serial.begin(9600); // Iniciamos el bus 1-Wire del sensor sensorDS18B20.begin(); } void loop() { // Indicamos que tome la temperatura Serial.println("Midiendo temperatura"); sensorDS18B20.requestTemperatures(); // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire) Serial.print("La temperatura del sensor 0 es de: "); Serial.print(sensorDS18B20.getTempCByIndex(0)); Serial.println(" C"); Serial.print("La temperatura del sensor x es de: "); Serial.print(sensorDS18B20.getTempCByIndex(1)); Serial.println(" ºC"); delay(1000); }
Več informacij - Priročnik za programiranje Arduino (brezplačen PDF)