用電腦做中央空調的控制外加室內溫度顯示


作者﹕GoldenCat
一台淘汰的386電腦,4MB RAM, 40 MB 硬盤。能做什么呢?也許很多人都覺得在這個年代, 它已經太老了,不能再有什么作為了。這里就介紹一個很簡單的方法,讓你的舊386變成一個 室內中央空調控制器。386的好處就是好電量低,噪聲小,體積也比現在的電腦小很多。crontab 隨便設定一下,舒適型、省點型、偏熱、偏冷......隨便你玩。 序: 事出有因,今天家中的熱氣控制器又壞了。先是不能自動偵側到室內的low temperature。結果 家里好像快結冰一樣。冷得嚇人。好不容易修了半天,又出現不能偵側high temperature的情況,熱氣 一直開個不停。所以想了想,決定用電腦來做一個可以控制家中熱氣與空調的控制系統。這個系統的重點 我放在如何讀取溫度這方面,如果你對家電的控制有什么不懂得,可以看一下CLDP的linux家電控制那篇文章。 如果覺得這樣滿無聊的,那么不要去管控制溫度的東西,給電腦裝個可以看室內溫度的小程序,應該也滿好 玩的吧。用QT可以很簡單就寫個很漂亮的digital panel display噢。(不過那就不能用386來跑啦) 基本知識: 熱氣的溫控開關原理很簡單,就是利用一個雙金屬片,當溫度變化的時候,雙金屬片因為 溫度的不同,而會向某個方向彎曲,從而達到一個開關的目的。雙金屬片,就是用兩片不同的金屬,把 他們緊緊的壓在一起,因為兩片金屬的性質不一樣,所以在收到溫度變化時,延伸性也不一樣。利用 這個原理,就可以作為溫控開關來使用了。這種溫控開關的好處就是成本低,是用簡單。缺點呢,就是 溫度控制不准確,容易壞。 電腦溫控需要什么: 用電腦來控制溫度,那么我們就需要最基本的兩個東西。1. 我們需要讓電腦知道外面的溫度 到底是多少。2.電腦必須能像模擬的開關一樣,可以打開或者關閉冷熱汽。再就是寫一個控制著兩樣 東西的小程序啦。 硬件部分: 一、數字溫度感應器: 想要讓電腦知道目前的溫度,我們必須把外面的溫度告訴電腦。可是這樣怎么做呢?讓我們 來看看Digital Temperature Sensor吧。Digital Temperature Sensor是一個很小的IC,這個IC的設計 上,就已經設計好了非常方便的跟外界溝通的界面了。我們這里要做的,就是跟電腦的Serial port連接 并且從Serial port中,把外面的溫度讀出來。這里我選用的是DS1822這IC的具體信息可以在下面找到: http://pdfserv.maxim-ic.com/arpdf/DS1822.pdf 這是一種和簡單的1-wire IC.也就是說,從電源到數據只用一根線就可以解決。這是一種非常簡單好用 的IC.價錢呢,也很便宜,不過才$1.xx一個。 所需要的元件: 1個DB-25 接口或者 DB-9 接口 1個1.5k Ohm 電阻 2個1N5818 Schottky 二級體 1個1N5228 3.9v Zener 二級體 1個1N5234 6.2v Zener 二級體 DB-25 和 DB-9 serial port: Name DB-25 DB-9 ---- ----- ---- DTR 20 4 RXD 3 2 TXD 2 3 GND 1,7 5 在DB-25中,pin1 和 pin 7要記得接到一起噢。都是地線啦。 1.把IN5228 3.9v Zenner 二級體焊接到GND和DTR之間,陰極是連在DTR那邊的。(負極就是二級體上划線的那一端) 2.把1.5k的電阻焊接在RXD和TXD之間。 3.把一個IN5815二級體接到RXD和TXD之間。陰極連接RXD 4.把另一個IN5815二級體連接到RXD和DTR之間,陰極在DTR 5.把IN5234 6.2v Zenner的二級體接到RXD和DTR之間,陰極在DTR 6.從RXD接出一條線來,這就是sensor的地線。(建議你最好用黑色的線) 7.從DTR接出一條線來,這條就是sensor的數據線啦。(不要也用黑色噢,不然小心自己分不清楚) 就這么簡單啦。噢,對啦,差點忘了,還有一個最重要的,那就是別忘了把你做的這個東西 接到你的電腦的serial port上噢。 二、控制界面: 我是隨便找兩個小relay來用啦。反正不用去代電源,只是控制開關就好,load非常的低的。 然后直接用386機箱里面的那個電源來代relay。 P data 4.7k B c/------+---------- |------- \ --------vvvv----+---|NPN |Vcc |_| |---- \ Ground LED X e\ --- 1N4002 |relay |這里接熱氣開關 ----------------+ | __\_/__ _| |---- / ________________|____|______|---------| |------- / P data 4.7k B c/------+---------- |------- \ --------vvvv----+---|NPN |Vcc |_| |---- \ Ground LED X e\ --- 1N4002 |relay |這里接空調開關 ----------------+ | __\_/__ _| |---- / ________________|____|______|---------| |------- / 這里我們用到了兩個print port的data pin. 詳細的,那么可以去看看CLDP里面的那個家電控制的mini-howto. 軟件部分: 首先當然是初始化serial port, paralle port, 1-wire device.然后從serial中讀取1-wire device的信息(溫度)。然后把讀取到的溫度跟你設定的溫度做對比。如果溫度過高,就讓paralle port 去開空調,溫度過低,就去開熱氣。每10分鐘檢查一次。就好啦。建議是把溫度差放到 ±5 度,省得電腦 給你十分鐘熱十分中冷的。當然,也可以寫程式的時候,順便把DATE給叫出來,然后寫個判斷DATE的FUNCTION. 做到夏天不開自動開熱氣,冬天不自動開空調:-) ps.至于為什么我這里沒有給各位提供程式,因為小弟只能算是把大概寫好了。因為小弟的IC還沒有寄過來,所以 我根本沒有辦法測試。也就沒有真正的把它完成。目前理論上來說,讀取1822的溫度應該是沒有問題啦。paralle port的東西,直接用我以前寫的家電控制中的那個程式就好。把兩個一湊,然后寫個判斷溫度、日期的就好。只是 手頭沒有parts,就沒有辦法去測試啦。我去訂1822的IC,他們居然跟我說最少7個星期!我直接就挂電話了。