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.

[参考译文] DRV8711:DRV8711失速检测问题

Guru**** 1715510 points
Other Parts Discussed in Thread: TM4C1294NCPDT, DRV8711, DRV8889-Q1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1225984/drv8711-drv8711-stall-detection-issue

器件型号:DRV8711
主题中讨论的其他器件:TM4C1294NCPDT、、 DRV8889-Q1

你(们)好。

我将使用 TM4C1294NCPDT 微控制器、并使用 DRV8711来控制步进电机。 我们命令 电机将一个位置移动到另一个位置。在第二个位置有机械止动装置用于停止电机。 所以我决定为失速引脚产生中断、只要电机到达机械止动位置、就需要检测失速、但它没有进入中断功能。

请检查是否缺少任何失速检测初始化

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOC);  

GPIOPinTypeGPIOInput (GPIO_PORTC_BASE、GPIO_PIN_7);  

GPIOPadConfigSet (GPIO_PORTC_BASE、(GPIO_PIN_7)、GPIO_strength_2mA、GPIO_PIN_TYPE_STD_WPU);  
GPIOIntRegister (GPIO_PORTC_BASE、 Motor_GPIOIntHandler );  
GPIOIntTypeSet (GPIO_PORTC_BASE、GPIO_PIN_7、GPIO_Both_EDGE);
GPIOIntEnable (GPIO_PORTC_BASE、GPIO_INT_PIN_7);
IntEnable (INT_GPIOC);

中断功能:

空隙 Motor_GPIOIntHandler (空)

GPIOIntClear (GPIO_PORTC_BASE、GPIO_PIN_7);
uint32_t ui32Stall;
ui32Stall = GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_7);

// IF (GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_7)
if ((((ui32Stall 和 GPIO_PIN_7)>>7)))

STALL_Ctrl++;

if ((STALL_Ctrl>0)&&(STALL_SET_Flag==1)

STALL_Ctrl = 0;
motor.stall = 0;
STALL_SET_Flag = false;

}

}
方案

motor.stall = 1;
}

}

DRV 配置:

扭矩寄存器

地址 = 0x01;

扭矩  = 0xB4;

SAMPLTH = 0x01;

失速寄存器:

地址  = 0x05;

SDTHR   = 0xC8;

SDCNT   = 0x02;

VDIV   = 0x03;

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

    您好!

    一个有一些问题、然后是一些调试建议。

    1) 1) 您使用的是哪种微步进模式?  这在 CTRL 寄存器中。

    2) 2) 您是否配置了 EXSTALL 位= 0?  这会选择内部失速并将根据需要切换 STALLn 引脚。

    如果您已完成所有这些操作、则可能需要按照数据表第8.2.2.5节所述尝试 SDTHR、VDIV 和 SDCNT 值。

    最后、您可以配置 EXSTALL 位= 1并确定相关 BEMF 引脚的范围、从而查看运行和失速条件下得到的电平。  这是一个完整性检查、以在设置内部失速之前查看 BEMF 监测是否完全正常工作。

    此致、

    Ryan

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

    谢谢 Ryan。

    您正在使用何种微步进模式?  这在 CTRL 寄存器中

    我在该控制寄存器中使用0010-1/4 Micro 步进。

    您是否配置了 EXSTALL 位= 0?  

    EXSTALL 位=0x00;

    是的、我尝试了 给定数据表中的所有 SDTHR、VDIV 和 SDCNT 值。

    但是、当电机到达机械止动位置时、不会检测到失速。 停止发生时、也不会生成中断。

    我有疑问、请检查初始化部分、正确吗?

    请给我提供失速检测的解决方案。

    谢谢你

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

    你(们)好。

    请尽快答复。

    提前感谢

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

    Tom、

    "最后、您可以配置 EXSTALL 位= 1并确定相关 BEMF 引脚的范围、从而查看运行和失速条件下得到的电平。  这是一项完整性检查、以在设置内部失速之前查看 BEMF 监测是否完全正常工作。"

    您能尝试一下吗?  我们需要看看电机在运行和失速期间的 BEMF 是什么样子。

    BTW、如果您的电机电流要求不是很高...我们提供 DRV8889-Q1、它具有可能更适合您的电机的失速算法。

    此致、

    Ryan