欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4028|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教一下單片機(jī)大神,關(guān)于溫度邏輯判斷怎么溫度防抖,還有定時(shí)器做延遲問(wèn)題?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:282747 發(fā)表于 2020-6-30 16:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
40黑幣
請(qǐng)教一下大神,關(guān)于溫度邏輯判斷怎么溫度防抖,還有定時(shí)器做延遲問(wèn)題 ,用定時(shí)器可以做類(lèi)似下面程序功能嗎?
檢測(cè)到溫度界限 拉低io口持續(xù)一段時(shí)間 用定時(shí)器方法不影響主程序運(yùn)作

單片機(jī)源程序如下:
if(A>=31)//溫度大于31度
                 {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                  Delay2000ms();
                    }
          else if(A<31)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;
            }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:592807 發(fā)表于 2020-7-1 10:33 | 只看該作者
基本上都市ADC采集然后ADC濾波,求得答案,
以前做adc從51下載的資料,忘了那個(gè)大佬的分享的了,希望能幫到你

十大濾波.rar

313.45 KB, 下載次數(shù): 10

回復(fù)

使用道具 舉報(bào)

板凳
ID:282747 發(fā)表于 2020-7-1 10:33 來(lái)自觸屏版 | 只看該作者
會(huì)了,摸索出來(lái)了
回復(fù)

使用道具 舉報(bào)

地板
ID:452950 發(fā)表于 2020-7-1 11:00 | 只看該作者
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A>=31)//溫度大于31度
                  {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
                if(A<31)//溫度小于31度
                delay(50);
                 }
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;


回復(fù)

使用道具 舉報(bào)

5#
ID:490426 發(fā)表于 2020-7-1 11:23 | 只看該作者
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

你這程序?qū)懙南旅鎽?yīng)該進(jìn)不去吧,編譯器沒(méi)報(bào)警
回復(fù)

使用道具 舉報(bào)

6#
ID:490426 發(fā)表于 2020-7-1 11:24 | 只看該作者
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

就是if(A<31)根本進(jìn)不去
回復(fù)

使用道具 舉報(bào)

7#
ID:282747 發(fā)表于 2020-7-1 11:24 來(lái)自觸屏版 | 只看該作者
xxpp2011 發(fā)表于 2020-7-1 11:00
while(A>=31)//溫度大于31度
                 {                   delay(50);
                while(A ...

不要延遲函數(shù),會(huì)拉低單片機(jī)處理速度
回復(fù)

使用道具 舉報(bào)

8#
ID:490426 發(fā)表于 2020-7-1 11:27 | 只看該作者
定時(shí)器里面加一個(gè)計(jì)數(shù)標(biāo)志,等到計(jì)數(shù)到2秒給主循環(huán)一個(gè)標(biāo)志位,再拉低或者拉高引腳,就可以了。溫度防抖是不是采樣會(huì)有誤差,可以加個(gè)電容濾波,然后定時(shí)器延時(shí)采樣一下,不建議在主函數(shù)里面加延時(shí)。
回復(fù)

使用道具 舉報(bào)

9#
ID:452950 發(fā)表于 2020-7-1 11:41 | 只看該作者

if只是防抖,如果50ms后仍然低于31度就會(huì)跳出上面的while語(yǔ)句,執(zhí)行下面的LED狀態(tài)還原
回復(fù)

使用道具 舉報(bào)

10#
ID:282747 發(fā)表于 2020-7-1 11:50 | 只看該作者
自己想了一下搞定了
if((((AB[M]-N)>TM[4])&&((AB[M+1]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M-1]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M+2]-N)>TM[4]))||(((AB[M]-N)>TM[4])&&((AB[M-2]-N)>TM[4])))        //判斷檢測(cè)數(shù)據(jù)
          {
           HAD=1;
           WM=1;
           GM=1;
          }
        else                   //延遲切換時(shí)間
        {
          if(GM==0)
                   {
                  HAD=0;
                }
         }
}
void IO_handle()   //LED IO口處理
{
                if(HAD==1)
                {
                  LED1=1;
                  LED2=1;
                  AR1=0;
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
          else if(HAD==0)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                 if(HAV==1)
                   {
                         HAV=0;
                        LED1=~LED1;
                    LED2=~LED2;
               }
            }
}

void Timer0Init(void)                //50毫秒@11.0592MHz
{
        AUXR &= 0x7F;                //定時(shí)器時(shí)鐘12T模式
        TMOD &= 0xF0;                //設(shè)置定時(shí)器模式
        TL0 = 0x00;                //設(shè)置定時(shí)初值
        TH0 = 0x4C;                //設(shè)置定時(shí)初值
        TF0 = 0;                //清除TF0標(biāo)志
        TR0 = 1;                //定時(shí)器0開(kāi)始計(jì)時(shí)
        EA = 1;                        //開(kāi)總中斷
        ET0 = 1;           //開(kāi)定時(shí)器T0中斷
}

