Angus大神:请教下MINI51启动方法,看我理解的对不对。
BLDC启动:有两个参数,第一个FirstPeriod是设定第一次启动时的换相周期,这个值是根据电机,负载和电压等因素人为修改的一个值,用于虚拟的换相周期。
第二个参数DelayMin:延迟过零检测,也就是避开消磁过程,从这点可以理解,实际上过零检测是从换相开始,暂时先不检测过零,而是等待一段时间后
再去扫描过零点TIMER1->CMPR = ZeroTick + DelayMin ; 这句话的意思就是在当前的计数值上再过DelayMin的时间产生TIMER1的中断,进中断后在
do{。。。 }while(TIMER0->DR < ZeroDeadline) ; ZeroDeadline这个时间内不断的去检测过零点,直到出现或者超时,这段时间是一直占用中断的,是这样理解 的吗?今天才看的代码,也是第一次用芯唐芯片,不知道理解对不对? “也就是ZeroDeadline这个时间是一直占用中断的。”
按照上面的过程跑到TIMER1->CMPR = TIMER1->DR + ((PeriodNow*3)>>2) ; 设定好下一次扫描过零点的时刻,重复以上过程。
实际上从静止启动,就是盲启动,先任意给一个相位驱动,按照以上过程看能不能检测到过0,检测不到就继续驱动下一个相位,如此下去直到能检测到“正确”的过0,然后就按照过零和换相顺序换相。按照这个方法会存在反拉的现象,假设静止时是转子N指向1相位,那么启动的时恰好是给定3或5他们的转动方向正好是相反的,不知这个问题是如何避免的?
关于电机驱动,不知道有没有个关于驱动理论或者详细的说明文档,有了这些,用起来会方便很多。
|