|
本帖最后由 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);
-
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|