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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3642|回復: 1
打印 上一主題 下一主題
收起左側

51單片機與Arduino A4988步進電機驅動模塊源程序

[復制鏈接]
跳轉到指定樓層
樓主
本人小白,剛入坑單片機。手頭正好有幾個a4988驅動模塊和51單片機。網上找了段代碼,發現無法使用,電機抖動(與電機接線無關)。
用山寨邏輯分析儀測得脈沖寬度為4ms arduino脈寬為1.6ms。后改動少許代碼,成功運行。刪除了部分按鈕功能,插電即轉。注意電機線2a2b為一組,如有抖動嘗試調換一組線即可。

一、介紹

該擴展板可用作雕刻機,3D打印機等的驅動擴展板,一共有4路步進電機驅動模塊的插槽,(注意本板子不包含A4988步進電機驅動模塊,需要可在本店另購),可驅動4路不進電機,而每一路步進電機都只需要2個IO口,也就是說,6個IO口就可以很好的管理3個步進電機,使用起來非常的方便,告別傳統步進電機操作繁瑣。

二、UNO與模塊IO口對應關系介紹
步進電機的基本控制需要的引腳,其他引腳是在雕刻機,或3D打印機的時候才用到的,這里我們不作詳解,IO對應如上圖。

Arduino UNO----------------------擴展板
8 ------------------------ EN (步進電機驅動使能端,低電平有效)
7----------------------- Z.DIR(Z軸的方向控制)
6----------------------- Y.DIR(Y軸的方向控制)
5----------------------- X.DIR(X軸的方向控制)
4 ---------------------- Z.STEP(Z軸的步進控制)
3 ---------------------- Y.STEP(Y軸的步進控制)
2 ---------------------- X.STEP(X軸的步進控制)

//下面是簡單的步進電機控制程序,
#define EN 8 //步進電機使能端,低電平有效
#define X_DIR 5 //X軸 步進電機方向控制
#define Y_DIR 6 //y軸 步進電機方向控制
#define Z_DIR 7 //z軸 步進電機方向控制
#define X_STP 2 //x軸 步進控制
#define Y_STP 3 //y軸 步進控制
#define Z_STP 4 //z軸 步進控制
/*

//函數:step 功能:控制步進電機方向,步數。

//參數:dir 方向控制, dirPin對應步進電機的DIR引腳,stepperPin 對應步進電機的step引腳, steps 步進的步數

//無返回值

*/

void step(boolean dir, byte dirPin, byte stepperPin, int steps)

{
digitalWrite(dirPin, dir);
delay(50);
for (int i = 0; i < steps; i++) {
digitalWrite(stepperPin, HIGH);
delayMicroseconds(800);
digitalWrite(stepperPin, LOW);
delayMicroseconds(800);
}
}

void setup(){//將步進電機用到的IO管腳設置成輸出
pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);
pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT);
pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT);
pinMode(EN, OUTPUT);
digitalWrite(EN, LOW);
}

void loop(){
step(false, X_DIR, X_STP, 200); //X軸電機 反轉1圈,200步為一圈
step(false, Y_DIR, Y_STP, 200); //y軸電機 反轉1圈,200步為一圈
step(false, Z_DIR, Z_STP, 200); //z軸電機 反轉1圈,200步為一圈
delay(1000);
step(true, X_DIR, X_STP, 200); //X軸電機 正轉1圈,200步為一圈
step(true, Y_DIR, Y_STP, 200); //y軸電機 正轉1圈,200步為一圈
step(true, Z_DIR, Z_STP, 200); //z軸電機 正轉1圈,200步為一圈
delay(1000);
}


實驗現象:步進電機反轉一圈,停頓1秒,再正傳一圈,如此循環。

值得注意的是:在接插A4988模塊的時候注意不要插反,步進電機接線方式是:

2A ,2B 為一組(紅,綠), 1A,1B為一組(藍,黃)想改變方向,改變其中一組的位置即可,比如2A,與2B交換。
值得注意的是:在接插A4988模塊的時候注意不要插反,步進電機接線方式是:

2A ,2B 為一組(紅,綠), 1A,1B為一組(藍,黃)想改變方向,改變其中一組的位置即可,比如2A,與2B交換。

