最近买了套TI的开发套件,在看InstaSPIN_BLDC算法,其中看到drv.h文件中的函数 InstaSPIN_BLDC_Calc(obj->instaHandle);时非常不理解,一步一步往下追溯就是这个函数了bemfnegint_calc(v);
inline void bemfnegint_calc(H_INSTASPIN_BLDC v) { v->commTrig = NO; if(v->vIntLockout == YES) { if(*(v->vPhase) > 0) { v->vIntLockout = NO; } } else { v->vInt += *(v->vPhase); // Integrate the phase voltage if(v->vInt < 0) // Only integrate negatively { if(v->vInt < -(v->intThreshold)) // Check to see if there is enough volt-seconds to commutate { v->vIntLockout = YES; v->commTrig = YES; v->vInt = 0; } } else { v->vInt = 0; } } }
这其中的vInt,intThreshold,vIntLockout都是干吗的啊,有没有讲解这些代码的参考手册,或者能不能讲下 InstaSPIN_BLDC_Calc(obj->instaHandle);的大致程序流程,十分感谢~
gaoyang9992006:
http://www.ti.com.cn/tool/cn/instaspin-bldc
http://www.ti.com.cn/cn/lit/an/zhca541/zhca541.pdf
算法的讲解我也没有找到,只有这个东西的使用方法。
Zheng Lee:
回复 gaoyang9992006:
看这个还是看不懂的…请问你是怎么学习这个的啊,初学的话~
gaoyang9992006:
回复 Zheng Lee:
BLDC 原理与驱动。应该先学这个吧,如果用,你就直接用人家现成的函数,先试试能用就行,别管人家是怎么做的。
Young Hu:
回复 gaoyang9992006:
传统的sensorless bldc的控制方式都是基于过零点换相,通过比较器去判断过零点。InstaSpin-BLDC是通过电压信号积分查找过零点,优点是抗干扰能力更强
Zheng Lee:
回复 Young Hu:
Hi,Young Hu
我想继续问下,这个反电势积分问题
(1)阈值intThreshold是如何确定的呢,模板里用的是 0.10
(2)关于if(v->vInt < -(v->intThreshold))这句话,判断满足这条件后就立即产生了一个commTrig换相吗,感觉好不严谨
Zheng Lee:
回复 Zheng Lee:
有没有人来解决下上面这两个问题啊 ,或者给个提示也行~