認識DS18B20的0與1-電壓閥值
首先,要知道Datasheet page2的電子參數:高低電位閥值的部份,其中輸入電壓(Supply Voltage)為DC +3.0-+5.5V之間,而在外接電源的狀態時,高電位閥值(VIH)為2.2V,意謂著只要電壓高於2.2V時,DS18B20會將其視為"1"。而低電位閥值(VIL)為0.8V,意謂著低於0.8V時,DS18B20視為"0"。必要元件:上拉電阻(Pull-up resistor)的效用
Datasheet中p7,顯示了使用DS18B20要加裝一個必要的上拉電阻,才能有作用喲!簡單的說:上拉電阻可視為天花板裝了一個彈簧,意謂著當無外力作用時,它能讓你維持於離地三尺的狀態,而就DS18B20而言,就代表著它位於高電位的狀態。
電阻值的選擇:一般是於1~10K中皆可,DS建議是5K,故使用4.7K為宜,而模塊多以10K,也行,只要你的電阻安裝上去後,量測電壓要能高於2.2V既可(太大會近於沒接,太小等同於短路)。
Arduino與DS18B20的硬體連接及狀態
外部連接電路增加上拉電阻沒問題後,我們進一步看看到底Arduino與DS18B20的連接與讀取的機構為何?DS18B20的硬體接線架構
在Datasheet中第10頁的圖中,可以看到其連接機構圖,而將其簡化為右圖,可以幫助明白其作用關係。它代表著,連接通電時,因為上拉電阻的作用,會處於高電位(狀態為"1"),而DS18B20只要按下NMOS開關(接地),就會讓狀態變為"0",反之,Arduino按下NMOS開關(接地)DS18B20就會感應到低電位,狀態為"0",日常生活中,上下樓層間的雙切開關就是這個概念,任何一方皆可控制燈的ON/OFF。在這個作用圖中,有一個電子元件NMOS(N通道MOS),我們於下方簡略的說明其作用。
N通道MOS就是道路收費站
NMOS的專有名稱為「金氧半場效電晶體」,是常用的電子元件,但簡單的來說,它就是個電晶體,等同於你每天在用的電源開關、水龍頭的概念 (按下開關,通電,打開水龍頭,來水)。如下圖所示:NMOS有三極,源極(S-Sourse)、汲極(D-Drain)及閘極(G-Gate),如同下圖的右上方,可將其視為一個單行道升降橋,重點是升降的部份,既為Gate,當NMOS按下時,等同於升降段下降至橋面水平,既可通車。再生活化一點,就是開貨車過收費站時,要給足夠的過路費(閥值電壓)讓控制人員按下開關,接通橋面,貨車才能通過。
Arduino與DS18B20的五種狀態 :待機、0與1
了解上述的基本知識後,底下圖示就是將Arduino與DS18B20連接的五種情況列出:1、一般狀態(Idle State):雙方不動作時,皆可讀到高電位的狀態
2、Arduino處於接收訊息的狀態,DS18B20按下NMOS開關,接通線路接地,Arduino會接收到低電位的狀態訊息,代表為"0"
3、Arduino處於接收訊息的狀態,DS18B20不動作(NMOS開關自動升起),線路會因上拉電阻作用拉回高電位,Arduino會接收到高電位的狀態訊息,代表為"1"
4、Arduino發出"0"的訊息:DS18B20處於接收的狀態下(RX-Receive),而Arduino為發送(TX-Transmit)狀態,Arduino按下NMOS,導通線路接地,代表著"0"的狀態。
程式碼的寫法如下:
pinMode(DQ_Pin, OUTPUT); //Tx階段
digitalWrite(DQ_Pin, LOW); //接低電位
5、Arduino發出"1"的訊息:DS18B20處於接收的狀態下(RX-Receive),而Arduino為發送(TX-Transmit)狀態,Arduino接高電位,電路於上接電阻(彈簧)的作用下,自動回歸高電位,代表著"1"的狀態。程式碼如下:
pinMode(DQ_Pin, OUTPUT); //將DQ_Pin調整為輸出狀態,自動會回歸HIGH電位
小結
透過上面的介紹,我們知曉了DS18B20的如何透過電位閥值來判定"0"與"1"的狀態,以及Arduino與DS18B20之間如何透過「上拉電阻」的設置與「N通道MOS」的元件來實現雙方狀態訊息("0"與"1")的讀取。狀態了解了,下一步就是學習如何透過時序來交換訊息
沒有留言:
張貼留言