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

QQ登錄

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

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

賽元SC95F8616單片機(jī)驅(qū)動(dòng)步進(jìn)電機(jī)源程序

[復(fù)制鏈接]
ID:776997 發(fā)表于 2020-7-7 07:58 | 顯示全部樓層 |閱讀模式
本帖最后由 jinglixixi 于 2020-7-14 00:25 編輯

步進(jìn)電機(jī)是一種常用的執(zhí)行器件,使用它能進(jìn)行精準(zhǔn)的定位及轉(zhuǎn)速調(diào)節(jié)等工作。一個(gè)簡(jiǎn)單的步進(jìn)電機(jī)驅(qū)動(dòng)要由步進(jìn)電機(jī)、驅(qū)動(dòng)電路及單片機(jī)構(gòu)成,見(jiàn)下圖所示。
1.png

步進(jìn)電機(jī)驅(qū)動(dòng)的構(gòu)成圖

為了驅(qū)動(dòng)步進(jìn)電機(jī),除了硬件方面的準(zhǔn)備,還需必要的軟件配合。在易碼魔盒中,就提供了步進(jìn)電機(jī)的外設(shè)驅(qū)動(dòng)。由于剛開(kāi)始學(xué)習(xí)用易碼魔盒來(lái)設(shè)計(jì)程序,便打算在這方面練練手。
起初試了許多次,都一直沒(méi)有成功,就打算用手工編程的方法先讓步進(jìn)電機(jī)轉(zhuǎn)起來(lái),然后再與易碼魔盒生成的程序進(jìn)行對(duì)比來(lái)發(fā)現(xiàn)問(wèn)題。
要手工編寫(xiě)步進(jìn)電機(jī)驅(qū)動(dòng)程序主要分為以下幾步:
1)分配引腳的使用
以步進(jìn)電機(jī)的MA~ MD引腳分別與P32~ P35相連接
sbit MA       =   P3^2;
sbit MB       =   P3^3;
sbit MC       =   P3^4;
sbit MD       =   P3^5;

2)定義輸出高低電平的宏定義
#define MAL    MA  =   0;
#define MAH    MA  =   1;
#define MBL    MB  =   0;
#define MBH    MB  =   1;
#define MCL    MC  =   0;
#define MCH    MC  =   1;
#define MDL    MD  =   0;
#define MDH    MD  =   1;

3)配置延時(shí)函數(shù)
配置延時(shí)函數(shù)的工作在步進(jìn)電機(jī)的驅(qū)動(dòng)中十分重要,它控制著步進(jìn)電機(jī)運(yùn)轉(zhuǎn)的快慢。
但問(wèn)題也正出在這里,對(duì)于步進(jìn)電機(jī)來(lái)說(shuō)其速度是與驅(qū)動(dòng)脈沖有關(guān),但也并非脈沖越快,電機(jī)的轉(zhuǎn)速越快。因?yàn)殡姍C(jī)電機(jī)屬于機(jī)械器件,要建立相應(yīng)的磁場(chǎng)及達(dá)到相應(yīng)的扭矩才能使電機(jī)轉(zhuǎn)動(dòng)。過(guò)快的脈沖只會(huì)使電機(jī)在原地震顫和抖動(dòng),并無(wú)法旋轉(zhuǎn)。
使電機(jī)轉(zhuǎn)動(dòng)的延時(shí)函數(shù)為:
  1. void delay_ms(void)
  2. {
  3.            unsigned char b,c;
  4.            for(c=0;c<180;c++)
  5.            {
  6.                for(b=0;b<8;b++);
  7.            }
  8. }
  9. 4)控制電機(jī)旋轉(zhuǎn)方向
  10. 對(duì)于4相5線(xiàn)式步進(jìn)電機(jī)來(lái)講,可通過(guò)8個(gè)節(jié)拍的脈沖序列來(lái)控制其正反轉(zhuǎn)。
  11. 正轉(zhuǎn)的驅(qū)動(dòng)函數(shù)為:
  12. void zx()
  13. {
  14.     unsigned char X,Y;  
  15.     for(X=0;X<64;X++)
  16.     {
  17.       for(Y=0;Y<8;Y++)
  18.       {
  19.          MDL;
  20.          MAH; //A
  21.          delay_ms();
  22.          MBH; //AB
  23.          delay_ms();
  24.          MAL; //B
  25.          delay_ms();
  26.          MCH; //BC
  27.          delay_ms();
  28.          MBL; //C
  29.          delay_ms();
  30.          MDH; //CD
  31.          delay_ms();
  32.          MCL; //D
  33.          delay_ms();
  34.          MAH; //DA
  35.          delay_ms();
  36.        }               
  37.     }  
  38. }
復(fù)制代碼

反轉(zhuǎn)的單片機(jī)驅(qū)動(dòng)函數(shù)為:
  1. void fx()
  2. {
  3.     unsigned char X,Y;
  4.     for(X=0;X<64;X++)    // 控制節(jié)拍數(shù)
  5.     {
  6.       for(Y=0;Y<8;Y++)   // 控制節(jié)拍
  7.       {
  8.          MDH;
  9.          MAH; //A
  10.          delay_ms();
  11.          MAL; //AB
  12.          delay_ms();
  13.          MCH; //B
  14.          delay_ms();
  15.          MDL; //BC
  16.          delay_ms();
  17.          MBH; //C
  18.          delay_ms();
  19.          MCL; //CD
  20.          delay_ms();
  21.          MAH; //D
  22.          delay_ms();
  23.          MBL; //DA
  24.          delay_ms();
  25.        }               
  26.     }
  27. }
復(fù)制代碼

5)主程序控制電機(jī)運(yùn)行
  1. void main()
  2. {
  3.      unsigned char rdata=9,f,c;
  4.      delay_ms();
  5.      //停止電機(jī)轉(zhuǎn)動(dòng)
  6.      MAL;
  7.      MBL;
  8.      MCL;
  9.      MDL;
  10.      delay_ms();
  11.      f=1;//控制轉(zhuǎn)向
  12.      while(1)
  13.      {
  14.                             for(c=0;c<rdata;c++)    //控制轉(zhuǎn)動(dòng)的位置
  15.                             {
  16.                                      if(f==0)
  17.                                            fx();
  18.                                      else
  19.                                      {
  20.                                           zx();
  21.                                      }
  22.                            }
  23.      }
  24. }
復(fù)制代碼


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:385637 發(fā)表于 2021-4-19 16:05 | 顯示全部樓層
賽元單片機(jī)資料很少,是不是很少人用呀?
回復(fù)

使用道具 舉報(bào)

ID:908482 發(fā)表于 2021-4-19 16:56 | 顯示全部樓層
做得很好,資料很足
回復(fù)

使用道具 舉報(bào)

ID:64253 發(fā)表于 2023-1-13 14:25 | 顯示全部樓層
賽元的東西找個(gè)教程都比較難找,看看樓主的東西學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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