ZHCUBW1A April 2024 – April 2024
TIDA-010950 提供 BLDC 电机控制和电子膨胀阀的单板设计。此参考设计允许用户在 BLDC 电机控制和步进电机控制之间进行选择。
本节介绍开发和设计 TIDA-010950 所涉及的理论知识和设计注意事项。
此参考设计允许用户在 24VAC 或 24VDC 输入之间进行选择。图 2-2 所示为 24VAC 和 24VDC 输入,以及用于在两种输入之间进行选择的开关。J18 是 24VAC 输入连接器。J19 是 24VDC 输入连接器,S1 是用于选择要使用哪个输入的开关。
在此设计中,当选择 24VAC 输入选项时,将使用全桥整流器对 24VAC 输入进行直流整流。120VAC 至 24VAC 电压变压器具有漏电感和寄生电容。当桥式整流器的四个二极管不导通时,器件会形成一个高频振荡的谐振电路。减少这种振荡的方法之一是使用与二极管并联的电容器,这有助于显著减少振荡。
下面的图 2-3 显示了在负载中采用 100Ω 电阻器的整流级仿真电路和产生的波形。
TIDA-010950 参考设计利用 TPS16410 电子保险丝在发生过压或过流事件时保护 IC。图 2-5 显示了此参考设计中 TPS16410 的实施方式。根据应用的输入电压,TPS16410 可根据实施的不同要求,将输入功率从 2W 一直调节到高达 64W。在此设计中,测试是利用 24VDC 输入完成的,但用户可以按照以下计算,根据需要更改功率调节和保护阈值。
若要对 TPS16410 的输出功率限制阈值进行编程,请使用方程式 1 来计算所需的 RPLIM (R36) 电阻。为了保持输出功率限制 ≤15W,选择 R36 为 95.3kΩ。
要设置输入过压保护设定点,可以在 IN 引脚和 OVP 引脚之间连接电阻器(R31、R32)。R31 和 R32 的值可以使用方程式 2 和方程式 3 计算得出。为将 OVP 上升设定点设置为 41V,选择 R31 = 1MΩ,R32 = 38.3kΩ。当输入电压为 24VDC 时,要将 OVP 设定点设置为 28V,可以将 R32 更改为 59kΩ。
要设置输出过流设定点,IOCP 引脚上需要一个电阻器 (R37)。要计算 R37 的值,请使用方程式 4。选择 R37 以将 IOCP 设置为 1.5A,这可得到最接近的 1% 电阻值 11kΩ。
TPS16410 还针对过载或过流事件提供消隐时间。要配置消隐时间,可在 PDLY 上连接一个电容器,消隐时间可通过方程式 5 计算得出。为将消隐时间设置为 6.5ms,选择 C48 为 12nF。
要给输出端的大电容器充电,可以在 dV/dt 引脚上使用电容器来控制输出压摆率。可以通过方程式 6 来计算浪涌电流的值。为保持浪涌电流低于 75mA,选择 C47 为 150nF。
添加了 TVS 二极管 (D3),以保护 TPS16410 免受电压瞬变的影响。
选择开关频率时需权衡转换效率和整体设计尺寸。较低的开关频率意味着较小的开关损耗,通常会实现更高的系统效率。不过,较高的开关频率允许使用较小的电感器和输出电容器,因此得到的设计更加紧凑。此设计使用的开关频率为 400kHz。
LMR38020 的输出电压通过一个电阻分压器网络从外部调节。建议的输出电压范围可在数据表的建议运行条件中找到。分压器网络由 R29 和 R30 组成,并闭合输出电压与转换器之间的环路。转换器通过保持 FB 引脚上的电压与内部基准电压 VREF 相等来调节输出电压。分压器的电阻是噪声拾取过多和输出负载过大之间的折衷。较小的电阻值会降低噪声灵敏度,但也会降低轻负载效率。R29 的建议值为 100kΩ,此设计遵循建议值。选择 R29 后,使用方程式 7 选择的值。VREF 的标称值为 1V。
电感值和饱和电流是选择电感器的参数。电感值基于理想的纹波电流峰峰值得出,通常选择为最大输出电流的 20% 至 40% 范围。经验表明,电感纹波电流的理想值是最大负载电流的 30%。请注意,当为最大负载远小于器件可用最大值的应用选择纹波电流时,使用最大器件电流。方程式 8 可用于确定电感值。常数 K 是电感器电流纹波的百分比。在此设计中,选择 K = 0.175,得出电感 L = 60µH。对 L2 选择下一个标准值 L = 68µH。
采用铁氧体磁芯材料的电感器具有非常硬的饱和特性,但通常比铁粉磁芯具有更低的磁芯损耗。铁粉磁芯具有软饱和,允许在一定程度上放宽电感器的额定电流。电感器饱和电流不得小于器件的低侧电流限制。为了避免次谐波振荡,电感值不得小于方程式 9 中给出的值:
其中
输出电压可通过输出节点和 FB 引脚间的电阻分压器进行设置。TI 建议采用容差为 1% 或更优的分压电阻器。参考图 2-7,首先确定 R39 为 10kΩ,然后使用方程式 10 计算 R38 = 30.9kΩ。为了提高轻载时的效率,请考虑使用具有更大值的电阻器。如果值太大,转换器更容易受到噪声的影响,并且 FB 输入漏电流产生的电压误差也很明显。
选择开关频率时需权衡转换效率和整体设计尺寸。较高的开关频率允许使用较小的电感器和输出电容器,因此得到的设计更加紧凑。不过,较低的开关频率意味着较小的开关损耗,通常会实现更高的系统效率,因此,此参考设计通过使 RT 引脚保持悬空,选择 500kHz 的开关频率。
较大的 CSS 可以在驱动大容性负载时降低浪涌电流。此设计为 C45 选择了 33nF,这会将软启动时间 tSS 设置为约 5ms。
BST 和 SW 引脚之间必须连接一个 0.1µF 陶瓷电容,用于确保正常运行。TI 建议使用具有 X5R 或更优等级电介质的陶瓷电容器。电容器 C46 的额定电压应不低于 16V。
TPS62932 的 EN 引脚具备一个内部上拉电流源,使用户能够悬空 EN 引脚以启用器件。在此参考设计中,EN 引脚悬空以启用器件。
电感器最关键的参数是电感、饱和电流和 RMS 电流。电感基于所需的峰峰值纹波电流,可通过方程式 11 计算得出。
通常,K 系数表示电感器纹波电流相对于器件最大输出电流的大小,合理的 K 值为 20% 至 60%。此参考设计为 K 选择了值 40%。由于纹波电流随输入电压的增加而增加,因此始终使用最大输入电压来计算最小电感 L。使用方程式 12 计算出输出电感的最小值为 6.44。给定此最小电感值,此设计选择 L3 = 7.8。
对于 TIDA-010950,选择了 SPI 型号。SPI 型号支持串行通信总线,使 MSPM0 能够与 DRV8316C 进行数据发送和接收。因此,MSPM0 可配置器件设置并读取详细的故障信息。SPI 是一种使用 SCLK、SDI、SDO 和 nSCS 引脚的四线接口。
DRV8316C 集成了三个高性能低侧电流检测放大器,以便使用内置电流检测进行电流测量。通常会通过测量低侧电流来实施过流保护、外部扭矩控制或通过外部控制器进行无刷直流换向。这三个放大器可用于检测每个半桥臂中的电流(当相应相位的低侧 FET 传导电流时)。在 TIDA-010950 中,这些电流检测测量值由 MSPM0 上的集成 ADC 读取。
DRV8316C 器件中的降压稳压器主要用于支持 47µH 和 22µH 电感器的低电感。此参考设计为 L1 选择了 47µH 电感器,从而允许降压稳压器在支持高达 200mA 负载电流的情况下以 5V 输出运行。此参考设计不使用此电源,但可以利用此电源根据需要为 MCU 或其他低压外设供电。
借助简单的 STEP/DIR 接口,可通过外部控制器管理步进电机的方向和步进速率。内部微步进分度器可以执行高精度微步进,而无需外部控制器来管理绕组电流电平。分度器可实现全步进、半步进以及 1/4、1/8、1/16、1/32、1/64、1/128 和 1/256 微步进。高微步进有助于显著降低可闻噪声并实现平稳的运动。除了标准的半步进模式,非循环半步进模式可用于在较高的电机转速下增加扭矩输出。步进电机驱动器需要通过实现多种类型的衰减模式来再循环绕组电流。DRV8428 提供智能调优衰减模式。自动调优是一种衰减机制,能够自动调节以实现出色的电流调节性能,而不受电压、电机转速、变化和老化效应的影响。自动调优纹波控制使用可变关断时间纹波电流控制方案,以更大限度地减少电机绕组电流的失真。自动调优动态衰减使用固定关断时间动态快速衰减百分比方案,以更大限度地减少电机绕组电流的失真,同时实现频率成分最小化并显著减少设计工作量。除了这种轻松顺畅的自动智能调优之外,DRV8428 还提供传统的混合衰减模式。
此参考设计使用设置为 0 的衰减和高阻态,从而实现智能调优纹波控制或智能调优动态衰减。也可以使用下面衰减模式设置 中所示的配置根据偏好进行设置。
DECAY/TOFF | 衰减模式 | 关断时间 |
---|---|---|
0 | 智能调优纹波控制 | - |
14.7kΩ 至 GND | 混合 30% 衰减 | 7µs |
44.2kΩ 至 GND | 16µs | |
100kΩ 至 GND | 32µs | |
249kΩ 至 GND | 智能调优动态衰减 | 7µs |
高阻态 | 16µs | |
DVDD | 32µs |
微步进级别由 M0 和 M1 引脚设置,可以是微步进设置 中列出的任何设置。微步进级别越高,电机运动越平稳、可闻噪声越低,但需要更高的 ƒstep 才能实现相同的电机转速。在此参考设计中,设计人员可以选择组装或移除 R6、R7、R8 和 R12,以便设置微步进设置中所需的步进模式。为了测试此设计,M0 设置为 0,M1 通过 330kΩ 电阻器接地。
M0 | M1 | 步进模式 | |
---|---|---|---|
0 | 0 | 100% 电流的全步进(两相励磁) | |
0 | 330kΩ 至 GND | 71% 电流的全步进(两相励磁) | |
1 | 0 | 非循环 1/2 步进 | |
高阻态 | 0 | 1/2 步进 | |
0 | 1 | 1/4 步进 | |
1 | 1 | 1/8 步进 | |
高阻态 | 1 | 1/16 步进 | |
0 | 高阻态 | 1/32 步进 | |
高阻态 | 330kΩ 至 GND | 1/64 步进 | |
高阻态 | 高阻态 | 1/128 步进 | |
1 | 高阻态 | 1/256 步进 |
下面的DRV8428 外部元件 显示了 DRV8428 电路的建议分立式元件值以及每个引脚的连接。
元件 | 引脚 1 | 引脚 2 | 推荐 |
---|---|---|---|
CVM1 | VM | PGND | 额定电压为 VM 的一个 X7R 0.01µF 陶瓷电容器 |
CVM2 | VM | PGND | 额定电压为 VM 的大容量电容器 |
CDVDD | DVDD | GND | X7R 0.47µF 至 1µF 6.3V 陶瓷电容器 |
RREF1 | VREF | VCC | 用于限制斩波电流的电阻。RREF1 和 RREF2 的并联电阻值应低于 50kΩ。 |
RREF2(可选) | VREF | GND |
TIDA-010950 利用 TMAG5273 对风门/EEV 进行位置检测。TMAG5273 具有集成角度计算引擎 (CORDIC),该引擎为同轴和离轴角度测量拓扑提供完整的 360° 角度位置信息。使用用户选择的两个磁轴执行角度计算。该器件具有磁增益和偏轴校正功能,可减轻系统机械误差源的影响。
此参考设计利用角度输出进行控制环路反馈。本指南的软件部分提供了更多详细信息。
ISO1212 是一款隔离式 24V 至 60V 数字输入接收器,具有 IEC 61131-2 1 类、2 类和 3 类特性。该器件可以在可编程逻辑控制器 (PLC)、电机控制和其他工业应用中支持 9V 至 300V 直流和交流数字输入模块。不同于具有分立式、不精确电流限制电路的传统光耦合器设计,ISO121x 器件提供一个具有精确电流限制的简单低功耗设计,可实现紧凑型和高密度 I/O 模块的设计。这些器件也不需要场侧电源,并可配置为拉电流或灌电流输入。
在此参考设计中,ISO1212 用作 24VDC 开/闭控制器信号的接口。当 SENSE 1 引脚上的输入为高电平时,风门电机将启动,直至达到 90⁰(完全闭合)风门位置。当 SENSE 2 为高电平时,风门电机也会根据 TMAG5273 启动,将风门移动到 0⁰ 位置(完全打开)。
RSENSE 电阻器(R24、R25)限制从现场输入汲取的电流。在每种情况下,可以因需要更高的电流限值或元件可用性,选择(稍微)较低的 RSENSE 阻值。建议 RSENSE 的容差为 1%,但如果可接受更高的电流限制值变化,也可以使用 5% 容差电阻器。RSENSE 电阻器和典型电流限值 (IL) 之间的关系可由方程式 13 表示:
ISO121x 器件 SENSE 引脚上的最大电压为 60V。但是,由于 RTHR 电阻器会额外降低电压,因此模块输入位置支持的最大电压更高,并且可由方程式 14 计算得出
RTHR 电阻器用于设置电压阈值(VIL 和 VIH)以及限制浪涌电流。建议在 3 类系统(所需的最大阈值电压为 11V)中使用值为 1kΩ 的 RTHR。建议在 1 类系统(所需的最大阈值电压为 15V)中使用值为 2.5kΩ 的 RTHR,在 2 类系统中使用值为 330Ω 的 RTHR。有关计算分立式元件值的更多信息,请参阅 ISO1212 数据表。
总线两端通常采用 120Ω 电阻进行端接。如果总线的共模电压需要进行滤波和稳压,则可以采用分裂端接方式。分裂端接采用两个 60Ω 电阻,并且在两电阻中间连接一个接地电容。分裂端接可消除开始和结束消息传输时出现的总线共模电压波动,从而改善网络的电磁辐射性能。
必须注意所用端接电阻的额定功率。通常,最坏情况是端接电阻两端的系统电源接地短路。在这种情况下,流经电阻的电流大多要比收发器的电流限值高很多。
如果需要,设计人员可以选择使用板载 TCAN 接口,而且电路板上提供了该接口需要的额外的外部晶体振荡器,如下所示。MSPM0 SDK 可用于 CAN 的实施示例。
在此参考设计中,风门和 EEV 位置根据从 0V 至 10V 控制接口或 4mA 至 20mA 控制接口接收到的输入信号来调节。输入前端将工业典型信号输入范围转换为 ADC 输入电压范围,并设置输入阻抗以及提供所需的过压和过流保护。对于 0V 至 10V 和 4mA 至 20mA 控制接口,使用单个 TLV9002 运算放大器作为控制信号发送到 M0 ADC 之前的缓冲器。TLV9002
TLV9002 是具有轨到轨输入和输出摆幅功能的低压(1.8V 至 5.5V)运算放大器。此运算放大器为空间受限的应用或者需要低压运行和高容性负载驱动的应用提供了一种具有成本效益的设计。
对于 0V 至 10V 输入,使用一个简单分压器来调节电压范围,以匹配 MSP M0 ADC 的电压范围。利用已知的输入范围和 M0 ADC 的 VREF (2.5V) 以及下面的方程式 15,计算出 R48 和 R49 的电阻值为:
为 R49 选择 49.9k 可得到最接近的 1% 电阻值 149.7k,但选择输入级的增益系数时,需确保 10V 或 20mA 输入信号会使得 ADC 的输入电压略低于 2.5V 的满量程,从而避免因失调电压、增益和其他误差而饱和,因此为 R48 选择 158k 电阻值。对于电压输入级,使用 0.24V/V 的增益,即 2.4V 对应于 10V 输入。对于电流输入级,120Ω 分流电阻器上的 20mA 输入电流会在 ADC 输入端产生 2.4V 电压。
对于电流输入级,120Ω 分流电阻器上的 20mA 输入电流会在 ADC 输入端产生 2.4V 电压。4mA 至 20mA 输入前端具有一个额外的 24V PTC 电阻器(R52 = PRG18BB470MB1RB),用于提供保护。有关输入前端的更多信息,可在使用 MSP430 MCU 降低 PLC 模拟输入模块的成本 中找到。
TIDA-010950 的软件依赖于多种 MSPM0 外设,包括 SPI、I2C、GPIO 和 PWM。对于风门 BLDC 电机控制和 EEV 步进电机控制,使用的固件环路非常相似,仅在电机控制方法上有所不同。
初始化通信通道后,将启用 ADC 输入,其主要负责检测控制电压/电流以及 LMT84 温度传感器的温度。ADC VREF 设置为 2.5V 内部基准电压。
接下来,对于 DRV8316,将与器件建立 SPI 通信,之后会启用电机控制 IC 以进行操作。旋转方向和结束位置基于风门的当前位置(由 TMAG5273 检测),该当前位置与来自 0V 至 10V 或 4mA 至 20mA 输入前端的控制信号相关。固件计算必要更改后,如果需要更改,则设置方向和 PWM 值,使电机启动。
代码实施示例:
while (1) {
/* check 2 digital isolator pins for high */
/* Read iso1 and iso2 states */
iso1Status = HAL_readGPIOPin(iso1);
iso2Status = HAL_readGPIOPin(iso2);
if (iso1Status) {
desiredDamperPosition = 90;
}
else if (iso2Status) {
desiredDamperPosition = 0;
}
else {
/* Read mV value of current control and control inputs */
controlVoltage = (HAL_getmvFromADC(vControl) * 2500) / 2400; // scale to 0 - 2.4V input
desiredDamperPosition = controlVoltage * 0.036; // 0-2500mV = 0-90 degrees
}
do {
/* Read in TMAG angle result and set to current damper
position */
tmagAngleResult();
currentDamperPosition = tmagAngle;
correctPosition = currentDamperPosition * 0.9 <= desiredDamperPosition &&
currentDamperPosition * 1.1 >= desiredDamperPosition;
/* Set duty cycle to 0% when current position reaches the desired
position */
if (correctPosition) {
firmVar.pulsewidth = 0x00;
break;
}
/* Set motor direction */
else if (currentDamperPosition < desiredDamperPosition) {
firmVar.motorDirection = MOTOR_DIR_FORWARD;
}
else {
firmVar.motorDirection = MOTOR_DIR_REVERSE;
}
/* Set PWM duty cycle */
firmVar.pulseWidth = 0x64;
/* Read mV value of current control and control inputs */
controlVoltage = (HAL_getmvFromADC(vControl) * 2500) / 2400; // scale to 0 - 2.4V input
desiredDamperPosition = controlVoltage * 0.036; // 0-2500mV = 0-90 degrees
} while (!correctPosition);
}
对于 EEV 步进电机控制,用户可以选择在控制环路中使用额外元件,从 LMT84 获得温度输出,如下面图 2-15 所示。这用作热反馈环路的实施示例,可用于调制 EEV 以增加或减少流经阀的制冷剂。对于外设设置,ADC 的初始化方式与 DRV8316C 固件的初始化方式相同。该固件不需要 SPI 通信,如果用户选择,可以将其移除。
电机控制接口非常简单,只需要由 MCU 控制的 EN 和 nSLEEP 引脚。这些引脚可在驱动至高电平时启用和唤醒器件,在驱动至低电平时禁用器件或将器件置于睡眠状态。下面两个示例通过简单切换控制环路中的 STEP GPIO 来旋转步进电机。用户可以通过增大或减小延迟定义分配的值来调整固件的脉冲时间。
设置器件并且外设运行后,板载 LMT84 将获取温度数据。如果需要,用户还可以通过电路板上的 BoosterPack 接头实施非板载温度传感器。根据温度读数,仿真蒸发器吸入管上的温度,如果吸入管温度高于目标温度,则阀门向前旋转;如果吸入管温度低于目标温度,则阀门向后旋转。在此示例中,TMAG5273 仅用于旋转和位置验证,在整个控制循环中没有其他作用。
#define ADC12_BIT_RESOLUTION (12)
#define ADC12_REF_VOLTAGE (2.5)
uint16_t gVolt = 0;
uint16_t getVolts() {
uint16_t Voltage = 0;
DL_ADC12_startConversion(VControl_ADC_INST);
gAdcResult = DL_ADC12_getMemResult(VControl_ADC_INST, DL_ADC12_MEM_IDX_0);
Voltage = (gAdcResult * ADC12_REF_VOLTAGE) / (1 << ADC12_BIT_RESOLUTION) * 3;
DL_ADC12_enableConversions(VControl_ADC_INST);
return (Voltage);
}
while (1) {
// Set the DRV8428 control pins to known values before entering loop
gVolt = getVolts();
If (gVolt != Target_TMP) { // now that we have a condition where desired and
// current position dont match, enable the device for
// the position change loop
DL_GPIO_setPins (GPIO_LEDS_PORT,
(GPIO_LEDS_USER_LED_1_PIN); // Using this is a status pin
DL_GPIO_setPins (GPIO_LEDS_PORT,
GPIO_LEDS_DRV8428_EN_PIN); // Logic high to enable outputs
DL_GPIO_setPins (GPIO_LEDS_PORT,
GPIO_LEDS_DRV8428_SLP_PIN); // Logic high to enable device
While (gVolt < Target_TMP) {
DL_GPIO_setPins(
GPIO_LEDS_PORT,
GPIO_LEDS_DRV8428_DIR_PIN; // Set Direction pin for CW or CCW
DL_GPIO_setPins(
GPIO_LEDS_PORT,
GPIO_LEDS_DRV8428_STEP_PIN; // Move motor ahead by one step
DL_GPIO_SetPins(GPIO_LEDS_PORT,
GPIO_LEDS_USER_LED_1_PIN); // Using this as status pin
delay_cycles(DELAY_MOTOR);
DL_GPIO_clearPins(
GPIO_LEDS_PORT,
GPIO_LEDS_DRV8428_STEP_PIN); // Set Direction pin for CW or CCW
DL_GPIO_ClearPins(GPIO_LEDS_PORT,
GPIO_LEDS_USER_LED_1_PIN); // Using this as status pin
delay_cycles(DELAY_MOTOR);
}
如下面图 2-16 所示,在调制不受温度反馈环路控制的情况下,0V 至 10V 和 4mA 至 10mA 控制接口可用于控制步进方向和目标终端位置。此示例与上一示例几乎完全相同,但在本例中,TMAG5273 与控制前端结合使用,以提供相对于所需位置的当前角度位置并相应地旋转步进电机。
在此特定示例中,可结合使用前两个示例在固件中实施控制,而不是利用 DRV8428 的 GPIO 控制引脚来控制方向和旋转。