方波控制,常用于三相直流无刷电机的驱动场景,其核心是基于六步换相逻辑的一种控制策略。由于该方法对处理器资源需求较低、算法结构简洁,因此特别适用于Cortex-M0等计算能力受限的嵌入式平台[1]。本节将详细解析方波控制的基本机制,阐明其与磁场定向控制(FOC)之间的根本差异,并系统梳理在将原本依赖浮点运算的理论模型转化为纯整数运算的实际代码过程中所面临的关键问题及应对方案。
该控制方式的核心在于通过调节三相逆变器中六个功率开关管的工作状态,在定子侧构建一个呈阶梯状旋转的合成磁场。此磁场轴线需始终领先于转子永磁体产生的磁场方向一定角度,从而持续产生有效驱动转矩。“方波”一词来源于施加在各相绕组上的电压波形——其幅值恒定、极性突变,呈现典型的矩形特征;相应的理想反电动势则为梯形波形态。
对于一个标准三相无刷电机而言,一个完整的电周期为360°电角度,对应一对磁极旋转一周。根据转子当前位置的不同,控制器会依次选择两相通电、一相悬空的六种组合模式,每种模式维持60°电角度,构成完整的六步循环。
这些通电状态的切换时机通常由三个互差120°安装的霍尔传感器(H1, H2, H3)提供位置反馈。每个霍尔信号组合代表一个特定的60°扇区区间。控制器依据当前检测到的霍尔状态,查表确定应导通的开关管组合,并输出相应PWM信号,使定子磁场矢量以离散方式逐级推进。这种“跳跃式”前进每60°发生一次,形成所谓的六步换相过程。
速度 = 常数 / 时间计数值
理论上,当定子磁场超前转子磁场约90°时,所产生的电磁转矩达到最大值。为逼近这一理想相位关系,方波控制系统常引入提前换相角(Advance Angle),即在霍尔边沿到来之前或之后进行适当延时处理,从而调整实际换相时刻。
在每一个60°扇区内,其中一相承受正向PWM调压以调节电流大小,另一相接地形成回路,未通电的一相处于开路状态,其端电压可用于反电动势过零点检测——这在无位置传感器方案中尤为重要。
电磁转矩 $ T_e $ 与相电流幅值 $ I $ 和反电动势系数 $ K_e $ 成正比:
$ T_e \propto K_e \cdot I $
在梯形波反电动势的平顶区域,$ K_e $ 可视为近似常量,因此通过调节PWM占空比来控制相电流强度,即可实现对输出转矩的有效调控。这也是实现速度或转矩闭环控制的基础所在。
明确方波控制与磁场定向控制之间的区别,有助于清晰界定其适用边界和优化路径。
上述差异决定了方波控制更适合在资源有限的平台上部署,具备较高的性价比优势,但同时也带来了独特的工程挑战,尤其是在整数化实现方面。
| 特性 | 方波控制(六步换相) | 磁场定向控制(FOC) |
|---|---|---|
| 磁场轨迹 | 六边形顶点,离散跳跃 | 圆形,连续旋转 |
| 相电流目标波形 | 矩形波/阶梯波 | 正弦波 |
| 转矩平滑度 | 存在固有转矩脉动,尤其在低速时 | 平滑,理论上无脉动 |
| 位置传感器需求 | 低分辨率(60°电角度,如霍尔传感器) | 高分辨率(如编码器)或复杂无传感器算法 |
| 电流采样需求 | 简单(单/双电阻,用于幅值控制与保护) | 精确(至少两相,用于坐标变换与闭环) |
| CPU计算负荷 | 较低,主要为换相逻辑、PWM生成、单电流环调节 | 高,涉及坐标变换、双电流环、SVPWM等 |
| 适用场景 | 成本敏感、中高速性能要求不极端、对转矩脉动不敏感的应用 | 高性能、宽调速范围、要求低速平稳和快速响应的应用 |
尽管方波控制整体逻辑较为简明,但在将其从依赖浮点运算的设计模型迁移至仅支持整数运算的Cortex-M0处理器时,仍需克服若干关键的技术障碍。这些问题主要源于整数运算固有的局限性,包括动态范围受限、精度下降以及严格的实时性约束。
实现速度闭环的前提是准确估算电机转速。常用方法是测量相邻两个霍尔信号跳变之间的时间间隔 $ T_{hall} $。电角速度 $ \omega_e $ 与该周期的关系如下:
$ \omega_e = \frac{\Delta\theta_e}{\Delta t} = \frac{\pi/3}{T_{hall}} $
由于霍尔信号频率随转速降低而减小,导致周期测量值增大,若使用固定位宽的定时器计数,则在低速段会出现较大的相对量化误差。例如,当 $ T_{hall} $ 较大时,单位计数对应的角速度误差占比升高,严重影响低速下的控制精度。此外,在高速情况下,$ T_{hall} $ 过短可能导致计数溢出或中断响应不及时,引发测频失败。
因此,在纯整数环境下如何设计高效且鲁棒的速度计算算法,成为实现稳定闭环控制的核心挑战之一。
在无刷直流电机的方波控制中,电角速度的计算公式为:
\[ \omega_e = \frac{\Delta \theta_e}{\Delta t} = \frac{\pi/3}{T_{hall}} \]其中,π/3 表示每个霍尔扇区对应的电角度,即60°。该值为固定常量。
在浮点运算系统中,上述除法可直接通过硬件或软件浮点单元完成。然而,在仅支持整数运算的微控制器(如ARM Cortex-M0)上,实现这一计算面临多个挑战:
M0系列MCU的定时器计数器为整型寄存器,其时间分辨率受限于系统时钟与预分频设置。例如,在48MHz系统时钟下使用16位定时器对霍尔信号边沿进行捕获,单个计数单位可能对应数十纳秒。由于边沿触发存在CPU时钟同步延迟,实际测量的 Thall 会引入若干周期的量化偏差,影响速度精度。
速度计算涉及一次除法操作:
速度 = 常数 / 时间计数值
而M0内核无硬件除法器,软件模拟除法需耗费数十个指令周期,严重影响实时性。为提升效率,常采用近似方法,如预先计算倒数并以查表方式获取,或将除法转换为移位和乘法的组合。此类方法虽加快运算,但引入额外误差,尤其在小分母情况下更为显著。
当电机运行于极低转速时,Thall 显著增大,可能导致定时器溢出;同时,固定量化误差在大周期中所占比例上升,造成计算出的速度值呈现阶跃式跳变,表现为明显的抖动现象,严重削弱低速闭环控制稳定性。
方波驱动中的电流环通常采用单PI控制器调节相电流幅值。其在定点系统中的实现不仅面临积分饱和、溢出等通用问题,还存在以下关键挑战:
从ADC读取的原始电流数据需经过偏置校正与标幺化处理,转换为控制系统可用的数值。所有运算必须基于整数完成。由于电流信号易受噪声干扰,通常需加入一阶IIR低通滤波器,其递推公式为:
\[ y[n] = \alpha x[n] + (1 - \alpha)y[n-1] \]其中系数 α 满足 0 < α < 1,需以Q格式定点小数表示。滤波过程包含两次乘法与一次加法,必须合理选择数据格式以避免溢出,并兼顾动态范围与精度。
y = α*x + (1-α)*y_prev
PI控制器输出为电压指令 Vcmd,需映射为PWM比较寄存器的整型值,关系如下:
\[ \text{duty} = \frac{V_{cmd}}{V_{bus}} \cdot MAX\_DUTY \]由于母线电压 Vbus 是变化量,此步骤本质上是一次除法运算:
(V_cmd * MAX_DUTY) / V_bus
为避免实时执行高成本除法,常用策略包括:预先将 1/Vbus 转换为Q格式数,将除法转为乘法;或在 Vbus 波动较小时忽略其变化,但这会导致系统增益随电压漂移,影响响应一致性。
为防止桥臂直通,必须插入死区时间,这将导致实际施加到电机的电压低于理论值,尤其在低占空比工况下偏差明显。精确补偿需根据当前电流方向,在PWM比较值上增加或减去一个固定补偿量。该补偿值由死区时间与PWM时基周期之比决定,必须取整为整数计数值。此外,电流方向判断依赖于采样结果,对零点噪声敏感,若未妥善处理可能引发误补偿。
换相是方波控制的核心环节,要求逻辑绝对可靠且响应时序严格可预测。其主要挑战不在数学计算,而在于实时控制架构的设计。
最高效的方式是以3位霍尔信号作为索引,查找预定义的PWM输出状态表。该表包含6个有效换相状态,存储为常量数组,访问过程完全基于整数索引,无需计算,执行迅速且确定性强。
完整的换相流程需由状态机协调。例如,在检测到霍尔跳变后,可能需要延迟一段“提前角”时间再执行换相动作。该延时通常由定时器实现,其重载值需通过整数运算得出。状态机还需集成故障保护功能,如霍尔信号卡死检测、换相超时判断(反映堵转)等。相关阈值和计数器均采用整型变量,设定时需结合定时器分辨率,确保判据合理。
实际应用中,霍尔传感器输出可能存在毛刺。软件消抖通常采用延时重采样策略:在检测到边沿变化后,等待一小段时间(如几十微秒),再次确认信号状态。该延时期间可通过循环计数或定时器中断实现,均依赖整型变量管理。消抖时长需根据MCU主频调整,否则可能造成误判或响应滞后。
电机启动及低速运转期间,反电动势幅值过小甚至无法检测,无法依赖过零或霍尔信号进行准确换相,因此成为控制难点。
常用方法为“外同步”启动:控制器强制按预定序列换相,并逐步提升换相频率以实现加速。该过程需生成一个随时间变化的换相周期斜坡。在整数系统中,通常体现为定时器重载值的递减序列。若采用线性加速,可通过简单的整数减法实现;若追求平滑S形加减速曲线,则需额外计算支持。
当电机加速至反电动势足够强时,系统需从开环切换至基于霍尔信号的闭环控制。切换时机通常依据估算的速度或反电动势幅值决定。这些估算量在定点系统中具有较大相对误差,可能导致切换时刻不稳定,出现反复切换或失败现象,影响运行平稳性。
在整数域实现的控制系统中,多数参数(如PI增益、滤波系数、延时阈值等)均为手工设定的定点常量,缺乏在线自整定或自适应调节机制。一旦工作条件变化(如负载波动、温度漂移、电源电压变动),系统性能可能下降。由于缺少浮点支持,复杂自适应算法难以部署,限制了控制系统的鲁棒性与智能化水平。
在整数化M0系统中,参数通常被设定为编译时常量,难以实现在线调整。相比之下,浮点系统则可以较为方便地对PI控制器参数、启动过程相关参数等进行动态调节。
const
若要在基于整数运算的M0平台上支持运行时参数修改,则必须满足以下条件:
上述需求显著提升了软件架构和资源管理的复杂度。因此,在多数采用M0内核的方波控制产品中,开发者倾向于使用固定参数方案,通过离线调试确定最优参数组合,并将其固化于代码中,从而简化系统设计并提升运行稳定性。
由此可见,将方波控制系统从浮点实现迁移至整数域,并非简单替换变量类型即可完成。它要求针对各个功能模块重新设计处理流程,广泛采用整数算术、查表机制、位移操作等方式来逼近原有浮点计算效果,同时必须全程关注数据的动态范围、精度损失以及实时性约束。
接下来的小节将围绕霍尔信号处理、PWM生成策略与转速闭环调节等关键环节,详细介绍具体的整数化实现方法及优化技巧。
方波控制基于六步换相原理:通过精确控制三相逆变器的六种有效开关状态,形成步进式旋转的定子磁场,驱动永磁转子同步转动。每经过60°电角度即执行一次换相操作,维持连续电磁转矩输出。
转矩由相电流幅值调控:在梯形波反电动势的平顶阶段,电机转矩与导通相的电流大小近似呈线性关系。通过调节导通相的PWM占空比,构建电流闭环控制,可实现对输出转矩和转速的有效调节。
相较于FOC具备结构简洁、资源占用低的优势:虽然其磁场呈离散分布、电流波形为矩形波、存在固有的转矩脉动问题,但对方波控制而言,无需高精度位置传感器和强大的浮点运算能力,因而更适合运行于Cortex-M0这类资源受限的微控制器平台。
速度测量面临整数除法与量化误差挑战:常用基于霍尔信号周期的时间间隔测速法,需计算定时器计数值的倒数以获得转速。由于M0内核缺乏硬件除法器,该运算须依赖软件实现或近似处理;此外,在低速工况下,定时器时钟的量化效应会显著影响测速精度。
电流环PI控制器的定点化需综合考虑多方面因素:包括电流采样值的标幺化转换(通过整数运算实现)、数字滤波器系数的Q格式表示、以及电压指令到PWM占空比映射过程中涉及的母线电压除法运算——后者可通过比例缩放等手段优化,避免频繁执行耗时的除法操作。
换相逻辑的高效与确定性依赖查表与状态机机制:利用常量数组建立霍尔信号状态与对应PWM开关模式之间的映射关系,可快速完成换相决策;而换相时序控制、提前角延时设置以及各类故障保护动作,则由基于整数定时器驱动的状态机统一协调管理,确保行为可预测且响应及时。
启动与低速运行在整数域实现难度较高:开环阶段需生成合理的加速曲线以平稳提升转速;同时,在由开环切换至闭环换相的过程中,判断条件的设计必须足够精细,防止出现抖动或失步现象。这些功能在无浮点支持的环境下,需借助定标、插值与误差补偿等技术加以实现。
系统参数的在线调整在整数化系统中非常规配置:出于降低复杂度和提高可靠性的考虑,PI参数、加减速曲线参数等通常作为静态常量处理,经充分的离线调试后写入程序。是否支持运行时调节取决于具体应用需求,但在大多数M0平台上并非必要功能。
参考文献
扫码加好友,拉您进群



收藏
