主要内容

集成单片机调度和外围设备在电机控制中的应用

这个示例展示了如何在开发早期识别和解决与外围设备设置和任务调度有关的问题。

以下是与MCU外围设备和调度相关的典型挑战:

  • dc -PWM同步,实现PWM周期中点电流检测

  • 结合传感器延迟来实现闭环系统所需的控制器响应

  • 在设计特殊算法的同时,学习不同的PWM设置

这个例子展示了如何通过部署到TI Delfino F28379D LaunchPad上,在仿真和硬件验证中使用SoC Blockset来解决电机控制闭环应用的这些挑战。

硬件要求:

  • TI Delfino F28379D LaunchPad或TI Delfino F2837xD基于板

  • BOOSTXL-DRV8305EVM电机驱动板

  • Teknic M-2310P-LN-04K PMSM电机

模型结构

open_system (“soc_pmsm_singlecpu_foc”);

打开soc_pmsm_singlecpu_foc模型.该模型模拟单CPU电机控制器,包含在soc_pmsm_singlecpu_ref模型,用于永磁同步电机逆变系统。控制器感知来自使用的设备的输出ADC接口和使用的启动脉宽调制接口这驱动了逆变器。本例中使用了Motor Control Blockset™的算法块。

ADC采集时间

ADC硬件包含一个采样和保持电路来检测模拟输入。为了确保完整的ADC测量,必须选择最小采集时间,以考虑输入电路和样品和保持电路中的电容的综合影响。

打开ADC接口块,将默认采集时间更改为100ns。运行模拟并查看结果仿真数据检查观察到电流波形有失真。低采集时间导致ADC测量没有达到它们的真实值。因此,控制器通过产生一个相对占空比而做出反应,从而引起电机所吸引的电流的变化。这些图显示了对错误ADC测量和A相电流通道透支的反应,A相电流为蓝色,B相电流为橙色。仿真的速度反馈显示了在开环到闭环过渡期间的显著振荡,这在现实世界中将停止电机。

为了解决这个问题,打开ADC接口块改变和改变采集时间更大的值,320ns。该值是表5-42中推荐的ADC最小采集时间TI Delfino F28379D发射台数据表。运行模拟并查看结果仿真数据检查.该图显示了精确采样的ADC值和控制器跟踪参考值的预期。

通过将模型部署到TI Delfino F28379D发射台,验证针对硬件的仿真结果。在系统芯片选项卡上,单击配置、构建和部署打开SoC建设者工具。

在SoC Builder工具中,打开外围配置工具,设置ADC > SOCx采集窗口周期参数13 ADC时钟滴答用于ADC B和C模块。ADC采集时钟滴答参数必须设置为模拟时间值,在ADC接口块中设置,乘以ADC时钟频率。您可以从模型硬件设置中获得ADC时钟频率。打开soc_pmsm_singlecpu_ref模型.在系统芯片选项卡上,单击硬件设置打开配置参数窗口。在硬件实现>目标硬件资源> ADC_xSection,你可以看到ADC时钟频率,单位为MHz参数值。下图显示了用于模拟的ADC接口块设置和用于部署的外围应用程序设置。在模拟和代码生成中使用相同的设置以确保预期的行为。

选择构建操作页,从硬件中选择监控数据构建和加载外部模式.这张图显示了来自硬件的精确采样ADC值的数据,控制器按照预期跟踪参考值。

ADC-PWM同步

BOOSTXL-DRV8305EVM电机驱动器有一个使用6功率mosfet的三相逆变器。这个电机驱动板使用一个低侧分流电阻来检测电机电流。电流检测电路放大分流器上的电压降。这种设置确保低功耗,因为电流只有通过分流时,底部开关是on和远离PWM整流噪声。此图显示BOOSTXL-DRV8305EVM电机驱动的低侧分流电阻电路。

为了正确操作,电流检测必须发生在adc触发时PWM周期的中点。具体来说,当底部开关在Up-Down计数器模式下有源时,PWM计数器必须处于最大值。在不同的实例中电流采样的结果是测量到的电流为零。

要分析这种情况,请将模型切换为高保真逆变器仿真模式。改变工厂变种,使用详细的MOSFET基于三相逆变器复制BOOSTXL-DRV8305EVM。

set_param ('soc_pmsm_singlecpu_foc/逆变器和电机/平均或开关'...“LabelModeActivechoice”“SwitchingInverter”);

改变输出模式参数的脉宽调制接口切换并将6个pwm接入Mux模块。

set_param (“soc_pmsm_singlecpu_foc / PWM通道/ PWM接口”“OutSigMode”“切换”);set_param (“soc_pmsm_singlecpu_foc / PWM频道/ PWM Interface1”“OutSigMode”“切换”);set_param (“soc_pmsm_singlecpu_foc / PWM频道/ PWM Interface2”“OutSigMode”“切换”);

删除PWM接口模块和Mux之间的现有连接。

h = get_param (“soc_pmsm_singlecpu_foc / PWM频道/ Mux”“LineHandles”);delete_line (h.Inport);

最后一步,将6个PWM输出连接到Mux。

set_param (“soc_pmsm_singlecpu_foc / PWM频道/ Mux”“输入”“6”);
add_line (“soc_pmsm_singlecpu_foc / PWM通道”...“PWM接口/ 1”“PWM接口/ 2”“PWM Interface1/1”...“PWM Interface1/2”“PWM Interface2/1”“PWM Interface2/2”},...“Mux / 1”“Mux / 2”“Mux / 3”“Mux / 4”“Mux / 5”“Mux / 6”},“高速公路”“智能”);

打开PWM接口模块并设置事件触发模式PWM周期结束.运行模拟并查看结果仿真数据检查.在图中,A相和B相电流近似为零电流。这导致了反馈的损失和控制回路中没有驱动器。选择启用任务模拟在“任务管理器”块中模拟和可视化仿真数据检查器中的任务。

要修复此问题,请更改事件触发模式PWM周期的中点,相当于PWM内部计数器处于最大值。运行模拟并查看结果仿真数据检查

将模型部署到TI Delfino F28379D LaunchPad上SoC建设者工具。在SoC Builder工具中,打开外围配置工具,设置PWM事件条件计数器等于周期.在模拟和代码生成中使用相同的设置以确保预期的行为。此图显示了用于仿真的PWM接口模块设置和用于部署的外设配置工具设置。

这张图显示了仿真和硬件的数据与正确的ADC-PWM同步和控制器跟踪参考值的预期。

另请参阅

版权所有The MathWorks, Inc.