DC Brushed Motor Control
Six-Step Control
Field Oriented Control for Synchronous Machines
Most FSAE grade motor controllers use field oriented control. This is due to the efficiency and dynamic performance of the controller and motor. Field oriented control relies on controlling the DQ-axis currents through applying a specific DQ-axis voltage to the motor. For a good explaination of field oriented control see the video below (though it focuses on sensorless field oriented control).
<a href="https://www.youtube.com/watch?v=cdiZUszYLiA&t=11s" data-mce-href="https://www.youtube.com/watch?v=cdiZUszYLiA&t=11s" title="[1]" data-mw-type="external_link" class="link external mw-external-link mceNonEditable" data-mw-wikitext="%5Bhttps://www.youtube.com/watch?v=cdiZUszYLiA&t=11s%5D" contenteditable="false"><mwspan>[1]
</mwspan></a>
Transformations
Clarke Transform
The Clarke transform is used to convert the measurements of the phase currents or voltages to a rectangular 2d space vector, which represents both a complex phasor representing the AC current in the phases, and a vector with the same direction<mwspan>¶</mwspan>of the magnetic field that the current will create. The real axis/the axis aligned with the phase A vector is called <span id="<@@@TAG155056@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="155056" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Calpha%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }">
</mwspan>, while the imaginary axis/perpendicular axis is labeled <span id="<@@@TAG125345@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="125345" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Cbeta%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>β<!-- β --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \beta }</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7ed48a5e36207156fb792fa79d29925d2f7901e8" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -0.671ex; width:1.332ex; height:2.509ex;" alt="{\displaystyle \beta }">
</mwspan>. k is a scaling factor, where
<span id="<@@@TAG104565@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="104565" data-mw-name="math" data-mw-wikitext="%3Cmath%3Ek%20=%20%5Cfrac%7B2%7D%7B3%7D%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>k</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>2</mn> <mn>3</mn> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k={\frac {2}{3}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a32f140d5d8c9832545636b79bf45e81478334ca" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -1.838ex; width:6.308ex; height:5.176ex;" alt="{\displaystyle k={\frac {2}{3}}}">
</mwspan> results in a vector with the same magnitude as the original 3-phase signals, and <span id="<@@@TAG109486@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="109486" data-mw-name="math" data-mw-wikitext="%3Cmath%3Ek%20=%20%5Csqrt%7B%5Cfrac%7B2%7D%7B3%7D%7D%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>k</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <msqrt> <mfrac> <mn>2</mn> <mn>3</mn> </mfrac> </msqrt> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k={\sqrt {\frac {2}{3}}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ee0412cac912c88cf59bc4156599e46640e80d09" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -2.338ex; width:8.632ex; height:6.176ex;" alt="{\displaystyle k={\sqrt {\frac {2}{3}}}}">
</mwspan> results in a power-invariant transform.
<span id="<@@@TAG191952@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="191952" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0A%5Cbegin%7Bbmatrix%7D%0Ax_%5Calpha%20%5C%5C%0Ax_%5Cbeta%0A%5Cend%7Bbmatrix%7D%0A=%20k%0A%5Cbegin%7Bbmatrix%7D%0A1%20&%20-%5Cfrac%7B1%7D%7B2%7D%20&%20-%5Cfrac%7B1%7D%7B2%7D%20%5C%5C%0A0%20&%20%5Cfrac%7B%5Csqrt%203%7D%7B2%7D%20&%20-%5Cfrac%7B%5Csqrt%203%7D%7B2%7D%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ax_A%20%5C%5C%0Ax_B%20%5C%5C%0Ax_C%0A%5Cend%7Bbmatrix%7D%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>α<!-- α --></mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>β<!-- β --></mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> </mtd> <mtd> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msqrt> <mn>3</mn> </msqrt> <mn>2</mn> </mfrac> </mrow> </mtd> <mtd> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msqrt> <mn>3</mn> </msqrt> <mn>2</mn> </mfrac> </mrow> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>A</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>B</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>C</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}x_{\alpha }\\x_{\beta }\end{bmatrix}}=k{\begin{bmatrix}1&-{\frac {1}{2}}&-{\frac {1}{2}}\\0&{\frac {\sqrt {3}}{2}}&-{\frac {\sqrt {3}}{2}}\end{bmatrix}}{\begin{bmatrix}x_{A}\\x_{B}\\x_{C}\end{bmatrix}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d4000c82275c067f5f6aafcbfd1792306c269e58" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -4.005ex; width:34.754ex; height:9.176ex;" alt="{\displaystyle {\begin{bmatrix}x_{\alpha }\\x_{\beta }\end{bmatrix}}=k{\begin{bmatrix}1&-{\frac {1}{2}}&-{\frac {1}{2}}\\0&{\frac {\sqrt {3}}{2}}&-{\frac {\sqrt {3}}{2}}\end{bmatrix}}{\begin{bmatrix}x_{A}\\x_{B}\\x_{C}\end{bmatrix}}}">
</mwspan>
Park Transform
The Park transform is used to transform quantities from being referenced to the stator to being referenced to the rotor. The <span id="<@@@TAG142237@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="142237" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Calpha%5Cbeta%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>α<!-- α --></mi> <mi>β<!-- β --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha \beta }</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2efb0e5523f52275f3193b0dfd9a92ad5b76830c" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -0.671ex; width:2.82ex; height:2.509ex;" alt="{\displaystyle \alpha \beta }">
</mwspan>-frame is "stationary", as in the axes remain fixed while the current<mwspan>¶</mwspan>and voltage vector spins around with the rotor. in the DQ-frame, because it is referenced so the D axis always is aligned with a north pole on the rotor, constant current results in constant torque regardless of rotation.<mwspan>¶</mwspan>The transform itself is simply a rotation matrix, rotating the <span id="<@@@TAG142237@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="142237" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Calpha%5Cbeta%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>α<!-- α --></mi> <mi>β<!-- β --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha \beta }</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2efb0e5523f52275f3193b0dfd9a92ad5b76830c" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -0.671ex; width:2.82ex; height:2.509ex;" alt="{\displaystyle \alpha \beta }">
</mwspan>-frame by the electrical angle of the rotor.
<span id="<@@@TAG167346@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="167346" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0A%5Cbegin%7Bbmatrix%7D%0Ax_d%5C%5C%0Ax_q%0A%5Cend%7Bbmatrix%7D%0A=%0A%5Cbegin%7Bbmatrix%7D%0Acos(%5Ctheta_r)%20&%20sin(%5Ctheta_r)%20%5C%5C%0A-sin(%5Ctheta_r)%20&%20cos(%5Ctheta_r)%0A%5Cend%7Bbmatrix%7D%0A%5Cbegin%7Bbmatrix%7D%0Ax_%5Calpha%20%5C%5C%0Ax_%5Cbeta%0A%5Cend%7Bbmatrix%7D%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>q</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mo stretchy="false">(</mo> <msub> <mi>θ<!-- θ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> <mtd> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mo stretchy="false">(</mo> <msub> <mi>θ<!-- θ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <mo>−<!-- − --></mo> <mi>s</mi> <mi>i</mi> <mi>n</mi> <mo stretchy="false">(</mo> <msub> <mi>θ<!-- θ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> <mtd> <mi>c</mi> <mi>o</mi> <mi>s</mi> <mo stretchy="false">(</mo> <msub> <mi>θ<!-- θ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>α<!-- α --></mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>β<!-- β --></mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}x_{d}\\x_{q}\end{bmatrix}}={\begin{bmatrix}cos(\theta _{r})&sin(\theta _{r})\\-sin(\theta _{r})&cos(\theta _{r})\end{bmatrix}}{\begin{bmatrix}x_{\alpha }\\x_{\beta }\end{bmatrix}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b3936dfef8cb177c2c3c1ae223fe87335c86a1dc" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -2.505ex; width:36.206ex; height:6.176ex;" alt="{\displaystyle {\begin{bmatrix}x_{d}\\x_{q}\end{bmatrix}}={\begin{bmatrix}cos(\theta _{r})&sin(\theta _{r})\\-sin(\theta _{r})&cos(\theta _{r})\end{bmatrix}}{\begin{bmatrix}x_{\alpha }\\x_{\beta }\end{bmatrix}}}">
</mwspan>
Current Regulation
A PI controller is commonly used to regulate the phase currents. This is explained by starting with a simple motor model in the DQ-frame (the motor is represented by a voltage source, resistance, and inductance).
<span id="<@@@TAG149363@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="149363" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0AI_%7Bdq%7D%20=%20%5Cfrac%7BV_%7Bdq%7D%20-%20V_%7Bemf%7D%7D%7BR_s%20+%20sL_%7Bdq%7D%7D%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <msub> <mi>I</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo>−<!-- − --></mo> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mi>m</mi> <mi>f</mi> </mrow> </msub> </mrow> <mrow> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <mo>+</mo> <mi>s</mi> <msub> <mi>L</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle I_{dq}={\frac {V_{dq}-V_{emf}}{R_{s}+sL_{dq}}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1c3a5976ef651c6e22e536a8166ce9194ab517a3" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -2.505ex; width:17.55ex; height:6.176ex;" alt="{\displaystyle I_{dq}={\frac {V_{dq}-V_{emf}}{R_{s}+sL_{dq}}}}">
</mwspan>
We can then write the equation for the system as follows:
<span id="<@@@TAG144167@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="144167" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%20G(s)%20=%20%5Cfrac%7BI_%7Bdq%7D(s)%7D%7BV_%7Bdq%7D(s)%20-%20V_%7BEMF,dq%7D%7D%20=%20%5Cfrac%7B1%7D%7BR_s%20+%20sL_%7Bdq%7D%7D%20=%20%5Cfrac%7B%5Cfrac%7B1%7D%7BL_%7Bdq%7D%7D%7D%7B(s%20+%20%5Cfrac%7BR_s%7D%7BL_%7Bdq%7D%7D)%7D%20%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <mi>G</mi> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <msub> <mi>I</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> </mrow> <mrow> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <mo>−<!-- − --></mo> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>E</mi> <mi>M</mi> <mi>F</mi> <mo>,</mo> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mrow> </mfrac> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mrow> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <mo>+</mo> <mi>s</mi> <msub> <mi>L</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mrow> </mfrac> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mfrac> <mn>1</mn> <msub> <mi>L</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mfrac> <mrow> <mo stretchy="false">(</mo> <mi>s</mi> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <msub> <mi>L</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mfrac> </mrow> <mo stretchy="false">)</mo> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G(s)={\frac {I_{dq}(s)}{V_{dq}(s)-V_{EMF,dq}}}={\frac {1}{R_{s}+sL_{dq}}}={\frac {\frac {1}{L_{dq}}}{(s+{\frac {R_{s}}{L_{dq}}})}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/cbe9d2f69dac0e8e27f742f225ddb717f169b038" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -4.338ex; width:52.649ex; height:9.509ex;" alt="{\displaystyle G(s)={\frac {I_{dq}(s)}{V_{dq}(s)-V_{EMF,dq}}}={\frac {1}{R_{s}+sL_{dq}}}={\frac {\frac {1}{L_{dq}}}{(s+{\frac {R_{s}}{L_{dq}}})}}}">
</mwspan>
The pole of the system can be cancelled out by a an appropriately tuned PI controller. The equation for the entire current controller can then be written as follows:
<span id="<@@@TAG151981@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="151981" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0AG_c(s)%20=%20%5Cfrac%7BV_%7Bdq%7D%20-%20V_%7BEMF,dq%7D%7D%7BI_%7Be,dq%7D(s)%7D%20=%20k_p%20+%20%5Cfrac%7Bk_i%7D%7Bs%7D%20=%20%5Cfrac%7B1%7D%7Bs%7D(k_i%20+%20sk_p)%0A%0A%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <msub> <mi>G</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>c</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo>−<!-- − --></mo> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>E</mi> <mi>M</mi> <mi>F</mi> <mo>,</mo> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mrow> <mrow> <msub> <mi>I</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mo>,</mo> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> </mrow> </mfrac> </mrow> <mo>=</mo> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>p</mi> </mrow> </msub> <mo>+</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mi>s</mi> </mfrac> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>s</mi> </mfrac> </mrow> <mo stretchy="false">(</mo> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>+</mo> <mi>s</mi> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>p</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G_{c}(s)={\frac {V_{dq}-V_{EMF,dq}}{I_{e,dq}(s)}}=k_{p}+{\frac {k_{i}}{s}}={\frac {1}{s}}(k_{i}+sk_{p})}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3b50211a6364f8445185950d57919bd1f11915ea" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -2.671ex; width:49.698ex; height:6.343ex;" alt="{\displaystyle G_{c}(s)={\frac {V_{dq}-V_{EMF,dq}}{I_{e,dq}(s)}}=k_{p}+{\frac {k_{i}}{s}}={\frac {1}{s}}(k_{i}+sk_{p})}">
</mwspan>
More explicitly, the desired output voltage at any given point in time can be written as:
<span id="<@@@TAG107039@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="107039" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0A%0A%0AV_%7Bdq%7D%20=%20(I_%7Bdq,requested%7D%20-%20I_%7Bdq,measured%7D)%20%5Cfrac%7B1%7D%7Bs%7D(k_i%20+%20sk_p))%20+%20V_%7BEMF,dq%7D%0A%0A%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> <mo>=</mo> <mo stretchy="false">(</mo> <msub> <mi>I</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> <mo>,</mo> <mi>r</mi> <mi>e</mi> <mi>q</mi> <mi>u</mi> <mi>e</mi> <mi>s</mi> <mi>t</mi> <mi>e</mi> <mi>d</mi> </mrow> </msub> <mo>−<!-- − --></mo> <msub> <mi>I</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> <mo>,</mo> <mi>m</mi> <mi>e</mi> <mi>a</mi> <mi>s</mi> <mi>u</mi> <mi>r</mi> <mi>e</mi> <mi>d</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>s</mi> </mfrac> </mrow> <mo stretchy="false">(</mo> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>+</mo> <mi>s</mi> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>p</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mo stretchy="false">)</mo> <mo>+</mo> <msub> <mi>V</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>E</mi> <mi>M</mi> <mi>F</mi> <mo>,</mo> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle V_{dq}=(I_{dq,requested}-I_{dq,measured}){\frac {1}{s}}(k_{i}+sk_{p}))+V_{EMF,dq}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/21901ad9dcaaa3b4618afdebaf27a680089a853d" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -1.838ex; width:55.367ex; height:5.176ex;" alt="{\displaystyle V_{dq}=(I_{dq,requested}-I_{dq,measured}){\frac {1}{s}}(k_{i}+sk_{p}))+V_{EMF,dq}}">
</mwspan>
The back EMF is estimated using motor parameters and rotational speed. Also note that the entire system simplifies as follows:
<span id="<@@@TAG103648@@@>" class="mceNonEditable wikimagic mw-tag" title="
" data-mw-type="tag" data-mw-id="103648" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%0A%0A%0AG_%7Bopen%20loop%7D(s)%20=%20G(s)G_c(s)%20=%20%5Cfrac%7B1%7D%7Bs%7D%5Cfrac%7Bk_p%7D%7BL_%7Bdq%7D%7D%0A%0A%0A%3C/math%3E" contenteditable="false"><mwspan>
Failed to parse (syntax error): {\displaystyle <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle scriptlevel="0" displaystyle="true"> <msub> <mi>G</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>o</mi> <mi>p</mi> <mi>e</mi> <mi>n</mi> <mi>l</mi> <mi>o</mi> <mi>o</mi> <mi>p</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>G</mi> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <msub> <mi>G</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>c</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>s</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>s</mi> </mfrac> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msub> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>p</mi> </mrow> </msub> <msub> <mi>L</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> <mi>q</mi> </mrow> </msub> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G_{openloop}(s)=G(s)G_{c}(s)={\frac {1}{s}}{\frac {k_{p}}{L_{dq}}}}</annotation> </semantics> }
<img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0dc5d51749701c323f3d0daa405c72c74cf698d3" class="mwe-math-fallback-image-inline" aria-hidden="true" style="vertical-align: -2.505ex; width:34.107ex; height:6.176ex;" alt="{\displaystyle G_{openloop}(s)=G(s)G_{c}(s)={\frac {1}{s}}{\frac {k_{p}}{L_{dq}}}}">
</mwspan>
Torque Regulation
Surface Mount Permanent Magnet Machines
Interior Permanent Magnet Machines
Position Feedback
Field oriented control relies on having the magnetic angle of the motor for the park transform. This can either be directly measured through an encoder or resolver (sensored control), or estimated/calculated from either the back EMF or motor impedance (sensorless control). One of the main limitations of sensorless control is that the angle is only easily estimated at either high or low speeds (depending on the method). A sensor ensures reliable angle feedback across the entire operating range.
Resolvers & Encoders
Calibration
Space Vector PWM
Field Oriented Control for Asynchronous Machines