找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1433|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

Arduino步進電機圓弧插補實現(xiàn)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1109645 發(fā)表于 2024-1-19 08:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <AccelStepper.h>
#include <MultiStepper.h>

#define STEPPER1_DIR_PIN    2
#define STEPPER1_STEP_PIN   3
#define STEPPER2_DIR_PIN    8
#define STEPPER2_STEP_PIN   9

#define Ena_PIN             10            //使能位為引腳10。(低電平電機禁止運動,高電平電機有效)

AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);   // 配置電機1 的脈沖引腳 方向引腳
AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN);   // 配置電機2 的脈沖引腳 方向引腳

#define a          400        //電機旋轉(zhuǎn)一圈的脈沖數(shù)
long positions[2];                        //2個電機坐標位置


/*庫函數(shù)說明
* setMaxSpeed ----------設(shè)置步進電機最大運行速度
* setAcceleration ------設(shè)置步進電機加速度
* setSpeed--------------設(shè)置步進電機運行速度
* targetPosition--------獲取步進電機運行目標位置
* currentPosition ------獲取步進電機運行當前位置
* setCurrentPosition----復(fù)位步進電機初始位置
* move------------------設(shè)置步進電機運動的相對目標位置
* moveTo----------------設(shè)置步進電機運動的絕對目標位置
* run-------------------步進電機運行(先加速后減速模式)
* runSpeed--------------步進電機運行(勻速模式)
* runToNewPosition------電機運行到用戶指定位置值,目標位置為絕對位置。此函數(shù)將“block”程序運行。即電機沒有到達目標位置前,Arduino將不會繼續(xù)執(zhí)行后續(xù)程序內(nèi)容。這一點很像Arduino官方Stepper庫中的step函數(shù)。
*/


void setup()
{
   //
  Serial.begin(9600);
  //
  pinMode(Ena_PIN, OUTPUT);
  digitalWrite(Ena_PIN, 1);

  //  
  stepper1.setMaxSpeed(a*5);      //設(shè)置1#電機最大速度
  stepper1.setSpeed(a*3.0);         //設(shè)置1#電機速度
  stepper1.setAcceleration(a*4);    //設(shè)置1#電機加速度
  //stepper2.setMaxSpeed(CIRCLE_Puls*1.5);
  //stepper2.setSpeed(CIRCLE_Puls*1.0);
// stepper2.setAcceleration(CIRCLE_Puls/4);
  delay(1000);
}

void loop()
{
/*================1、絕對位置運動1---向前轉(zhuǎn)3圈=============================*/
  //設(shè)置電機的目標位置
  positions[0] = a*100;
  //positions[1] = CIRCLE_Puls*3;
  stepper1.runToNewPosition(positions[0]);
  //串口反饋1#電機當前的位置
  Serial.print("1# Motor Current Position is: ");
  Serial.println(stepper1.currentPosition());
  delay(2000);

/*================2、絕對位置運動2---到零位=============================*/
/*
  //設(shè)置電機的目標位置
  positions[0] = CIRCLE_Puls*0;
  //positions[1] = CIRCLE_Puls*0;
  stepper1.runToNewPosition(positions[0]);
  //串口反饋1#電機當前的位置
  Serial.print("1# Motor Current Position is: ");
  Serial.println(stepper1.currentPosition())*
  delay(2000);*/
}

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:830831 發(fā)表于 2024-1-19 17:49 | 只看該作者
樓主,差補表現(xiàn)在哪?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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