DS18B20:液體溫度傳感器

DS18B20

有各種濕度和溫度傳感器,例如 LM35。 一些內置於模塊中的模塊可用於Arduino。 但是通常,它們是要測量乾燥溫度,即空氣溫度。 但是有一個具體的模型適用於 測量液體中的溫度,稱為DS18B20。 對於一些更奇特的DIY項目,可能會派上用場,在這些項目中,您還需要使用某種類型的液體,因此您需要知道此參數。

實際上,DS18B20不僅可以測量液體內部的溫度,而且可以非常有效地測量液體中的溫度。 潮濕的環境以及一些液體下。 因此,如果環境中充滿了濕氣,您也可以使用它來測量空氣溫度。 正如我所說,將其浸入液體中以測量其溫度的功能是使其實用性極高的功能之一。

什麼是DS18B20?

好吧,我認為它已經很清楚了,它是一種能夠測量氣體或液體介質溫度的電子傳感器。 此外,還有 DS18B20的不同封裝或包裝,例如您在主圖片中看到的基本圖片,也可以將其集成到某些PCB,潛水探頭等中。 對於您的項目,您應該根據需要選擇最合適的格式。

例如,除了典型的TO-92外,還有microSOP。 可能整合 使用Arduino最合適的是TO-92 由於具有三個銷釘,因此很容易插入麵包板進行連接。

引腳

DS18B20引腳

El DS18B20引腳排列 很容易識別。 例如,以最受歡迎的Dallas TO-92封裝為參考,您會看到它具有三個引腳。 如果從正面放置,即將圓角部分向後看標記出現的平面,則左側的引腳為1,右側的引腳為3。因此,1表示GND。或接地,2表示數據,3表示電源電壓。

在這裡,我們不得不說, 您應該知道的價值觀:

  • 引腳1:您必須將其連接到Arduino的GND引腳,即0v。
  • 引腳2:此引腳是DQ或數據,它將通過稱為1-Wire的特定協議將傳感器測得的溫度發送給Arduino,並且需要Arduino IDE的特殊庫和功能。 這樣一來,僅需使用一個Arduino引腳即可通過該協議連接多個傳感器...
  • 針腳3:可以從3到5,5v供電,因此您可以將其連接到Arduino的5v輸出。

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集成

Arduino連接圖-ds18b20

雖然有 各種連接方式,最合適的是您在此圖中看到的那個。 這很簡單,在Arduino板的相應連接中使用GND引腳,電源相同,然後將數據發送到您在Arduino IDE的編程代碼中選擇的Arduino模擬信號。 但是,最好設置一個4,7k上拉電阻(如果傳感器探頭電纜的距離較大,則電阻應更低,例如對於5m的3,3k,10的2,2、XNUMXk等)。用於數據引腳,因此始終保持高電平。

在Arduino IDE中進行編程 以及與DS18B20的良好集成以及非常特殊的協議,建議您下載庫 達拉斯溫度 y 單線 來自環境。 和基本代碼一樣,我可能會顯示以下示例:

#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)


成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。