DS1821為sensor的電子溫度計電路

寫在前面

本文內容都是自己實做時的經驗及結果,不表示每位網友都一定會成功,可能會因為材料儀器等等客觀條件不同,會有不同的結果。所以網友如果有問題指教,可以直接用e-mail聯絡。

最近利用時間,將DS1821的溫度電路做起來了,光是看datasheet就耗掉很多的時間,英文當初沒學好,這時才知道重要。僅將DS1821的使用上實際應用的電路,用PIC12F675完成一個以DS1821為溫度感測器的電子溫度計,供大家參考。 當然,這個電子溫度計只是一個基礎運用,可以改成更好用的溫度開關,由使用者自行設定溫度的上下限,以便控制外部的負載。目前還在修改電路以及程式中,如果完成,再公佈在網頁上供網友參考

電路圖

DS1821主控制電路圖

上圖是以PIC12F675為主的一個架構,實際的電路是由3塊電路板所組成,有關於DS1821的使用,請參考本網頁上有關DS1821使用說明一文,可大致瞭解DS1821的控制方式。為什麼我要將它變成3塊?為的是模組化,每個獨立的模組可以作為其他用途,光是這塊DS1821主板,也可以作為計次計數器使用,只要將DS1821改成一個接點或是光耦合器就可以了。完全由使用者自行搭配,比較有彈性,同時在電路debug時,也變得很方便。

圖中的兩個電晶體是當用在8位數顯示時,作為掃瞄切換用,是否需要掃描,完全由程式本身決定。

M5450控制電路

四位數顯示電路

至於上面說的3塊電路,分別說明如下:

1.DS1821主控制板,主要由一個PIC12F675來完成。為何我會選12F675這顆PIC?因為我想挑戰極限,用最少的I/O腳位,達到最高的使用狀態。至於製作這個電路的動機,請參考機械式熱水器改電子式溫控電路一文中的說明,他是引起我的主要製作動機。以目前的電路,PIC12F675仍有2支I/O腳沒用到,只用到4支I/O腳喔!

2.M5450控制電路板,由於PIC12F675只有6支I/O腳,想要做4位數顯示(實際上我已經完成8位數的顯示了),真是太難了,用掃描的方式大家可以算算會用掉幾支腳。所以就用M5450這顆LED display driver來達成,至於M5450的使用介紹,也請網友參考四位數Displayer LTM8328KP使用說明中的說明,基本上LTM8328KP就是以M5450為基礎做的4位數顯示模組,而我則是直接使用M5450來單獨製作自己的顯示板,目前已可以達成顯示8位數。而這個電子溫度計,只需要顯示4位數即可。M5450基本上可以連接4個七段顯示器,透過訊號切換,可以達到8位數以上都沒問題。由於M5450是用串列訊號方式輸入資料的,因此資料只需要使用1支I/O腳,外加clock及data enable腳,所以只需3支I/O腳,就可以達到最少4位數的顯示功能。

3.四位數顯示電路,這個電路是單純的四位數顯示板,直接與M5450控制電路板相連接,作為最後顯示數據用。由兩個雙八顯示器構成,顯示板設計成可以和M5450板結合,參考下面的照片。

實體照片:

DS1821電子溫度計的完整電路

上圖是完整的DS1821線路模組,已先將其全部分解,便於網友參考。左下的電路是光隔離型燒錄器配合ICSP燒錄的連接情形,由此可瞭解ICSP燒錄的方便性,無須插拔被燒錄的PIC,要修正程式只需以RS232接線跟電腦連接,透過燒錄程式,就可以將修正後的燒錄碼,直接download到PIC中。

 

M5450控制板

上圖是M5450與顯示板分離時的分解圖

 

四位數顯示

M5450與顯示板結合做顯示的情形,上圖是當計次計數器使用的情形。

 

上圖是當電子式溫度計使用的情形

 

上圖是M5450與顯示板結合式意圖1

 

上圖是M5450與顯示板結合式意圖2,可拆式的,有點像是子卡的感覺。

M5450板跟四位數顯示板可以分離結合的,基本上兩塊板子是要在一起,才能顯示的。做成分離的用意,是因為M5450板也可以跟另外做的八位數顯示板結合使用。其實只要修改DS1821控制板的程式,就可以變成四位數或是八位數以上的顯示計數器。這裡充分的表現出可程式單晶片的優點,硬體不變,只要改變程式及硬體模組,就可以做完全不同的用途了。

 

DS1821主控板的程式  

由於程式屬個人著作,暫不公佈,僅將本電路的燒錄碼供網友下載,便於有興趣DIY網友自行製作研究參考使用。

現僅將程式的架構大致說明:

  1. 主程式,負責整個程式的運作,幾乎都是副程式的呼叫而已。

  2. DS1821副程式:算是電子溫度電路的核心程式,主要的作用就是將我們對DS1821下達的指令,轉成串列訊號傳輸給DS1821,這當中比較重要的部分,就是對於DS1821的時序,要充分配合程式的指令週期,以便控制DS1821。這個部分花了許多的時間,利用示波器在校正時序,真的很傷腦筋。所以要熟讀DS1821的datasheet資料,充分了解一下DS1821的時序,就能很順利的掌握這顆溫度sensor。副程式主要又分寫跟讀資料到DS1821兩部分。請參考DS1821使用說明一文,可以瞭解DS1821時序。

  3. 數值轉換副程式:就是將DS1821所輸出的資料,轉變成十進位形式,才能被我們人類瞭解。這裡順便提一下,DS1821的輸出資料,是一組8位元的資料,來表示溫度。其中-1C以下,是用2的補數型態表示,因此程式編寫上要留意這一點。這個程式就是二進位轉十進位程式,應該不難。

  4. 數字顯示副程式:就是將已經轉換為十進位的資料,變成串列的資料,然後送到M5450中,至於M5450的相關資料,請參考四位數Displayer LTM8328KP使用說明一文中的說明。

DS1821電子溫度計的預計進一步運用

我計劃做一個溫控開關,可以設定溫度上下限,並且可以推動外部負載。不過,以12F675的6支I/O腳,顯然是不太夠使用的。因此會改用18pin的PIC來做進一步的控制電路,如果完成了,再貼文分享吧。

之所以會採行DS1821的原因,除了受那個奇怪的電子溫控產品的影響外,另一個原因是因為DS1821它的輸出是數位的資料,不用再做AD轉換電路,對於一般非電子科系的DIY族來說,是非常簡單的。而他直接輸出數位資料的運用,也非常方便運用。因為這種型態的數位資料,可以透過介面直接送到電腦,再利用電腦做進一步資料的分析運用。

 

回DIY首頁