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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)為核心接近360°全景式攝像機(jī)設(shè)計(jì)方案

          單片機(jī)為核心接近360°全景式攝像機(jī)設(shè)計(jì)方案

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

          0 引言

          本文引用地址:http://www.ex-cimer.com/article/171204.htm

          采用的云臺(tái)控制器在監(jiān)控場(chǎng)合能實(shí)現(xiàn)控制進(jìn)行大范圍、寬角度的移動(dòng),以使lcd液晶屏圖能夠達(dá)到360°攝像,且其在經(jīng)濟(jì)性、靈活性、擴(kuò)展性和可維護(hù)性等方面都具有獨(dú)特的優(yōu)勢(shì)。

          1 系統(tǒng)總體結(jié)構(gòu)

          系統(tǒng)由以下幾部分構(gòu)成:①,在軟件的配合下實(shí)現(xiàn)對(duì)鍵盤所輸入信息的識(shí)別,根據(jù)輸入信息向云臺(tái)中的步進(jìn)電機(jī)發(fā)出指令,使其實(shí)現(xiàn)正/ 反轉(zhuǎn)、速度控制、程序控制等功能,并將步進(jìn)電機(jī)的轉(zhuǎn)速通過數(shù)碼管顯示出來;②步進(jìn)電機(jī)及驅(qū)動(dòng):負(fù)責(zé)云臺(tái)系統(tǒng)在豎直和水平兩個(gè)方向上的轉(zhuǎn)動(dòng),是系統(tǒng)的執(zhí)行部件;③鍵盤:外部信息的輸入器件,是控制人員指揮云臺(tái)系統(tǒng)工作的重要組成部分; ④顯示器件:將步進(jìn)電機(jī)的實(shí)時(shí)轉(zhuǎn)速顯示出來,以便lcd液晶屏圖控制人員根據(jù)轉(zhuǎn)速來確定對(duì)云臺(tái)的控制策略。

          2 系統(tǒng)硬件

          硬件電路按系統(tǒng)功能劃分為步進(jìn)電機(jī)及其驅(qū)動(dòng)模塊、及其外圍電路、鍵盤及顯示電路共三部分,系統(tǒng)硬件功能框圖如圖一所示。

          2.1 步進(jìn)電機(jī)控制及驅(qū)動(dòng)模塊的選擇

          驅(qū)動(dòng)器接收到脈沖信號(hào)之后,驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,它的旋轉(zhuǎn)是以固定的角度一步步運(yùn)行的。可通過控制脈沖個(gè)數(shù)來控制角位移量,達(dá)到準(zhǔn)確定位的目的;同時(shí)可通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動(dòng)的速度和加速度,達(dá)到調(diào)速的目的。所選步進(jìn)電機(jī)為兩臺(tái)混合式步進(jìn)電機(jī)57BYG250C,具有兩相/ 四相運(yùn)行能力,四拍工作時(shí)步距角為1.8°,八拍為0.9°。步進(jìn)電機(jī)驅(qū)動(dòng)模塊型號(hào)為HB202A,具備4/8 拍轉(zhuǎn)換控制信號(hào)、脫機(jī)(FREE)控制信號(hào)、輸入信號(hào)光電隔離等功能。設(shè)計(jì)中增加了一個(gè)脫機(jī)控制鍵,在出現(xiàn)故障或調(diào)試時(shí)將兩臺(tái)電機(jī)置于脫機(jī)狀態(tài),可手工調(diào)節(jié)步進(jìn)電機(jī)。脫機(jī)控制鍵直接與單片機(jī)INT0 相接,設(shè)INT0 為最高優(yōu)先級(jí),以便在故障時(shí)能迅速實(shí)現(xiàn)脫機(jī)控制。由于不經(jīng)過8279 而直接接在單片機(jī)上,則必須設(shè)置鍵盤去抖動(dòng)電路,以免使單片機(jī)產(chǎn)生誤操作。

          2.2 鍵盤及顯示電路設(shè)計(jì)

          lcd液晶屏圖鍵盤及顯示電路采用INTEL8279 來實(shí)現(xiàn)。鍵盤采用N鍵循回方式,顯示為8 位左端送入。8279 外接2*8 鍵盤和八位顯示器,采用編碼掃描方式。8279 的IRQ 和單片機(jī)的INT1相接,只要有鍵按下,就會(huì)申請(qǐng)中斷。當(dāng)單片機(jī)外接12M 晶振時(shí),ALE 為2M,而其與CLK 相連,所以其分頻命令字為34H。通過8279 所擴(kuò)展的按鍵共16 個(gè),8 個(gè)負(fù)責(zé)兩個(gè)方向上的步進(jìn)電機(jī)的正反轉(zhuǎn),8 個(gè)是功能鍵,分別負(fù)責(zé)步進(jìn)電機(jī)的加減速、程序控制、步進(jìn)電機(jī)的限位開關(guān)。

          3 系統(tǒng)軟件設(shè)計(jì)

          系統(tǒng)的軟件主要由初始化程序、鍵盤程序、速度控制程序、轉(zhuǎn)速檢測(cè)及顯示程序組成。除初始化程序外,其余程序均采用中斷工作方式,提高了CPU 的利用率。

          3.1 系統(tǒng)初始化程序設(shè)計(jì)

          先對(duì)單片機(jī)各中斷源進(jìn)行初始化,使用五個(gè)中斷源:INT0、INT1、T0、T1、T2,INT0、T0、T1 為高優(yōu)先級(jí),INT1、T2 為低優(yōu)先級(jí)。INT0 申請(qǐng)中斷,則程序立即使步進(jìn)電機(jī)進(jìn)入脫機(jī)控制程序,步進(jìn)電機(jī)不再受單片機(jī)的控制,且是電平觸發(fā),單片機(jī)始終執(zhí)行脫機(jī)程序,直至外部觸發(fā)信號(hào)由操作人員手工撤銷,系統(tǒng)才恢復(fù)正常工作。后設(shè)置T0、T1、T2 的工作方式,并寫入計(jì)數(shù)處置,開啟這幾個(gè)中斷源的允許位,打開CPU 中斷。

          3.2 鍵盤程序的設(shè)計(jì)

          鍵盤鍵按下后產(chǎn)生中斷申請(qǐng),lcd液晶屏圖單片機(jī)響應(yīng)中斷后,開始執(zhí)行中斷程序。從8279 內(nèi)部將產(chǎn)生的鍵值讀出,并根據(jù)鍵值來執(zhí)行相應(yīng)的程序。CPU 接收到該信息后,并不立即動(dòng)作。為保證步進(jìn)電機(jī)速度控制的穩(wěn)定性,先保存該鍵值所對(duì)應(yīng)的命令,在T0/T1 到達(dá)所設(shè)定的計(jì)數(shù)值之后,按一定的速度需要輸出脈沖時(shí),再將該信息送至步進(jìn)電機(jī)。

          3.3 步進(jìn)電機(jī)的速度控制軟件設(shè)計(jì)

          改變驅(qū)動(dòng)模塊CP 信號(hào)的頻率來改變步進(jìn)電機(jī)的轉(zhuǎn)速,改變CP 信號(hào)的頻率可以通過定時(shí)/ 計(jì)數(shù)器來實(shí)現(xiàn)。先給定時(shí)/ 計(jì)數(shù)器裝載初置,后使其開始運(yùn)行,到達(dá)規(guī)定的時(shí)間后執(zhí)行中斷程序,此時(shí)可將產(chǎn)生CP 信號(hào)的程序放在此中斷程序中,就達(dá)到了改變步進(jìn)電機(jī)轉(zhuǎn)速的目的。S52 內(nèi)部的T0 和T1 分別對(duì)應(yīng)了兩個(gè)步進(jìn)電機(jī)的速度控制,其工作過程如圖二所示。


          上一頁 1 2 下一頁

          評(píng)論


          相關(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); })();