86步进电机和DM860H驱动器的使用方法和记录

本文记录 86 系列步进电机、DM860H 驱动器、脉冲频率、电机轴转速、输出轴转速、减速比之间的关系,并给出一份独立示例代码。

1. 硬件组成

示例硬件:

text 复制代码
电机:86BYG9760B
驱动器:DM860H
减速机构:20:1
控制方式:PUL / DIR / ENA

86BYG9760B 是 86 机座混合式步进电机,通常也可理解为 NEMA34 尺寸级别。

DM860H 是步进驱动器,不是电机本体。它负责接收控制器输出的脉冲信号,并按设定电流、细分等参数驱动步进电机转动。

电机最大可用转速不只由 DM860H 决定,还取决于:

  • 电机本体参数。
  • 驱动器供电电压。
  • 驱动器电流设置。
  • 机械负载大小。
  • 减速器惯量和摩擦。
  • 是否有加减速曲线。

2. DM860H 的驱动方式

DM860H 常见输入信号:

text 复制代码
PUL:脉冲输入
DIR:方向输入
ENA:使能输入

控制逻辑:

  • PUL 每收到一个有效脉冲,电机走一个细分步。
  • DIR 决定电机正转或反转。
  • ENA 控制驱动器使能或释放,具体有效电平以接线和驱动器设置为准。

控制器通常输出固定占空比的方波给 PUL,通过改变方波频率控制转速。

例如:

text 复制代码
PUL = 4000 Hz
表示每秒给驱动器 4000 个脉冲。

3. 细分和每转脉冲数

步进电机常见步距角是 1.8 度:

text 复制代码
一圈 = 360 度
整步数 = 360 / 1.8 = 200 步/圈

驱动器开启细分后,每圈需要的脉冲数会增加。

常见示例:

text 复制代码
400 脉冲/圈:2 细分
800 脉冲/圈:4 细分
1600 脉冲/圈:8 细分
3200 脉冲/圈:16 细分

本文示例采用:

text 复制代码
每转脉冲数 = 800 pulse/rev

含义:

text 复制代码
电机轴转 1 圈,需要 800 个 PUL 脉冲。

4. 电机轴和输出轴的区别

电机轴:

text 复制代码
电机本体直接伸出的轴。
86BYG9760B 本体转速说的就是电机轴转速。

输出轴:

text 复制代码
经过减速器、齿轮箱、蜗轮蜗杆之后的最终机械输出轴。
负载通常接在输出轴上。

如果减速比是 20:1

text 复制代码
电机轴转 20 圈,输出轴转 1 圈。

换算公式:

text 复制代码
输出轴转速 = 电机轴转速 / 减速比
电机轴转速 = 输出轴转速 * 减速比

例如:

text 复制代码
电机轴 300 rpm,减速比 20:1
输出轴 = 300 / 20 = 15 rpm
text 复制代码
输出轴需要 10 rpm,减速比 20:1
电机轴 = 10 * 20 = 200 rpm

5. 转速和频率计算

5.1 已知电机轴转速,计算脉冲频率

公式:

text 复制代码
脉冲频率 Hz = 电机轴转速 rpm * 每转脉冲数 / 60

示例,800 脉冲/圈,电机轴 300 rpm:

text 复制代码
频率 = 300 * 800 / 60
     = 4000 Hz

示例,800 脉冲/圈,电机轴 600 rpm:

text 复制代码
频率 = 600 * 800 / 60
     = 8000 Hz

5.2 已知输出轴转速,计算脉冲频率

先把输出轴转速换算成电机轴转速:

text 复制代码
电机轴转速 rpm = 输出轴转速 rpm * 减速比

再计算频率:

text 复制代码
脉冲频率 Hz = 输出轴转速 rpm * 减速比 * 每转脉冲数 / 60

示例,输出轴 15 rpm,减速比 20:1,800 脉冲/圈:

text 复制代码
电机轴转速 = 15 * 20 = 300 rpm
脉冲频率 = 15 * 20 * 800 / 60 = 4000 Hz

5.3 已知脉冲频率,计算电机轴转速

公式:

text 复制代码
电机轴转速 rpm = 脉冲频率 Hz * 60 / 每转脉冲数

示例,4000 Hz,800 脉冲/圈:

text 复制代码
电机轴转速 = 4000 * 60 / 800
           = 300 rpm

5.4 已知脉冲频率,计算输出轴转速

公式:

text 复制代码
输出轴转速 rpm = 脉冲频率 Hz * 60 / 每转脉冲数 / 减速比

示例,4000 Hz,800 脉冲/圈,20:1 减速:

text 复制代码
输出轴转速 = 4000 * 60 / 800 / 20
           = 15 rpm

6. 推荐速度范围

