1.目的
Schmitt trigger,中文翻譯好像很多說法,史密特、施密特等等,總之就是Schmitt trigger。
維基百科對於Schmitt trigger的介紹相當的文言文似乎有點不太好理解(點我點我點我),Schmitt具有抗干擾作用,但是會產生延遲的效果,其輸出可為0、1兩種狀態,在數位電路中經常被拿來使用。
Schmitt如何達到抗干擾的作用,其原理是定義兩個不同的閥值(Threshold),透過兩個不同的閥值定決定輸出的結果。
由上圖可以看出,當輸入訊號越過正向閥值時,輸出轉態為1,當訊號低落時,必須越過負向閥值時才會轉態為0,故正向閥值與負向閥值此中間區域為一模糊區域,也就是抗干擾濾波時的作用區,而所謂的延遲現象也就是看該模糊區的範圍寬窄而定義,與比較器不同的地方在於,比較器是將兩者輸入訊號相比,當訊號兩者不相等時,則改變輸出狀態(實務上也很難相等),故純比較器的結過會如下圖:
在實務上時使用時,必須依據實際的情況來決定需要哪種輸出的型態,通常假使輸出狀態不需要太敏感,且可能會有干擾的情況(例如輸入訊號帶有雜訊、飄動等可能,則Schmitt或許可以是一個不錯的選擇。
通常在實務設計上,我們會盡可能的避免採用絕對值的判斷方式,其原因有
1.作為絕對值得設計是很難掌控生產(每個元件均有誤差)。
2.絕對值不能保證絕對不受環境影響(溫度、濕度、壓力)。
3.絕對值得產出會使得成本增加。
4.絕對值的條件如果沒有很穩定,則產品就會非常不穩定。
諸如上述種種原因,故我們通常設計時會採用相對的概念,而Schmitt trigger在一般做控制時也是很好用的一種相對概念的濾波功能。
2.硬體Schmitt trigger
硬體的Schmitt trigger通常會直接使用IC來做,例如HEF4093,亦或者配合比較器、運算放大器來使用,其作法是使用一回授偏壓電阻,使其改變參考電壓。
3.軟體Schmitt trigger
軟體的Schmitt就是要依據輸出狀態而改變輸入條件判斷值,例如使用A/D量測電壓作為ON/OFF判斷時,我們可以有類似這樣的作法
uint8 swLogic(float inputVolt) { static float threshold = 2.7; if (inputVolt > threshold) { threshold = 2.3; return SW_ON; } else if (inputVolt < threshold) { threshold = 2.7; return SW_OFF; } }
使用軟體的方式改變判斷點參數,就可以製造出模糊區域,例如上述程式以2.5V為基準,於正閥值判斷點為2.7,於反向閥值判斷點為2.3如此一來就有0.4的模糊空間,就可以有效的容許干擾產生,然而當模糊間距越大時,也就代表實際反應速度會越慢,此必須經過實務上校調才會得到理想結果。