用電腦做中央空調的控制外加室內溫度顯示
作者﹕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個星期!我直接就挂電話了。
|