86BYG9760B 这类 86 大步进电机通常不建议简单追求高 rpm。步进电机转速越高,输出扭矩通常越低。

经验建议:

text 复制代码
100-300 rpm:比较稳,适合带负载优先测试。
300-600 rpm:需要看负载、驱动电压、电流和加减速曲线。
600 rpm 以上:扭矩下降明显,带负载容易丢步。

如果使用 20:1 减速器:

text 复制代码
电机轴 300 rpm -> 输出轴 15 rpm
电机轴 200 rpm -> 输出轴 10 rpm
电机轴 100 rpm -> 输出轴 5 rpm

稳定优先时,可先按:

text 复制代码
电机轴最高转速:200-300 rpm

如果需要提高速度,可以逐步测试:

text 复制代码
300 rpm -> 400 rpm -> 500 rpm -> 600 rpm

每次都要带真实负载测试启动、停止、换向和长时间运行。

7. DM860H 的限制

DM860H 常见最大输入脉冲频率约为:

text 复制代码
200 kHz

注意这只是驱动器能接收的脉冲频率上限,不等于电机能稳定达到的机械转速。

示例,800 脉冲/圈:

text 复制代码
300 rpm -> 4000 Hz = 4 kHz
600 rpm -> 8000 Hz = 8 kHz

这远低于 DM860H 的 200 kHz 输入能力。

所以实际系统的主要限制通常不是驱动器最高脉冲频率,而是:

  • 步进电机高速扭矩下降。
  • 负载惯量较大。
  • 减速器摩擦和惯量。
  • 供电电压不足导致高速扭矩不足。
  • 驱动电流设置不合适。
  • 没有加减速曲线,启动或换向瞬间容易丢步。

8. 怎么给频率

控制器不是直接给电机一个 rpm,而是给 DM860H 脉冲频率。

控制流程:

text 复制代码
目标输出轴转速
  -> 乘以减速比得到电机轴转速
  -> 乘以每转脉冲数
  -> 除以 60 得到脉冲频率 Hz
  -> 设置定时器或脉冲发生器输出该频率

如果直接控制电机轴转速,则流程为:

text 复制代码
目标电机轴转速
  -> 乘以每转脉冲数
  -> 除以 60 得到脉冲频率 Hz
  -> 设置定时器或脉冲发生器输出该频率

示例,输出轴 15 rpm,20:1 减速,800 脉冲/圈:

text 复制代码
freq_hz = 15 * 20 * 800 / 60 = 4000 Hz
period_us = 1000000 / 4000 = 250 us

控制器输出 4 kHz 方波,DM860H 每秒收到 4000 个脉冲,电机轴按 300 rpm 转动,经过 20:1 减速后输出轴为 15 rpm。

9. 减速比怎么计算

减速比常写成:

text 复制代码
20:1

含义:

text 复制代码
输入轴转 20 圈,输出轴转 1 圈。

如果知道电机轴转速和输出轴转速:

text 复制代码
减速比 = 电机轴转速 / 输出轴转速

例如:

text 复制代码
电机轴 300 rpm,输出轴 15 rpm
减速比 = 300 / 15 = 20

如果知道电机轴走的脉冲数和输出轴转过的角度,也可以算:

text 复制代码
电机轴圈数 = 脉冲数 / 每转脉冲数
输出轴圈数 = 输出轴角度 / 360
减速比 = 电机轴圈数 / 输出轴圈数

例如:

text 复制代码
细分 800 脉冲/圈
发出 16000 个脉冲
电机轴圈数 = 16000 / 800 = 20 圈

如果输出轴刚好转 1 圈
减速比 = 20 / 1 = 20:1

10. 位置控制中的步数计算

如果电机经过减速器带动输出轴,输出轴每转一圈需要的脉冲数为:

text 复制代码
输出轴每圈脉冲数 = 电机每圈脉冲数 * 减速比

示例,800 脉冲/圈,20:1 减速:

text 复制代码
输出轴每圈脉冲数 = 800 * 20 = 16000 脉冲

输出轴转指定角度需要的脉冲数:

text 复制代码
脉冲数 = 输出轴角度 / 360 * 电机每圈脉冲数 * 减速比

例如输出轴转 180 度:

text 复制代码
脉冲数 = 180 / 360 * 800 * 20
      = 8000 脉冲

例如输出轴转 90 度:

text 复制代码
脉冲数 = 90 / 360 * 800 * 20
      = 4000 脉冲

11. 独立示例代码

下面是一份通用 C 示例,用于计算电机轴转速、输出轴转速、脉冲频率和脉冲周期。

c 复制代码
#include <stdint.h>

#define STEP_PULSES_PER_MOTOR_REV 800.0f
#define GEAR_RATIO 20.0f

