本帖最后由 Angus 于 2018-3-26 09:27 编辑  
 
 
 
 
 
一,静止启转 
     BLDC  动起来才有反电势,才能检到过0。BLDC 静止时要先通电First_Delay时间(1~10ms)后再检过0。若第一次通电,电磁场刚好与永磁体方向一致,通电时间再长也不会转,所以要定义一个超时时间——PeriodMax ——超过这个时间检不到过 0 ,就直接换下一相 
      BLDC_Start(PeriodMax,  1000) ;                // 参数1:超时变量,参数2:换相后到检过 0 的最短时间 
    
二,非静止启转 
    启转前 BLDC 若已在转,先测一下换相时间 PeriodNow,在过 0 点立即通电起转,就可以直接顺畅起转。 
 
    pPhase       = &TabPhase[1]  ;                        // 启转相。 
    Wait_Zero(TabPhase[1],  15*1000)                // 等过 0,15 ms 超时 
    T1 = TIMER1->DR ; 
    Wait_Zero(TabPhase[1],  15*1000)              
           // 这个时刻,永磁体刚好在第一相的过0点 
    Period = (TIMER1->DR - T1) & 0xFFFFFF ;       // 相减得到换相周期 Period。 
    if(Period < 3000)   BLDC_Start(Period,  0) ;      // 换相周期小于3ms,已在高速转,直接同步  
    else    BLDC_Start(Period,  1000) ;                  // 启转, 参数1:测到的周期,参数2:退磁时间 
 
 |