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

QQ登錄

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

搜索
查看: 8219|回復(fù): 15
收起左側(cè)

單片機(jī)如何控制步進(jìn)電機(jī)停止

  [復(fù)制鏈接]
ID:265318 發(fā)表于 2018-1-16 12:08 | 顯示全部樓層 |閱讀模式
我個(gè)人猜想的是用TR0=0來(lái)暫停但是沒(méi)用。。。求大佬看看
void main(void)
{ u16 j,i;
time();       

       
        j=0;
        for(i=0;i<64;i++)
          {P1=0x00;
           P1=FFW[j];
           j++;
           if(j>=8) j=0;
           delay(500);
           }
           TR0=0;
}       
這個(gè)是我實(shí)現(xiàn)步進(jìn)電機(jī)動(dòng)起來(lái)的部分

          
       
       


評(píng)分

參與人數(shù) 1黑幣 +4 收起 理由
hahahahh + 4 很給力!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-1-16 13:32 | 顯示全部樓層
不發(fā)脈沖就可以讓步進(jìn)電機(jī)不轉(zhuǎn)動(dòng)。
回復(fù)

使用道具 舉報(bào)

ID:265318 發(fā)表于 2018-1-16 14:36 來(lái)自手機(jī) | 顯示全部樓層
HC6800-ES-V2.0 發(fā)表于 2018-1-16 13:32
不發(fā)脈沖就可以讓步進(jìn)電機(jī)不轉(zhuǎn)動(dòng)。

大佬,我的i只循環(huán)64次,也就是說(shuō)64次脈沖后應(yīng)該就停了啊>_<可是完全停不下來(lái)了啊
回復(fù)

使用道具 舉報(bào)

ID:193818 發(fā)表于 2018-1-16 15:54 | 顯示全部樓層
time()和你后面一大段代碼有關(guān)系么?     TR0=0
回復(fù)

使用道具 舉報(bào)

ID:276604 發(fā)表于 2018-1-16 15:55 | 顯示全部樓層
感覺(jué)你是8位并口 操作 。
第一你得確定你的端口位。
第二你的FFW[j]數(shù)據(jù)邏輯對(duì)不對(duì)。這里你的循環(huán)就錯(cuò)了  if(j>=8) j=0;  多執(zhí)行了一次。
回復(fù)

使用道具 舉報(bào)

ID:193818 發(fā)表于 2018-1-16 15:55 | 顯示全部樓層
TR0=0?你是打算關(guān)掉定時(shí)器?可是跟你控制步進(jìn)電機(jī)的程序有關(guān)系么
回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-1-16 16:35 | 顯示全部樓層
zjjmw 發(fā)表于 2018-1-16 14:36
大佬,我的i只循環(huán)64次,也就是說(shuō)64次脈沖后應(yīng)該就停了啊>_

