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

QQ登錄

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

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

Arduino步進(jìn)電機(jī)圓弧插補(bǔ)實(shí)現(xiàn)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1109645 發(fā)表于 2024-1-19 08:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
#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。(低電平電機(jī)禁止運(yùn)動(dòng),高電平電機(jī)有效)

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

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


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


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

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

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

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

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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