趙 力 ,齊 勇 ,劉世萱 ,2,付 曉 ,苗 斌
(1.山東省科學(xué)院海洋儀器儀表研究所,山東 青島266001;2.中國海洋大學(xué)計算機科學(xué)與技術(shù)系,山東 青島266100)
PMT校頻技術(shù)在航標(biāo)燈設(shè)計中的應(yīng)用
趙 力1,齊 勇1,劉世萱1,2,付 曉1,苗 斌1
(1.山東省科學(xué)院海洋儀器儀表研究所,山東 青島266001;2.中國海洋大學(xué)計算機科學(xué)與技術(shù)系,山東 青島266100)
在航標(biāo)燈應(yīng)用研究中,為解決ATmega8L單片機在工作電壓上升過程中,系統(tǒng)頻率不穩(wěn)定的問題,提出一種基于單片機電源管理技術(shù)(PWM)的校頻方法。針對航標(biāo)燈工作環(huán)境光照度變化緩慢的特點,提出過渡時間TINT的概念。利用AVR單片機PMT的空閑模式,結(jié)合看門狗喚醒功能,在不改動電路的前提下,實現(xiàn)了單片機系統(tǒng)時鐘自動校頻的功能。
ATmega8L;過渡時間;PMT;自動校頻
航標(biāo)燈的正常工作是確保海上航行和設(shè)備安全的重要因素[1]。在航標(biāo)燈研究中,由于環(huán)境光照度變化是一個緩慢的過程,當(dāng)光照度降低至電路觸發(fā)閾值ET時,要求控制電路對單片機工作電壓VCC的躍變時間具有極高的控制能力。在光照度逐漸降低的過程中,控制電路CMOS開關(guān)管工作在不飽和導(dǎo)通狀態(tài)。這個過程導(dǎo)致單片機的工作電壓由0躍變到VCC,其躍變時間可能遠遠超過幾個機器周期。從理論上講,VCC低于正常工作電壓時,無法保證單片機CPU和Flash正常工作,F(xiàn)lash的內(nèi)容可能受到破壞。電壓太低時有兩種情況可以破壞 Flash內(nèi)容,第一,F(xiàn)lash寫過程需要一個最低電壓;第二,電壓太低時 CPU本身會錯誤地執(zhí)行指令[2]。
控制器是航標(biāo)燈控制電路的核心[3]。為了消除上述問題對電路狀態(tài)的影響,選用ATmega8L單片機作為控制器。ATmega8L的工作電壓VCC標(biāo)準(zhǔn)值為3.3 V。由于采用了ATMEL的高密度非易失性內(nèi)存技術(shù)[2],在電壓不穩(wěn)定時能夠保護Flash的內(nèi)容不受損壞。這一點我們通過實驗得到了驗證。當(dāng)ATmega8L單片機工作在低壓狀態(tài)時,F(xiàn)lash的內(nèi)容不會受到損壞。但其系統(tǒng)時鐘ClkCPU卻可能發(fā)生偏移,并且最大偏移量可達15%。當(dāng)ClkCPU發(fā)生偏移時,指令周期隨之發(fā)生偏移,雖然CPU執(zhí)行指令時序邏輯不變,但航標(biāo)燈閃爍周期發(fā)生偏移,即影響燈質(zhì)信息的表達。一旦ClkCPU發(fā)生偏移,即使VCC達到正常值,也可能一直保持在偏移狀態(tài)。這樣航標(biāo)燈的燈質(zhì)信息就會發(fā)生改變。為解決此問題,傳統(tǒng)的辦法一般是采用單穩(wěn)態(tài)觸發(fā)電路[4],例如施密特觸發(fā)器等。當(dāng)光照度第一次降至觸發(fā)閾值ET以后,觸發(fā)器翻轉(zhuǎn)將主電路鎖定在導(dǎo)通狀態(tài)。當(dāng)光照度回升到觸發(fā)閾值ET時,觸發(fā)器翻轉(zhuǎn)將主電路鎖定在截止?fàn)顟B(tài)。這個辦法從根本上縮短了VCC躍變的時間,但是增加了電路成本。利用ATmega8L單片機自身的電源管理能力,我們提出一種基于電源管理技術(shù)(Power Manage Technology,簡稱PMT)的解決辦法。
在航標(biāo)燈應(yīng)用中,CMOS管不飽和導(dǎo)通的情況出現(xiàn)在ET附近。因為在一段時間內(nèi),環(huán)境光照度會在ET附近上下波動。這段時間對應(yīng)一個環(huán)境光照度范圍,我們稱這個范圍為光照度的過渡區(qū),過渡區(qū)對應(yīng)的環(huán)境光照度的變化量,以ΔE表示。假設(shè)該閾值光照度上限為ETH,下限為ETL。
在環(huán)境光照度下降的過程中,光照度從上限值ETH到最后一次經(jīng)過觸發(fā)值ET之間的時間稱為下降過渡時間,以TINT1表示。在環(huán)境光照度上升的過程中,光照度從下限值ETL到最后一次經(jīng)過觸發(fā)值ET之間的時間為上升過渡時間,以TINT2表示。在環(huán)境光照度上升或下降過程中,光照度從第一次到最后一次經(jīng)過觸發(fā)值ET之間的時間為ΔT。為了保證航標(biāo)燈正常工作,其過渡時間TINT應(yīng)涵容下降過渡時間TINT1和上升過渡時間TINT2。因此我們只要保證在ΔE之外不發(fā)生光照度越過ET的變化,即可保證電路控制的可靠性。如圖1所示,當(dāng)光照度在過渡區(qū)上限值ETH之外,CMOS管處于截止區(qū)。當(dāng)光照度達到過渡區(qū)上限值ETH時,CMOS管開始導(dǎo)通,處于不飽和導(dǎo)通區(qū)。當(dāng)光照度達到觸發(fā)值ET時,CMOS管達到飽和導(dǎo)通狀態(tài),隨著光照度在觸發(fā)值ET附近擺動,CMOS管工作在不穩(wěn)定飽和導(dǎo)通狀態(tài)。直到光照度最后一次擺動越過觸發(fā)值ET后,CMOS管工作在穩(wěn)定飽和導(dǎo)通區(qū)內(nèi)。
圖1 過渡時間和CMOS管導(dǎo)通狀態(tài)示意圖
根據(jù)圖1,有如下關(guān)系:
式中:E表示環(huán)境光照度;t表示時間;f表示光照度E和時間t的對應(yīng)關(guān)系;TH表示過渡區(qū)光照度上限值ETH對應(yīng)的時刻;TL表示過渡區(qū)下限光照度值ETL對應(yīng)的時刻。由于在一段極短的時間Δt之內(nèi),光照度隨時間成單調(diào)關(guān)系,每一個時刻T對應(yīng)唯一的光照度值f(T)。由式(2):
根據(jù)式(4),可以得到環(huán)境光照度達到ETH的時刻TH,表示為:
根據(jù)式(5),可以得到環(huán)境光照度達到 ETL的時刻TL,表示為:
根據(jù)圖 1,式(3)與式(4)本質(zhì)上相同,由式(3)、式(7)、式(8),得:
f-1表示f的反函數(shù)。航標(biāo)燈的光照度傳感器可以實時測量環(huán)境光照度值。根據(jù)式(9),過渡時間TINT可以用環(huán)境光照度過渡區(qū)閾值上下限對應(yīng)的時間來計算。在設(shè)計程序時,可以實現(xiàn)根據(jù)光照度過渡區(qū)閾值的大小來設(shè)置過渡時間的功能。航標(biāo)燈每次從開始加電到指令執(zhí)行完過渡時間TINT,CMOS管進入穩(wěn)定飽和導(dǎo)通區(qū),單片機電源升至標(biāo)準(zhǔn)值VCC。利用ATmega8L的PMT技術(shù)使CPU進入的休眠模式,再使用看門狗喚醒技術(shù)自動喚醒MCU。此時,喚醒后的MCU已擺脫頻率偏移的影響,航標(biāo)燈就能夠正常工作了。
ATmega8L單片機的電源管理模塊可使單片機進入休眠模式。休眠模式意味著在應(yīng)用程序中關(guān)掉MCU中沒有使用的模塊,從而降低功耗。ATmega8L具有不同的睡眠模式,進入睡眠模式的條件是置位寄存器MCUCR的SE,然后執(zhí)行SLEEP指令。具體哪一種模式由MCUCR的SM2,SM1和SM0決定,如表1所示。使能的中斷可以將進入睡眠模式的MCU喚醒。經(jīng)過啟動時間,外加4個時鐘周期后,MCU就可以運行中斷例程了。然后返回到SLEEP的下一條指令。喚醒時不會改變寄存器文件和SRAM的內(nèi)容。如果在睡眠過程中發(fā)生了復(fù)位,則MCU喚醒后從中斷向量開始執(zhí)行[2]。
MCU控制寄存器MCUCR包含了電源管理的控制位。
其中,SE為休眠使能位。為了使MCU在執(zhí)行SLEEP指令后進入休眠模式,SE必須置位,同時低四位無效。MCU一旦喚醒立即清除SE。SM2,SM1,SM0為休眠模式選擇位。這3位用于選擇具體的休眠模式,如表1所示[2]。
表1 休眠模式選擇
在該方法中,我們選擇掉電休眠模式。當(dāng)SM2..0為010時,SLEEP指令將使MCU進入掉電模式。在此模式下,外部晶體停振,而外部中斷、兩線接口地址匹配及看門狗(如果使能的話)繼續(xù)工作。只有外部復(fù)位、看門狗復(fù)位、BOD復(fù)位、兩線接口地址匹配中斷、外部電平中斷INT0或INT1,或外部中斷INT2可以使MCU脫離掉電模式。這個睡眠模式的優(yōu)點是停止了所有的時鐘,喚醒時系統(tǒng)時鐘重新開始工作,可以解決頻率偏移的問題。
根據(jù)上述原理分析,從程序著手進行校頻實驗。我們使用高靈敏度的光敏傳感器對環(huán)境光照度進行檢測,從光照度過渡區(qū)上限值ETH開始計時,經(jīng)過過渡時間TINT后,使單片機進入掉電休眠模式。同時啟動看門狗定時器,當(dāng)看門狗定時器溢出時,利用電源管理模塊的看門狗喚醒技術(shù)自動喚醒MCU。編程時,編輯熔絲位WTDON,預(yù)置看門狗定時器常開。控制程序如下:
實驗中,航標(biāo)燈使用摩爾斯O碼燈質(zhì),工作周期為12 s[5]。當(dāng)發(fā)生頻率偏移時,通過檢測環(huán)境光照度的值,當(dāng)發(fā)現(xiàn)光照度達到過渡區(qū)的上限值EH時,使MCU執(zhí)行休眠指令時進入掉電模式,同時啟動看門狗定時器。當(dāng)看門狗定時器溢出時,系統(tǒng)復(fù)位。此時保證已經(jīng)過光照度的過渡區(qū),CMOS開關(guān)管完全導(dǎo)通,VCC達到標(biāo)準(zhǔn)值3.3 V,就可以保證MCU時鐘正常工作了。指令如下:
經(jīng)過反復(fù)試驗,使用上述控制語句很好地解決了系統(tǒng)時鐘的頻率偏移問題。這證明PMT技術(shù)和看門狗喚醒語句實現(xiàn)MCU自動校頻功能,不但從原理上是可行的,從實際應(yīng)用中來看也是可以實現(xiàn)的。
本文的方法是一種新的單片機自動校頻手段。該方法在軟件上通過一條掉電休眠指令和看門狗復(fù)位指令,來保證單片機系統(tǒng)頻率的穩(wěn)定性。實驗表明,該方法可以很好地解決MEGA8L單片機上電過程中的頻率偏移問題。采用軟件校頻的方法有助于實現(xiàn)航標(biāo)燈設(shè)計簡單,低功耗,低成本,高可靠性的目標(biāo)[6]。另外,該方法既可以單獨使用,也可以配合硬件觸發(fā)器電路一起使用,相當(dāng)于為單片機的系統(tǒng)時鐘上了雙保險,從而確保單片機可以持續(xù)穩(wěn)定地工作。
[1]周 奎,張曉川,杜效農(nóng).航標(biāo)燈的自動監(jiān)控[J].世界海運,2007(2):31-32.
[2]馬潮,詹位前,等.ATMEGA8原理及應(yīng)用手冊[M].北京:清華大學(xué)出版社,2003.
[3]李月樓.一體化太陽能航標(biāo)燈技術(shù)與應(yīng)用探討[J].珠江水運,2005(5):39-40.
[4] 高志,林玉池.航標(biāo)燈工作狀態(tài)檢測電路設(shè)計[J].海洋技術(shù),2006,25(1):45-57.
[5]齊勇,劉世萱,張曙偉,等.基于PWM技術(shù)的新型航標(biāo)燈設(shè)計[J].山東科學(xué),2008(3):60-63.
[6]肖必超.基于單片機的航標(biāo)燈控制電路設(shè)計[J].大眾科技,2008(8):103-114.
Application of PMT Technique in Pharos Design
ZHAO Li1,QI Yong1,LIU Shi-xuan1,2,FU Xiao1,MIAO Bin1
(1.Institute of Oceanographic Instrumentation,Shandong Academy of Sciences,Qingdao Shandong 266001,China;2.Department of Computer Science and Technology,Ocean University of China,Qingdao Shandong 266100,China)
In the design of pharos,in order to resolve the problem of frequency shaking during the process of rising of working voltage,a new method based on PMT technique is proposed.According to the feature of intensity of illumination in the environment of pharos,the concept of transit time (TINT)is issued.Without any changing of electric circuit,the function of auto frequency adjustment is enforced using the idle mode of ATmega8L based on PMT (power manage technique)and the waking up skill of watchdog.
ATmega8L;transit time;PWM;auto frequency adjustment
U644.4
B
1003-2029(2011)02-0110-03
2011-02-22
國家高技術(shù)研究發(fā)展計劃(863計劃)資助項目(2007AA092103)
趙力(1958-),女,高級工程師,主要從事海洋儀器方面研究。