2. 电机控制基础与SAM外设映射

在SAM系列MCU上做电机控制,第一步不是写代码,而是把“电机怎么转”翻译成“外设怎么动”。直流电机、步进电机、BLDC和PMSM这四类负载,对电流、换相、位置反馈的需求差异很大,而SAM的PWM、ADC、定时器/计数器(TC)、比较器(AC)等外设,正是把这些需求落到寄存器层面的桥梁。理解它们之间的映射关系,才能避免“PWM频率设错导致电机啸叫”“ADC采样时刻不对导致电流环震荡”这类典型问题。

四类电机的工作原理与外设需求

直流电机(有刷)最简单:给电枢两端加电压,电流通过换向器和电刷自动换向,转矩近似与电流成正比,转速近似与电压成正比。控制上只需要一路PWM驱动H桥,通过占空比调压调速,再配合一个GPIO控制方向。它对定时器的要求是频率适中(通常10~20 kHz,避开人耳可听范围),死区时间要防止H桥上下管直通。

步进电机把电脉冲变成固定角位移,每来一个脉冲走一个步距角。两相双极步进常用两路PWM加两路方向信号,或者用四路PWM做微步细分。关键参数是脉冲频率决定转速、脉冲总数决定位置。SAM的TC可以工作在匹配模式产生精确脉冲,PWM模块则适合生成带死区的互补驱动。

BLDC(无刷直流)本质是“电子换向的直流电机”,反电动势为梯形波。任意时刻只有两相通电,第三相悬空,每60°电角度换相一次。它需要三路PWM(六步换相)、三路霍尔输入或反电动势过零检测,以及ADC采样母线电流。换相时刻由霍尔状态或过零点决定,因此TC的捕获功能和AC的比较功能非常关键。

PMSM(永磁同步电机)反电动势为正弦波,需要三相正弦电流。控制上采用FOC(磁场定向控制):用Clarke/Park变换把三相电流变成d-q轴直流量,d轴电流控为0,q轴电流控转矩。这要求三路互补PWM带死区、至少两路同步ADC采样相电流、以及高频定时器触发采样。SAM的PWM模块支持中心对齐模式和硬件触发ADC,正是为FOC准备的。

四类电机 ↔ SAM外设映射关系 直流电机 有刷 / H桥驱动 占空比调压调速 1路PWM + 方向GPIO 步进电机 脉冲→角位移 频率决定转速 脉冲数决定位置 BLDC 梯形反电动势 六步换相 / 两两导通 霍尔或过零检测 PMSM 正弦反电动势 FOC矢量控制 d-q轴电流闭环 PWM 模块 中心/边沿对齐 · 互补输出 · 死区 硬件触发ADC · 故障保护 频率:10~20 kHz(直流/步进) TC 定时器/计数器 匹配模式产生脉冲 · 捕获测速 编码器接口 · 定时触发 步进脉冲频率 = 转速 × 步数/转 ADC 模数转换 相电流采样 · 母线电压监测 与PWM同步触发 · 12位分辨率 采样时刻:PWM中心点 AC 模拟比较器 反电动势过零检测 过流保护快速关断 输出可触发TC捕获 控制环与信号链 速度环(TC捕获/编码器) 电流环(ADC同步采样) 换相/调制(PWM+AC) 功率级(H桥/三相逆变) 反馈 注:PWM频率、死区、ADC采样时刻需根据电机电气时间常数与开关损耗折中选取

SAM外设在电机控制中的角色与配置要点

PWM模块是电机控制的“执行手”。SAM的PWM支持中心对齐和边沿对齐两种模式。中心对齐时,计数器先增后减,PWM在周期中心对称,谐波更小,适合FOC和低噪声场合;边沿对齐实现简单,适合直流电机调速。配置时先确定PWM频率:若系统时钟48 MHz,目标频率16 kHz,则周期寄存器值 = 48M / 16k = 3000。死区时间根据MOSFET开关时间和驱动延迟设定,典型值200~500 ns。互补输出必须使能死区,否则上下管直通会烧毁功率级。

TC定时器承担“时间基准”和“脉冲发生”双重角色。在步进电机中,TC工作在匹配模式,比较值决定脉冲周期,每次匹配翻转输出引脚并产生中断,中断里更新下一步的相位。在BLDC中,TC的捕获通道接霍尔信号,捕获值之差就是换相间隔,据此计算转速。在FOC中,TC提供高频中断触发电流环计算,典型频率10~20 kHz,与PWM载波同步。

ADC是电流环的“眼睛”。FOC需要同时采样至少两相电流,SAM的ADC支持多通道扫描和硬件触发。关键配置是触发源选择PWM事件,采样时刻放在PWM周期的中心点——此时开关噪声最小,采样值最稳定。若在PWM边沿采样,开关瞬间的振铃会污染结果。ADC分辨率12位,参考电压3.3 V时,1 LSB约0.8 mV,配合采样电阻和运放增益,可分辨安培级电流。

AC模拟比较器用于快速保护和过零检测。BLDC的反电动势过零检测中,悬空相电压与母线中点比较,AC输出翻转即过零点,触发TC捕获记录时刻。过流保护中,采样电阻电压与阈值比较,一旦超限立即关断PWM输出,响应时间可做到微秒级,比软件中断快得多。

配置示例:BLDC六步换相的关键参数

以SAM C21为例,假设系统时钟48 MHz,目标转速3000 rpm,电机4对极,霍尔换相频率 = 3000/60 × 4 × 6 = 1200 Hz。PWM频率设为20 kHz,周期值 = 48M/20k = 2400。死区时间设为300 ns,对应计数值 = 48M × 300n ≈ 14。ADC触发点设在PWM周期中心,即计数值1200处。TC捕获霍尔信号,捕获中断中读取计数值并计算换相间隔,若间隔异常则判定堵转。

配置检查清单:
  • PWM频率是否避开人耳可听范围(>16 kHz)?
  • 互补输出是否使能死区?死区是否大于驱动延迟?
  • ADC触发源是否绑定PWM中心点事件?
  • TC捕获是否使能输入滤波?滤波宽度是否匹配霍尔信号噪声?
  • AC比较器输出是否连接到PWM故障输入,实现硬件关断?

把电机类型和外设角色对应清楚后,下一步就是具体寄存器配置和代码实现。记住一个原则:先确定控制环的采样频率和PWM频率,再反推定时器周期和ADC触发时刻,最后配置保护逻辑。顺序反了,调试时会非常被动。