adoino esp32上控制28BYJ - 48 步进电机的代码

#include <AccelStepper.h>

// 定义28BYJ-48步进电机连接到ESP32的引脚
#define IN1 26
#define IN2 25
#define IN3 33
#define IN4 32

// 定义步进电机类型为4相8拍
AccelStepper stepper(AccelStepper::HALF4WIRE, IN1, IN3, IN2, IN4);

void setup() {
// 设置最大速度和加速度
stepper.setMaxSpeed(1000.0); // 最大速度(步/秒)
stepper.setAcceleration(500.0); // 加速度(步/秒²)

// 初始化串口通信
Serial.begin(115200);
Serial.println("28BYJ-48步进电机控制示例");
Serial.println("按以下指令控制电机:");
Serial.println("f - 正转一圈");
Serial.println("r - 反转一圈");
Serial.println("s - 停止");
}

void loop() {
// 检查串口输入
if (Serial.available() > 0) {
char cmd = Serial.read();

switch(cmd) {
case 'f': // 正转一圈
// 28BYJ-48减速比为1:64,每圈需要64*32=2048步(4相8拍模式)
stepper.move(2048);
Serial.println("正转一圈");
break;
case 'r': // 反转一圈
stepper.move(-2048);
Serial.println("反转一圈");
break;
case 's': // 停止
stepper.stop();
Serial.println("停止");
break;
}
}

// 运行步进电机
stepper.run();
}

  

代码说明:

  1. 库的选择:使用 AccelStepper 库可以方便地控制步进电机的速度、加速度,并支持多种步进模式。
  2. 引脚定义:将 28BYJ-48 的 IN1-IN4 分别连接到 ESP32 的 26、25、33、32 引脚,你可以根据实际接线情况修改这些引脚定义。
  3. 电机参数:28BYJ-48 是四相步进电机,采用 4 相 8 拍模式控制,减速比为 1:64,因此实际转动一圈需要 2048 步(64×32)。
  4. 功能实现:
    • 代码实现了通过串口指令控制电机的功能
    • 发送 "f" 指令,电机正转一圈
    • 发送 "r" 指令,电机反转一圈
    • 发送 "s" 指令,电机停止运行
  5. 速度控制:通过setMaxSpeed()setAcceleration()函数可以设置电机的最大速度和加速度,你可以根据需要调整这些参数。

 

使用前需要先安装 AccelStepper 库,在 Arduino IDE 中通过 "工具 > 库管理" 搜索并安装即可。接线时注意电机的供电需要 5V,确保电源能够提供足够的电流。
posted @ 2025-08-27 21:28  Janus2003  阅读(47)  评论(0)    收藏  举报