主题中讨论的其他器件: DRV8161EVM
工具与软件:
如果我在使用 DRV8302电路时遇到一些问题、可以联系我来请求技术帮助。 最初、我遇到了集成降压转换器无法输出5伏电压的问题、因此我通过将 EN_BUCK 引脚连接到 GND 而改用外部电源来禁用该问题。
在第一个试验期间、电机只在没有转动的情况下振动、之后不久、引脚29和30烧毁、显示 nFAULT 和 nOCTW 错误。 在第二个试用中、我避免了将任何元件连接到降压转换器、并将引脚55接地。 不幸的是、系统通电后、卡烧坏、针脚55也损坏。
我寻求您的支持以了解 IC 是否仍正常运行、并了解将所需的信号输入到电路中。 我将六步换向算法与 STM32F105搭配使用来生成信号。 此问题是否与硬件或软件有关? 我已检查所有内部电源引脚、它们的值处于可接受的范围内。
您可以从此处访问项目文件:
https://drive.google.com/drive/folders/1kg5lvlmvnN4wENb28xE1LVQ3SBfBA0m2?usp=sharing
以下是我的实验中使用的一些控制代码:
/****************************** STATE 1 *********************************/ if (HALL_A==1 && HALL_B==0 && HALL_C==1 ) { //B->A set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, Duty);//BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 1 );//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0 );//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0 );//CL } /****************************** STATE 2 *********************************/ else if (HALL_A==1 && HALL_B==0 && HALL_C==0 ) { //C->A set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, Duty); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 1);//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0);//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL } /****************************** STATE 3 *********************************/ else if (HALL_A==1 && HALL_B==1 && HALL_C==0 ) { //C->B set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, Duty); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin,0 );//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 1);//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL } /****************************** STATE 4 *********************************/ else if (HALL_A==0 && HALL_B==1 && HALL_C==0 ) { //A->B set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, Duty); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 0);//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 1);//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 0);//CL } /****************************** STATE 5 *********************************/ else if (HALL_A==0 && HALL_B==1 && HALL_C==1 ) { //A->C set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, Duty); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, 0.0); //BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin, 0);//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin, 0);//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin, 1);//CL } /****************************** STATE 6 *********************************/ else if (HALL_A==0 && HALL_B==0 && HALL_C==1 ) { //B->C set_PWM_duty_cycle(&htim1, TIM_CHANNEL_1, 0.0); //AH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_2, Duty); //BH set_PWM_duty_cycle(&htim1, TIM_CHANNEL_3, 0.0); //CH HAL_GPIO_WritePin(INL_A_GPIO_Port, INL_A_Pin,0 );//AL HAL_GPIO_WritePin(INL_B_GPIO_Port, INL_B_Pin,0 );//BL HAL_GPIO_WritePin(INL_C_GPIO_Port, INL_C_Pin,1 );//CL } /***********************************************************************/
我希望你能帮助我尽快解决这些问题。 感谢您的关注和帮助。
此致、