求助,用STM32做有感无刷电机控制,为何自举电压上不来?
如题.用STM32做有感无刷电机控制,IRS2101驱动Vmos管IRFS4310,在调试时发现,自举电压上不来,高端的Vmos管的GS端电压只有2-3V,导致电机会转,但速度很慢,且抖动.自举二极管用的是RS1M,自举电容从0.1uF-47uF都试了,都无效.IR2101能输出高端的PWM脉冲,频率从5K-20K,都试了,也无效.搞懵了。看了IR2101自举电压功能的原理,是要先导通低端Vmos管使自举电容充电,然后关闭低端Vmos,打开高端的Vmos管,这时自举电容已充满电,能使高端的Vmos管的GS端有10V以上的电压,使之充分导通.看到这里又迷糊了,我现在的做法是用T3定时器检测3个霍尔状态,当有变化时,即触发COM事件,在COM中断中换相,由于换相是6个管子一起动作的,即按霍尔的位置向TIM1_CCER写入相应的数据,如0x3081;0x3801;等6种数据,这样没法做到先导通低端Vmos,关闭后再导通高端的Vmos。看到其他做成功的大侠的程序,也是如此换相的,为啥能充分导通高端的Vmos?请大侠解惑,谢谢! 上图看,论坛好多大侠会帮你解决的 谢谢,上图,请大侠指正. javascript:; 换相的程序如下:void TIM1_TRG_COM_IRQHandler(void)
{
/* Clear TIM1 COM pending bit */
TIM1->SR &= 0<<5;
holl_value = (u8)((GPIOA->IDR&0x000000C0)>>6) | (u8)((GPIOB->IDR&0x00000001)<<2);
switch(holl_value)
{
case 5: /*Channel1 configuration */ // 1号管PWM,4号管导通。
TIM1->CCER = 0x3081; // A+B-
break;
case 4: /*Channel1 configuration */ // 1号管PWM,6号管导通。
TIM1->CCER = 0x3801; // A+C-
break;
case 6: /*Channel1 configuration */ // 3号管PWM,6号管导通。
TIM1->CCER = 0x3810; // B+C-
break;
case 2: /*Channel1 configuration */ // 3号管PWM,2号管导通。
TIM1->CCER = 0x3018; // B+A-
break;
case 3: /*Channel1 configuration */ // 5号管PWM,2号管导通。
TIM1->CCER = 0x3108; // C+A-
break;
case 1: /*Channel1 configuration */ // 5号管PWM,4号管导通。
TIM1->CCER = 0x3180; // C+B-
break;
default:
break;
}
}
自己顶一下,等大侠解惑. 从原理看,没有什么问题,建议关注充电二极管,必须是快速的那种,还有就是为了防止充电电流过大,加一个10欧左右的限流电阻。
页:
[1]