Difference between revisions of "Motor Control"
Ewildenberg (talk | contribs) (Add Clarke and Park transforms) |
Etrain Troy (talk | contribs) |
||
| Line 2: | Line 2: | ||
=DC Brushed Motor Control= | =DC Brushed Motor Control= | ||
=Six-Step Control= | =Six-Step Control= | ||
| − | + | <div><h1>Field Oriented Control for Synchronous Machines</h1></div>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).<br data-attributes=""><br class="mw_emptyline_first"><br class="mw_emptyline"><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]<div class="mceNonEditableOverlay"></div></mwspan></a><div><h2>Transformations</h2></div><div><h3>Clarke Transform</h3></div>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<span class="single_linebreak" title="single linebreak" contenteditable="false"><mwspan>¶</mwspan></span>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="<math>\alpha</math>" data-mw-type="tag" data-mw-id="155056" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Calpha%3C/math%3E" contenteditable="false"><mwspan><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> | |
| − | Most | + | <semantics> |
| − | == | + | <mrow class="MJX-TeXAtom-ORD"> |
| − | === | + | <mstyle scriptlevel="0" displaystyle="true"> |
| − | 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 | + | <mi>α<!-- α --></mi> |
| − | of the magnetic field that the current will create. The real axis/the axis aligned with the phase A vector is called <math>\alpha</math>, while the imaginary axis/perpendicular axis is labeled <math>\beta</math>. k is a scaling factor, where | + | </mstyle> |
| − | <math>k = \frac{2}{3}</ | + | </mrow> |
| − | + | <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> | |
| − | <math> | + | </semantics> |
| + | </math></span><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 }"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span>, while the imaginary axis/perpendicular axis is labeled <span id="<@@@TAG125345@@@>" class="mceNonEditable wikimagic mw-tag" title="<math>\beta</math>" data-mw-type="tag" data-mw-id="125345" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Cbeta%3C/math%3E" contenteditable="false"><mwspan><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \beta }"> | ||
| + | <semantics> | ||
| + | <mrow class="MJX-TeXAtom-ORD"> | ||
| + | <mstyle scriptlevel="0" displaystyle="true"> | ||
| + | <mi>β<!-- β --></mi> | ||
| + | </mstyle> | ||
| + | </mrow> | ||
| + | <annotation encoding="application/x-tex">{\displaystyle \beta }</annotation> | ||
| + | </semantics> | ||
| + | </math></span><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 }"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span>. k is a scaling factor, where<br class="mw_emptyline"><span id="<@@@TAG104565@@@>" class="mceNonEditable wikimagic mw-tag" title="<math>k = \frac{2}{3}</math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k={\frac {2}{3}}}"> | ||
| + | <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> | ||
| + | </math></span><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}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span> results in a vector with the same magnitude as the original 3-phase signals, and <span id="<@@@TAG109486@@@>" class="mceNonEditable wikimagic mw-tag" title="<math>k = \sqrt{\frac{2}{3}}</math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k={\sqrt {\frac {2}{3}}}}"> | ||
| + | <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> | ||
| + | </math></span><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}}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span> results in a power-invariant transform.<br class="mw_emptyline_first"><span id="<@@@TAG191952@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
\begin{bmatrix} | \begin{bmatrix} | ||
x_\alpha \\ | x_\alpha \\ | ||
| Line 17: | Line 65: | ||
= k | = k | ||
\begin{bmatrix} | \begin{bmatrix} | ||
| − | 1 & -\frac{1}{2} & -\frac{1}{2} \\ | + | 1 & -\frac{1}{2} & -\frac{1}{2} \\ |
| − | 0 & \frac{\sqrt 3}{2} & -\frac{\sqrt 3}{2} | + | 0 & \frac{\sqrt 3}{2} & -\frac{\sqrt 3}{2} |
\end{bmatrix} | \end{bmatrix} | ||
\begin{bmatrix} | \begin{bmatrix} | ||
| Line 25: | Line 73: | ||
x_C | x_C | ||
\end{bmatrix} | \end{bmatrix} | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\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}}}"> |
| − | === | + | <semantics> |
| − | The Park transform is used to transform quantities from being referenced to the stator to being referenced to the rotor. The <math>\alpha\beta</math>-frame is "stationary", as in the axes remain fixed while the current | + | <mrow class="MJX-TeXAtom-ORD"> |
| − | 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. | + | <mstyle scriptlevel="0" displaystyle="true"> |
| − | The transform itself is simply a rotation matrix, rotating the <math>\alpha\beta</math>-frame by the electrical angle of the rotor. | + | <mrow class="MJX-TeXAtom-ORD"> |
| − | + | <mrow> | |
| − | <math> | + | <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> | ||
| + | </math></span><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}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><div><h3>Park Transform</h3></div>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="<math>\alpha\beta</math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha \beta }"> | ||
| + | <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> | ||
| + | </math></span><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 }"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span>-frame is "stationary", as in the axes remain fixed while the current<span class="single_linebreak" title="single linebreak" contenteditable="false"><mwspan>¶</mwspan></span>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.<span class="single_linebreak" title="single linebreak" contenteditable="false"><mwspan>¶</mwspan></span>The transform itself is simply a rotation matrix, rotating the <span id="<@@@TAG142237@@@>" class="mceNonEditable wikimagic mw-tag" title="<math>\alpha\beta</math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha \beta }"> | ||
| + | <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> | ||
| + | </math></span><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 }"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span>-frame by the electrical angle of the rotor.<br class="mw_emptyline_first"><span id="<@@@TAG167346@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
\begin{bmatrix} | \begin{bmatrix} | ||
x_d\\ | x_d\\ | ||
| Line 38: | Line 236: | ||
= | = | ||
\begin{bmatrix} | \begin{bmatrix} | ||
| − | cos(\theta_r) & sin(\theta_r) \\ | + | cos(\theta_r) & sin(\theta_r) \\ |
| − | -sin(\theta_r) & cos(\theta_r) | + | -sin(\theta_r) & cos(\theta_r) |
\end{bmatrix} | \end{bmatrix} | ||
\begin{bmatrix} | \begin{bmatrix} | ||
| Line 45: | Line 243: | ||
x_\beta | x_\beta | ||
\end{bmatrix} | \end{bmatrix} | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\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}}}"> |
| − | == | + | <semantics> |
| − | 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). | + | <mrow class="MJX-TeXAtom-ORD"> |
| − | <math> | + | <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> | ||
| + | </math></span><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}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><div><h2>Current Regulation</h2></div>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). <br class="mw_emptyline"><span id="<@@@TAG149363@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
I_{dq} = \frac{V_{dq} - V_{emf}}{R_s + sL_{dq}} | I_{dq} = \frac{V_{dq} - V_{emf}}{R_s + sL_{dq}} | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle I_{dq}={\frac {V_{dq}-V_{emf}}{R_{s}+sL_{dq}}}}"> |
| − | + | <semantics> | |
| − | + | <mrow class="MJX-TeXAtom-ORD"> | |
| − | We can then write the equation for the system as follows:<br | + | <mstyle scriptlevel="0" displaystyle="true"> |
| − | + | <msub> | |
| − | + | <mi>I</mi> | |
| − | 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: | + | <mrow class="MJX-TeXAtom-ORD"> |
| − | <math> | + | <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> | ||
| + | </math></span><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}}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><br class="mw_emptyline_first"><br class="mw_emptyline">We can then write the equation for the system as follows:<br data-attributes=""><span id="<@@@TAG144167@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> 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}})} </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\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}}})}}}"> | ||
| + | <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> | ||
| + | </math></span><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}}})}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><br class="mw_emptyline_first"><br class="mw_emptyline">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:<br class="mw_emptyline"><span id="<@@@TAG151981@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
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) | 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) | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\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})}"> |
| − | + | <semantics> | |
| − | + | <mrow class="MJX-TeXAtom-ORD"> | |
| − | More explicitly, the desired output voltage at any given point in time can be written as:<br | + | <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> | ||
| + | </math></span><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})}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><br class="mw_emptyline_first"><br class="mw_emptyline">More explicitly, the desired output voltage at any given point in time can be written as:<br data-attributes=""><span id="<@@@TAG107039@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
| Line 70: | Line 657: | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle V_{dq}=(I_{dq,requested}-I_{dq,measured}){\frac {1}{s}}(k_{i}+sk_{p}))+V_{EMF,dq}}"> |
| − | + | <semantics> | |
| − | + | <mrow class="MJX-TeXAtom-ORD"> | |
| − | The back EMF is estimated using motor parameters and rotational speed. Also note that the entire system simplifies as follows:<br | + | <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> | ||
| + | </math></span><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}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><br class="mw_emptyline_first"><br class="mw_emptyline">The back EMF is estimated using motor parameters and rotational speed. Also note that the entire system simplifies as follows:<br data-attributes=""><span id="<@@@TAG103648@@@>" class="mceNonEditable wikimagic mw-tag" title="<math> | ||
| Line 79: | Line 751: | ||
| − | </math> | + | </math>" 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><div class="mw-parser-output"><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle G_{openloop}(s)=G(s)G_{c}(s)={\frac {1}{s}}{\frac {k_{p}}{L_{dq}}}}"> |
| − | + | <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> |
| − | ==Position Feedback<br /> | + | <mi>n</mi> |
| − | 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 operating range. | + | <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> | ||
| + | </math></span><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}}}}"></span> | ||
| + | </p></div><div class="mceNonEditableOverlay"></div></mwspan></span><br class="mw_emptyline_first"><br class="mw_emptyline"><br class="mw_emptyline"><br class="mw_emptyline"><br class="mw_emptyline"><div><h2>Torque Regulation</h2></div><div><h2>Surface Mount Permanent Magnet Machines</h2></div><div><h2>Interior Permanent Magnet Machines</h2></div><div><h2>Position Feedback<br data-attributes=""></h2></div>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.<div><h3>Resolvers & Encoders</h3></div><div><h4>Calibration</h4></div><div><h2>Space Vector PWM</h2></div> | ||
=Field Oriented Control for Asynchronous Machines= | =Field Oriented Control for Asynchronous Machines= | ||
Revision as of 20:00, 20 June 2022
Contents
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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \alpha} " data-mw-type="tag" data-mw-id="155056" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Calpha%3C/math%3E" contenteditable="false"><mwspan>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \beta} " data-mw-type="tag" data-mw-id="125345" data-mw-name="math" data-mw-wikitext="%3Cmath%3E%5Cbeta%3C/math%3E" contenteditable="false"><mwspan>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k = \frac{2}{3}}
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle k = \sqrt{\frac{2}{3}}} " 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\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} }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \alpha\beta} " 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle \alpha\beta} " 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\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} }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle I_{dq} = \frac{V_{dq} - V_{emf}}{R_s + sL_{dq}} }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\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}})} }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\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) }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle V_{dq} = (I_{dq,requested} - I_{dq,measured}) \frac{1}{s}(k_i + sk_p)) + V_{EMF,dq} }
" 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>
<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="Failed to parse (MathML with SVG or PNG fallback (recommended for modern browsers and accessibility tools): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\displaystyle G_{open loop}(s) = G(s)G_c(s) = \frac{1}{s}\frac{k_p}{L_{dq}} }
" 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>
<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.