极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11145|回复: 4

请教关于步进电机不同步的情况

[复制链接]
发表于 2013-5-30 15:25:46 | 显示全部楼层 |阅读模式
taobao上买了一个42的步进电机,用L298N模块驱动。

代码很简单:

#define STEPS 60
// create instance
Stepper stepper(STEPS, 2,3,4,5);

void setup()
{
  stepper.setSpeed(300);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
}


void loop()
{
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);

    stepper.step(200);
    delay(500);
}

现在的问题是:
#define STEPS 60
    stepper.step(200); //  正好是一整圈

-------------------------------

#define STEPS 80   // 这时候回出现不同步的现象,转不到一整圈,声音听着也有异常
    stepper.step(200); //  

-------------------------------

#define STEPS 100   // 这时候回出现不同步的现象,转不到一整圈,声音听着也有异常
    stepper.step(200); //  


请问,这是我的程序设置不对吗?
或者是电机有问题?L298N模块有问题?
回复

使用道具 举报

发表于 2013-5-30 16:05:07 | 显示全部楼层
这个 STEPS 放入 step() 的第一个参数
代表 转一圈所需要的步数

一般来说如果 步进角 是 1.8度 , 那转一圈就是 200 步。

所以, 如果这个参数不正确 当然结果就不正确了。

如果要再深入讨论为什麽需要这个 STEPS 参数,
那就要打 stepper.cpp 跟 stepper.h 这两个档案来研究了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 17:00:53 | 显示全部楼层
学长 发表于 2013-5-30 16:05
这个 STEPS 放入 step() 的第一个参数
代表 转一圈所需要的步数

恩,我看过了。

setSpeed函数里用了STEPS参数来计算出每一步的间隔
看来是速度过快,导致步进电机乱转。
回复 支持 反对

使用道具 举报

发表于 2013-5-30 18:30:46 | 显示全部楼层
delay(500) 还会失步?这有点奇怪哦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-31 21:34:59 | 显示全部楼层
学长 发表于 2013-5-30 18:30
delay(500) 还会失步?这有点奇怪哦

不是这个delay。

step里面,每前进一拍,都会有一个很小的delay
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-6 11:23 , Processed in 0.037367 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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