黄工无刷电机学习
直播中

麦特拉布

12年用户 1071经验值
私信 关注
[问答]

Arduino调用Stepper库驱动28BYJ-48步进电机,电机振动不转、无法反方向转是为什么?

Arduino调用Stepper库驱动28BYJ-48步进电机,电机振动不转、无法反方向转是为什么?

回帖(1)

李杨

2021-10-18 10:13:33
电机堵转



  • 首先检查杜邦线是否正常联通,如GND线接触不良,电机也会导通,但无法正常工作。
  • 检查Arduino和驱动板接线是否正确,正确硬件接线如下图,即板子IO 8、9、10、11分别对应
    驱动IN 1、2、3、4。




电机无法正反转

原因应该基本都是时序不对,这甚至可能导致电机不转,所以在确保接线和线本身没有问题情况下,查看头文件源码Stepper.cpp,如图。





当电机为四相时,找到上图代码,原因就显而易见了:B、C相顺序不对。
图中的时序为: AC-BC-BD-AD,
而正确的双四拍时序应该为: AB-BC-CD-DA。
解决办法一:

修改源码为正确时序。
解决办法二:

修改主程序代码,对调IO9、10位置,以我的代码为例,修改前
Stepper myStepper(motorSteps, 8,9,10,11);  修改后
Stepper myStepper(motorSteps, 8,10,9,11); 解决办法三:

对调电机输入引脚,如图,对调前,线色依次为:蓝、粉、黄、橙、红





对调后,线色依次为:蓝、黄、粉、橙、红





附 1

示例程序

#include


#define motorSteps 64 // 根据电机步数设置


Stepper myStepper(motorSteps, 8,10,9,11);


int previous = 0;


void setup() {


  //set the motor speed at 250 RPMS
  myStepper.setSpeed(250);
  Serial.begin(9600);
  
}


void loop() {


  //Step forward 100 steps:
  Serial.println("shun");
  myStepper.step(32);
  delay(5000);

  Serial.println("ni");
  myStepper.step(-1024);
  delay(5000);


//print out the state of the button:
  Serial.println(digitalRead(8));
  Serial.println(digitalRead(9));
  Serial.println(digitalRead(10));
  Serial.println(digitalRead(11));
  
}
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分