极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: 大连好人

分享好人经验:自己写个库,控制TB6560驱动步进电机

  [复制链接]
发表于 2015-1-19 01:46:24 | 显示全部楼层
感谢楼主无私分享~~

我的一编译就报错,求指导~~~


C:\Users\Qiang\AppData\Local\Temp\build2877355896195187212.tmp/core.a(main.cpp.o): In function `main':
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:40: undefined reference to `setup'
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/main.cpp:43: undefined reference to `loop'
collect2: error: ld returned 1 exit status
编译有误。



感激不尽~~
回复 支持 反对

使用道具 举报

发表于 2015-5-9 22:19:25 | 显示全部楼层
可以给我WProgram.h连接吗?谢谢
回复 支持 反对

使用道具 举报

发表于 2015-7-25 09:06:38 | 显示全部楼层
你的库是怎么安装到arduino上的 求指教啊
回复 支持 反对

使用道具 举报

发表于 2015-8-14 11:32:04 | 显示全部楼层
  今天也看了下这个库,
1. 发现里头还是用到了延迟函数 delayMicroseconds();  有没有直接操作定时器的方案?
2. 回复下前面楼层的问题:
   a. rotate(speed, steps)函数操作的时候, 仅运行了一步(然后根据速度设定值算出了下一步应该在什么时间内运行的时间戳),其他的步数,是在run()函数中完成的;  以上两个函数,都是调用step()函数来完成一步-----也就是产生一个脉冲----脉冲之间延迟了2微妙; 每次调用step() 就再算出下一个时间戳,然后在loop循环中判断该次loop是否需要step() 一次.      -----总感觉这样的速度控制不是很靠谱! 如果主循环里面有个耗时操作,就严重影响rotate()中的速度设定了.

b. 安装库很简单, 在arduino安装目录下的libraries目录下建立一个名为"EasyStepper"的目录, 然后把两个文件 EasyStepper.h  EasyStepper.cpp 复制到该文件夹即可. 就可以在你的 xxx.ino文件中通过#include <EasyStepper.h>来引用其中的函数了.
回复 支持 反对

使用道具 举报

发表于 2015-8-16 14:43:27 | 显示全部楼层
我试了很多次目录里也有EasyStepper但是编程序后一编译就提示#include <EasyStepper.h>eroor
回复 支持 反对

使用道具 举报

发表于 2015-8-22 22:11:08 | 显示全部楼层
楼主楼主,我也是和你弄的一样的驱动器和42电机,能不能帮我编一个让电机正转200度,然后反转200度,最后停止的程序,还有就是arduino用哪个管脚与驱动器相连接啊,急急急,谢谢。
回复 支持 反对

使用道具 举报

发表于 2015-11-27 15:13:22 | 显示全部楼层
delayMicroSeconds(2) 改成 delayMicroSeconds(70)比较稳定。如果speed达到30000,stepTime = 1000000.0/speed = 33微秒, 那么 delayMicroSeconds(2)的话,那么脉冲间隔也就35微秒。TB6560的15Khz的脉冲间隔是65微秒,这样delay时间不够脉冲的时间,容易出问题。当然如果speed也就10000的话,stepTime = 100微秒,那么是不会有问题的。一个小建议。
回复 支持 反对

使用道具 举报

发表于 2016-10-20 17:15:22 | 显示全部楼层
好人哪,我买了好久,一直懒得写代码,还是你好啊
回复 支持 反对

使用道具 举报

发表于 2016-11-20 19:47:32 | 显示全部楼层
感谢LZ分享,很有用!
回复 支持 反对

使用道具 举报

发表于 2016-11-23 16:55:12 | 显示全部楼层
楼主你还玩这个论坛吗?求助呀
我使用了你写的库文件,然后希望用上位机与Mega2560串口通信,发送步数到arduino,然后控制步进电机运动
现在的情况是单次控制没有问题,但是利用串口监视器再输入就没有反应了,就是不能重复控制,我测试过,比如在主程序循环里加入串口打印,一开始会不停的打印,当输入步数后,串口打印返回该步数,电机运动,运动完后,再输入步数不会运动,也不会串口打印返回值了。
想知道是什么原因,是在电机库文件的某个循环里卡死了吗?

附上我的代码,求各位路过的大大也帮忙看看:
#include <EasyStepper.h>

// define the pins
#define STEP_PIN 3
#define DIR_PIN 30
#define EN_PIN 33

// define the inverted
#define DIR_PIN_INVERTED true
#define EN_PIN_INVERTED false  //HIGH使能

// the EasyStepper instance
EasyStepper stepper1(STEP_PIN, DIR_PIN, EN_PIN, DIR_PIN_INVERTED, EN_PIN_INVERTED);

// the stepps to rotate
int stepps;

void setup()
{
  Serial.begin(9600);
  stepper1.debugMode(false);
  stepper1.startup();
}

void loop()
{
   while (Serial.available())
  {
      stepps=Serial.parseInt();
     Serial.println(stepps);
      stepper1.rotate(400.0,stepps*4);  //四分数
    while(stepps!=0)
    {
      stepper1.run();
   }
  }  
}

回复 支持 反对

使用道具 举报

发表于 2016-12-30 21:04:29 | 显示全部楼层
好人,我想用arduino控制两个步进电机以不同速度旋转,通过延时控制转速,感觉两电机转速不对,请指教下,
int dirPin1 =6;
int stepperPin1 =5;
int dirPin2 =8;
int stepperPin2 =7;

void setup() {
pinMode(dirPin1, OUTPUT);
pinMode(stepperPin1, OUTPUT);
pinMode(dirPin2, OUTPUT);
pinMode(stepperPin2, OUTPUT);
}
void step1(boolean dir,int steps){
digitalWrite(dirPin1,dir);
for(int i=0;i<steps;i++){
   digitalWrite(stepperPin1, HIGH);
  delayMicroseconds(500);
   digitalWrite(stepperPin1, LOW);
  delayMicroseconds(500);
}
}
void step2(boolean dir,int steps){

digitalWrite(dirPin2,dir);
for(int i=0;i<steps;i++){
  
   digitalWrite(stepperPin2, HIGH);
   delayMicroseconds(800);

    digitalWrite(stepperPin2, LOW);
   delayMicroseconds(800);
}
}
void loop(){
step1(true,10);
step2(true,10);
}
回复 支持 反对

使用道具 举报

发表于 2017-6-27 16:06:24 | 显示全部楼层
// define the inverted
#define DIR_PIN_INVERTED true
#define EN_PIN_INVERTED true    是什么意思呀?你的设置是低电平有效,我的设置是高电平有效,都要改些什么呀?跟上面的define the inverted有关系吗?
回复 支持 反对

使用道具 举报

发表于 2018-5-29 20:53:21 | 显示全部楼层
认真学细研究
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 23:11 , Processed in 0.042370 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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