基于磁阻傳感器的低功耗方向指示系統
2.5.2 主程序
主程序完成對各模塊初始化程序的調用并進入低功耗模式。其程序流程圖如圖8 所示。
圖8 主程序流程圖。
本系統使用默認的時鐘設置,即DCO 振蕩器作為MCL K(供CPU 工作) 與L FXT1CL K 低頻時鐘源作為ACL K(供定時器,ADC 工作) ,為整個系統利用低功耗模式做準備。在之后的工作中,各中斷源按需向CPU 申請退出低功耗模式,完成工作后,CPU 返回低功耗模式。
2.5.3 AD 轉換及方向確定
該部分程序完成運放輸出信號的AD 轉換、所得數據的分析處理及調用LCD 顯示函數完成方向指示的刷新。
AD 模塊函數分ADC 初始化函數ADC12_ Init和AD 中斷函數ADC12_ISR(包括方向的決定) 。
本系統使用定時器A 觸發AD 模塊進行轉換。
ADC 初始化函數主要完成了定時器A 及AD 模塊的初始化工作。定時器A 的初始化工作設置了其計數周期,即設定了AD 的工作周期。AD 模塊的初始化工作中選定了內部215 V 參考源,并設置在完成一次序列轉換(兩個通道的轉換) 后申請AD 中斷。同時,定時器A 與ADC 同時選擇ACL K 作為工作時鐘,準備低功耗工作。
AD 中斷函數首先對信號進行平均值濾波(對無規律的噪聲尤其實用) 。完成濾波后對數據進行線性變換并局部修正,由angle = arctan ( Y_axis/ X_axis) 得到以傳感器為正方向的角度值。最后加以磁偏角和液晶與傳感器夾角補償,實際方向角度輸出到LCD 顯示。
2.5.4 按鍵處理及磁偏角設置
該部分程序完成按鍵操作以實現磁偏角設置與鎖定功能。該部分程序使用狀態變量KeyStatus 來對按鍵的不同功能組合進行分類,分別有主界面狀態、磁偏角設置狀態及鎖定狀態。
按鍵初始化函數設置了初始按鍵功能為主界面狀態。按鍵中斷響應函數首先對按鍵進行消抖確認(使用定時器B 完成其中的延時) ,然后調用按鍵功能執行函數,并由其返回參數改變當前按鍵功能狀態。按鍵功能執行函數分按鍵分狀態給予具體功能響應,具體功能見程序流程圖。其中磁偏角設置狀態下,確定功能還將把新的磁偏角寫入FLASH ;鎖定功能將關閉定時器A 和ADC ,即系統暫停信號轉換。
2.5.5 LCD 的驅動:
該部分為LCD 的定位、寫入、清除,及中英字符顯示等功能的驅動程序,這里不做詳細展開。
2.5.6 LCD 的系統顯示:
該部分程序完成指南針的圖形顯示、方向的文字與數值顯示,以及磁偏角設置界面的顯示。
直接涉及界面顯示的函數有顯示指南針表盤函數LCD_disp_Panel ,指南針更新顯示函數LCD_up2date ,以及與磁偏角設置功能相關的顯示函數Enter_Cipianjiao 、Exit_Cipianjiao 、Change_Cipianjiao 。
3 系統測試
3.1 測試方案
關于方向精度的測量,我們將方向指示系統每轉10°做一次測量,將其理論值與實際測量值記錄,并加以比較。
關于電路功耗測量,我們在電源輸入端串聯一小電阻,通過測量電阻兩端電壓,經公式計算得到電路輸入總電流,即可求得電路總功耗。在液晶鎖定模式(僅液晶工作,其余電路不工作) 下,用同樣的方法求得其總功率,兩者之差即為我們電路模塊(液晶不工作情況下) 的功耗。
3.2 測試數據與儀器
3.2.1 方向精度
實際測得值與理論值見表2 所示。
表2 數據測試表
31212 功耗:
經過測量所得的電路模塊功耗見表3 。
表3 功耗測試表
4 設計總結
本設計通過合理選用元件及優化的軟硬件設計,使我們制作的方向指示系統具有顯著的低功耗、低成本、便攜式、高精度的特點。
在設計制作過程中,我們對電路的每一部分都進行了嚴密的分析論證和參數計算,并經過長時間的調試逐步優化我們的設計。積累總結了許多硬件電路方面的經驗。一些算法的巧妙編寫也使我們的設計達到了事半功倍的效果。我們將繼續對此項目作進一步的探索,使方向指示系統的功能更加完善,應用領域更加廣泛。
評論