使用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);
}
感谢分享,学习中。 感谢楼主的分享。但这个小步进电机的速度最大只能设到16rpm,对吗? 感谢分享,程序很好用,高手! Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);这里总报错是咋回事 非常好,难怪以前用原装的库结果总有问题。
页:
[1]