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.

[参考译文] DRV8301:当占空比为高电平时、启动失败

Guru**** 2455870 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1323373/drv8301-startup-fails-when-the-duty-cycle-is-high

器件型号:DRV8301

大家好、

BLDC 驱动程序是基于 TI 正式发布的 BLDC 传感流程的2级编写的。  

_IQ iqVaIn;
_iq iqVbIn;
_IQ IDCfdbk;

D_PWM=_IQ (1);
d_com=_iq (0.333333333333333);//120度换向
//---------------------------------------------------------------
// ADC 转换和偏移调节
//---------------------------------------------------------------
IqVaIn =_IQ15toIQ (((AdcResult.ADCRESULT4<<3)-BemfA_OFFSET);
IqVbIn =_IQ15toIQ ((AdcResult.ADCRESULT5<<3)-BemfA_OFFSET);
IDCfdbk=(_IQ15toIQ (AdcResult.ADCRESULT7<<3)-IDC_OFFSET)<<1;

D_PWM=_IQ (0.6);

连接霍尔模块的输入并调用霍尔传感器读取宏。
//---------------------------------------------------------------
HALL3_READ_MACRO (HALL1)

如果(HALL1.Revolutions>=30)
ClosedFlag=true;


if (HALL1.CmtnTrigHall=0x7FFF)/*仅在霍尔模块检测到换向使能信号时才执行以下代码,这意味着在每个换向周期中执行一次计算,即在新换向周期开始时。*/
{
Speed2.timestamp =虚拟定时器;/* speed2*/的输入
SPEED_PR_Macro1 (speed2)

if (HALL1.Revolutions<=5){/*因为 过滤器是五阶的,所以它需要五个先前的周期值*/
speed3.EventPeriod=speed2.EventPeriod_n_1;
speed3.SUflag=true;
其他(else)
speed3.currenttheta=rg1.Angle;
speed3.HallGpio=HALL1.HallGpioAccepted;
speed3.EventPeriod=speed2.EventPeriod_n;
speed3.SUflag=false;

SE_Macro1 (speed3)/*计算速度*/


rg1.Freq = speed3.nextspeed;/*将速度值分配给 rg1.Freq*/
RG_MACRO (rg1)/*计算角度*/
fa1.Angle= rg1.out;/*电机 A 0 */
fa1.phiv=_iq (-0);/*提前点火角为零*//*马达 D 48V ~0.9/0.7Nm -0.508 */
FA_MACRO (FA1)/*添加带实际角度的 phiv *//*电机 C 48V ~0.7Nm -0.05 */
Theta=(fa1.out);

Theta_ref1=_IQmpy (D_com、_IQ (0.5));
Theta_ref2= D_com-_iq (0.3333333333333);

if (ClosedFlag == false)
{
pwmcntl1.Duty1 =_IQmpy (_IQ ((HALL1.HallGpioAccepted==2)||(HALL1.HallGpioAccepted=3)、d_pwm);
pwmcntl1.Duty2 =_IQ (1)-(_IQ ((HALL1.HallGpioAccepted=5)||(HALL1.HallGpioAccepted=4));
pwmcntl1.Duty3 =_IQmpy (((HALL1.HallGpioAccepted==1)||(HALL1.HallGpioAccepted=5)、d_pwm);
pwmcntl1.Duty4 =_IQ (1)-(_IQ ((HALL1.HallGpioAccepted=6)||(HALL1.HallGpioAccepted=2));
pwmcntl1.Duty5 =_IQmpy (((HALL1.HallGpioAccepted==4)||(HALL1.HallGpioAccepted=6)、d_pwm);
pwmcntl1.Duty6 =_IQ (1)-(_IQ ((HALL1.HallGpioAccepted=3)||(HALL1.HallGpioAccepted=1));

否则{
pwmcntl1.Duty1 =_IQ ((theta>=_IQ (0.25)-theta_ref1)&&(theta <_IQ(0.25)))+_IQmpy( d_pwm,_IQ(((theta>=0)&&(θ <_IQ(0.25)-theta_ref1))) || ((theta>=_IQ (0.91666666666666667)-theta_ref2)&(theta<_IQ (1)));

pwmcntl1.Duty2 =_IQ (1)-_IQ ((theta>=_IQ (0.75)-theta_ref1)&&(theta <_IQ(0.75)))+_IQmpy( d_pwm,_IQ(((theta>=_IQ (0.416666666666667)-theta_ref2)&((theta<_IQ (0.75)-theta_ref1)));

pwmcntl1.Duty3 =_IQ ((theta>=_IQ (0.5833333333333)-theta_ref1)&&(theta <_IQ(0.583333333333333)))+_IQmpy( d_pwm,_IQ(((theta>=_IQ (0.25)-theta_ref2)&&((theta<_IQ (0.5833333333333)-theta_ref1)));

pwmcntl1.Duty4 =_IQ (1)-_IQ ((theta>=_IQ (0))&&(theta <_IQ (0.08333333333333333))+_IQ (((theta>=_IQ (0.0833333333333)+_IQ (1)-theta_reeta)&&(theta) <_IQ(1.0))))+_IQmpy( d_pwm,_IQ(((theta>=_IQ (0.75)-theta_ref2)&&(theta<_IQ (0.0833333333333)+_IQ (1)-theta_ref1)));


pwmcntl1.Duty5 =_IQ ((theta>=_IQ (0.916666666666667)-theta_ref1)&&(theta <_IQ(0.916666666666667)))+_IQmpy( d_pwm,_IQ(((theta>=_IQ (0.58333333333333333)-theta_ref2)&((theta<_IQ (0.916666666666667)-theta_ref1))));

pwmcntl1.Duty6 =_IQ (1)-_IQ ((theta>=_IQ (0.41666666666666667)-theta_ref1)&&(theta <_IQ(0.416666666666667)))+_IQmpy( d_pwm,_IQ(((theta>=_IQ (0.083333333333333)-theta_ref2)&&((theta <_IQ(0.416666666666667)-theta_ref1))) || ((theta>=_IQ (0.083333333333333)-theta_ref2+_iq (1)和(theta<_IQ (1)));

PWM_CNTL_MACRO (pwmcntl1)/*生成 PWM 波形*/

客户程序独立控制6个 MOSFET。 ePWM 宏中的设置如下:

#define PWM_CNTL_AQCTLA_INIT_STATE (CAU_CLEAR + CAD_SET)
#define PWM_CNTL_AQCTLB_INIT_STATE (CBU_SET + CBD_CLEAR)

epwmA 和 epwmB 的动作限制子模块的动作模式相反、这就是上面代码中较低引脚的占空比在前面额外增加了"1-"的原因。  

当占空比 d_pwm 小于0.75时、客户代码可正常运行、当 d_pwm 大于0.75时、点击 run 后、程序将直接报告错误、点亮红灯并显示过流。  

他在示波器上观察了 PWM1A 和 PWM1B 的波形、发现开始时将是一个占空比约为0.5的互补波形。 之后、PWM1A 将保持1、PWM1B 将保持0。  客户怀疑这可能触发了短路保护。

我想问一下、为什么高占空比会导致短路和错误消息、但低占空比没有问题?

此致、

安妮

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Annie:

    感谢您发送编修。 请让我看看这周的情况、并进行适当的跟进。

    此致、

    -约书亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Joshua、

    我是否知道有任何更新?

    此致、Annie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Annie:

    今天是美国的一个节日,但 Joshua 应该能够在本周的某个时候跟进最新消息。

    此致、

    安东尼·洛迪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Annie:  

    感谢您的耐心。 我明天就会提供更新。  

    此致、

    -约书亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Joshua、

    您能说明一下您对此问题的建议吗?

    此致、

    安妮

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Annie:  

    达到75%的占空比阈值时、观察到的最大电流是多少?VDS OCP 电平是多少? 过流保护当前被设定为低于最大电流阈值有可能导致一个低限值。  

    当器件的 OCP 保护设置为只读或禁用时、观察代码的行为是很有用的。  

    您还能提供观察到的互补波形范围吗?

    此致、

    -约书亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Joshua、

    客户的问题已自行解决。  原因是该电机的霍尔安装位置不是很精确。 您可以关闭该主题。

    此致、

    安妮

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Annie:

    感谢您提供更新、我对该问题已得到解决感到高兴。

    我将通过点击"Resolved"来关闭该主题。

    此致、

    -约书亚