|
當我需要生成一個簡單工具以產生一個長的事件觸發脈沖時,我首先想到的是經典的單穩態觸發器(one-shot)和大電容方案。由于問題的典型特性,該電路“工作得很好”。盡管對這樣一個應用,看起來不大會想用一個小的微控制器(MCU)來實現單穩觸發器功能,但若選用MCU,可能有如下方面的好處。 通常,大電容有寬泛的初始容差,及寬的溫漂,但基于MCU的應用就可利用Microchip的10F204(SOT-23封裝)的優勢和一個小NPO電容(幾乎沒有溫漂)及一個1%精度的電阻來設定延時。而采用專用單穩態觸發器方案,則需要一個昂貴、大個頭的電容,增加了成本和體積。 基于MCU的實現,在編程10F204時,采用一個由小RC元件決定的可計算延時的延時轉換器,并生成一個長度成比例的輸出脈沖。在圖1中所示電路的外接RC值取決于需要多少基本的5?s時基以觸發10F204的片上比較器,該比較器的參考端由芯片內部設定為0.6V。順序處理流程使外接電容保持在放電狀態并使輸入浮動以監測比較器的輸出以確定將電壓充至參考電位以上時所需的時間。在上電、每當MCU被重新使能以及每次觸發的第一個1?s定時步驟中,都對這些外接元件的值進行估算。 其余的程序在一個分支均等的1ms循環中,提供使能、再觸發認證、乘法器以及循環索引等功能。 等式1用于計算產生在等式2和等式3中描述的期望延時值時所需的R和C值。 循環數=ABS(INT(R*C*(ln(1-VTRIP/VCHARGING))/5s)) (等式1) 其中,VTRIP是比較器參考電壓;VCHARGING是用于對外接電容充電的電壓源,它應是一個大于VTRIP的穩定值。在此例中,VCHARGING與為10F204供電的穩壓源相同。 需要幾個運算參數以定義該基于程序的應用。它們包括: 1.選擇是低到高還是高到低的電壓變化沿進行觸發: * 0將TMR0時鐘輸入沿設置為低到高觸發 * 1將TMR0時鐘輸入沿設置為高到低觸發 2.選擇是單觸發還是重觸發模式 * 0 設置為單觸發模式(在激活時觸發,忽略輸出) * 1設置為重觸發模式(任何觸發都使延時重新初始化) 3.確定用在延時補償中的8位循環乘法器(見下)。 4.對內部狀態標志——capsen進行設置,以確定如何應用基于檢測到元件值的循環數。 * capsen= 0,直接使用計算出的循環數值,該值被限制在0到127之間 * capsen= 1,用256減去該計算值,結果在255到128之間 根據這些選項,當capsen= 1時,能產生最長的延時。結果如下: 當capsen= 1時:延時=(255-循環數)*乘法器*1 ms (等式2) 當capsen= 0時:延時=循環數*乘法器*1 ms (等式3) 圖2顯示了用式1得到的用于循環值的延時。當設capsen=1時,能得到更長的延時;若使capsen=0,則延時變短。電阻R的最大值為10 k Ω,在 我們的分析中,該值設為1 k Ω。 對一個具體的乘法器,延時的范圍由外接元件限定。同時改變R和C將顯著改變延時范圍。觸發脈沖寬度最短為2 ?s,而觸發到有效輸出的延時時間最短為2 s、最長為12 s。 系統精度(與RC元件的變化無關)由內部指令周期的容差主宰。在一個窄的電壓和溫度范圍內,該值定義為61%。管腳1輸出低電壓(用于給電容器放電)、內部比較器以及0.6V參考也會影響初始精度。延時隨時間和溫度的變化取決于所有元件的變異。乘法器的值是一個由程序設置的常量,所以沒有變化。 |