3. 步进电机开环位置控制系统搭建
开环位置控制系统的组成与信号链
步进电机开环位置控制的核心是“脉冲当量”与“脉冲计数”。控制器每发出一个脉冲,驱动器就驱动电机转过一个固定步距角,经丝杠转换为固定的直线位移。系统不需要位置传感器反馈,因此结构简单、成本低,但必须保证电机不丢步。
本案例采用以下实际对象搭建系统:
- 控制器:STM32F103 或 PLC 脉冲输出型,负责产生方向信号 DIR 和脉冲信号 PUL。
- 驱动器:DM542 型两相步进驱动器,细分数设为 8,即 1600 脉冲/转。
- 步进电机:57 系列两相混合式,步距角 1.8°,即 200 步/转。
- 丝杠机构:滚珠丝杠导程 5 mm,即电机转一圈,滑台移动 5 mm。
由此可计算系统关键参数:
- 脉冲当量 = 丝杠导程 ÷ (电机步数 × 细分数) = 5 mm ÷ (200 × 8) = 0.003125 mm/脉冲。
- 若目标位移为 100 mm,则所需脉冲数 = 100 ÷ 0.003125 = 32000 个脉冲。
- 若要求滑台速度为 20 mm/s,则脉冲频率 = 20 ÷ 0.003125 = 6400 Hz。
控制器脉冲输出与驱动器接线
控制器与驱动器之间采用共阳极或共阴极接法。本案例采用共阳极接法:控制器 PUL+ 和 DIR+ 接 +5V,PUL− 和 DIR− 分别接控制器输出引脚。控制器输出低电平时,驱动器内部光耦导通,接收一个脉冲。
以 STM32F103 为例,使用 TIM2 通道 1 产生脉冲,PA0 作为方向控制引脚。关键配置如下:
// 系统时钟 72 MHz,预分频 71 → 计数时钟 1 MHz
// 自动重装载值 = 1 MHz / 6400 Hz - 1 = 155
TIM2->PSC = 71;
TIM2->ARR = 155;
TIM2->CCR1 = 78; // 50% 占空比
TIM2->CCMR1 |= (1<<6)|(1<<5); // PWM 模式 1
TIM2->CCER |= (1<<0); // 使能通道 1 输出
TIM2->CR1 |= (1<<0); // 启动定时器
// 方向控制
GPIOA->BSRR = (1<<0); // PA0 置高,正转
// GPIOA->BRR = (1<<0); // PA0 置低,反转
驱动器拨码开关设置:细分数 8(SW1~SW3 按 DM542 手册设定),电流根据电机额定电流 2.0 A 设置。丝杠滑台上安装限位开关,接入控制器外部中断,防止超程撞机。
位移与速度控制实现
开环位置控制的核心是精确计数脉冲。控制器需要记录已发出的脉冲数,当达到目标脉冲数时停止输出。以下为位移控制逻辑:
volatile uint32_t pulse_count = 0;
uint32_t target_pulses = 32000; // 100 mm
void TIM2_IRQHandler(void) {
if (TIM2->SR & TIM_SR_UIF) {
TIM2->SR &= ~TIM_SR_UIF;
pulse_count++;
if (pulse_count >= target_pulses) {
TIM2->CR1 &= ~(1<<0); // 停止定时器
pulse_count = 0;
}
}
}
速度控制通过修改 ARR 值实现。例如需要 10 mm/s 时,脉冲频率为 3200 Hz,ARR = 1 MHz / 3200 − 1 = 311。注意:修改 ARR 应在更新事件时生效,避免脉冲抖动。
验证与丢步判断
开环系统最典型的故障是丢步。验证方法:在滑台上安装百分表或激光位移计,指令移动 100 mm,实测位移若小于 100 mm,说明存在丢步。常见原因包括:
- 脉冲频率过高,超过电机启动频率。应设置加减速曲线,从 500 Hz 逐步升至 6400 Hz。
- 驱动器电流设置过小,电机转矩不足。应重新按电机额定电流整定。
- 丝杠预紧力过大或导轨润滑不良,机械阻力增大。
若实测位移与指令一致,且重复定位误差在 ±0.01 mm 以内,则系统搭建成功。注意:开环系统无法自动纠正丢步,因此加减速设计和机械装配质量是保证精度的关键。
调试时先用低速(如 500 Hz)运行全程,确认方向和限位有效,再逐步提高速度并加入加减速曲线。每次修改细分数后,必须重新计算脉冲当量和目标脉冲数。