void Timer0(void) interrupt 1
  {
    TL0 = 0x00;                //設(shè)置定時(shí)初值
        TH0 = 0x4C;                //設(shè)置定時(shí)初值
        tewp++;
   if(tewp>=20)                 //LED燈閃時(shí)間處理
         {
          tewp=0;
          HAV=1;
         }
        if(WM==1)                        //開(kāi)關(guān)延遲10s
          {
           temp++;
           if(temp>=20)
                  {
                  temp=0;
                  time++;
                  if(time>=10)
                         {
                          time=0;
                           WM=0;
                       GM=0;
                         }
                   }
           }

}
回復(fù)

使用道具 舉報(bào)

11#
ID:760185 發(fā)表于 2020-7-1 12:10 | 只看該作者
延時(shí)判斷,這是比較簡(jiǎn)單的辦法
回復(fù)

使用道具 舉報(bào)

12#
ID:319023 發(fā)表于 2020-7-1 12:20 | 只看該作者
溫度  應(yīng)該要設(shè)置一個(gè)窗口值,升溫后報(bào)警  降到一定溫度值后再解除報(bào)警  就是有一個(gè)溫度范圍。 定時(shí)也要的,定義一個(gè)時(shí)間相關(guān)的變量, 降溫后 需要定時(shí)時(shí)間到了才解除報(bào)警
回復(fù)

使用道具 舉報(bào)

13#
ID:282747 發(fā)表于 2020-7-1 12:30 | 只看該作者
xujiabin 發(fā)表于 2020-7-1 11:27
定時(shí)器里面加一個(gè)計(jì)數(shù)標(biāo)志,等到計(jì)數(shù)到2秒給主循環(huán)一個(gè)標(biāo)志位,再拉低或者拉高引腳,就可以了。溫度防抖是 ...

你這個(gè)是定時(shí)去處理 我想要的是定時(shí)器直接做延遲
回復(fù)

使用道具 舉報(bào)

14#
ID:636538 發(fā)表于 2020-7-1 13:34 | 只看該作者
shijie240 發(fā)表于 2020-7-1 12:30
你這個(gè)是定時(shí)去處理 我想要的是定時(shí)器直接做延遲

那你就在想要延時(shí)的下面做個(gè)標(biāo)志位,標(biāo)志位為1,定時(shí)器給標(biāo)志位里面的變量累計(jì)加一,到了你想要延時(shí)的時(shí)間在做一個(gè)標(biāo)志位這個(gè)標(biāo)志位為1,說(shuō)明,延時(shí)時(shí)間到了
回復(fù)

使用道具 舉報(bào)

15#
ID:466730 發(fā)表于 2020-7-1 18:07 | 只看該作者
不能在AD轉(zhuǎn)溫度時(shí)候作么,比如AD轉(zhuǎn)換后取平均值,然后作個(gè)定時(shí)標(biāo)記,多少時(shí)間內(nèi)刷新一次溫度值.剩下的溫度控制程序就完全可以直接一次性判斷了
if(ADCokF&&Flag2s)
{
    ADCokF=0;
   Flag2s=0;
    //溫度轉(zhuǎn)換;
   A=溫度;
}

控制程序直接去掉延時(shí)等待
if(A>=31)//溫度大于31度
                 {
                  LED1=1;
                  LED2=1;
                  AR1=0;//拉低下面io口持續(xù)2s
                  AR2=0;
                  AR3=0;
                  AR4=0;
                  AR5=0;
                  AR6=0;
                  AR7=0;
                    }
          else if(A<31)
                 {
                  AR1=1;
                  AR2=1;
                  AR3=1;
                  AR4=1;
                  AR5=1;
                  AR6=1;
                  AR7=1;
                  LED1=~LED1;
                  LED2=~LED2;
            }

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

16#
ID:7209 發(fā)表于 2020-7-1 19:06 | 只看該作者
你應(yīng)該想實(shí)現(xiàn)的是,溫度自動(dòng)控制 !
    最長(zhǎng)見(jiàn)的就是  “恒溫電烙鐵”  
這個(gè)需要PID 來(lái)實(shí)現(xiàn)。
    如果用繼電器 是不行的,因?yàn)樵诮咏鼫囟戎档脮r(shí)候開(kāi)關(guān)頻繁。
    如果加熱水的話,還需要考慮水量減少時(shí),這個(gè)開(kāi)時(shí)間加熱的判斷。
    希望能幫到
   
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表