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

arduino4年前 (2021)发布 admin
297 0

  最近想做一个自动喂宠物的小玩意。正好手头有几个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);
  
}

转自https://www.geek-workshop.com/thread-15744-1-6.html

© 版权声明

相关文章