找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6039|回復(fù): 1
收起左側(cè)

第一個AVR-DIY作品制作過程

[復(fù)制鏈接]
ID:71235 發(fā)表于 2014-12-28 00:28 | 顯示全部樓層 |閱讀模式
      雖說喜歡電子DIY,也會那么點,但總覺這個世界上有用的東西都讓人給發(fā)明完了,我等小輩只管掏錢買來用就是了,犯不著親自動手做一個,再說自己做的那個成本、功能、外觀都跟人家產(chǎn)品沒法比,于是每天光看著各種各樣的資料,只是為了不讓自己把僅會的那點東西忘卻掉,卻一個東西都不曾做出來。

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

   接下來想在電路板的剩余角落搭個RS232的電平轉(zhuǎn)換電路,實現(xiàn)和服務(wù)器的通訊功能。

回復(fù)

使用道具 舉報

ID:79544 發(fā)表于 2015-5-11 14:24 | 顯示全部樓層
只要制作的大概過程,能詳細(xì)些就更好啦,比如:程序--
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表