Daul Motor By using MCSDK6.X
前言
這次在雙馬達控制,ST使用MCSDK生成基本上是跟單馬達控制相同,但主要差異在於任務排程上有差異,這邊說明雙馬達控制上的流程,並比較雙馬達控制2種差異,在sensing端ST這邊的理論與實際code的操作,另外說明SVPWM的緣故抽載頻率是PWM的2倍
ST SDK6.X支援list
這邊ST支援雙馬達部分目前F4/F3/G4/F7,單馬達部分多C0/H5,需要留意F7和F1不完全支持
另外部分的code是額外非在SDK內可以生成,但在目前新版六步方波基本上可以生成但H7部分還是需要額外索取
雙馬達控制時序
以下是雙馬達使用SDK生成出的時序,主要可以看到ADC擷取採樣基本上都在TIM峰值附近但在update數值會是下一次循環中才更新,另外因MCU為單軌執行序在於TIM1與TIM8會有中斷後處理分開的現象(馬達1和馬達2之間的FOC順序可以根據ADC取樣點顛倒)透過修改 TIM1_CCER 暫存器中的 CC4P 位元來反轉 PWM 4 輸出。因此,當 TIM1 計數器在向下計數期間與 OCR4 暫存器值相符時,A/D 取樣開始。
執行 FOC 演算法後,計算要載入到 OCR4 暫存器中的值
設定下一個 PWM 週期的取樣點,並且 A/D 轉換器配置為對正確的通道進行取樣。
Update Event Tasks
- OPAMP Input Signal Select
- Injected ADC Channel Select
ADC Interrupt Service Routine Tasks
- FOC + PWM CCR Update
- ADC Sampling Point Update
備註:這邊有2個參數可以調整T-rise/T-noise增加穩定性