2014年8月21日 星期四

使用 Arduino 製作 溫控灑水系統 (3.溫度傳感器DS18b20 消化)

上露天搜尋了 DS18b20 溫度傳感器,發現還蠻多種的,有些做成模組,有些則是單顆,還有另外一種不鏽鋼封裝的,裸裝單顆的只要25元,模組的要80~100左右,不過看了一下,以 Arduino 讀取數據似乎都是相同的流程。所以我可能會選不鏽鋼封裝型,大約60元。
DS18b20裸裝
不鏽鋼封裝

DS18b20模組
(以上圖片來自網路)
不過目前尚未購買,先來研究一下它的程式複雜性如何...

查了一下 DS18b20的程式,發現會使用到 OneWire 的 Library,但Arduino IDE 環境內並沒有預裝 OneWire 程式庫,所以又搜尋 OneWire,第一筆就是 Arduino 官網介紹,原來它是Dallas 半導體公司的產品協定,裡面有提供 Arduino OneWire Library 的下載點。

下載之後,解壓縮到 Arduino IDE 的 libraries\ 資料夾下,重啟 Arduino IDE後,就可以在選單 File→Examples→ 內看到 OneWire\ 的範例,其中 DS18x20_Temperature 就是 DS18b20 的讀取範例。

而這個範例內也有一個 連結 介紹,但這個介紹內的範例程式是有使用一個叫 DallasTemperature 的類別,有載入  DallasTemperature.h ,下方也有提供GitHub載點。除了有 .h 和 .cpp 外,還有 Examples 的範例!瞄了一下,原來這個 DallasTemperature 類別把讀取 DS18x20 溫度包裝成一個類別,這樣就比只使用 OneWire更方便使用。

以上,先到這...

補充:剛看到葉難 Arduino練習:溫度感測DS18B20 裡面都有寫到~ 哈哈!!
補充二:DS18b20 接法上 的 Normal Mode 及 Parasite Model 的區別這裡有說明,大致上是說 Normal Mode 用於數量較多且Sensor距離較遠的環境下;Parasite Mode則適用於Sensor數量少,且距離近的清況下用。至於多遠才叫遠,可以看文章內有提到!!

沒有留言: