2018年1月30日 星期二

Arduino溫度量測:使用DS18B20

根據原廠datasheet,DS18B20可以測的溫度範圍是 -55°C to +125°C。
需要的材料:(根據原廠,還需要1個4.7k的電阻)
將Nano板插到麵包板,如果有液晶螢幕(I2C介面)及藍牙也可以先佈線一下(上傳程式時,藍牙的電源要先斷開)。
5VD5兩個位置,利用4.7k電阻接在一起。等一下DS18B20的訊號腳要接在D5。
將DS18B20的紅、黑接腳分別插到5V-極,信號腳到D5:

完成硬體的線路後:
接下來要上傳程式到Arduino Nano板。
(參考前篇文章,先下載Arduino IDE,並安裝)
(用USB線連接電腦與Nano板,可能需要安裝驅動)
打開Arduino IDE,選擇適當的板子型號與USB COM#

溫度感測器DS18B20需要安裝2個函式庫,請下載後解壓縮,將2個資料夾移動到Arduino的資料夾中:
接下來就可以上傳程式了。打開ds18b.ino這個檔案、上傳:

  1. #include <OneWire.h>
  2. #include <DallasTemperature.h>
  3. #define ONE_WIRE_BUS 5    //digitalPin "5"
  4. OneWire oneWire(ONE_WIRE_BUS);
  5. DallasTemperature sensors(&oneWire);
  6. float Celsius = 0;
  7. void setup() {
  8.   Serial.begin(9600);
  9. }
  10. void loop() {
  11.   sensors.requestTemperatures();
  12.   Celsius = sensors.getTempCByIndex(0);
  13.                                   //第"0"個DS18B20,可同時多個
  14.   //Serial.print("E");    //輸出到 手機app
  15.   Serial.println(Celsius);
  16.   delay(200);
  17. }

打開序列埠可以看到執行結果,目前設定200毫秒輸出一次資料。
如果一次想測量兩個以上的溫度,可以同時使用2組DS18B20,只要將第2組的訊號線也同樣插到D5接腳就可以。
程式測水溫_2個sensor ds18b_Bt
另外,也可以顯示在液晶(LCD)
程式測水溫_2個sensor_液晶 ds18b_Bt_LCD
再加入調整輸出時間間隔的功能後,以下是同時測2組溫度、液晶顯示、可調輸出時間,並即時手機繪圖的成品。