看我的:
  1. #include <reg52.h>

  2. #define Rotation P1//步進(jìn)電機(jī),只用低四位
  3. unsigned char code FFW1[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
  4. unsigned char code FFW2[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

  5. sbit k1=P3^1;                //以下四個(gè)為獨(dú)立鍵盤(pán)
  6. sbit k2=P3^0;
  7. sbit k3=P3^2;
  8. sbit k4=P3^3;

  9. unsigned int Time;
  10. unsigned int jd;
  11. bit k=0,key1=0,key2=0;

  12. void Delay10ms(unsigned int c)
  13. {
  14.     unsigned char a,b;
  15.     for(c;c>0;c--)
  16.         for(b=38;b>0;b--)
  17.             for(a=130;a>0;a--);
  18. }

  19. void Delay(unsigned int i)
  20. {
  21.         while (--i);
  22. }

  23. void  Motor()//電機(jī)旋轉(zhuǎn)子函數(shù)
  24. {
  25.         unsigned char i;
  26.         for(i=0;(i<8);i++)
  27.         {
  28.                 if (jd==0)        //jd為0則停轉(zhuǎn)
  29.                 {
  30.                         Rotation=0xf0;
  31.                         break;
  32.                 }
  33.                 if (k==0)
  34.                 {
  35.                         Rotation=FFW2[i];//輸出正轉(zhuǎn)的相
  36.                 }               
  37.                 else
  38.                 {
  39.                         Rotation=FFW1[i];//輸出反轉(zhuǎn)的相
  40.                 }
  41.                 Delay(Time);//最小120,最快
  42.                 jd--;
  43.                                                         
  44.         }
  45. }

  46. void main()
  47. {        
  48.         unsigned char m;
  49.         m=0;
  50.         Time=255;
  51.         jd=20480;//可以轉(zhuǎn)5圈
  52.         while(1)
  53.         {
  54.                
  55.                 if(k1==0)
  56.                 {
  57.                         Delay10ms(1);
  58.                         if(k1==0)
  59.                         {
  60.                                 if (key1==0)//按第奇數(shù)次,正轉(zhuǎn),偶數(shù)次反轉(zhuǎn)
  61.                                 {
  62.                                         Time=105;
  63.                                         k=0;//正轉(zhuǎn)
  64.                                         jd=20480;
  65.                                         key1=1;
  66.                                 }
  67.                                 else
  68.                                 {
  69.                                         Time=105;
  70.                                         k=1;//反轉(zhuǎn)
  71.                                         jd=20480;
  72.                                         key1=0;
  73.                                 }

  74.                                 while((m<50)&&(k1==0))
  75.                             {
  76.                                     Delay10ms(1);
  77.                                     m++;
  78.                             }
  79.                             m=0;
  80.                         }
  81.                 }

  82.                 if(k2==0)
  83.                 {
  84.                         Delay10ms(1);
  85.                         if(k2==0)
  86.                         {
  87.                                 if (key2==0)//按奇數(shù)次轉(zhuǎn)180度,偶數(shù)次90度
  88.                                 {
  89.                                         Time=255;
  90.                                         k=1;
  91.                                         jd=2048;
  92.                                         key2=1;
  93.                                 }
  94.                                 else
  95.                                 {
  96.                                         Time=205;
  97.                                         k=0;
  98.                                         jd=1024;
  99.                                         key2=0;
  100.                                 }

  101.                                 while((m<50)&&(k2==0))
  102.                             {
  103.                                     Delay10ms(1);
  104.                                     m++;
  105.                             }
  106.                             m=0;
  107.                         }
  108.                 }

  109.                 if(k3==0)
  110.                 {                                                         
  111.                         Delay10ms(1);
  112.                         if(k3==0)
  113.                         {
  114.                                 
  115.                                 Time=Time+100;//最大500
  116.                                 if (Time>505)
  117.                                 {
  118.                                         Time=505;
  119.                                 }
  120.                                 jd=20480;

  121.                                 while((m<50)&&(k3==0))
  122.                             {
  123.                                     Delay10ms(1);
  124.                                     m++;
  125.                             }
  126.                             m=0;
  127.                         }
  128.                 }

  129.                 if(k4==0)
  130.                 {
  131.                         Delay10ms(1);
  132.                         if(k4==0)
  133.                         {

  134.                                 Time=Time-100;//最小105
  135.                                 if (Time<105)
  136.                                 {
  137.                                         Time=105;
  138.                                 }
  139.                                 jd=20480;

  140.                                 while((m<50)&&(k4==0))
  141.                             {
  142.                                     Delay10ms(1);
  143.                                     m++;
  144.                             }
  145.                             m=0;
  146.                         }
  147.                 }
  148.                 Motor();
  149.         }
  150. }
復(fù)制代碼

這是我多年前做步進(jìn)電機(jī)試驗(yàn)時(shí)的程序,現(xiàn)在看起來(lái)很“小兒科”。不過(guò),正反轉(zhuǎn)動(dòng)、加速減速都有。
適用電路:
1.jpg

2.jpg

回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-1-16 21:18 | 顯示全部樓層
要停還不簡(jiǎn)單?斷電就是了!
回復(fù)

使用道具 舉報(bào)

ID:84283 發(fā)表于 2018-1-16 21:45 | 顯示全部樓層
TR0是51單片機(jī)定時(shí)器T0的開(kāi)定時(shí)器位,有可能你的用到了中斷了 你還是把所有的程序貼出來(lái)看看把
回復(fù)

使用道具 舉報(bào)

ID:265318 發(fā)表于 2018-1-17 17:10 來(lái)自手機(jī) | 顯示全部樓層
漫步經(jīng)心 發(fā)表于 2018-1-16 15:55
TR0=0?你是打算關(guān)掉定時(shí)器?可是跟你控制步進(jìn)電機(jī)的程序有關(guān)系么

哈,這個(gè)跟定時(shí)器沒(méi)關(guān)嘛>_<
回復(fù)

使用道具 舉報(bào)

ID:275764 發(fā)表于 2018-1-17 17:24 | 顯示全部樓層
通過(guò)pwm控制,不給pwm
回復(fù)

使用道具 舉報(bào)

ID:277171 發(fā)表于 2018-1-17 21:53 | 顯示全部樓層
沒(méi)有方波信號(hào)輸出時(shí),步進(jìn)電機(jī)不會(huì)轉(zhuǎn)的
回復(fù)

使用道具 舉報(bào)

ID:276587 發(fā)表于 2018-1-18 16:57 來(lái)自手機(jī) | 顯示全部樓層
學(xué)習(xí)大神資料
回復(fù)

使用道具 舉報(bào)

ID:265318 發(fā)表于 2018-1-18 20:55 | 顯示全部樓層
st_zaiyuzhong 發(fā)表于 2018-1-17 17:24
通過(guò)pwm控制,不給pwm

emmm我才知道pwm。。。是個(gè)啥,學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

ID:736290 發(fā)表于 2020-4-23 17:05 | 顯示全部樓層
請(qǐng)問(wèn)下是如何控制步進(jìn)電機(jī)停止的呢
回復(fù)

使用道具 舉報(bào)

ID:736367 發(fā)表于 2020-4-23 18:15 | 顯示全部樓層
步進(jìn)電機(jī)是靠脈沖控制的,如果你不給脈沖,自然就停下來(lái)了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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