跳到主要内容

步进电机 (stepper)

步进电机。

设备类型

DEVICE_TYPE_STEPPER

结构体

struct stepper_t {
char * name;
int (*enable)(struct stepper_t * stepper);
int (*disable)(struct stepper_t * stepper);
int (*move)(struct stepper_t * stepper, int step, int speed);
int (*busying)(struct stepper_t * stepper);
void * priv;
};

关键 API

函数说明
search_stepper(name)按名称查找步进电机
register_stepper(stepper, drv)注册步进电机
unregister_stepper(stepper)注销步进电机
stepper_enable/disable(stepper)使能/禁用
stepper_move(stepper, step, speed)移动指定步数
stepper_busying(stepper)查询是否忙

驱动实现

stepper-bipolar-gpio

双极性步进电机 GPIO 驱动,通过 4 个 GPIO(PA、NA、PB、NB)直接控制 H 桥驱动双极性步进电机。支持三种驱动模式:

模式drive-mode 值说明
单波驱动wave每次只励磁一相,4 步一个周期,扭矩较小
整步驱动fullstep每次励磁两相,4 步一个周期,扭矩较大
半步驱动halfstep交替单相/双相励磁,8 步一个周期,分辨率提高一倍

设备树配置属性:

属性类型必需说明
drive-modestring驱动模式:wavefullstephalfstep,默认 wave
pa-gpiointA 相正极 GPIO
pa-gpio-configintA 相正极 GPIO 配置
na-gpiointA 相负极 GPIO
na-gpio-configintA 相负极 GPIO 配置
pb-gpiointB 相正极 GPIO
pb-gpio-configintB 相正极 GPIO 配置
nb-gpiointB 相负极 GPIO
nb-gpio-configintB 相负极 GPIO 配置
default-speedint默认速度(步/秒),默认 100

设备树示例:

{
"bipolar-stepper": {
"type": "stepper-bipolar-gpio",
"drive-mode": "halfstep",
"pa-gpio": 0,
"na-gpio": 1,
"pb-gpio": 2,
"nb-gpio": 3,
"default-speed": 200
}
}

stepper-unipolar-gpio

单极性步进电机 GPIO 驱动,通过 4 个 GPIO(A、B、C、D)直接驱动单极性(5 线或 6 线)步进电机。支持三种驱动模式:

模式drive-mode 值说明
单波驱动wave每次只励磁一相,4 步一个周期,扭矩较小
整步驱动fullstep每次励磁两相,4 步一个周期,扭矩较大
半步驱动halfstep交替单相/双相励磁,8 步一个周期,分辨率提高一倍

设备树配置属性:

属性类型必需说明
drive-modestring驱动模式:wavefullstephalfstep,默认 wave
a-gpiointA 相 GPIO
a-gpio-configintA 相 GPIO 配置
b-gpiointB 相 GPIO
b-gpio-configintB 相 GPIO 配置
c-gpiointC 相 GPIO
c-gpio-configintC 相 GPIO 配置
d-gpiointD 相 GPIO
d-gpio-configintD 相 GPIO 配置
default-speedint默认速度(步/秒),默认 100

设备树示例:

{
"unipolar-stepper": {
"type": "stepper-unipolar-gpio",
"drive-mode": "fullstep",
"a-gpio": 10,
"b-gpio": 11,
"c-gpio": 12,
"d-gpio": 13,
"default-speed": 150
}
}

stepper-pluse-dir

脉冲/方向步进电机 GPIO 驱动,用于控制带外部驱动器(如 TB6600、DM542 等)的步进电机。通过脉冲信号和方向信号控制电机转动,每个脉冲对应一步。支持信号极性反转配置。

设备树配置属性:

属性类型必需说明
pluse-gpioint脉冲信号 GPIO
pluse-gpio-configint脉冲 GPIO 配置
pluse-gpio-invertedint脉冲信号极性反转,默认 0
dir-gpioint方向信号 GPIO(-1 表示不使用)
dir-gpio-configint方向 GPIO 配置
dir-gpio-invertedint方向信号极性反转,默认 0
enable-gpioint使能信号 GPIO(-1 表示不使用)
enable-gpio-configint使能 GPIO 配置
enable-gpio-invertedint使能信号极性反转,默认 0
default-speedint默认速度(步/秒),默认 100

设备树示例:

{
"pluse-dir-stepper": {
"type": "stepper-pluse-dir",
"pluse-gpio": 20,
"pluse-gpio-inverted": 0,
"dir-gpio": 21,
"dir-gpio-inverted": 0,
"enable-gpio": 22,
"enable-gpio-inverted": 1,
"default-speed": 500
}
}

说明

步进电机控制接口。按指定步数和速度移动,支持忙状态查询。用于 3D 打印机和 CNC 机床。

  • 双极性 (bipolar):4 线步进电机,需要 H 桥驱动,通过正反向电流控制方向
  • 单极性 (unipolar):5/6 线步进电机,使用 ULN2003 等达林顿阵列驱动,每相单方向电流
  • 脉冲/方向 (pluse-dir):配合外部步进电机驱动器使用,仅需脉冲和方向两路信号,适合大功率应用