---
# System prepended metadata

title: Motor Control - SVPWM
tags: [Motor Control]

---

<style>
.two-column-layout {
column-count: 2; /* Set column number */
column-gap: 20px;
max-width: 100%;
overflow: hidden;
}
</style>

SVPWM 使用在 FOC 中，是最後輸出的部分，這邊針對 SVPWM 的推導流程進行推算。

---

<div class="two-column-layout">

![image](https://hackmd.io/_uploads/rkcdRUZqJg.png)
    
![image](https://hackmd.io/_uploads/BkVtR8WqJg.png)

![image](https://hackmd.io/_uploads/SJzcAIb5ye.png)
    
![image](https://hackmd.io/_uploads/r13jlwbqyl.png)
    
</div>
    
三相的 $𝑅_𝑠$ 相同，以上圖進行計算，可得到最大電壓在 $𝑉_{𝑎𝑛}=(2𝑉_{𝑑𝑐})/3$，表示每一相的峰值是 $(2𝑉_{𝑑𝑐})/3$。

![image](https://hackmd.io/_uploads/H1v4Jvb9yg.png)

$𝑉_𝑠$ 可以由相鄰兩向量依照比例組合得到， $𝑉_{𝑠, 𝑚𝑎𝑥}=(2𝑉_{𝑑𝑐})/3$
以 PWM 觀念， 取得 $𝑇_𝑟$、 $𝑇_𝑙$
$𝑇_𝑟=𝑇_𝑝×𝑉_𝑟/𝑉_{𝑠, 𝑚𝑎𝑥}$
$𝑇_𝑙=𝑇_𝑝×𝑉_𝑙/𝑉_{𝑠, 𝑚𝑎𝑥}$
$𝑇_𝑝:$ PWM Period
$𝑇_𝑝−𝑇_𝑟−𝑇_𝑙=𝑇_0$，$𝑇_0$ 是 $𝑉_0$ 或 $𝑉_7$ 的時間

當向量在不同區間的向量組合推導如下
![image](https://hackmd.io/_uploads/S1cgZv-q1l.png)
![image](https://hackmd.io/_uploads/ByDGZvbcJl.png)
![image](https://hackmd.io/_uploads/HJ1MWwZcJl.png)
![image](https://hackmd.io/_uploads/SJHQZP-91l.png)
![image](https://hackmd.io/_uploads/H1CQWP-5yg.png)
![image](https://hackmd.io/_uploads/B1VVbDbq1x.png)

---

### Code

上述推導我們可以整理出
$𝑋=\sqrt{3}/𝑉_{𝑑𝑐}\times𝑉_\beta=\sqrt{3}/𝑉_{𝑑𝑐}\times𝑉_{𝑟𝑒𝑓1}$
$𝑌=\sqrt{3}/𝑉_{𝑑𝑐}\times(\sqrt{3}𝑉_\alpha/2+𝑉_\beta/2)=\sqrt{3}/𝑉_{𝑑𝑐}\times\sqrt{3}/2\times𝑉_{𝑟𝑒𝑓2}$
$𝑍=\sqrt{3}/𝑉_{𝑑𝑐}\times(\sqrt{3}𝑉_\alpha/2−𝑉_\beta/2)=\sqrt{3}/𝑉_{𝑑𝑐}\times\sqrt{3}/2\times𝑉_{𝑟𝑒𝑓3}$
$𝑋+𝑍=𝑌$

判斷 Sector
透過$X$觀察$𝑉_{𝑟𝑒𝑓1}=𝑉_\beta$
透過$Y$觀察$𝑉_{𝑟𝑒𝑓2}=𝑉_\alpha+V_\beta/\sqrt{3}$
透過$Z$觀察$𝑉_{𝑟𝑒𝑓3}=𝑉_\alpha−V_\beta/\sqrt{3}$

設定 Sector_check =$0\times 𝑉_{𝑟𝑒𝑓1} 𝑉_{𝑟𝑒𝑓2} 𝑉_{𝑟𝑒𝑓3}$

![image](https://hackmd.io/_uploads/rJZp7w-cke.png)

判斷 Sector_check 可以知道目前在哪個 Sector
$𝑉_{𝑟𝑒𝑓1}=0, V_1 or 𝑉_4$
$𝑉_{𝑟𝑒𝑓2}=0, V_3 or 𝑉_6$
$𝑉_{𝑟𝑒𝑓3}=0, V_2 or 𝑉_5$

![image](https://hackmd.io/_uploads/ByfENwW9ye.png)

三種向量的組合安排，為了達到減少 Switch Loss 的目標，設定每個相序開啟關閉的順序如下

![image](https://hackmd.io/_uploads/BJbrVDb51x.png)

三種向量的組合安排，為了達到減少 Switch Loss 的目標，設定每個相序開啟關閉的順序如下
![image](https://hackmd.io/_uploads/S1oLNPZqyx.png)

![image](https://hackmd.io/_uploads/SkFPEvW9Je.png)
![image](https://hackmd.io/_uploads/rJyuED-ckl.png)
![image](https://hackmd.io/_uploads/rywO4w-qke.png)
![image](https://hackmd.io/_uploads/BJa_4wWqJe.png)

