<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于單片機數(shù)字轉(zhuǎn)速計的設(shè)計

          基于單片機數(shù)字轉(zhuǎn)速計的設(shè)計

          作者: 時間:2012-07-09 來源:網(wǎng)絡(luò) 收藏

          引 言
            
          在工業(yè)控制中經(jīng)常要進行轉(zhuǎn)速測量,一般采用的是接觸式轉(zhuǎn)速計,這種轉(zhuǎn)速計必須頂在轉(zhuǎn)軸中心才能進行測量,使用起來不方便,而且局限性很大,安全性也不是很好。因此,我們設(shè)計了采用光電傳感器的非接觸式轉(zhuǎn)速計,測量范圍從1.0~9999轉(zhuǎn)/分鐘,四位數(shù)碼管顯示,當被測轉(zhuǎn)速小于1000轉(zhuǎn)/分鐘時,精確到0.1轉(zhuǎn)/分鐘。

          1 測量原理

          在被測旋轉(zhuǎn)軸上貼一片鋁箔作為反光體,當反光體轉(zhuǎn)到光電傳感器的正前方時,光電傳感器發(fā)出的紅外光束被反射回來,同時被光電傳感器上的紅外接收管接收,產(chǎn)生一個脈沖信號,我們利用這個信號的邊沿觸發(fā)內(nèi)部的高精度定時器進行計時,精度可達1μs,當反光體再次轉(zhuǎn)到光電傳感器的正前方時,利用光反射信號的邊沿停止計時。這樣轉(zhuǎn)軸的旋轉(zhuǎn)周期t就被精確地測量出來了,然后把周期換算成轉(zhuǎn)速并通過LED數(shù)碼管顯示出來。

          2 電路構(gòu)成及軟件設(shè)計

          電路結(jié)構(gòu)見圖1,因為要求體積小巧且顯示亮度高,因此,采用掃描顯示模式,然而,用一片CPU同時完成測量和顯示是不行的,掃描功能將嚴重影響CPU的測量。因此,采用兩片ATMEL公司生產(chǎn)的AT89C2051單片機來分別擔任,AT89C2051具有內(nèi)置2KB的EEPROM程序存儲器和128個字節(jié)的RAM,且每個引腳能夠吸入20mA的電流等這些良好特性。CPU1用來測量旋轉(zhuǎn)軸的旋轉(zhuǎn)周期并換算成轉(zhuǎn)速,然后把顯示數(shù)據(jù)發(fā)送給CPU2,CPU2平時只是在不斷地掃描顯示數(shù)據(jù),當CPU1發(fā)送數(shù)據(jù)過來時,CPU2產(chǎn)生中斷,立即接收數(shù)據(jù),然后更新顯示數(shù)據(jù),這樣在四位LED數(shù)碼管上的數(shù)據(jù)就被立即更新了。采用兩片CPU的好處是電路結(jié)構(gòu)清晰,編程簡單,實現(xiàn)了模塊化設(shè)計。CPU之間采用串行接口方式2,以中斷形式進行通信。CPU2的通信部分程序清單如下:

          點擊在新窗口中瀏覽產(chǎn)品
          點擊在新窗口中瀏覽產(chǎn)品

          3 結(jié) 論

          經(jīng)過實際使用,我們設(shè)計的轉(zhuǎn)速計達到了預先設(shè)想的目的,使用方便可靠,而且因為這樣的結(jié)構(gòu)設(shè)計使得CPU1的輸入/輸出口占用極少,因此還可以拓展它的功能。例如我們安裝了一個切換開關(guān),增加了光電計數(shù)器的功能(探頭是共用的)。另外,我們還可以把CPU2及四位LED共陽數(shù)碼管構(gòu)成一個通用顯示模塊,除顯示0~9等數(shù)字外,還可以顯示例如A-J、L、O、P、q、r、U、Y等字符。這樣,如果我們在設(shè)計其他的電路時,如果要用到LED數(shù)碼管顯示,不必再編程制版,只要使用這個通用顯示模塊即可,簡單方便。這種顯示模塊如果不擴充輸入輸出口線,最多可以進行五位的七段數(shù)碼管顯示。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();