极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10009|回复: 2

用6个TB6560及1个UNO同时驱动6台工业步进电机

[复制链接]
发表于 2016-6-2 12:37:30 | 显示全部楼层 |阅读模式
//用了大连好人的带加速库的步进电机驱动库,表示感谢。大家可以学习检索下载
//TB6560设置:SW1:ON,SW2:OFF,SW3:OFF,DIP1:OFF,DIP2:OFF,DIP3:ON,DIP4:ON,DIP5:OFF,DIP6:ON
#include <EasyStepper.h>  //使用大连好人的步进电机驱动库
#define STEP1_PIN 2  //设定步进电机1速度(接TB6560"CLK+","CLK-"共地)在UNO的2脚
#define DIR1_PIN 3  //设定步进电机1方向(接TB6560"CW+","CW-"共地)在3脚
#define STEP2_PIN 4  //设定步进电机2速度在UNO的4脚
#define DIR2_PIN 5  //设定步进电机2方向在5脚
#define STEP3_PIN 6  //设定步进电机3速度在UNO的6脚
#define DIR3_PIN 7  //设定步进电机3方向在7脚
#define STEP4_PIN 8  //设定步进电机4速度在UNO的8脚
#define DIR4_PIN 9  //设定步进电机4方向在9脚
#define STEP5_PIN 10  //设定步进电机5速度在UNO的10脚
#define DIR5_PIN 11  //设定步进电机5方向在11脚
#define STEP6_PIN 12  //设定步进电机6速度在UNO的12脚
#define DIR6_PIN 13  //设定步进电机6方向在13脚
#define DIR_PIN_INVERTED true
#define EN_PIN_INVERTED true

int EN_PIN = 0;  //所有的TB6560的"EN+"和"EN-"共地,就是使能接地,步进电机连接不脱机

EasyStepper stepper1(STEP1_PIN, DIR1_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);
EasyStepper stepper2(STEP2_PIN, DIR2_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);
EasyStepper stepper3(STEP3_PIN, DIR3_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);
EasyStepper stepper4(STEP4_PIN, DIR4_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);
EasyStepper stepper5(STEP5_PIN, DIR5_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);
EasyStepper stepper6(STEP6_PIN, DIR6_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);

void setup()
{
  Serial.begin(9600);
  stepper1.debugMode(false);
  stepper1.startup();
  stepper2.debugMode(false);
  stepper2.startup();
  stepper3.debugMode(false);
  stepper3.startup();
  stepper4.debugMode(false);
  stepper4.startup();
  stepper5.debugMode(false);
  stepper5.startup();
  stepper6.debugMode(false);
  stepper6.startup();
}

void loop()
{
  rtt(1, 12000, 10000, 0); //第1台步进电机按12000的速度顺时针走5000步加速度0
  rtt(2, 11000, -9000, 1); //第2台步进电机按11000的速度逆时针走9000步加速度1
  rtt(3, 10000, 8000, 2);  //第3台步进电机按10000的速度顺时针走8000步加速度2
  rtt(4, 9000, -7000, 3);  //第4台步进电机按 9000的速度逆时针走7000步加速度3
  rtt(5, 8000, 6000, 4);   //第5台步进电机按 8000的速度顺时针走6000步加速度4
  rtt(6, 7000, -5000, 5);  //第6台步进电机按 7000的速度逆时针走5000步加速度5
}

void rtt(int bh, int sd, int bs, int jsd)
{
  switch (bh)
  {
    case 1:
      stepper1.rotate(sd, bs, jsd);
      stepper1.run();
      while (!stepper1.isDone()) {
        stepper1.run();
      }
      break;
    case 2:
      stepper2.rotate(sd, bs, jsd);
      stepper2.run();
      while (!stepper2.isDone()) {
        stepper2.run();
      }
      break;
    case 3:
      stepper3.rotate(sd, bs, jsd);
      stepper3.run();
      while (!stepper3.isDone()) {
        stepper3.run();
      }
      break;
    case 4:
      stepper4.rotate(sd, bs, jsd);
      stepper4.run();
      while (!stepper4.isDone()) {
        stepper4.run();
      }
      break;
    case 5:
      stepper5.rotate(sd, bs, jsd);
      stepper5.run();
      while (!stepper5.isDone()) {
        stepper5.run();
      }
      break;
    case 6:
      stepper6.rotate(sd, bs, jsd);
      stepper6.run();
      while (!stepper6.isDone()) {
        stepper6.run();
      }
      break;
    default:
      break;
  }
}
回复

使用道具 举报

发表于 2016-6-2 17:48:57 来自手机 | 显示全部楼层
6个电机同时运动还是顺序动作?
回复 支持 反对

使用道具 举报

发表于 2016-7-26 16:36:26 | 显示全部楼层
楼主,你这个程序不能同时工作啊,怎么改可以同时工作?小白请教,万分感谢
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-9 05:24 , Processed in 0.054083 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表