正点原子esp32s3控制28BYJ-48步进电机

正点原子ESP32S3控制28BYJ-48步进电机

开发板使用:正点原子ATK_DNESP32S3 V1.3

驱动板:uln2003an

步进电机:28BYJ-48

IDE: VSCODE + PLATFORMIO

由于28BYJ-48步进电机需要大电流,主板无法直接控制电机。它需要一个像ULN2003这样的驱动器IC来控制电机,所以实验中28BYJ-48步进电机通常带有一个基于ULN2003的驱动板。

•IN1到IN4 - ESP32S3的控制输入

•GND -接地

•VCC - 5V电机供电

•电机连接器-连接到28BYJ-48步进电机

•电源指示灯-指示模块是否上电

•步进LED -显示步进脉冲被发送到电机

这里需要安装Arduino Stepper库

可以用以下方式安装:

pio lib install "Stepper"

实验代码如下:

#include <Arduino.h>
#include <Stepper.h>

// Defines the number of steps per rotation
const int stepsPerRevolution = 2038;

// Creates an instance of stepper class
// Pins entered in sequence IN1-IN3-IN2-IN4 for proper step sequence
Stepper myStepper = Stepper(stepsPerRevolution, 4, 5, 6, 7);

void setup() {
}

void loop() {
  // put your main code here, to run repeatedly:
  // Rotate CW slowly at 5 RPM
  myStepper.setSpeed(5);
  myStepper.step(stepsPerRevolution);
  delay(1000);
  
  // Rotate CCW quickly at 10 RPM
  myStepper.setSpeed(10);
  myStepper.step(-stepsPerRevolution);
  delay(1000);
}

代码详解:

const int stepsPerRevolution = 2038;

表示这个步进电机旋转一圈需要2038个步进脉冲。这个值取决于具体的步进电机型号(通常28BYJ-48步进电机配合减速箱时,每转步数为2038)。

Stepper myStepper = Stepper(stepsPerRevolution, 4, 5, 6, 7);

- 创建了一个名为`myStepper`的步进电机控制对象。

- 构造函数参数: - `stepsPerRevolution`:电机每转一圈的步数。

- `4, 5, 6, 7`:分别对应ULN2003驱动板上的IN1、IN3、IN2、IN4引脚。注意这里的顺序是IN1, IN3, IN2, IN4。这是因为该步进电机(28BYJ-48)的驱动顺序需要按照特定的相序(通常为8拍方式:A-AB-B-BC-C-CD-D-DA)才能正确旋转。但是Stepper库内部已经处理了步进序列,我们只需要提供4个控制引脚并按顺序(这里顺序是IN1, IN2, IN3, IN4)连接即可。然而,这里使用的顺序是`GPIO4(IN1), GPIO5(IN3), GPIO6(IN2), GPIO7(IN4)`,这可能是为了适应某种特定的驱动板接线。实际上,正确的连接顺序应该根据步进电机的相序和驱动板的要求来确定。

- 步进电机的初始化已经在创建`Stepper`对象时完成了(在Stepper库的构造函数中会初始化引脚为输出模式)。

  myStepper.setSpeed(5);
  myStepper.step(stepsPerRevolution);

- `myStepper.setSpeed(5);`:设置步进电机的转速为5转/分钟(RPM)。 - `myStepper.step(stepsPerRevolution);`:控制电机按设定的速度顺时针旋转一圈(因为参数为正数,表示向前步进,即顺时针)。执行该函数会阻塞程序,直到电机完成这一圈旋转。


 

代码写完后,点编译:

然后通过UART下载到主板:

然后小电机就开始欢快地转动了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FightingFreedom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值