- 相關推薦
基于單片機的選頻表自動變步長的設計實現
唐如松(合肥工業大學計算機與信息學院)
摘 要:關鍵詞:在小規模話路、基群、超群載波通訊中廣泛使用電頻振蕩器和選頻表來測量載波通訊設備與線路的電平、增益、衰減、防衛度等特性,F在振蕩器和選頻表已經基本上利用數字化器件產生頻率,得到高精度的正弦波信號,再對其進行必要的處理送給輸出或乘法器。但由于傳統的儀器采取的是模擬器件產生頻率,并采取轉動轉輪來改變頻率達到使用目的,為了滿足傳統用戶的使用習慣和要求,故必須在新的數字化設備上實現此功能,F在有的數字化設備上已經實現此功能,但轉輪必須配合步長鍵來使用,即用戶只能先設置合適的步長,然后轉動轉輪才能達到合適的變化量,在大頻率的調節當中用戶覺得很不方便, 我們在設計中實現了轉動轉輪時能夠根據轉輪的轉動速度自動調節步長功能:速度越快,頻率變化的步長越大;速度越慢,則頻率變化的步長越小。這樣在調節頻率時,須大范圍變化時可快速轉動轉輪,而細調時則慢慢的轉動轉輪,達到微調效果。在實際的使用中證明:此種調節方法比較符合操作人員的習慣,因此具有較好的使用價值。
此方法采取發射接收對管加轉輪實現變步長,如圖1所示,電路的采樣部分由一個圓形的扇葉和兩組紅外發射接收對管組成(扇葉按圖2所示做成,空隙和葉片的寬度為1:1)。由于一組紅外發射接收對管檢測扇葉轉動時,只能檢測出輪輪是否在轉動,而無法判斷出它的轉向,所以必須采用兩組紅外發射接收對管。令兩組紅外發射接收對管分別為A和B(A和B兩點間的距離要保證小于葉片或空隙的寬度),當紅外發射接受對管工作時,若對管之間是空隙(無葉片),則接收管的輸出為”0”, 若對管之間是葉片,則接收管的輸出為“1”。
現在分析如何判斷出轉輪的轉向。如圖2所示,在任意時刻,A和B的輸出只存在四種狀態: 0 0 , 0 1 , 1 0 , 1 1。以A和B處于 1 1狀態為例,如果轉輪正轉時,即扇葉順時針轉動,A和B的下一個狀態必然為 1 0 ;如果轉輪倒轉時,扇葉逆時針轉動,A和B的下一個狀態必然為0 1 。由此我們可判斷出轉輪的轉向。在正常工作時,先檢測A和B的狀態,并將該狀態保存下來,然后一直檢測A和B的狀態,一旦狀態發生變化即轉輪開始轉動,讀出A和B的狀態,按表中所示的變化規律,得出轉輪的轉向,從而進行相應的處理,然后返回,刷新狀態保存,并繼續檢測,即在轉動過程中不斷檢測出A和B的狀態,更新狀態保存,并根據下一個狀態不斷進行轉向判斷。由于通常單片機的指令執行時間只有us數量級, 所以A和B的狀態一旦發生變化時,立刻就會被檢測出來,因此狀態變化情況都被包括在表1中,而不會出現從1 1變化到0 0之類情況。實踐當中,我們采用AMD公司的PIC16C74A單片機,使用4.000MHZ的晶振,指令的執行時間為1us,檢測的狀態變化情況都如表1所示,沒有出現異,F象。
狀態變化表
下面簡介如何自動判斷步長,這主要由單片機的軟件實現:當A和B的狀態發生變化時,記錄下來從一狀態變化到另一狀態所需的時間,設定一定的時間門限值,狀態變化時間越短,轉輪轉動速度越快,步長越大;相反,狀態變化時間越長,轉輪轉動速度越慢,步長越小。根據狀態變化所需的時間,判斷出屬于哪一類步長,調用相應處理即可達到自動變步長的效果。在具體的實現過程中,從開始讀A和B的狀態并保存狀態時開始啟動單片機的內部計時器,一旦判斷出A和B的狀態發生變化時,關斷計數器,讀出計數器的值,算出所需的時間,然后由此時間判斷出在哪一個門限值之間,從而設置正確的步長,達到自動變步長的目的。為了使單片機盡可能地把時間花在檢測轉輪的變化上,所以在內部計數器的設置上我們采取分頻數選大一點的措施,即執行128條指令時內部計數器中斷一次。圖3給出程序的框圖。
圖 3
在實際產品中,也有采用直流電機來實現變步長功能的方法。對于永磁式直流電機而言,當轉動電動機的轉子時,電動機的線圈中會流過一定的電流,表現在電動機的接線端口上就有一定的電壓,當電動機的轉子正轉時,電機輸出為正
【基于單片機的選頻表自動變步長的設計實現】相關文章:
基于JSP網頁自動生成工具的設計與實現03-18
基于單片機控制的數字氣壓計設計與實現03-18
基于單片機的自動音樂播放器的設計(一)03-07
基于PIC單片機的熱能表研制03-18
基于單片機的MicroDrive接口設計03-20
基于PQRM的PACS系統設計與實現03-07
基于Perl的DoS工具設計與實現03-10