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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用PIC16C54單片機制作簡易AM頻率計

          用PIC16C54單片機制作簡易AM頻率計

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

          目前,市面上有許多AM調(diào)幅的無線電控制產(chǎn)品,如汽車防盜器、玩具等。它們的遙控器發(fā)射電路大多采用LC振蕩電路,容易發(fā)生頻偏,影響遙控距離及操作。如欲對其進行檢查或調(diào)整則需用頻譜儀。頻譜儀昂貴、笨重,僅適合于實驗室使用。下面介紹的電路可檢測AM頻率超過900MHz,不但便宜,而且可制成掌上型,易于攜帶。
          圖1為一般AM遙控器發(fā)射之波形圖(假設(shè)信號高電位為1,低電位為0),經(jīng)載波調(diào)幅后由天線發(fā)射。
          圖2為頻率計主要電路,由控制計數(shù)。VCC為5V,可由12V或9V電池經(jīng)7805穩(wěn)壓得到。接收天線用電路板上銅箔所形成的環(huán)形天線。R1、C1、R5用于調(diào)整接收靈敏度,一般來說靈敏度不需太高,以降低干擾的影響。無線電信號經(jīng)由天線送至TFK893高頻分頻器除頻后,經(jīng)檢波電路送至緩沖器。TFK893分頻器之除數(shù)是可設(shè)定的,這里建議設(shè)為64。若除數(shù)太大則誤差太小,除數(shù)設(shè)定太小則較高頻帶無法計數(shù)。同時,需注意所選用之NAND門反應(yīng)速度不能太慢。
          將分頻之信號分為二路,一路經(jīng)低通濾波電路送至輸入腳(假設(shè)為DATA腳),另一路與控制腳(假設(shè)為GATE腳)信號作NAND之后送入單片機的RTCC腳。在此只利用2SC945之反應(yīng)速度不夠快,即可去除無線高頻載波成分。PIC16C54振蕩頻率為20MHz,內(nèi)部計數(shù)器來源則需設(shè)定為RTCC腳。
          由圖1可得知:調(diào)幅后高頻載波信號只出現(xiàn)于信號為1時,因此單片機軟件控制流程為:當檢測到DATA腳為高電位之瞬間,GATE腳送出高電位,讓載波信號通過控制送至RTCC腳,同時將內(nèi)部定時器清零。當檢測到DATA腳為低電位瞬間,則從GATE腳送出低電平關(guān)閉RTCC輸入,并把定時器之值存入緩存器。此數(shù)值即是在GATE開關(guān)之時間內(nèi)(亦信號為1)載波的周期數(shù)。
          讀入的RTCC數(shù),除以GATE開關(guān)之時間,再乘以TFK893分頻器之除數(shù),即是檢測到的頻率值。此流程重復(fù)數(shù)次,再求平均,即可得到相當正確之頻率值。再由單片機控制顯示電路顯示此頻率值。以筆者實際測試十余種遙控器,并將測量值與頻譜儀的測量值做比較,相差大多不超過200kHz,故一般AM調(diào)幅的無線電控制應(yīng)用是可以接受的。


           

          分頻器相關(guān)文章:分頻器原理
          lc振蕩電路相關(guān)文章:lc振蕩電路原理


          關(guān)鍵詞: PIC16C54 單片機 AM頻率計

          評論


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