久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 賽元SC95F8616單片機驅動步進電機源程序 [打印本頁]

作者: jinglixixi    時間: 2020-7-7 07:58
標題: 賽元SC95F8616單片機驅動步進電機源程序
本帖最后由 jinglixixi 于 2020-7-14 00:25 編輯

步進電機是一種常用的執行器件,使用它能進行精準的定位及轉速調節等工作。一個簡單的步進電機驅動要由步進電機、驅動電路及單片機構成,見下圖所示。


步進電機驅動的構成圖

為了驅動步進電機,除了硬件方面的準備,還需必要的軟件配合。在易碼魔盒中,就提供了步進電機的外設驅動。由于剛開始學習用易碼魔盒來設計程序,便打算在這方面練練手。
起初試了許多次,都一直沒有成功,就打算用手工編程的方法先讓步進電機轉起來,然后再與易碼魔盒生成的程序進行對比來發現問題。
要手工編寫步進電機驅動程序主要分為以下幾步:
1)分配引腳的使用
以步進電機的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)配置延時函數
配置延時函數的工作在步進電機的驅動中十分重要,它控制著步進電機運轉的快慢。
但問題也正出在這里,對于步進電機來說其速度是與驅動脈沖有關,但也并非脈沖越快,電機的轉速越快。因為電機電機屬于機械器件,要建立相應的磁場及達到相應的扭矩才能使電機轉動。過快的脈沖只會使電機在原地震顫和抖動,并無法旋轉。
使電機轉動的延時函數為:
  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)控制電機旋轉方向
  10. 對于4相5線式步進電機來講,可通過8個節拍的脈沖序列來控制其正反轉。
  11. 正轉的驅動函數為:
  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. }
復制代碼

反轉的單片機驅動函數為:
  1. void fx()
  2. {
  3.     unsigned char X,Y;
  4.     for(X=0;X<64;X++)    // 控制節拍數
  5.     {
  6.       for(Y=0;Y<8;Y++)   // 控制節拍
  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. }
復制代碼

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



作者: shenyuqiu    時間: 2021-4-19 16:05
賽元單片機資料很少,是不是很少人用呀?
作者: JJ.c    時間: 2021-4-19 16:56
做得很好,資料很足
作者: radio0326    時間: 2023-1-13 14:25
賽元的東西找個教程都比較難找,看看樓主的東西學習一下




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本粉嫩一区二区三区视频 | 亚洲国产一区二区三区 | 亚洲精品大全 | 日韩在线小视频 | jizz在线免费观看 | 男人的天堂avav | 欧美精品一区二区在线观看 | 欧美极品在线观看 | 超碰在线免费公开 | 中文字幕电影在线观看 | 国产伦一区二区三区四区 | 国产日产精品一区二区三区四区 | 欧美日韩一 | 久久一区精品 | 一道本不卡视频 | 欧美激情精品久久久久久变态 | 久草.com | 国产精品欧美一区二区三区不卡 | 中文字幕成人网 | 天天干天天谢 | 黄色一级毛片 | 91久久久久久| 国产一级在线观看 | 中文字幕一区在线观看视频 | 国产成人av一区二区三区 | 欧美a级成人淫片免费看 | 国产福利精品一区 | 91毛片网 | 日本午夜免费福利视频 | 日韩av网址在线观看 | 久久成人av电影 | 亚洲一区二区三区在线视频 | 日本精品裸体写真集在线观看 | 精品视频导航 | 亚洲欧美中文日韩在线v日本 | 精品福利在线 | 激情视频一区 | 国产精品mv在线观看 | 国产一区二区三区免费视频 | 久久久久久久久综合 | 激情欧美日韩一区二区 |