雖說喜歡電子DIY,也會那么點,但總覺這個世界上有用的東西都讓人給發明完了,我等小輩只管掏錢買來用就是了,犯不著親自動手做一個,再說自己做的那個成本、功能、外觀都跟人家產品沒法比,于是每天光看著各種各樣的資料,只是為了不讓自己把僅會的那點東西忘卻掉,卻一個東西都不曾做出來。
去年在家的時候,做出了一個電子鐘和GPS時鐘,在那以后再也沒做什么東西了,話雖如此,腦子里卻總還是在想做個什么東西,其中一個就是做一個機房里用的溫度報警器,單位的機房空調不太好,偶爾停機了也沒人知道,致使機房溫度一路飆升,嚴重的時候甚至使服務器停機,自動控制空調是沒那個本事了,做個溫度報警指示倒是可以的,于是就把這個當做計劃在心里記下了,留待有心情的時候把它變為現實。 掐指一算,上班已經一年有余了,不知什么原因,要去淘寶上買一批元器件,順便把ATMEGA8以及幾個數碼管買了回來,這就準備實現一年前的計劃了。說是說一個機會,其實還是閑著沒事干,找點事情做做,做出來的東西也許就放在家里了。這個計劃是這樣的:顯示部件采用數碼管顯示,最后是那種大點顯眼點的,控制核心還是51單片機或者AVR,要完成的功能就可以設定控制溫度,到了指定的溫度時,發出刺耳的報警聲,很簡單,做這個東西人的也許有成千上萬了,但是完全實現俺目標的不一定有,所以還是自己實現的好。選控制核心的時候稍微猶豫了一下,最后還是選擇了M8,因為M8有很多51不具備的特點:1.有內置的RC振蕩源,可以不用外接晶振電路;2.端口驅動能力強,最大灌電流達40ma,驅動一般的數碼管甚至不用加三極管;3.端口有內置上拉電阻,做按鍵輸入口的時候不用外接上拉電阻;4.有一個完整的PB端口,可以作為數碼管的段顯示,剩余端口足夠完成所需功能;5.M8是窄列28腳封裝,體積夠小(我喜歡在最小號的洞洞板上完成所有電路)。 既然要用M8,就要具備M8的相關知識,先是研究了一下熔絲位的設置方法,發現沒網上說的那么恐怖,第一次按手冊設置好了,以后不要去動就行了,然后選擇CVAVR作為編譯器,因為CVAVR支持位操作(對剛從51過來的人,1<<7這樣的位操作方法確實有點古怪),重新找出去年網上買的USPASP下載器,然后就是按照M8的手冊焊了個小板,整個電路包含一個4位數碼管,一個復位電路,DS18B20溫度檢測電路,ISP下載插座,3個按鍵(一個作為設置按鈕,兩個作為數字調整按鈕),一個報警器驅動電路,報警器用的是那種5塊一個的防盜報警器,聲音非常響。經過10多天的測試,編程,再測試,于今日基本完成。如下圖: 整個制作過程經歷了不少困難,首先是DS18B20的讀取控制問題,剛開始時是按照51的程序寫的驅動程序,不行,上網找了幾個AVR的驅動程序,還是不行,最后發現是端口讀取方法錯了,本來讀端口應該是用PIND.7這樣的形式,但是用51時間多了,不自覺的也按51的方法寫成PORTB.7了,這個錯誤讓我耗費了2天時間。然后按鍵控制問題,一般來說,調整參數時按一下跳一個數字這種方法就足夠了,但是我想仿造電子表的操作方式,實現按鍵的連擊(按鈕按住不放,數字自動調整),單擊(按一下調一次),長擊(按住一定時間,則進入某一個功能),經過幾天的折騰,終于完整實現了,效果如下:按設置鍵2秒,系統進入設置參數調整界面,參數開始閃動,按一下加減鍵,數字加1或者減1,按住不放超過1秒鐘,數字自動連續加減,同時參數不再閃動,知道加減鍵松開,再次長按設置鍵2秒,退出設置界面。再就是參數如何保存到EEPROM中的問題,能保存在EEPROM中這個在CVAVR中很簡單,難得是如何指定保存地址,經查資料,這個問題也解決了;最后一個問題是報警器驅動問題,程序存在問題,還是那個端口如何操作的問題,這個也解決了,然后發現用8050只能讓報警器發出斷斷續續的嗡嗡聲,經過另搭電路測試,發現是基級驅動能力不行,換了一個小點的電阻就行了。在整個制作功能基本實現后,又增加了點小小的功能,就是開始報警后,可以按任意鍵終止報警聲,功能雖小,卻相當實用。 最后總結一下:本次制作實現多個第一次, 1.第一次使用AVR單片機 2.第一次使用動態數碼管驅動電路,以前要么使用專用的數碼管驅動芯片,要么使用液晶顯示器,使用動態掃描還是第一次 3.第一次使用高級按鍵功能 4.第一次使用ISP下載方式調試程序 5.第一次使用EEPROM存儲參數 。。。。
接下來想在電路板的剩余角落搭個RS232的電平轉換電路,實現和服務器的通訊功能。
|