4、电机驱动基础:直流电机、步进电机、伺服电机的工作原理,以及常用驱动器(如L298N、A4988、TB6600)的接口与控制方法

在运动控制系统中,电机是最终的执行机构,其类型选择与驱动方式直接决定了轨迹规划的精度、响应速度与负载能力。STM32作为主控芯片,并不直接驱动电机,而是通过GPIO、定时器PWM、编码器接口等外设与电机驱动器交互。因此,理解直流电机、步进电机、伺服电机三类主流电机的工作原理,掌握L298N、A4988、TB6600等常用驱动器的接口时序与控制方法,是后续实现插补算法与闭环控制的基础。本章将从电机本体原理出发,逐步深入到驱动器接口与STM32控制逻辑,并给出选型与调试的实战建议。

电机驱动与控制链路总览 STM32 主控 TIM PWM / GPIO Encoder / ADC UART / CAN PWM/方向 脉冲/方向 电机驱动器 L298N 直流电机 A4988 步进电机 TB6600 步进电机 伺服驱动器 伺服电机 功率驱动 功率驱动 执行电机 直流电机 有刷/无刷 步进电机 开环位置 伺服电机 闭环控制 编码器反馈 / 电流采样 电源系统 5V / 12V / 24V / 48V 逻辑电源与功率电源隔离 供电 三种电机控制模式对比 直流电机 PWM占空比 → 平均电压 → 转速 H桥换向 → 正反转 步进电机 脉冲频率 → 转速 脉冲个数 → 角位移 伺服电机 PWM脉宽 → 目标角度 编码器闭环 → 精确位置 ※ 步进电机细分驱动:A4988支持1/16细分,TB6600支持1/32细分 ※ 伺服电机通常由专用驱动器完成电流环/速度环/位置环

4.1 直流电机的工作原理与PWM调速控制

4.1.1 核心原理:从电磁转矩到PWM调速

直流电机(DC Motor)是最基础的电机类型,其工作原理基于通电导体在磁场中受力的安培定律。当电枢绕组通入直流电流时,在定子磁场作用下产生电磁转矩,驱动转子旋转。对于有刷直流电机,电刷与换向器实现电流方向的自动切换,保证转矩方向恒定。转速公式为:n = (U - I·R) / (K·Φ),其中U为电枢电压,I为电枢电流,R为电枢电阻,K为结构常数,Φ为磁通。可见,调节电枢电压U是最常用的调速方式。

STM32通过定时器产生PWM波,经驱动器功率放大后施加到电机两端。PWM占空比D决定了平均电压U_avg = D·Vcc,从而控制转速。例如,12V电机在50%占空比下平均电压为6V,转速约为额定转速的一半。PWM频率通常选择10kHz-20kHz,高于人耳听觉上限,避免啸叫,同时保证电流纹波在可接受范围。

关键参数:直流电机的调速性能指标包括:调速范围(通常1:10)、调速平滑性(取决于PWM分辨率)、机械特性硬度(转速随负载变化的程度)。在轨迹规划中,直流电机多用于传送带、风机等速度控制场景,较少用于精确位置控制。

4.1.2 L298N驱动器接口与控制方法

L298N是经典的H桥双路直流电机驱动器,内置两个H桥,可驱动两台直流电机或一台步进电机。其接口逻辑如下:

引脚功能STM32连接控制逻辑
ENA/ENB使能PWM输入TIM_CH(PWM输出)高电平使能,PWM占空比调速
IN1/IN2电机A方向控制GPIO输出IN1=1,IN2=0正转;反之反转
IN3/IN4电机B方向控制GPIO输出同上
OUT1-OUT4电机接线端子接电机两端—
VS电机电源(5-35V)外部电源需与逻辑电源共地
VSS逻辑电源(5V)STM32 5V或板载稳压—

STM32控制代码中,使用GPIO控制方向,使用定时器PWM控制速度。典型初始化流程为:使能定时器时钟→配置PWM通道→设置占空比→配置GPIO为推挽输出→设置方向引脚电平。需要注意,L298N的饱和压降约2V,在低电压供电时效率较低,且EN引脚必须接PWM才能调速,若直接接高电平则电机全速运转。

4.1.3 实战场景:STM32控制直流电机实现闭环速度

在移动机器人轮式驱动场景中,我们使用L298N驱动两个直流减速电机,并配合霍尔编码器实现速度闭环。系统参数:电机额定电压12V,减速比30:1,编码器线数13线(经倍频后每转156脉冲)。STM32定时器2产生20kHz PWM,定时器3工作在编码器模式读取速度。

// 定时器2 PWM初始化(PA0-CH1)
TIM_TimeBaseInitTypeDef TIM_InitStruct;
TIM_OCInitTypeDef OC_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_InitStruct.TIM_Prescaler = 84-1;  // 84MHz/84=1MHz
TIM_InitStruct.TIM_Period = 50-1;     // 1MHz/50=20kHz
TIM_TimeBaseInit(TIM2, &TIM_InitStruct);
OC_InitStruct.TIM_OCMode = TIM_OCMode_PWM1;
OC_InitStruct.TIM_Pulse = 25;         // 初始50%占空比
OC_InitStruct.TIM_OutputState = TIM_OutputState_Enable;
TIM_OC1Init(TIM2, &OC_InitStruct);
TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
TIM_Cmd(TIM2, ENABLE);

