簡介
遲滯比較器是一個具有遲滯回環傳輸特性的比較器。 又可理解為加正反饋的單限比較器。 在反相輸入單門限電壓比較器的基礎上引入正反饋網絡,就組成了具有雙門限值的反相輸入遲滯比較器。
那么我們在程序設計時也會用到類似于這種功能的算法,比如實現在某個溫度點執行動作,當超過這個溫度閾值時,設備工作,當低于溫度閾值時,設備關閉。 如果溫度在閾值上下波動,那么設備也會頻繁的啟停,這樣對用戶來講體驗是不友好的,因此需要一種算法來避開這個波動區間,這就是我們要講的滯回算法。
滯回曲線
藍色表示上升曲線,紅色表示下降曲線。 分析:在上升階段,大于開啟點時,開始執行; 在下降階段時,小于關閉點時,停止執行。 要實現這個算法,首先我們需要明白一個關鍵點,怎么判斷當前的數據是上升還是下降? 提供一個思路:用當前的數據與上次的數據和設定的閾值進行對比,如果當前的數據大于閾值,但上次的數據小于閾值,那么就可以判斷為上升階段; 反之,如果當前的數據小于閾值,但上次的數據是大于閾值的,那么可以判斷為下降階段。 滯回曲線可以分為三個部分, 關閉、開啟和保持。
算法實現
unsigned int InputData=0;//輸入數據
unsigned int OldData=0;//上次數據
unsigned char Falling=0;//下降標志位
unsigned char rise=0; //上升標志位
unsigned char Start = 100;//關閉閾值
unsigned char End = 150;//開啟閾值
printf("Please input data:");
scanf("%d",&InputData); //輸入數據
if((InputData > Start) && (OldData <= Start)) //判斷是否為上升階段
rise = 1;//上升標志位
if((InputData < End) && (OldData >= End)) //判斷是否為下降階段
Falling = 1;//下降標志位
if(InputData <= Start)//輸入的數據小于等于關閉閾值
{
printf("Close
");//執行關閉動作
rise = 0;//標志位清零
Falling = 0;
}
else if(InputData < End)//輸入的數據小于開啟閾值,則分為兩種情況
{
if(rise)//上升標志位
printf("Close
");//關閉
if(Falling)//下降標志位
printf("Open
");//開啟
}
else //輸入的數據大于等于閾值
{
printf("Open
");//開啟
rise = 0;
Falling = 0;//標志位清零
}
OldData = InputData;//記錄上一次數據
調試結果
調試界面
-
單片機
+關注
關注
6032文章
44514瀏覽量
632951 -
比較器
+關注
關注
14文章
1633瀏覽量
107098 -
算法
+關注
關注
23文章
4599瀏覽量
92639 -
電壓比較器
+關注
關注
18文章
218瀏覽量
37531 -
遲滯比較器
+關注
關注
1文章
34瀏覽量
18399
發布評論請先 登錄
相關推薦
評論