Налични са различни сензори за влажност и температура, като например LM35. Някои вградени модули за специфична употреба с Arduino. Но като цяло те трябва да измерват сухата температура, т.е. температурата на въздуха. Но има конкретен модел, който работи измерва температурата в течности и се нарича DS18B20. Особеност, която може да ви бъде полезна за някои от по-екзотичните ви проекти за „направи си сам“, където играете и с някакъв вид течност, за която трябва да знаете този параметър.
Всъщност DS18B20 не само измерва температурата вътре в течности, но може да бъде много полезно да измерва температурата в влажна среда, а също и под малко течност. Така че можете да го използвате и за измерване на температурата на въздуха, ако околната среда е доста натоварена с влага. И както казах, характеристиката на възможността да го потопите в течност за измерване на температурата му е една от характеристиките, които го правят изключително практичен.
Какво е DS18B20?
Е, мисля, че вече стана съвсем ясно, това е електронен сензор, способен да измерва температурата на газообразни или течни среди. Освен това има различно капсулиране или опаковане на DS18B20, като основния, който виждате в основното изображение, или може да бъде интегриран в някои печатни платки, потопяеми сонди и т.н. За вашия проект трябва да изберете най-подходящия формат според това, което искате.
Например, освен типичния TO-92, има и microSOP. Възможно да се интегрира с Arduino най-подходящ е TO-92, тъй като с трите му щифта е много лесно да се постави в макет за свързване.
pinout
El DS18B20 пиноут лесно е да се идентифицира. Например, като вземем за справка пакета Далас TO-92, който е един от най-популярните, можете да видите, че той има три щифта. Ако го поставите отпред, тоест със заобления участък назад и гледайки плоското лице, където се появяват надписите, щифтът отляво е 1, а този отдясно е 3. Следователно 1 би бил за GND или земя, 2 е за данни и 3 за захранващо напрежение.
Тук трябва да кажем, че ценности, които трябва да знаете:
- ПИН 1: трябва да го свържете към GND пина на Arduino, тоест към 0v.
- Пин 2: този пин е DQ или данни, този, който ще изпрати температурите, измерени от сензора, към Arduino чрез определен протокол, известен като 1-Wire и който ще се нуждае от специална библиотека и функции за IDE на Arduino. Това ще позволи използването само на един Arduino щифт за свързване на множество сензори с този протокол ...
- ПИН 3: Може да се захранва от 3 до 5,5v, така че можете да го свържете към 5v изхода на Arduino.
DS18B20 технически характеристики и фиш
Както винаги е така интересно е да се знаят техническите характеристики на сензора, за да знаем как работи, за да не го повредим и най-вече, за да знаем къде са границите на измерването му, тъй като ако стойностите, които искаме да измерим, не са между тях, това няма да ни помогне и трябва да потърсите друга алтернатива.
За да направите това, най-добре е да изтеглите лист с данни на производителя, като тази в Далас можете да видите тук. Там ще намерите цялата необходима информация. И не забравяйте, че въпреки че всички DS18B20 може да са подобни, в зависимост от производителя или пакета може да намерите някои промени ...
Но независимо от странностите, ето няколко основни технически данни:
- Температурен диапазон: -55 до 125ºC, следователно може да измерва в газ или течност при много ниски, а също и високи температури.
- грешки: DS18B20 е чувствителен към външен шум или смущения, които могат да дадат грешни стойности при измерванията. Допустимата грешка е плюс минус 2ºC, въпреки че при температури между -10ºC и 85ºC, тоест когато не сме близо до границите, тя може да бъде само половин градус.
- резолюция: Можете да работите с няколко резолюции или минимални вариации, които можете да откриете с аналоговите щифтове Arduino. Поддържа 9-битова, 10-битова, 11-битова и 12-битова (по подразбиране). Тоест, той може да измерва от половин до половин градус, от четвърт до четвърт градус, от 0,125 до 0,125ºC или съответно от 0,0625ºC. Можете да промените това програмиране чрез програмния код.
- Захранващо напрежение: 3 до 5,5v
- цена: 1 до 3 €
Интеграция с Arduino
Въпреки че има различни начини за свързването му, най-подходящ е този, който виждате на тази диаграма. Това е съвсем просто, с GND щифт в съответната връзка на платката Arduino, захранването е същото и след това данните към аналога на Arduino, които сте избрали в своя програмен код в Arduino IDE. Но също така е добре да зададете 4,7k издърпващ резистор (ако разстоянието на кабела на сензорната сонда е по-голямо, съпротивлението трябва да бъде по-малко, например за 5m от 3,3k, за 10 от 2,2, XNUMXk, ...) за ПИН за данни и по този начин го поддържайте винаги висок.
За програмиране в Arduino IDE и неговата добра интеграция с DS18B20 и точно този протокол, се препоръчва да изтеглите библиотеките Далас Температура y OneWire от околната среда. И основният код, може да е нещо като този пример, който показвам:
#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); }
Повече информация - Ръководство за програмиране на Arduino (безплатен PDF)