單片機源程序如下:
  1. /***************************************************************
  2. * 實 驗 名 :步進電機實驗
  3. * 實驗說明 :電機啟動、停止、正轉、反轉
  4. * 實驗平臺 :51單片機開發板
  5. * 連接方式 :pulse接P10  DIR接P11 KYE1接P20 KYE2接P21 KYE3接P22 KYE4接P23 ENABLE接P12 MS1-3接P13-P14
  6. * 注    意 :本例程使用了中斷定時器,中斷介紹會在下一實驗中說明
  7. ****************************************************************************/

  8. #include <reg52.h>
  9. #include <intrins.h>

  10. #define FOSC 11059200L //晶振設置,默認使用11.0592M Hz
  11. //#define FOSC 12000000L //晶振設置,使用12M Hz
  12. //#define FOSC 24000000L //晶振設置,使用24M Hz

  13. #define TIME_MS 1 //設定定時時間 ms ,在11.0592M晶振下,不易超過60ms





  14. //IO接口定義
  15. sbit pulse = P1^0;//脈沖信號
  16. sbit Dir   = P1^1; //正反轉

  17. sbit EN    = P1^2;
  18. sbit MS1   = P1^3;
  19. sbit MS2   = P1^4;
  20. sbit MS3   = P1^5;



  21. sbit KEY1 = P3^3;  //啟動
  22. sbit KEY2 = P3^4;  //停止
  23. sbit KEY3 = P3^5;  //正轉
  24. sbit KEY4 = P3^6;  //反轉


  25. //全局變量定義
  26. unsigned char count=0;

  27. /*******************************************************************************
  28. * 函 數 名 :Delayms
  29. * 函數功能 :實現 ms級的延時
  30. * 輸    入 :ms
  31. * 輸    出 :無
  32. *******************************************************************************/
  33. void Delayms(unsigned int ms)
  34. {
  35.         unsigned int i,j;
  36.         for(i=0;i<ms;i++)
  37.         #if FOSC == 11059200L
  38.                 for(j=0;j<114;j++);
  39.         #elif FOSC == 12000000L
  40.           for(j=0;j<123;j++);
  41.         #elif FOSC == 24000000L
  42.                 for(j=0;j<249;j++);
  43.         #else
  44.                 for(j=0;j<114;j++);
  45.         #endif
  46. }

  47. /*******************************************************************************
  48. * 函 數 名 :Timer0Init
  49. * 函數功能 :定時器0初始化
  50. * 輸    入 :無
  51. * 輸    出 :無
  52. *******************************************************************************/
  53. /*void Timer0Init()
  54. //{
  55.         TMOD=0x01; //設置定時器0工作方式為1
  56.         TH0=(65536-FOSC/12/1000*TIME_MS)/256;        TL0=(65536-FOSC/12/1000*TIME_MS)%256;
  57.         ET0=1; //開啟定時器0中斷
  58.         TR0=1;        //開啟定時器        
  59.         EA=1;  //打開總中斷
  60. /*///8*/
  61. void Timer0Int() interrupt 1
  62. {        TH0=(65536-FOSC/12/1000*8/10)/256;
  63.         TL0=(65536-FOSC/12/1000*8/10)%256;
  64.         //count++;
  65.         //if(count == 2)//1s
  66.         //{
  67.                 pulse = ~pulse;//LED燈閃爍
  68.                 //count = 0;
  69.         //}
  70. }

  71. /*******************************************************************************
  72. * 函 數 名 :main
  73. * 函數功能 :主函數
  74. * 輸    入 :無
  75. * 輸    出 :無
  76. *******************************************************************************/
  77. void main()
  78. {
  79.         //Timer0Init();
  80.         EN=0;
  81.         MS1=0;
  82.         MS2=0;
  83.         MS3=0;
  84.         Dir=1;
  85.         TMOD=0x01;//定時器0 16位工作方式
  86.         TR0=1;    //啟動定時器0
  87.         ET0=1;    //打開定時器中斷
  88.         EA=1;     //打開總中斷
  89.         while(1);
  90.         
  91. }
  92. /******************************************************************************** 函 數 名 :Timer0Int
  93. * 函數功能 :定時器0中斷函數 , 每隔TIME_MS ms進入
  94. * 輸    入 :無
  95. * 輸    出 :無
  96. *******************************************************************************/
復制代碼


以上程序下載(內容和本網頁上的一模一樣,方便保存):
a4988a.7z (2.65 KB, 下載次數: 64)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:224003 發表于 2024-2-25 21:06 | 只看該作者
A49882.C 中代碼缺失了一部分
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费视频一区 | av毛片 | 亚洲首页| 秋霞国产| 日韩在线小视频 | 色男人的天堂 | 日韩欧美国产精品 | 成人免费看黄 | 亚洲在线高清 | 精品久久久久久久久久久久 | www.47久久青青 | 亚洲综合一区二区三区 | av日韩高清 | 99久久日韩精品免费热麻豆美女 | 国产真实精品久久二三区 | 欧洲一区二区三区 | 久久大陆 | 中文字幕 国产精品 | 色综合中文 | 欧美激情久久久久久 | 先锋资源网站 | 中文字幕视频在线 | 密色视频 | 欧美日韩国产精品一区二区 | 孰女乱色一区二区三区 | 国产精品成人一区二区三区吃奶 | 国产91在线精品 | 欧美自拍另类 | 久久精彩视频 | 成人亚洲精品 | 日韩福利视频 | 91精品91久久久 | 精品综合| 国产欧美在线观看 | 日韩三级电影在线看 | 欧美一区二区三区四区视频 | 免费福利视频一区二区三区 | 国产中文字幕在线观看 | 亚洲自拍偷拍免费视频 | aaaa一级毛片 | 亚洲成年在线 |