主题中讨论的其他器件:TMDXIDDK379D、 C2000WARE
您好!
我们正在设计一个功耗是最关键要求的项目、并提出以下3个问题:
- 理论上、我们是否能够通过在 CLA 中运行一些 FOC 过程来提高换向/系统效率?
- 是否有任何将 CLA 用于 FOC 的示例?
- 如果我们不使用 CLA、我们可以关闭它和其他外设以节省功耗吗?
谢谢、
Jonathan
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我们正在设计一个功耗是最关键要求的项目、并提出以下3个问题:
谢谢、
Jonathan
1.除 FAST 函数之外的所有 FOC 模块、EST_xx ()都可以在 CLA 中执行、但并行使用 CLA 和 CPU 是为了实现更高的控制频率、而不是为了降低功耗。
还不适用于 F28004x 上的 InstaSPIN-FOC、但您可以参阅 MotorControlSDK 下文件夹中 F28004x 的传感 FOC 示例、该示例使用 CLA 和 CPU 进行电机控制。
\ti\c2000\C2000Ware_MotorControl_SDK_ \solutions\tmdxiddk379d\f28004x
3.可以,您可以关闭所有未使用的外设的时钟以节省设备功耗。 但是、与逆变器的功耗相比、它应该是最小的、并且可以忽略不计。 也许、实施较低 Rson 的电源模块应该是更好的解决方案。
如果 PWM 和 ISR 频率不随 CPU 时钟频率变化、则电机控制效率应相同。
在示例实验中、默认 CPU 时钟频率应为100MHz、最大 CPU 时钟也应为100MHz。 我无法理解如何将 CPU 时钟设置为 F280049C 不支持的140MHz。
更改下面的代码以将 CPU 时钟设置为60MHz
网址为 user.h
//! \brief 定义系统时钟频率、MHz
//!
#define USER_SYSTEM_FREQ_MHz ((float32_t)(60.0))
在 hal.c.中的 HAL_setParams()中
SYSCTL_setClock (SYSCTL_OSCSRC_XTAL |
SYSCTL_IMULT (6)|
SYSCTL_FMULT_NONE |
SYSCTL_SYSDIV (2)|
SYSCTL_PLL_ENABLE);
感谢 Yanming 提供的更多信息。 我们没有调整 SYSCTL_IMULT 值、而是调整 USER_SYSTEM_FREQ_MHz。 是否需要同时更改这些值?
即使调整到您的建议值后、 当 USER_SYSTEM_FREQ_MHz 为140且 SYSCTL_IMULT 为10时、我们也会看到最佳结果。 我已随函附上 user.h 和 hal.c。 供参考、我们使用染料测试不同负载条件下的总功耗。
user.h #define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)/2 JFA //! \brief 定义每个电流控制器时钟节拍的 ISR 时钟节拍数 //! #define USER_NUM_ISR_TICKS_PER_CURRENT_TICK (1)//1 JFA //! \brief 定义每个速度控制器时钟节拍的 ISR 时钟节拍数 //! #define USER_NUM_ISR_TICKS_PER_SPEED_TICK (1)//1 JFA //! \brief 定义电流传感器的数量 //! #define USER_NUM_CURRENT_SENSORS (3) //! \brief 定义电压传感器的数量 //! #define USER_NUM_VOLTGE_SENSORS (3) //! \brief 定义系统最大输入频率、MHz //! //#define USER_maximum_SCALE_FREQ_Hz ((float32_t)(1000.0) )#define USER_maximum_SCALE_FREQ_Hz ((float32_t)(210.0))//(频率* 60)/3极对= 4、200rpm //! \brief 定义系统时钟频率、MHz //! #define USER_SYSTEM_FREQ_MHz ((float32_t)(140.0) //! \brief 定义脉宽调制(PWM)频率、kHz //! //#define USER_PWM_FREQ_kHz ((float32_t)(5.0)) //5kHz PWM 频率 //#define USER_PWM_FREQ_kHz ((float32_t)(10.0)) //10kHz PWM 频率 //#define USER_PWM_FREQ_kHz ((float32_t)(12.0)) //12kHz PWM 频率 //#define USER_PWM_FREQ_kHz ((float32_t)(15.0)) //15KHz PWM 频率 #define USER_PWM_FREQ_kHz ((float32_t)(5.0)) //20kHz PWM 频率//50 JFA HAL.C //设置 PLL 控制和时钟分频器 // PLLSYSCLK = 20MHz (XTAL_OSC)* 10 (IMULT)* 1 (FULT)/2 (PLLCLK_BY_2) SYSCTL_setClock (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (10)| SYSCTL_FMULT_NONE | SYSCTL_SYSDIV (2)| SYSCTL_PLL_ENABLE);
Yanming、您好!
为什么在负载下运行电机时、通过将时钟保持在100MHz (SYSCTL_IMULT (10))、同时调整 USER_SYSTEM_FREQ_MHz ((float32_t)(140.0)、可以降低功耗?
我看到 在设置计时器时使用了 USER_SYSTEM_FREQ_MHz。 为了达到这些相同的功耗结果、我们能否调整 USER_SYSTEM_FREQ_MHz 影响的其他变量、同时将其与时钟频率匹配?
谢谢、
Jonathan