720 字
4 分钟
[onstep] OnStep项目步进电机总结

引言#

步进电机是 OnStep 系统中的核心执行机构。其控制精度直接决定了赤道仪在天文摄影中的跟踪表现。本文总结了步进电机的工作原理、核心参数计算及基于源码的硬件调试指南。

1. 基础定义与工作原理#

TIP

步进电机是将电脉冲信号转化为角位移的执行机构。其开环控制特性保证了在无反馈情况下的高位置重复精度,是天文跟踪系统的理想选择。

1.1 在 OnStep 中的作用#

  • 赤道轴 (RA):以恒星速转动以抵消地球自转。
  • 赤纬轴 (Dec):用于修正指向偏差及实现 GOTO 自动寻星。

2. 核心参数详解#

2.1 机械参数#

  • 步进角: 常见为 1.8°(200步/圈)或 0.9°(400步/圈)。
  • 相数: 推荐使用两相四线制混合式步进电机,与 TMC 系列驱动器兼容性最佳。

2.2 电气参数#

  • 额定电流: 需根据电机规格调节驱动器的 Vref。
  • 保持力矩: 在不平衡载荷下,防止主镜因重力发生位移。

3. 驱动技术与细分 (Microstepping)#

IMPORTANT

细分技术通过控制相电流大小,使转子停在全步之间的中间位置,能有效消除低频震动。

  • 推荐驱动器: TMC2209 / TMC5160。其支持的 StealthChop 模式可实现准静音运行。
  • 细分配置: 在 Config.h 中通过 AXISn_DRIVER_MICROSTEPS 设置。

4. 核心算法实现:每度步数 (Steps Per Degree)#

Config.h (Line 130) 中,OnStep 定义了精确控制的数学基础:

Steps Per Degree=电机每转全步数×驱动细分×总减速比360\text{Steps Per Degree} = \frac{\text{电机每转全步数} \times \text{驱动细分} \times \text{总减速比}}{360}

代码参考 (Config.h)

#define AXIS1_STEPS_PER_DEGREE 15360.0 // 示例值:根据电机、细分、减速比计算

5. 常见问题解决与源码实现#

针对硬件运行中的偏差,OnStep 在固件层提供了针对性的解决方案。

5.1 丢步与加速度控制#

原因: 加速度过大导致启动力矩不足。 解决方案: 调整 SLEW_ACCELERATION_DIST

// Config.h: 控制加速(和减速)的距离(度)
#define SLEW_ACCELERATION_DIST 5.0

5.2 周期误差修正 (PEC)#

实现逻辑 (Pec.ino): 系统记录蜗轮转动一周内的偏差数据,并在回放时动态微调步进频率。

// Pec.ino: 获取当前蜗轮相对于感应索引的位置
wormRotationPos = (pecPos - wormSensePos);
while (wormRotationPos >= stepsPerWormRotationAxis1)
wormRotationPos -= stepsPerWormRotationAxis1;

5.3 回差补偿 (Backlash)#

原因: 齿轮咬合间隙。 解决方案: 配置补偿倍率,在换向时以高速率越过间隙。

// Config.h: 换向补偿时的速率(恒星速的倍数)
#define TRACK_BACKLASH_RATE 25

总结#

步进电机的选型与参数优化是 OnStep 系统性能的基石。通过合理配置 Config.h 中的脉冲参数与补偿算法,开发者可以在复杂的机械环境下实现亚角秒级的跟踪精度。

[onstep] OnStep项目步进电机总结
https://www.eustia-astraea.top/posts/onstep/stepper-motor-summary/
作者
mcsl
发布于
2025-07-26
许可协议
CC BY-NC-SA 4.0