速度闭环采用增量式PID,采样周期10ms。目标速度通过轨迹规划模块下发,实际速度由编码器计算。调试中发现,当PWM占空比从0突加到50%时,电机启动电流可达稳态电流的5-8倍,容易触发L298N过流保护。解决方案是在PID输出端增加斜坡限幅,将加速度限制在500rpm/s以内。

常见误区:①L298N的VS和VSS必须共地,否则逻辑信号无参考电平;②PWM频率过低(<5kHz)会导致电机啸叫和电流纹波过大;③不要将电机电源与STM32电源共用,电机启停时母线电压波动会复位主控。

4.2 步进电机的工作原理与细分驱动

4.2.1 核心原理:脉冲-角度映射与矩频特性

步进电机是一种将电脉冲信号转换为角位移的执行机构。每输入一个脉冲,转子转过一个固定角度(步距角)。以两相混合式步进电机为例,基本步距角为1.8°,即200个脉冲转一圈。通过驱动器细分技术,可将步距角细分为1/2、1/4、1/8、1/16甚至1/32,从而获得更高的定位分辨率。例如1/16细分下,每个脉冲对应0.1125°,转一圈需要3200个脉冲。

步进电机的转矩-频率特性(矩频特性)是选型的关键:随着脉冲频率升高,输出转矩下降。这是因为绕组电感限制了电流上升速率,高频下电流无法达到额定值。在轨迹规划中,必须考虑电机的启动频率(通常100-200Hz)和最高运行频率(通常1-2kHz),采用梯形或S形加减速曲线避免失步。

4.2.2 A4988与TB6600驱动器对比

特性A4988TB6600
驱动电流±2A(峰值)4A(峰值)
供电电压8-35V9-42V
细分设置MS1/MS2/MS3引脚组合,最高1/16S1-S3拨码开关,最高1/32
接口信号STEP/DIR/EN(3.3V兼容)PUL/DIR/ENA(光耦隔离)
适用场景3D打印机、小型CNC大型CNC、雕刻机
散热方式需加散热片内置风扇

A4988的STEP引脚每收到一个上升沿,电机走一步;DIR引脚电平决定方向;EN低电平使能输出。其逻辑电源VDD为3.3-5V,可直接由STM32供电。TB6600则采用光耦隔离输入,PUL+接STM32的PWM输出,PUL-接GND,DIR+接方向GPIO,DIR-接GND。注意TB6600的输入信号需要共阳极接法,即公共端接5V,信号端接GPIO。

4.2.3 案例拆解:基于TB6600的两轴步进电机轨迹控制

在桌面型XY绘图仪项目中,X轴和Y轴分别由57步进电机驱动,通过TB6600驱动器设置为1/8细分(每转1600脉冲)。STM32使用定时器4产生脉冲序列,通过改变定时器自动重载值来调节脉冲频率,实现速度控制。

// 定时器4产生脉冲,频率=84MHz/(prescaler*period)
void STEP_SetFreq(uint32_t freq) {
    uint32_t period = 84000000 / (freq * 10);  // prescaler=10
    TIM_SetAutoreload(TIM4, period-1);
}
// 方向控制
void DIR_SetDir(uint8_t dir) {
    GPIO_WriteBit(GPIOB, GPIO_Pin_5, dir ? Bit_SET : Bit_RESET);
}
// 使能控制
void EN_SetEnable(uint8_t en) {
    GPIO_WriteBit(GPIOB, GPIO_Pin_6, en ? Bit_RESET : Bit_SET); // 低电平使能
}

轨迹规划模块计算每个插补周期的目标位置,运动控制模块根据当前位置与目标位置的差值,通过梯形加减速算法生成脉冲频率序列。实际测试中,当脉冲频率从0突升至2000Hz时,电机出现明显失步(丢步约10°)。分析发现,TB6600的输入信号上升沿要求最小宽度为2μs,而STM32在中断中修改定时器寄存器存在延迟。解决方案是使用DMA或定时器比较通道直接控制STEP引脚,减少软件延迟。

经验总结:步进电机控制的核心是“脉冲频率-速度”和“脉冲个数-位置”的双重映射。在STM32中,推荐使用定时器主从模式:主定时器产生脉冲,从定时器计数脉冲个数,当达到目标值时自动停止,避免CPU频繁干预。

4.3 伺服电机的工作原理与闭环控制

4.3.1 核心原理:三环控制与PWM脉宽映射

伺服电机(Servo Motor)通常指带有编码器反馈的直流无刷电机或交流永磁同步电机,由专用伺服驱动器完成电流环、速度环、位置环的三环闭环控制。在STM32应用中,我们通常使用PWM信号控制伺服电机的目标位置(位置模式)或目标速度(速度模式)。对于航模舵机类伺服,PWM脉宽1.0ms对应-90°,1.5ms对应0°,2.0ms对应+90°,周期为20ms。

