找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2376|回復(fù): 2
收起左側(cè)

關(guān)于步進(jìn)電機(jī)在運(yùn)轉(zhuǎn)時超溫的問題

[復(fù)制鏈接]
ID:83006 發(fā)表于 2015-6-16 13:33 | 顯示全部樓層 |閱讀模式
這是我的主程序段,當(dāng)我把電機(jī)運(yùn)轉(zhuǎn)和溫控這兩個分開在工程時可以完全得到想要的,但是在我把這兩個結(jié)合時就完全不能實(shí)現(xiàn),為什么當(dāng)我進(jìn)行仿真時電機(jī)只轉(zhuǎn)一個角度就直接超溫停止了,可我的DS18B20都沒有達(dá)到溫度上限值?
void main()
{
uchar i,j,n;
TMOD|=0x01;//定時器設(shè)置
TH0=0xef;//裝初始值
TL0=0xf0;   
EA=1;// 開總中斷
ET0=1;//允許定時器0中斷
TR0=1;//開定時器0中斷
RRR=25;         //設(shè)置每步延時250ms
check=0;      
stop_turing=0;
while(1)
{
    if(m_switch==0)     //總開關(guān)
{
  if(P1!=0xff||P3_0!=1)  //判斷是否有步數(shù)按下
  {
   step();       //判斷步數(shù)
   rotation();      //判斷正逆轉(zhuǎn),
   if(flg==0)     //電機(jī)運(yùn)轉(zhuǎn)時有正逆轉(zhuǎn)的指示燈指示
   {
    F_led=0;     //正轉(zhuǎn)燈
   }
   else
   {
    R_led=0;   //逆轉(zhuǎn)燈
   }
   P0=0x0c;      //給電機(jī)打開起始位BA,如果在三相單三中則改為P0=0x06;
   for(j=0;j<num;j++)
   {
    if(stop_turing==1)
    {
     break;
    }
    for(i=0;i<=3;i++) //給P0口輸出轉(zhuǎn)動,如果在三相單三中則改為for(i=0;i<=2;i++)
       {
        P0=output[flg][i];
     for(n=0;n<RRR;n++)   //延時
     {
      delay(10);
     }
     if(check==1)  //檢查溫度標(biāo)示由定時器給出
     {
      handle_Temperature();// 處理溫度:如果超溫則stop_turing==1,同時報警響和紅燈亮
     }
     if(stop_turing==1)
     {
      break;
     }      
       }
   }
   F_led=1;     //關(guān)燈
   R_led=1;
   P0=0x0f;    //給P0口復(fù)位
  }   
}
  }   
}


回復(fù)

使用道具 舉報

ID:83006 發(fā)表于 2015-6-16 13:37 | 顯示全部樓層
我覺得我這個溫度檢測放的位置不對,因為當(dāng)步進(jìn)電機(jī)每轉(zhuǎn)一個角度時還要判斷是否要去檢測溫度,這是不是會導(dǎo)致我的電機(jī)每個步的輸出延時不一致?那大神們是如何在電機(jī)工作時檢測溫度的呢?
回復(fù)

使用道具 舉報

ID:83006 發(fā)表于 2015-6-16 23:34 | 顯示全部樓層
今天我不斷自己摸索已經(jīng)初步實(shí)現(xiàn)了電機(jī)轉(zhuǎn)動時測溫判斷是否報警和停轉(zhuǎn),但問題來了,在仿真時當(dāng)我按下總開關(guān)鍵單片機(jī)就會自動先行報警+停轉(zhuǎn)(可報警+停轉(zhuǎn)的if條件根本不滿足),,但當(dāng)我再次按下總開關(guān)鍵時就會正常運(yùn)轉(zhuǎn)+測溫(當(dāng)我調(diào)溫高過限定值時才報警+停轉(zhuǎn))。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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