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