軟件實現的施密特觸發器

        在一些智能充電器中,單片機要一直監測電池的電壓,一旦超過某一數值,就由恆流充電切換到恆壓充電。撇開充電器製作相關的各種知識和概念不說我們集中注意力來考察:當電壓接近那個設定的臨界值時發生的一些事情。 


        當電壓接近臨界值的時候,系統還處於恆流充電狀態,於是電壓開始朝突破臨界值的方向上升……在某一時刻,電壓突破了臨界值,程序檢測到了這一數值變化,立即將充電狀態由恆流切換爲恆壓。然而,由於恆流狀態時加載在電池上的電壓要遠遠高於恆壓時所保持的電壓,所以幾乎在同一瞬間,單片機監測到的電池電壓又跳回了臨界值以下——於是,系統又頭腦簡單地將工作模式切換回了恆流狀態……如此反覆,在電池電壓處於該臨界值附近的時候,這樣的事情會頻繁地發生許多次,直到徹底切換爲恆壓狀態。


        以上是從微觀角度所假想發生的事情,實際情形也許要更爲複雜一些。不過從宏觀角度來看,可能發生的現象是:表明充電器充電模式的指示燈頻繁地交替閃爍——這不是我們需要的效果

 

        有什麼方法能避免這種令人頭痛的事情發生呢?說來很簡單,將切換工作模式的臨界電壓值由一個變爲上下兩個門限。從恆流切換到恆壓狀態需要一個較高的門限,這個“較高”是相對原先的單個門限值來說的;從恆壓再跳回恆流狀態,需要實際電壓低於一個相對原先單門限更低的值——高低門限之間的差值至少要大於“當充電器在兩種充電模式間切換時造成的前後電壓差值的典型大小”。 這裏應用的改變充電器充電狀態的觸發特性,叫做施密特特性。採用軟件方式實現這種雙門限的觸發方式,就稱爲“軟件施密特觸發器”。 
 
        編寫“軟件施密特觸發器”的要點是:明確“兩態”、“兩限”。“兩態”是指當前狀態處於兩種狀態中的哪一種。數值當前正從小變大或是從大變小,這都是隨機和局部的,並不能以此作爲決定當前狀態的依據。唯一有資格決定當前狀態的就是上一次的狀態。根據記錄的當前狀態決定下一步的監測對象,這是最可靠的方法。簡單打個比方來說,假設我們處於恆壓狀態,那麼現在我們需要監測的就是下門限;一旦電壓低於了下門限,我們的當前狀態就變成了恆流狀態。於是,我們只要執着於上門限就可以了。而這裏說的“兩限”就是上下兩個門限。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章