zhb1190 发表于 2015-8-6 22:11:49

使用Arduino驱动28BYJ48电机库(Stepper28BYJ48)

本帖最后由 zhb1190 于 2015-8-7 11:06 编辑

      最近想做一个自动喂宠物的小玩意。正好手头有几个28BYJ48-5V步进电机,于是就打算找个库,在这里还真找到了,用Stepper库控制,而且还能工作,于是就组装好,可是第二天早上就郁闷了,发现电机竟然没有像预期那样转动,而且电机非常烫。后来研究发现电机没有转是扭力不够。可是以前用avr和51控制时扭力很大呀,这个是遇到了什么鬼?
      无奈之下只好研究Stepper源代码了,于是乎就发现了问题所在,原来Stepper对于4相电机是用4步驱动,而28BYJ48说明书里推荐用8步驱动。既然看懂了原理就自己改造一下,于是就有了下边这个库。
      经过测试可以单步控制,而且可以很精确控制角度,如果不堵转发热也很小。不敢独享,拿出来与大家分享,希望大家喜欢哦。
似乎我没有权限上传附件,共享在百度网盘。
http://pan.baidu.com/s/1o6oX2YY
用法:
1、把Stepper28BYJ48.zip解压在libraries目录下
2、电机通过ULN2003驱动板和ULN2803驱动板测试通过
3、驱动的输入依次接arduino的8~9,步进电机依次接蓝,粉,黄,橙。
/*
        控制28BYJ48电机,正转一圈,反转一圈
*/

#include <Stepper28BYJ48.h>

const int stepsPerRevolution = 4096;//28BYJ48电机旋转一周需要的步数


// 电机接在引脚8 ~ 11: 电机线依次为蓝,粉,黄,橙
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
// initialize the serial port:
Serial.begin(9600);

//设置电机转速r/min
myStepper.setSpeed(10);
}

void loop() {
// 正转一圈
myStepper.step(stepsPerRevolution);
Serial.print("steps:" );
Serial.println(stepsPerRevolution);
delay(5000);

// 反转一圈
myStepper.step(-stepsPerRevolution);
Serial.print("steps:" );
Serial.println(-stepsPerRevolution);
delay(5000);

// 正转64步
myStepper.step(64);
Serial.print("steps:" );
Serial.println(64);
delay(5000);

// 正转64步
myStepper.step(64);
Serial.print("steps:" );
Serial.println(64);
delay(5000);

}

jasen 发表于 2016-5-4 00:59:31

感谢分享,学习中。

anweihit 发表于 2016-10-5 23:18:02

感谢楼主的分享。但这个小步进电机的速度最大只能设到16rpm,对吗?

Janis 发表于 2018-2-19 02:04:31

感谢分享,程序很好用,高手!

ewq 发表于 2019-3-1 12:16:36

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);这里总报错是咋回事

ncatcorea 发表于 2020-4-26 21:37:08

非常好,难怪以前用原装的库结果总有问题。
页: [1]
查看完整版本: 使用Arduino驱动28BYJ48电机库(Stepper28BYJ48)