对于工业伺服驱动器,通常采用脉冲+方向接口(与步进电机类似)或总线通信(CANopen、EtherCAT)。在脉冲模式下,伺服驱动器内部完成位置闭环,STM32只需发送脉冲序列即可。与步进电机不同,伺服电机不会失步,因为编码器实时检测实际位置并修正。

4.3.2 伺服控制的关键参数与调试方法

伺服驱动器的调试参数包括:位置环增益(Kp)、速度环增益(Kv)、速度环积分时间常数(Ti)、电流环带宽等。在STM32轨迹规划中,我们主要关注伺服驱动器的电子齿轮比设置。例如,设置电子齿轮比为电机每转脉冲数=10000,则STM32发送10000个脉冲,电机转一圈。

调试流程:①先设置伺服为速度模式,手动给定速度指令,确认电机旋转方向与指令一致;②切换至位置模式,发送少量脉冲(如100个),观察电机是否转动对应角度;③逐步增加脉冲频率,观察是否出现跟随误差报警;④调整位置环增益,使系统响应快且无振荡。

4.3.3 实战场景:STM32控制伺服电机实现精准定位

在小型六轴机械臂项目中,每个关节使用400W伺服电机,驱动器设置为位置模式,电子齿轮比1:10000。STM32通过定时器产生脉冲序列,最高频率500kHz。由于机械臂运动学计算需要精确的关节角度,伺服电机的编码器分辨率(17位,131072线)提供了足够的反馈精度。

实际调试中遇到一个问题:当机械臂快速运动时,伺服驱动器偶尔报“跟随误差过大”报警。通过示波器观察脉冲波形,发现STM32在中断中发送脉冲时,由于其他中断(如通信中断)抢占,导致脉冲间隔不均匀。解决方案是使用定时器DMA突发模式,将脉冲数据预先存储在内存中,由DMA自动搬运到定时器寄存器,保证脉冲序列的均匀性。

风险提示:伺服电机的功率较大,上电顺序必须严格遵循:先给驱动器供电,等待驱动器初始化完成(约2-3秒),再使能伺服;断电时先停止脉冲输出,再断开驱动器电源。否则可能损坏驱动器功率模块。

4.4 电机选型与驱动方案对比

4.4.1 三类电机的选型决策矩阵

维度直流电机步进电机伺服电机
控制精度低(依赖编码器)中(开环,可能失步)高(闭环,无失步)
转速范围高(数千rpm)低(通常<1000rpm)中高(3000-5000rpm)
转矩特性转速升高转矩下降低速大转矩,高速转矩下降恒转矩区宽
成本低中高
控制复杂度简单(PWM)中等(脉冲+方向)复杂(需驱动器调试)
典型应用风机、泵、玩具3D打印、CNC、定位平台机器人关节、高精度设备

4.4.2 驱动器接口与STM32资源映射

在STM32工程中,不同驱动器占用的外设资源不同。L298N需要2个GPIO(方向)+1个定时器PWM通道(速度);A4988需要2个GPIO(STEP/DIR)+1个GPIO(EN),STEP可由定时器PWM输出;TB6600需要2个GPIO(PUL/DIR)+1个GPIO(ENA),PUL可由定时器PWM输出;伺服驱动器需要1个定时器PWM通道(位置指令)或脉冲输出+方向GPIO。

规划多轴系统时,需注意STM32定时器资源分配。例如,STM32F103有8个定时器,其中高级定时器TIM1/TIM8可输出互补PWM,通用定时器TIM2-TIM5各有4个通道。对于4轴步进电机控制,可使用TIM2-TIM5分别产生4路脉冲,每路占用1个通道。

4.4.3 常见误区与总结复盘

  • 误区一:认为步进电机不需要编码器就无法实现闭环。实际上,通过增加外部编码器,步进电机也可以实现闭环控制,但响应速度不如伺服电机。
  • 误区二:忽略驱动器的电流设置。A4988的电流通过Vref引脚调节,Vref=电流×8×感应电阻。设置不当会导致电机发热或转矩不足。
  • 误区三:在步进电机高速运行时使用过大的细分。细分越高,脉冲频率要求越高,当频率超过驱动器最大响应频率时,反而会降低转矩。
  • 误区四:伺服电机的脉冲接口与步进电机完全相同。实际上,伺服驱动器的脉冲输入需要差分信号(RS422)或光耦隔离,且对脉冲宽度有严格要求。
本章核心要点:①直流电机通过PWM占空比调速,L298N是典型的H桥驱动器;②步进电机通过脉冲个数和频率控制位置与速度,A4988和TB6600是常用驱动器,需注意细分设置和电流调节;③伺服电机由专用驱动器完成闭环,STM32通过脉冲或总线发送位置指令;④选型时需综合考虑精度、转速、转矩、成本和调试复杂度。在后续章节中,我们将基于这些驱动基础,实现梯形加减速算法和S形插补,将轨迹规划指令转化为精确的电机运动。