极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14250|回复: 6

easydriver的问题啊

[复制链接]
发表于 2014-9-21 23:42:37 | 显示全部楼层 |阅读模式
新人

最近看到光驱DIY激光雕刻机流行,看得我心痒痒,上某宝买了两个光驱电机和两片easydriver驱动等一堆东西。

买回来发现要自己焊接管脚,又去买电铬铁等工具。刚开始焊接的时候不熟练,第一片的第一只脚就反复焊了好久。

焊上管脚后测试,电机不能正常工作。


////正题////

两片easydriver都能点亮,但一片的电机不正常工作,另一片的电机完全没反应。

我写了个程序用UNO测试。

int STEP = 9;
int DIR = 8;

void setup() {               
  pinMode(STEP, OUTPUT);   
  pinMode(DIR, OUTPUT);   
}

void loop() {
  digitalWrite(DIR, LOW);
  digitalWrite(STEP,HIGH);
  delay(1000);  

  digitalWrite(DIR, HIGH);
  delay(1000);         
}




程序是9号脚接step,一直高电平,就是电机一直转;8号脚接DIR,高低电平每秒钟变一次,就是电机旋转方向变一次。

第一片焊的灯亮了,但电机完全没反应。测量输出的A,B 的电压都是0。先不管这片了。

第二片的电机是大约每转一秒钟停一秒钟,方向几乎没有变,只是启动的时候会左右抖动。
此时STEP和DIR旁边的GND是空的,没和UNO的GND连接。
输入是4.65V电压。用万用表测量STEP和GND电压,总是在2.5和5V之间波动;DIR是0到2.3之间变化。之所以电机就产生了这样的动作。
如果easydriver和UNO的GND连接,STEP和DIR的电压就按程序设定的变化了,STEP 5V不变,DIR每秒0/5V切换一次。但电机处于硬直状态,不动。这是分别测电机A,B口的电压,都是2.3不变。

本人没什么经验,问题出在哪里??

回复

使用道具 举报

发表于 2014-9-22 08:46:55 | 显示全部楼层
你用多少V的电源给easydriver供电?
回复 支持 反对

使用道具 举报

发表于 2014-9-22 11:21:39 | 显示全部楼层
代码写的有点问题 粗看step pin的时序 还有dir的用法有问题
最直接的解决方法就是用arduino里面的自带stepper的库吧 或者学学那里写的方法
回复 支持 反对

使用道具 举报

发表于 2014-9-22 22:18:29 来自手机 | 显示全部楼层
本帖最后由 uvvvvw 于 2014-9-22 22:20 编辑

试试这样
void loop() {
digitalWrite(DIR,LOW);
digitalWrite(STEP,HIGH);
delay(1000);
digitalWrite(STEP, LOW);
delay(1000);  
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-27 01:22:15 | 显示全部楼层
程序可能有点问题。主要是电源的问题~~是我的电源线路接触不好,重新接了电源后可以按指令动了,可是只能接一个电机,两个一起接就动不了了。
回复 支持 反对

使用道具 举报

发表于 2015-6-3 16:09:10 | 显示全部楼层
我和你同样,还未解决
回复 支持 反对

使用道具 举报

发表于 2015-9-28 03:12:50 | 显示全部楼层
本帖最后由 老来疯 于 2015-9-28 03:15 编辑

看一下我的解释:

int STEP = 9;        // 这是 步进 驱动信号端口  
int DIR = 8;          // 这是 方向 驱动信号端口

void setup() {               
  pinMode(STEP, OUTPUT);    // 端口设置正确
  pinMode(DIR, OUTPUT);      // 端口设置正确
}

void loop() {                        // 这是 Arduino 的 无休止的主循环         
  digitalWrite(DIR, LOW);     // 方向端口 低电平   如果是 反时针 转,高电平时 就会 顺时针转。
  digitalWrite(STEP,HIGH);   // 步进端口 如果 在 高电平时 步进一步 ,那么 低电平 就会复位,电机不动。
  delay(1000);                    // 给了 1 秒的 延时

  digitalWrite(DIR, HIGH);    //   方向端口 高电平 ,准备让电机下一步 反方向转。这一句的 DIR 要改为 STEP,
                                         //   并且置  低电平 LOW 一次,不让步进端口 复位,(低电平,)下一个 高电平是不干活的。
  delay(1000);                    //   又等了 1 秒,你好像是让 电机 2 秒 走一步
}                                        //    返回 void loop()  再执行一遍, 永远不停


这个程序 只能 驱动一个 步进电机,要驱动 两个或更多的步进电机,最好是 使用 现成的 库。
                    

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 06:44 , Processed in 0.041244 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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