请教关于步进电机不同步的情况
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模块有问题?
这个 STEPS 放入 step() 的第一个参数
代表 转一圈所需要的步数
一般来说如果 步进角 是 1.8度 , 那转一圈就是 200 步。
所以, 如果这个参数不正确 当然结果就不正确了。
如果要再深入讨论为什麽需要这个 STEPS 参数,
那就要打 stepper.cpp 跟 stepper.h 这两个档案来研究了 学长 发表于 2013-5-30 16:05 static/image/common/back.gif
这个 STEPS 放入 step() 的第一个参数
代表 转一圈所需要的步数
恩,我看过了。
setSpeed函数里用了STEPS参数来计算出每一步的间隔
看来是速度过快,导致步进电机乱转。 delay(500) 还会失步?这有点奇怪哦 学长 发表于 2013-5-30 18:30 static/image/common/back.gif
delay(500) 还会失步?这有点奇怪哦
不是这个delay。
step里面,每前进一拍,都会有一个很小的delay
页:
[1]