[Arduino资料] 步进电机

[复制链接]
 楼主| gaochy1126 发表于 2025-6-26 17:28 | 显示全部楼层 |阅读模式
  1. #include <AccelStepper.h>
  2. #include <MultiStepper.h>

  3. #define STEPPER1_DIR_PIN    6
  4. #define STEPPER1_STEP_PIN   7
  5. #define STEPPER2_DIR_PIN    8
  6. #define STEPPER2_STEP_PIN   9

  7. #define Ena_PIN             10        //使能位为引脚10。(低电平电机禁止运动,高电平电机有效)

  8. AccelStepper stepper1(AccelStepper::DRIVER, STEPPER1_STEP_PIN, STEPPER1_DIR_PIN);   // 配置电机1 的脉冲引脚 方向引脚
  9. AccelStepper stepper2(AccelStepper::DRIVER, STEPPER2_STEP_PIN, STEPPER2_DIR_PIN);   // 配置电机2 的脉冲引脚 方向引脚
  10. MultiStepper steppers;

  11. #define CIRCLE_Puls          1600       //电机旋转一圈的脉冲数
  12. long positions[2];                      //2个电机坐标位置

  13. void setup()
  14. {
  15.    //
  16.   Serial.begin(9600);
  17.   //
  18.   pinMode(Ena_PIN, OUTPUT);
  19.   digitalWrite(Ena_PIN, 1);

  20.   //  
  21.   stepper1.setMaxSpeed(CIRCLE_Puls*1.5);      //设置1#电机最大速度
  22.   stepper1.setSpeed(CIRCLE_Puls*1);         //设置1#电机速度
  23.   stepper1.setAcceleration(CIRCLE_Puls/4);  //设置1#电机加速度
  24.   stepper2.setMaxSpeed(CIRCLE_Puls*1.5);
  25.   stepper2.setSpeed(CIRCLE_Puls*1);
  26.   stepper2.setAcceleration(CIRCLE_Puls/4);

  27. /*==============1、转动=========================*/
  28.   //设置电机的目标位置
  29.   positions[0] = CIRCLE_Puls*3;
  30.   positions[1] = CIRCLE_Puls*3;
  31.   
  32.   //添加到多轴中
  33.   steppers.addStepper(stepper1);
  34.   steppers.addStepper(stepper2);  
  35.   //电机运行执行
  36.   steppers.moveTo(positions);
  37.   steppers.runSpeedToPosition();  

  38.   //串口反馈1#电机当前的位置
  39.   Serial.print("1# Motor Current Position is: ");
  40.   Serial.println(stepper1.currentPosition());
  41.   delay(2000);

  42. /*==============2、反转=========================*/
  43.   //设置电机的目标位置
  44.   //positions[0] = CIRCLE_Puls*0;
  45.   //positions[1] = CIRCLE_Puls*0;
  46.   positions[0] = 1;
  47.   positions[1] = 1;
  48.   
  49.   //添加到多轴中
  50.   steppers.addStepper(stepper1);
  51.   steppers.addStepper(stepper2);  
  52.   //电机运行执行
  53.   steppers.moveTo(positions);
  54.   steppers.runSpeedToPosition();

  55.   //串口反馈1#电机当前的位置
  56.   Serial.print("1# Motor Current Position is: ");
  57.   Serial.println(stepper1.currentPosition());
  58.   delay(2000);
  59.   
  60. }

  61. void loop()
  62. {
  63.   // put your main code here, to run repeatedly:

  64. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1148

主题

11651

帖子

26

粉丝
快速回复 在线客服 返回列表 返回顶部