使用库实现步进电机指定角度旋转

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用库实现步进电机指定角度旋转相关的知识,希望对你有一定的参考价值。

使用库实现步进电机指定角度旋转

步进电机和驱动器相关的资料
https://pan.baidu.com/s/1udb4MyEOXk4CTO7TKRHj6w 
提取码: fuea 
  • 步进电机
    在这里插入图片描述
  • TB6600驱动器
    *
  • **接线说明:**重点内容!!!!为什么一写步进电机就老生常谈这个接线问题问题,因为实在太重要了,关系到后面的工作能否继续开展。
    在这里插入图片描述
  • 强调本实验采用共阴接线方法!!!
  • 示例代码:
/*
 * Simple demo, should work with any driver board
 *
 * Connect STEP, DIR as indicated
 *
 * Copyright (C)2015-2017 Laurentiu Badea
 *
 * This file may be redistributed under the terms of the MIT license.
 * 步进电机驱动器采用共阴极接法
 * TB6600拨码设置为1,2,4打到on
 */
#include <Arduino.h>
#include "BasicStepperDriver.h"

// Motor steps per revolution. Most steppers are 200 steps or 1.8 degrees/step
#define MOTOR_STEPS 200       //脉冲步数  
#define RPM 210   //  转速设置

// 由于微步是在外部设置的,请确保这与选择的模式相匹配
// If it doesn't, the motor will move at a different RPM than chosen
// 1=full step, 2=half step etc.
#define MICROSTEPS 1  // 节拍全步和半步设置

// All the wires needed for full functionality
#define DIR 10  //方向引脚
#define STEP 9  //PUL引脚
//Uncomment line to use enable/disable functionality
#define SLEEP 8 //ENA使能引脚

// 2-wire basic config, microstepping is hardwired on the driver
//BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);/在不使用ENA引脚情况下,ENA接GND(共阴接法)或者5V(共阳接法),

//Uncomment line to use enable/disable functionality
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP, SLEEP);//200,

void setup() {
    stepper.begin(RPM, MICROSTEPS);//初始化步进转速和节拍细分数
    // if using enable/disable on ENABLE pin (active LOW) instead of SLEEP uncomment next line
     stepper.setEnableActiveState(LOW);//设置ENA使能状态
}

void loop() {
   
    // energize coils - the motor will hold position
     stepper.enable();//使能ENA
  
    /*
     * Moving motor one full revolution using the degree notation
     */
    stepper.rotate(360);//选择360度

    /*
     * Moving motor to original position using steps
     */
    //stepper.move(MOTOR_STEPS*MICROSTEPS);

    // pause and allow the motor to be moved by hand
     stepper.disable();//停止旋转

    delay(10000);
}
  • stepper.rotate(360);这里面的旋转角度,是在驱动器设置的MICROSTEPS细分数,也就是脉冲数以及电机的步距角匹配的情况下,才能实现旋转角度准确控制,脉冲数和驱动器的细分数设置不匹配,控制的角度就不一样了,请注意这一点!!!
  • 步距角为1.8度的步进电机(小电机),转一圈所用的脉冲数为 n=360/1.8=200个脉冲,所以设置的MOTOR_STEPS 200

以上是关于使用库实现步进电机指定角度旋转的主要内容,如果未能解决你的问题,请参考以下文章

使用旋转编码器控制直流减速电机

arduino怎么用ks103

css控制div元素旋转指定角度代码实例

物体旋转后缓慢停在指定角度的实现

如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果

osg指定向量旋转指定角度