#define MOTOR_SHAFT_MIN_RPM 15.0f
#define MOTOR_SHAFT_MAX_RPM 300.0f

static float clamp_float(float value, float min_value, float max_value)
{
    if (value < min_value) {
        return min_value;
    }

    if (value > max_value) {
        return max_value;
    }

    return value;
}

float pulse_freq_from_motor_rpm(float motor_rpm)
{
    motor_rpm = clamp_float(motor_rpm, -MOTOR_SHAFT_MAX_RPM, MOTOR_SHAFT_MAX_RPM);
    return motor_rpm * STEP_PULSES_PER_MOTOR_REV / 60.0f;
}

float pulse_freq_from_output_rpm(float output_rpm)
{
    float motor_rpm = output_rpm * GEAR_RATIO;
    return pulse_freq_from_motor_rpm(motor_rpm);
}

float motor_rpm_from_pulse_freq(float pulse_freq_hz)
{
    return pulse_freq_hz * 60.0f / STEP_PULSES_PER_MOTOR_REV;
}

float output_rpm_from_pulse_freq(float pulse_freq_hz)
{
    return motor_rpm_from_pulse_freq(pulse_freq_hz) / GEAR_RATIO;
}

uint32_t pulse_period_us_from_freq(float pulse_freq_hz)
{
    if (pulse_freq_hz <= 0.0f) {
        return 0U;
    }

    return (uint32_t)(1000000.0f / pulse_freq_hz);
}

int32_t output_angle_to_pulses(float output_angle_deg)
{
    return (int32_t)(output_angle_deg / 360.0f *
                     STEP_PULSES_PER_MOTOR_REV *
                     GEAR_RATIO);
}

示例计算:

c 复制代码
float freq_hz;
uint32_t period_us;
float output_rpm;

freq_hz = pulse_freq_from_output_rpm(15.0f);
period_us = pulse_period_us_from_freq(freq_hz);
output_rpm = output_rpm_from_pulse_freq(freq_hz);

对应结果:

text 复制代码
目标输出轴转速 = 15 rpm
电机轴转速 = 15 * 20 = 300 rpm
脉冲频率 = 300 * 800 / 60 = 4000 Hz
脉冲周期 = 1000000 / 4000 = 250 us

实际控制时,需要把 freq_hz 转换成定时器的周期寄存器值,或者交给专用脉冲发生模块输出。

12. 稳定性建议

推荐初始参数:

text 复制代码
电机型号:86BYG9760B
驱动器:DM860H
细分:800 脉冲/电机轴一圈
减速比:20:1
电机轴最高转速:200-300 rpm
输出轴最高转速:10-15 rpm
最高脉冲频率:约 2667-4000 Hz

关键换算:

text 复制代码
电机轴 rpm = 输出轴 rpm * 20
输出轴 rpm = 电机轴 rpm / 20
脉冲频率 Hz = 电机轴 rpm * 800 / 60
脉冲频率 Hz = 输出轴 rpm * 20 * 800 / 60

稳定性建议:

text 复制代码
先用 200-300 rpm 电机轴转速测试。
重载或丢步时降低最高转速。
提高速度时逐级增加,不要直接跳到 600 rpm。
实际应用应加入加减速曲线,避免启动和换向瞬间丢步。
相关推荐
Aaron158814 小时前
无人机反制中AOA+TDOA联合定位技术与雷达探测定位技术的应用对比分析
arm开发·嵌入式硬件·fpga开发·硬件工程·无人机·信息与通信·信号处理
foundbug99914 小时前
STM32 睡眠模式测试程序
stm32·单片机·嵌入式硬件
wxmtwfx16 小时前
littlefs 源码分析
单片机·littlefs·嵌入式文件系统
嵌入式小站17 小时前
STM32 零基础可移植教程 18:I2C 入门,先用扫描器找一找总线上有没有设备
chrome·stm32·嵌入式硬件
天涯铭19 小时前
深入浅出:单片机I/O口串联电阻选型
单片机·嵌入式硬件·io口串联电阻
国科安芯19 小时前
ASP7A84AS——航天级低噪声高PSRR线性稳压器
网络·单片机·嵌入式硬件·架构·安全性测试
普中科技20 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 42 章 STM32 内部 FLASH 实验
stm32·单片机·嵌入式硬件·开发板·普中科技·内部flash
不做无法实现的梦~20 小时前
CLion+pyocd配置教程
嵌入式硬件
破晓单片机1 天前
012、STM32项目分享:智能台灯系统
stm32·单片机·嵌入式硬件
悠哉悠哉愿意1 天前
【单片机复习笔记】十五届国赛复盘
笔记·单片机·嵌入式硬件·学习