找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2367|回復: 2
打印 上一主題 下一主題
收起左側

關于步進電機在運轉時超溫的問題

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


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

使用道具 舉報

沙發(fā)
ID:83006 發(fā)表于 2015-6-16 13:37 | 只看該作者
我覺得我這個溫度檢測放的位置不對,因為當步進電機每轉一個角度時還要判斷是否要去檢測溫度,這是不是會導致我的電機每個步的輸出延時不一致?那大神們是如何在電機工作時檢測溫度的呢?
回復

使用道具 舉報

板凳
ID:83006 發(fā)表于 2015-6-16 23:34 | 只看該作者
今天我不斷自己摸索已經初步實現(xiàn)了電機轉動時測溫判斷是否報警和停轉,但問題來了,在仿真時當我按下總開關鍵單片機就會自動先行報警+停轉(可報警+停轉的if條件根本不滿足),,但當我再次按下總開關鍵時就會正常運轉+測溫(當我調溫高過限定值時才報警+停轉)。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表