**A Wide-Adjustable Sensorless IPMSM Speed Drive Based on Current Deviation Detection under Space-Vector Modulation**

## **Muhammad Syahril Mubarok, Tian-Hua Liu \*, Chung-Yuan Tsai and Zuo-Ying Wei**

Department of Electrical Engineering, National Taiwan University of Science and Technology, Taipei 106, Taiwan; syahril.elmubarok@gmail.com (M.S.M.); zhoan831020@gmail.com (C.-Y.T.); a75334798@gmail.com (Z.-Y.W.) **\*** Correspondence: Liu@mail.ntust.edu.tw

Received: 1 August 2020; Accepted: 26 August 2020; Published: 27 August 2020

**Abstract:** This paper investigates the implementation of a wide-adjustable sensorless interior permanent magnet synchronous motor drive based on current deviation detection under space-vector modulation. A hybrid method that includes a zero voltage vector current deviation and an active voltage vector current deviation under space-vector pulse-width modulation is proposed to determine the rotor position. In addition, the linear transition algorithm between the two current deviation methods is investigated to obtain smooth speed responses at various operational ranges, including at a standstill and at different operating speeds, from 0 to 3000 rpm. A predictive speed-loop controller is proposed to improve the transient, load disturbance, and tracking responses for the sensorless interior permanent magnet synchronous motor (IPMSM) drive system. The computations of the position estimator and control algorithms are implemented by using a digital signal processor (DSP), TMS-320F-2808. Several experimental results are provided to validate the theoretical analysis.

**Keywords:** current deviation; SVPWM; IPMSM; wide-adjustable speed; sensorless drive

## **1. Introduction**

Interior permanent magnet synchronous motors (IPMSMs) have better performance than any other motors because of their robustness, high efficiency, and high ratio of torque to ampere characteristics [1]. They have been used in industry and household appliances, including machine tools, rolling mills, high-speed trains, electric vehicles, and elevators [2,3]. A sensorless IPMSM drive system can save space, reduce costs, and prevent the noise interference of high-frequency pulse-width modulation (PWM) switching. The major sensorless technologies for an IPMSM include three methods. The first method uses the extended back-electromotive force (back-EMF) estimation to obtain the estimated rotor position [4–9]. The extended back-EMF estimation method, however, cannot effectively determine the rotor position at low-speed. The second method uses a high-frequency injection voltage to produce its related high-frequency currents [10–15]. The high-frequency injection method, however, requires some extra hardware or software to implement a high-frequency generator and also produces audible noise and electromagnetic interference [10–15]. To overcome these issues, the third method uses a stator current deviation to estimate the rotor position. By detecting the current deviation of the stator current, the position estimator has been successfully applied. For example, Bui et al. studied a modified sensorless scheme by using a PWM excitation signal [16]. Wei et al. presented a dual current deviation estimating method to obtain better accuracy of the position estimator [17]. Raute et al. investigated a sensorless technique with the analysis of the inverter nonlinearity effect [18]. Hosogay et al. implemented a position sensorless technique for low-speed ranges based on the d-axis and q-axis current derivative method [19]. These studies have not required any high-frequency

injecting signals or a back-EMF estimation [16–19]. These methods [16–19], however, have not been applied for all ranges of different speeds.

To solve this problem, a current deviation of the stator current using the active voltage vector (AVV) is developed in [20–23]. These papers, however, have only focused on middle- to high-speed ranges. In this paper, two novel ideas are proposed as follows:


## **2. Mathematical Model of an IPMSM**

## *2.1. The d-q Axis Synchronous Frame Model*

According to the rotor flux-linkage coordinate system, the mathematical model of the IPMSM in the d-q axis synchronous frame is expressed as follows:

$$
\begin{bmatrix} \upsilon\_d \\ \upsilon\_q \end{bmatrix} = \begin{bmatrix} R\_s + \frac{d}{dt} L\_d & -\omega\_\ell L\_q \\ \omega\_\ell L\_d & R\_s + \frac{d}{dt} L\_q \end{bmatrix} \begin{bmatrix} i\_d \\ i\_q \end{bmatrix} + \begin{bmatrix} 0 \\ \omega\_\ell \lambda\_m \end{bmatrix} \tag{1}
$$

where *vd* and *vq* are the d-q axis voltages, *Rs* is the stator resistance, *id* and *iq* are the d-q axis currents, *Ld* and *Lq* are the d-q axis inductances, ω*<sup>e</sup>* is the electrical rotor speed, and λ*<sup>m</sup>* is the flux linkage generated by the permanent magnet material, which is placed in the rotor. The addition of the reluctance torque and electromagnetic torque can be obtained as

$$T\_e = \frac{3}{2} \frac{P}{2} \left[ (L\_d - L\_q)\dot{\imath}\_d + \lambda\_m \right] \dot{\imath}\_q \tag{2}$$

The dynamic mechanical equations of the rotor speed and rotor position are expressed as

$$\frac{d}{dt}\omega\_m = \frac{1}{f\_m}(T\_e - T\_L - B\_m\omega\_m) \tag{3}$$

and

$$\frac{d}{dt}\theta\_m = \omega\_m\tag{4}$$

The electrical rotor position and speed are independently expressed as follows:

$$
\theta\_{\varepsilon} = \frac{P}{2} \theta\_m \tag{5}
$$

and

$$
\omega\_{\varepsilon} = \frac{P}{2} \omega\_{m} \tag{6}
$$

where *TL* is the external load, *Jm* is the inertia, *Bm* is the viscous coefficient, ω*<sup>m</sup>* is the mechanical angular speed, θ*<sup>m</sup>* is the mechanical position, and θ*<sup>e</sup>* is the electrical position.

## *2.2. The a-b-c Axis Synchronous Frame Model*

Considering the three-phase voltage balanced and Y-connected windings of an IPMSM, the a-b-c-axis stator voltage equation can be stated as follows:

$$
\begin{bmatrix} v\_{as} \\ v\_{bs} \\ v\_{cs} \end{bmatrix} = \begin{bmatrix} r\_a & 0 & 0 \\ 0 & r\_b & 0 \\ 0 & 0 & r\_c \end{bmatrix} \begin{bmatrix} i\_{as} \\ i\_{bs} \\ i\_{cs} \end{bmatrix} + \frac{d}{dt} \begin{bmatrix} \lambda\_{as} \\ \lambda\_{bs} \\ \lambda\_{cs} \end{bmatrix} \tag{7}
$$

where *vas*, *vbs*, and *vcs* are the a-, b-, and c-phase voltages, *ra*, *rb*, and *rc* are the a-, b-, and c-phase resistances, and λ*as*, λ*bs*, and λ*cs* are the a-, b-, and c-phase flux linkages. In Equation (7), the neutral point voltage is assumed to be zero when the neutral point is free because the fundamental components of the *vas*, *vbs*, and *vcs* are balanced. The relationship between the magnetic flux linkages of three-phase stator windings and the three-phase self-inductances, stator currents, and rotor position can be stated as follows:

$$
\begin{bmatrix}
\lambda\_{\rm as} \\
\lambda\_{\rm bs} \\
\lambda\_{\rm cs}
\end{bmatrix} = \begin{bmatrix}
L\_{\rm aa} & M\_{\rm ab} & M\_{\rm ac} \\
M\_{\rm ba} & L\_{\rm bb} & M\_{\rm bc} \\
M\_{\rm ca} & M\_{\rm cb} & L\_{\rm cc}
\end{bmatrix} \begin{bmatrix}
i\_{\rm as} \\
i\_{\rm bs} \\
i\_{\rm cs}
\end{bmatrix} + \lambda\_{\rm m} \begin{bmatrix}
\cos\theta\_{\varepsilon} \\
\cos(\theta\_{\varepsilon} - \frac{2\pi}{3}) \\
\cos(\theta\_{\varepsilon} + \frac{2\pi}{3})
\end{bmatrix} \tag{8}
$$

where *Laa*, *Lbb*, and *Lcc* are the three-phase self-inductances, and *Mab*, *Mac*, *Mba*, *Mbc*, *Mca*, and *Mcb* are the three-phase mutual inductances. The self-inductances are expressed as

$$L\_{aa} = L\_{\rm ls} + L\_{AA} - L\_{\rm BB} \cos(2\theta\_{\varepsilon}) \tag{9}$$

$$L\_{bb} = L\_{ls} + L\_{AA} - L\_{BB} \cos(2\theta\_{\varepsilon} + \frac{2\pi}{3}) \tag{10}$$

and

$$L\_{\rm cc} = L\_{\rm ls} + L\_{AA} - L\_{BB} \cos(2\theta\_{\varepsilon} - \frac{2\pi}{3}) \tag{11}$$

The mutual inductances are expressed as

$$M\_{ab} = M\_{ba} = = -\frac{1}{2}L\_{AA} - L\_{BB}\cos(2\theta\_\varepsilon - \frac{2\pi}{3})\tag{12}$$

$$M\_{bc} = M\_{cb} = -\frac{1}{2} L\_{AA} - L\_{BB} \cos(2\theta\_\varepsilon) \tag{13}$$

and

$$M\_{ca} = M\_{ac} = -\frac{1}{2}L\_{AA} - L\_{BB}\cos(2\theta\_c + \frac{2\pi}{3})\tag{14}$$

The *LAA* and *LBB* are constant parameters.

## **3. Zero Voltage Vector-Based Current Deviation Rotor Position Estimator**

## *3.1. Basic Principle*

The ZVV dominates the duty cycle of a PWM at a standstill and low-speed operating ranges; as a result, one can substitute *vd* = 0 and *vq* = 0 into Equation (1) and obtain

$$
\begin{bmatrix}
\frac{d\dot{l}\_d}{dt} \\
\frac{d\dot{l}\_q}{dt}
\end{bmatrix} = \begin{bmatrix}
\end{bmatrix} \begin{bmatrix}
\dot{i}\_d \\
\dot{i}\_q
\end{bmatrix} - \begin{bmatrix}
0 \\
\frac{\lambda\_m\omega\_\varepsilon}{L\_q}
\end{bmatrix} \tag{15}
$$

From Figure 1, the estimated position error θ *<sup>e</sup>* is first defined as follows:

$$
\overline{\theta}\_{\ell} = \theta\_{\ell} - \hat{\theta}\_{\ell} \tag{16}
$$

where θ *<sup>e</sup>* and <sup>θ</sup>ˆ*<sup>e</sup>* are the estimated rotor position error and estimated rotor position, respectively. Second, the estimated d- and -q axis currents are expressed as follows:

$$
\begin{bmatrix}
\dot{i}\_d\\\dot{i}\_q
\end{bmatrix} = \begin{bmatrix}
\cos\widetilde{\theta}\_\varepsilon & -\sin\widetilde{\theta}\_\varepsilon\\\sin\widetilde{\theta}\_\varepsilon & \cos\widetilde{\theta}\_\varepsilon
\end{bmatrix} \begin{bmatrix}
\dot{i}\_d\\\dot{i}\_q
\end{bmatrix} = T(\widetilde{\theta}\_\varepsilon) \begin{bmatrix}
\dot{i}\_d\\\dot{i}\_q
\end{bmatrix} \tag{17}
$$

where ˆ*id* and ˆ*iq* are the estimated d-axis and q-axis currents, and *T*(θ *e*) is the coordinate transformation matrix. By substituting Equation (17) into Equation (15), the dynamic equation of the ZVV-based estimated q-axis current is

$$\begin{array}{ll} \frac{d\widetilde{l}\_{q}}{dt} \equiv & \frac{1}{L\_{d}L\_{q}} \Big\{ \mathcal{R}\_{\varepsilon} \Big[ \left( L\_{q} - L\_{d} \right) \cos^{2} \left( \widetilde{\mathcal{O}}\_{\varepsilon} \right) - L\_{q} \Big] - \frac{1}{2} \omega\_{\varepsilon} \Big( L\_{q}^{2} - L\_{d}^{2} \right) \sin \Big( 2\widetilde{\mathcal{O}}\_{\varepsilon} \Big) \Big\} \hat{i}\_{q} \\ & + \frac{1}{L\_{d}L\_{q}} \Big\{ \omega\_{\varepsilon} \Big[ \left( L\_{q}^{2} - L\_{d}^{2} \right) \cos^{2} \left( \widetilde{\mathcal{O}}\_{\varepsilon} \right) - L\_{q}^{2} \Big] - \frac{R\_{\varepsilon}}{2} \Big( L\_{q} - L\_{d} \right) \sin \Big( 2\widetilde{\mathcal{O}}\_{\varepsilon} \Big) \Big\} \hat{i}\_{d} \\ & - \frac{\lambda\_{m} \omega\_{\varepsilon}}{L\_{q}} \cos \Big( \widetilde{\mathcal{O}}\_{\varepsilon} \Big) \end{array} \tag{18}$$

**Figure 1.** The coordinate transformation relationship.

The values of the *Ld* and *Lq* are only a few *mH*s and are lower than 1 Henry. In consequence, *Ld* is much greater than *L*<sup>2</sup> *d* , and *Lq* is much greater than *L*<sup>2</sup> *<sup>q</sup>*. By omitting the *L*<sup>2</sup> *d* , *L*<sup>2</sup> *<sup>q</sup>*, and related items that are multiplied by the ω*e*, the dynamic equation of the ZVV-based estimated q-axis current can be derived as follows:

$$\begin{array}{ll} \frac{d\widetilde{l}\_{q}}{dt} \equiv & \frac{R\_{s}}{L\_{d}L\_{q}} \{-\left[\left(L\_{d} - L\_{q}\right)\cos^{2}\left(\widetilde{\theta}\_{\varepsilon}\right) + L\_{q}\right]\}\_{q} \\ & + \frac{1}{2}\left(L\_{d} - L\_{q}\right)\sin\left(2\widetilde{\theta}\_{\varepsilon}\right)\hat{i}\_{d}\right\} - \frac{\lambda\_{\text{m}\text{d}\varepsilon}}{L\_{q}}\cos\left(\widetilde{\theta}\_{\varepsilon}\right) \end{array} \tag{19}$$

Because the estimated position error θ *<sup>e</sup>* is close by zero at steady-state, it is feasible to assume that sin 2θ *e* -2θ *e*,sin θ *e* θ *e*,cos<sup>2</sup> θ *e* - 1, and cos θ *e* - 1. By using these guestimates into Equation (19), the following equation can be obtained

$$\frac{d\hat{\mathbf{l}}\_q}{dt} \cong -\frac{R\_s \hat{\mathbf{l}}\_q}{L\_q} + \frac{R\_s \left(\mathbf{L}\_d - \mathbf{L}\_q\right) \hat{\mathbf{l}}\_d}{L\_d \mathbf{L}\_q} \overline{\Theta}\_\varepsilon - \frac{\lambda\_m \omega\_\varepsilon}{L\_q} \tag{20}$$

## *3.2. The ZVV Rotor Position Estimating Scheme*

In fact, the estimated speed ωˆ*<sup>e</sup>* is employed to replace the real speed ω*e*. The estimated rotor position θ *<sup>e</sup>* can be assumed to be zero under steady-state conditions. Equation (20), as a result, is rearranged as follows:

$$\frac{d\hat{l}\_q}{dt} + \frac{R\hat{l}\_q + \lambda\_m \hat{\omega}\_\varepsilon}{L\_q} \cong \frac{R\left(L\_d - L\_q\right)\hat{l}\_d^\*}{L\_d L\_q}\widetilde{\theta}\_\varepsilon\tag{21}$$

Then, a new variable, *D*ˆ*iq*, can be defined as follows:

$$D\hat{i}\_q \triangleq \frac{d\hat{i}\_q}{dt} + \frac{R\_s\hat{i}\_q + \lambda\_m\hat{\alpha}\_e}{L\_q} \tag{22}$$

Substituting (22) into Equation (21), one can obtain

$$D\hat{\imath}\_q \cong \mathbb{K}\_q \bar{\theta}\_{\varepsilon} \tag{23}$$

and

$$K\_q \triangleq \frac{R\_s (L\_d - L\_q) i\_d^\*}{L\_d L\_q} \tag{24}$$

From Equation (23), the *D*ˆ*iq* is nearly proportional to the estimated position error θ *e*. Figure 2 illustrates the proposed ZVV-based estimator. First, by using the coordinate transformation, one can transfer the a-, b-, and c-phase current deviations into the estimated d-q axis current deviations. Then, one can derive the current deviation *d*ˆ*iq*/*dt*. By summation of the *d*ˆ*iq*/*dt*, λ*m*ωˆ*e*/*Lq*, and *Rs* ˆ*iq*/*Lq*, one can obtain *D*ˆ*iq*. Next, one can compute the value of θ *<sup>e</sup>* after dividing *<sup>D</sup>*ˆ*iq* by *Kq* and, thus, obtain the estimated position error. After that, one can use a proportional-integral (PI) controller to acquire the estimated rotor speed and obtain the estimated position by using an integral operation.

**Figure 2.** Block diagram of the zero voltage vector (ZVV)-based estimator.

## **4. Active Voltage Vector-Based Current Deviation Rotor Position Estimator**

## *4.1. The AVV Rotor Position Estimation Scheme*

At middle and high speeds, the current deviation of the AVV in the a-b-c-stationary frame is used to estimate the position. From Figure 3, when the a-phase upper leg turns on and the b-phase and c-phase lower legs turn on, one can obtain

$$V\_{dc} = v\_{as} - v\_{bs} \tag{25}$$

By substituting Equation (7) into (25), one can derive

$$V\_{dc} = r\_{\rm s}i\_{\rm as} + \frac{d\lambda\_a}{dt} - r\_{\rm s}i\_{\rm bs} - \frac{d\lambda\_b}{dt} \tag{26}$$

**Figure 3.** The main circuit of the mode A+.

Substituting Equation (8) into (26), one can derive

$$\begin{array}{l}V\_{\rm dc} = r\_{\rm s}i\_{\rm ss} + \frac{d}{dt}(L\_{\rm ad}i\_{\rm as} + L\_{\rm ab}i\_{\rm bs} + L\_{\rm ac}i\_{\rm cs} + \lambda\_{\rm m}\cos\Theta\_{\rm c}) - r\_{\rm s}i\_{\rm bs} \\ - \frac{d}{dt}(L\_{\rm ba}i\_{\rm as} + L\_{\rm bb}i\_{\rm bs} + L\_{\rm bc}i\_{\rm cs} + \lambda\_{\rm m}\cos(\Theta\_{\rm c} - \frac{2\pi}{3})) \end{array} \tag{27}$$

By substituting Equations (9)–(14) into Equation (27) and doing some mathematical processes, one can obtain

$$\begin{array}{lcl} V\_{dc} = & \begin{bmatrix} \left(\frac{1}{2}(3L\_{AA} + 2L\_{\mathrm{s}}) + \sqrt{3}\sin\big(2\theta\_{\varepsilon} - \frac{\pi}{3}\big)L\_{BB}\right)\frac{di\_{\mathrm{s}}}{d\overline{t}} + \left(-\frac{1}{2}(3L\_{AA} + 2L\_{\mathrm{s}}) + \sqrt{3}\sin\big(2\theta\_{\varepsilon} + \pi\big)L\_{BB}\right)\frac{di\_{\mathrm{b}}}{d\overline{t}} \\ + \left(\sqrt{3}\sin\big(2\theta\_{\varepsilon} + \frac{\pi}{3}\big)L\_{BB}\right)\frac{di\_{\mathrm{s}}}{d\overline{t}} \end{bmatrix} + 2\sqrt{3}\omega\_{\varepsilon}L\_{BB}\Big[\sin\big(2\theta\_{\varepsilon} + \frac{\pi}{6}\big)i\_{\mathrm{b}\overline{s}} + \sin\big(2\theta\_{\varepsilon} - \frac{\pi}{2}\big)i\_{\mathrm{b}\overline{s}} + \sin\big(2\theta\_{\varepsilon} + \frac{\pi}{6}\big)i\_{\mathrm{c}}\Big] \\ - \lambda\_{\mathrm{mf}}\omega\_{\varepsilon}\Big[\frac{3}{2}\sin\theta\_{\varepsilon} + \frac{\sqrt{3}}{2}\cos\theta\_{\varepsilon}\Big] + r\_{\mathrm{s}}(i\_{\mathrm{as}} - i\_{\mathrm{bs}}) \end{array} \tag{28}$$

In addition, from Figure 3, when the a-phase upper leg turns on and the b-phase and c-phase lower legs turn on, one can obtain the voltage between the b-phase and c-phase as follows:

$$0 \,\, = \upsilon\_{\rm bs} - \upsilon\_{\rm cs} \,\, \tag{29}$$

By using the similar processes shown in Equations (26)–(29), one can derive

$$\begin{array}{l} 0 = \left[ \left( \sqrt{3} \sin(2\theta\_{\varepsilon} + \pi) L\_{\mathrm{dB}} \right) \frac{d\underline{v}\_{\varepsilon}}{dt} + \left( \frac{1}{2} (3L\_{AA} + 2L\_{\mathrm{B}}) + \sqrt{3} \sin(2\theta\_{\varepsilon} + \frac{\pi}{3}) L\_{\mathrm{dB}} \right) \frac{d\underline{v}\_{\varepsilon}}{dt} + \left( -\frac{1}{2} (3L\_{AA} + 2L\_{\mathrm{B}}) + \sqrt{3} \sin\left(2\theta\_{\varepsilon} - \frac{\pi}{3} \right) L\_{\mathrm{dB}} \right) \frac{d\underline{v}\_{\varepsilon}}{dt} \right] \\ + 2\sqrt{3} \omega\_{\varepsilon} L\_{\mathrm{dB}} \Big[ \sin\left(2\theta\_{\varepsilon} - \frac{\pi}{3} \right) \dot{\underline{u}}\_{\delta\tau} + \sin\left(2\theta\_{\varepsilon} + \frac{\pi}{6} \right) \dot{\underline{u}}\_{\delta\tau} + \sin\left(2\theta\_{\varepsilon} + \frac{\pi}{6} \right) \dot{\underline{u}}\_{\delta\tau} \Big] + \sqrt{3} \lambda\_{t0} \omega\_{\delta\tau} \cos \theta\_{\varepsilon} + r\_{\delta} (\dot{\underline{u}}\_{\delta\mu} - \dot{\underline{u}}\_{\delta\tau}) \end{array} \tag{30}$$

Moreover, from Figure 3, when the a-phase upper leg turns on and the b-phase and c-phase lower legs turn on, one can obtain

$$\dot{\mathbf{i}}\_{\rm as} = - \left( \dot{\mathbf{i}}\_{\rm bs} + \dot{\mathbf{i}}\_{\rm cs} \right) \tag{31}$$

Taking the differential of both sides in Equation (31), one can obtain

$$\frac{di\_{\rm as}}{dt} = -(\frac{di\_{\rm bs}}{dt} + \frac{di\_{\rm cs}}{dt}) \tag{32}$$

From Equations (28), (30), and (32), one can obtain the following equation:

$$\begin{array}{lcl} \frac{\text{dis}}{\text{d}t\\_m\text{nde}\ A+} = & \begin{cases} 4V\_{\text{dc}} \Big( \frac{2}{3}L\_{\text{ls}} + L\_{AA} + L\_{\text{BB}} \cos(2\theta\_{\text{c}}) \Big) + 2\omega\_{\text{c}}L\_{\text{BB}}\\ \Big[ -3i\_{\text{ds}}\sin(2\theta\_{\text{c}}) + \sqrt{3}(i\_{\text{bs}} - i\_{\text{cs}})(3L\_{\text{BB}} + \cos(2\theta\_{\text{c}})) \Big] \\ (3L\_{AA} + 2L\_{\text{ls}}) + K\_{\text{a}} \Big] + \text{R}\_{\text{sd}} \Big/ [(2L\_{\text{ls}} + 3L\_{\text{A}})(2L\_{\text{ls}} + 3L\_{\text{D}})] \end{cases} \end{array} \tag{33}$$

where

$$L\_{\Delta} = L\_{AA} - L\_{BB} \tag{34}$$

and

$$L\_{\Sigma} = L\_{AA} + L\_{BB} \tag{35}$$

When the switching state of the inverter is at a zero voltage state, the motor short circuits. Consequently, the direct-current (DC) voltage *Vdc* is equal to zero. By substituting *Vdc* = 0 into Equation (33), one can obtain

$$\begin{array}{lcl} \frac{d\mathbf{i\_{sc}}}{d\mathbf{l\_{-}}} \text{mode } 0 &=& \left\{ 2\omega\_{\text{el}}L\_{\text{BB}} \Big[ \Big( -\mathbf{\hat{3}\_{\text{IS}}}\sin(2\theta\_{\text{c}}) + \sqrt{\mathbf{3}}(\mathbf{i\_{bs}} - \mathbf{i\_{cS}})(\mathbf{3}L\_{\text{BB}} + \cos(2\theta\_{\text{c}})) \Big) \Big. \\ & \qquad \Big( \mathbf{3}L\_{\text{AA}} + 2L\_{\text{ls}} \Big) + \mathbf{K\_{a}} \Big] / \Big[ \Big( 2L\_{\text{ls}} + 3L\_{\text{A}} \Big) (2L\_{\text{ls}} + 3L\_{\text{L}}) \Big] \end{array} \tag{36}$$

From Equation (36), the current deviation *dias*/*dt*\_mode 0 includes a resistance influencing part, a back-EMF influencing part, and an inductance influencing part. To eject the influences of the back-EMF and resistance parts, the a-phase compensated current deviation *Dias*\_mode A+ is computed as

$$\begin{array}{rcl} \text{Di}\_{\text{ds\\_mode A}+} & = \frac{d\text{i}\_{\text{gs}}}{dt} \text{mode A} + \frac{d\text{i}\_{\text{gs}}}{dt} \text{mode 0} \\ & = \frac{4V\_{\text{dc}}\left[\frac{2}{3}L\_{\text{ls}} + L\_{AA} + L\_{RB}\cos(2\theta\_{\text{c}})\right]}{(2L\_{\text{ls}} + 3L\_{\text{A}})(2L\_{\text{ls}} + 3L\_{\Sigma})} \end{array} \tag{37}$$

From Equation (37), one can observe that the *Dias*\_mode A+ is only related to the inductance and input DC voltage *Vdc*. By using a similar method, one can derive the b-phase compensation current deviation and the c-phase compensation current deviation.

By transferring the a-, b-, and c-axis current deviations into the α− and β− axis current-deviations, one can obtain the current deviation *Di*<sup>α</sup> and *Di*<sup>β</sup> as follows:

$$
\begin{bmatrix} D i\_{\alpha} \\ D i\_{\beta} \end{bmatrix} = \begin{bmatrix} 1 & -\frac{1}{2} & -\frac{1}{2} \\ 0 & \frac{\sqrt{3}}{2} & -\frac{\sqrt{3}}{2} \end{bmatrix} \begin{bmatrix} D i\_{\text{as\\_mode A}+} \\ D i\_{\text{bs\\_mode B}+} \\ D i\_{\text{cs\\_mode C}+} \end{bmatrix} \tag{38}
$$

By substituting the a-b-c-phase compensated current deviation into Equation (38), the *Di*α can be simplified as

$$\mathrm{Di}\_{\alpha} = \frac{6V\_{\mathrm{dc}}L\_{\mathrm{B}}\cos(2\theta\_{\mathrm{c}})}{(2L\_{\mathrm{ls}} + 3L\_{\Delta})(2L\_{\mathrm{ls}} + 3L\_{\Sigma})} \tag{39}$$

and the *Di*<sup>β</sup> can be simplified as

$$\dot{D}i\_{\beta} = \frac{-6V\_{d\varepsilon}L\_{B}\sin(2\theta\_{\varepsilon})}{(2L\_{ls} + 3L\_{\Delta})(2L\_{ls} + 3L\_{\Sigma})} \tag{40}$$

By using the following tan−<sup>1</sup> mathematical process, one can obtain the AVV-based estimated electrical rotor position as follows:

$$\tan^{-1}(\frac{-D i\_{\beta}}{D i\_{\alpha}}) = 2\theta\_{\varepsilon} \tag{41}$$

## *4.2. Space-Vector Extension And Compensation*

The current deviation is used to estimate the position and is discussed in this section. To obtain the current deviation, two different currents are sampled for each switching state, and then the current deviation can be computed. In the real world, the time interval between the two-sampling intervals should be large enough to obtain an accurate current deviation. However, some turn-on or turn-off intervals are reduced as the motor speed increases. In addition, the switching interval is also varied when the voltage vector moves to different positions. To solve this issue, an extension with a compensation method is used [13]. When the digital signal processor (DSP) detects that the time interval of the switching state is too short, an extension time is automatically provided to make the switching time maintain a minimum required switching time, *T*min. In this paper, the minimum required switching time interval *T*min is set as 20 μs.

However, the extension time of the switching state causes DC bias and harmonics. Therefore, a compensation time of the whole switching interval is required. Figure 4a,b show the space-vector pulse width modulation (SVPWM) switching states used in this paper. In each switching interval, which is 100 μs, three switching states are generated. Figure 4a shows the *T*<sup>1</sup> switching state when it is too short. When this occurs, the switching state "100" is extended, and its complementary state "011" is compensated for at the end because the voltage in the whole-time interval *Ts* should be balanced. As a result, the DC bias is reduced to zero, and the ac harmonics are compensated. Figure 4b shows the *T*<sup>2</sup> switching state when it is too short. When this occurs, the switching state "110" is extended. Then, "001" is compensated for at the end of the entire switching interval *Ts*.

**Figure 4.** Space-vector pulse width modulation extension and compensation. (**a**) T1 voltage vector; (**b**) T2 voltage vector.

## **5. Current Deviation Detection Technique**

In this paper, the current deviation is used to estimate the position of IPMSM. As a result, the precise detection of the current deviation at AVV and ZVV is very important. As one can observe in the waveform, shown in Figure 5, the current deviation is obtained for every sampling time, *Ts*. The current spike can be avoided by carefully selecting the sampling instance. The first current sampling instance of each switching state is delayed 10 μs after the power device turns on. The second current sampling instance is 5 μs before the next switching state occurs. After that, the current deviation can be computed by subtracting the second captured current with the first captured current over the time difference.

**Figure 5.** The modulation of inverter and current sampling waveform.

The current deviation can be precisely obtained since the time period of AVV is extended if it is too narrow when the motor is operated at middle- and high-speeds. The current-deviation of the ZVV can be obtained because of the large duty cycle of the ZVV when the motor is operated at a standstill and low-speed ranges.

#### **6. Linear Transition from Standstill and Low-Speed to High-Speed**

A linear transferring method between the ZVV and AVV algorithms is displayed in Figure 6. This linear transition method is easy to implement and can achieve better performance than other advanced transition methods, such as fuzzy logic methods. Even though fuzzy logic methods have better performance and faster responses, they need more complex computations [24]. A lower bound transition speed, which is 60 rpm, is defined as ω*s*1. In addition, a higher bound transition speed, which is 100 rpm, is defined as ω*s*2. A weighting factor β is utilized in the subsequent equations:

$$
\hat{\theta}\_{\varepsilon} = \beta \hat{\theta}\_{zvv} + (1 - \beta) \hat{\theta}\_{avv} \tag{42}
$$

and

$$
\hat{\omega}\_{\varepsilon} = \beta \hat{\omega}\_{\overline{z}\overline{v}\overline{v}} + (1 - \beta) \hat{\omega}\_{\overline{u}\overline{v}\overline{v}} \tag{43}
$$

**Figure 6.** The linear transfer between ZVV current deviation and active voltage vector (AVV) current deviation.

The weighting factor β in (42) and (43) is defined as follows:

$$\beta = \begin{cases} 1 & \text{, when } \hat{\alpha}\_{\varepsilon} \le \omega\_{s1} \\ \frac{\omega\_{s2} - \hat{\omega}\_{\varepsilon}}{\omega\_{s2} - \omega\_{s1}} & \text{, when } \omega\_{s1} < \hat{\alpha}\_{\varepsilon} < \omega\_{s2} \\ 0 & \text{, when } \hat{\alpha}\_{\varepsilon} \ge \omega\_{s2} \end{cases} \tag{44}$$

where θˆ*zvv* and θˆ*avv* are the estimated positions by using the ZVV and the AVV algorithms, respectively. The ωˆ *zvv* and ωˆ *avv* are the estimated speeds after using the ZVV and AVV algorithms. By using this method, the estimated positions and estimated speeds can be accurately obtained.

## **7. Predictive Speed Controller Design**

Predictive controllers have been applied in chemical process industries, robotic controls, and other multivariable systems [25–27]. Recently, predictive controllers have been successfully employed in motor drives and power electronics [28–30]. A predictive speed controller is designed to improve the responses of the drive systems. By omitting the external load *TL* from (3), when the d-axis is zero, it is possible to derive the transfer function *Gp*(*s*) of the IPMSM, which is shown in Figure 7, as follows:

$$\mathcal{G}\_p(\mathbf{s}) = \frac{\omega\_m(\mathbf{s})}{i\_q(\mathbf{s})} = \frac{\mathcal{K}\_t / \mathcal{J}\_t}{\mathbf{s} + (\mathcal{B}\_t / \mathcal{J}\_t)} \tag{45}$$

By inserting a zero-order hold device and taking the z-transformation, one can obtain

$$\mathcal{G}\_p(z) = \frac{\omega\_m(z)}{i\_q(z)} = \frac{\mathcal{K}\_l}{B\_l} \frac{\left(1 - e^{-\frac{B\_l}{f\_l}T\_s}\right)}{\left(z - e^{-\frac{B\_l}{f\_l}T\_s}\right)}\tag{46}$$

**Figure 7.** Block diagram of the proposed speed-loop predictive controller.

From (46), it is straightforward to derive the speed prediction as

$$
\omega\_m(n+1) = a\_s \omega\_m(n) + b\_s i\_q(n) \tag{47}
$$

where

$$a\_{\rm s} = e^{-\frac{B\_{\rm t}}{\bar{l}\_{\rm t}}T\_{\rm s}} \tag{48}$$

and

$$b\_s = \frac{K\_l}{B\_l} (1 - e^{-\frac{B\_t}{T\_l}T\_s}) \tag{49}$$

The predictive speed equation is shown as

$$\begin{aligned} \widehat{\omega}\_{m}(n+1) &= a\_{\rm s} \omega\_{m}(n) + b\_{\rm s} i\_{qp}\*(n) \\ &= a\_{\rm s} \omega\_{m}(n) + b\_{\rm s} i\_{qp}(n-1) + b\_{\rm s} \Delta i\_{q}\*(n) \end{aligned} \tag{50}$$

The performance index can be defined as [28–30]

$$J\_p(n) = a \left[ \widehat{\omega}\_m(n+1) - \omega\_m^{\ast \ast}(n+1) \right]^2 + \left[ \Delta i\_q^{\ast}(n) \right]^2 \tag{51}$$

After taking ∂*Jp*(*n*)/∂Δ*iq* ∗ (*n*) = 0, one can obtain

$$2\alpha b\_s[a\_s\omega\_m(n) + b\_s[i\_{qp}(n-1) + \Delta i\_q^\*(n)] - \omega\_m^\*(n+1)] + 2\Delta i\_q^\*(n) = 0\tag{52}$$

Next, one can obtain

$$
\Delta i\_q^\*(n) = \frac{ab\_s}{ab\_s^2 + 1} \left[ \omega\_m^\*(n+1) - a\_s \omega\_m(n) - b\_s i\_{qp}(n-1) \right] \tag{53}
$$

and

$$k = \frac{\alpha b\_{\rm s}}{\alpha b\_{\rm s}^2 + 1} \tag{54}$$

Finally, the q-axis current command is

$$i\_{qp}"\left(n\right) = i\_{qp}(n-1) + \Delta i\_q "\left(n\right) \tag{55}$$

Load disturbance compensation is shown in Figure 7. By computing the difference between *kti* ∗ *<sup>q</sup>*(*n*) and *Jt*(Δω*m*/Δ*t*) + *Bt*ω*m*, the estimated mechanical load can be obtained. Next, the external load *T*ˆ*m*(*n*) is estimated by using a low-pass filter. After that, the compensation current *iqc*(*n*) can be obtained. Finally, the q-axis current command *iq* ∗ (*n*), which is the summation of the *iqp*<sup>∗</sup> (*n*) and the compensation current *iqc*(*n*), can be computed, shown in Figure 7.

## **8. Implementation**

The implemented circuit of the sensorless IPMSM drive system is discussed here. Figure 8a demonstrates the closed-loop block diagram of the implemented drive system. The digital signal processor (DSP) executes the position estimation and predictive control algorithms. As a result, the DSP is the control center of the IPMSM drive system. Figure 8b displays the implemented circuit, including an inverter, a 3-phase driving circuit, a DSP, two A/D converters, and two Hall-effect current sensing circuits. Figure 8c demonstrates the drive system with a dynamometer, which is driven by a DC permanent magnet motor to equip the external load. By suitably adjusting the input voltage of the DC motor, a varied load can be obtained. The IPMSM is an 8-pole, 7.7 A, 2000 rpm, 2 kW IPMSM. The motor has the following parameters: stator resistance = 0.32 Ω, d-axis self-inductance = 0.0049 H, q-axis self-inductance = 0.0078 H, flux linkage = 0.16 V.s/rad, inertia = 0.00455 kg-m2, viscous coefficient = 0.003 N.m.s/rad, switching frequency of the inverter = 10 kHz, DC bus voltage = 300 V, current-loop sampling interval = 100 μs, and the speed-loop sampling interval = 1 ms.

**Figure 8.** Implemented system. (**a**) block diagram; (**b**) circuit; (**c**) dynamometer.

## **9. Experimental Results**

To verify the theoretical analysis, several measured results are demonstrated in this section. The speed-loop PI controller is designed by a pole assignment technique. Figure 9 demonstrates the

relation between the q-axis current deviations and estimated position errors at 0 rpm. When the d-axis current is too low, the amplitude of the q-axis current deviation is also very low. In order to enhance the amplitude of the current deviation to reduce the estimated rotor position error, a higher d-axis current is selected for the rotor position estimation at a standstill condition. From Figure 9, the relationship between the q-axis current deviation and the estimated position error is nearly a sinusoidal curve. In addition, the current deviation slope and the estimated position error have the same polarity. Therefore, it is reasonable to use the q-axis current deviation slope to estimate the position, as explained in Section 3. Figure 10a demonstrates the estimated and real positions, and they are similar. However, the estimated rotor position varies above and below the real positions. Figure 10b demonstrates the estimated and real speeds at 5 rpm. Both of them have obvious speed ripples, which are near ±1 rpm. In addition, the speed computed from rotor estimation has larger speed ripples than the speed measured by an encoder, which provides more accurate speed information. Figure 10c demonstrates the estimated position error with only nearby ±2 electrical degrees. This result shows that the estimated d-axis moves above and below the real d-axis. Figure 11a demonstrates the rotor speed and estimated speed at 0 rpm under an 11 N·m external load. According to this figure, the estimated speed follows the real speed well, even though a heavy load is added. However, the estimated speed has a larger speed ripples than the speed obtained from the encoder. Figure 11b demonstrates the estimated and real positions using an encoder. Both of them finally reach 0 electrical degrees at steady-states, at which the motor provides maximum holding torque. Figure 11c shows the position error at 0 rpm under an 11 N·m load. The estimated error is at a near −2 degrees at no load; however, it reaches 2 degrees under an 11 N·m load. According to Figure 11a–c, one can conclude that the proposed method can provide a high-performance speed control at a standstill with a heavy load.

**Figure 9.** Measured q-axis current deviations to estimated position errors.

Figure 12a,b show the comparison of the a-phase output current of the hysteresis current control and the proposed extension and compensation SVPWM when the motor is running at 600 rpm under a 1.5 N·m external load. As we can observe, the output current with the proposed method provides lower current harmonics than the hysteresis current control method. The major reason is that hysteresis control uses an infinite gain for a current-loop and then creates high current harmonics. Figure 13a shows the a-phase current and its related sampling signal. The current is detected twice for each switching interval in order to compute the current deviation. Figure 13b shows the extended and compensated SVPWM switching states. In that figure, it can be seen that the sampling interval *Ts* is 100 μs. The first and second applied voltage vectors are "110" and "010" and are both less than 20 μs. Therefore, these voltage vectors need to be extended at the first stage and then be compensated for at the next stage. Besides that, the switching time for the zero voltage vector reaches 20 μs, and it does not need to be extended. The extended voltage vectors "110" and "010" also need to be compensated for in the opposite direction, which is "001" and "101", to keep the total time of switching states from changing. Hence, the compensation for switching states "001" and "101" are performed before the end

of the switching interval *Ts*. Figure 13c shows the related switching points (broken lines) and sampling points (solid lines). As can be observed, two current sampling points are required for the AVV "110" and "010" and the ZVV "000".

**Figure 10.** Measured 5 rpm responses. (**a**) estimated and real positions; (**b**) estimated and real speeds; (**c**) estimated position errors.

Figure 14a–d show the α and β current responses using the AVV and ZVV algorithms at 60 rpm under a 2 N·m load. Figure 14a shows the *i*<sup>α</sup> and *i*<sup>β</sup> using the AVV and the blue line is *i*<sup>α</sup> and the red line is *i*β. Figure 14b shows the *i*α and *i*β using the ZVV and the blue line is *i*α and the red line is *i*β. As we can observe, at low speeds, the ZVV performs better than the AVV with fewer current ripples and current distortions. The reason is that the ZVV uses a lot of zero vectors, but the AVV does not. In addition, the αβ trajectory for the ZVV is closer to a circle. This is why the ZVV is employed for low-speed ranges. Figure 15a–c illustrate the transitional responses from the ZVV algorithm to the AVV algorithm. Figure 15a shows the estimated and real speeds at about 150 rpm. According to the transition rules in Equations (48)–(50), when the speed is below 60 rpm, the ZVV estimation algorithm is used. However, when the motor is at more than 100 rpm, the AVV rotor estimation algorithm is used. If the speeds are between those two limitations, a weighting factor is considered, which allows the two estimators to transition smoothly to obtain estimated speeds and positions. Figure 15b compares the estimated and real positions, and they are close at a standstill and low-speed ranges. Moreover, during the transitional interval, the estimated and real positions can provide smooth transient responses to demonstrate that the proposed method is practical and useful. Figure 15c demonstrates the estimated position

errors. The errors are near six electrical degrees during transitional intervals and then are reduced to two electrical degrees at steady-states. Figure 16a demonstrates the reverse speed responses from 600 rpm to −600 rpm by using a predictive controller. Figure 16b demonstrates the real and estimated position responses, and both of them are similar. The results show that the proposed rotor position estimator can track the real position very well in transient responses and at steady-states. Figure 16c demonstrates the measured estimated rotor position errors, which are near ±4 electrical degrees during the transient responses. The estimated motor position errors in these transient responses are larger than the estimated rotor position errors at a steady-state.

**Figure 11.** Measured waveforms at 0 rpm and 11 N-m load. (**a**) speeds; (**b**) positions; (**c**) estimated position errors.

**Figure 12.** Measured phase current at 600 rpm and 1.5 N-m external load. (**a**) hysteresis current control; (**b**) proposed SVPWM.

**Figure 13.** Measured waveforms. (**a**) a-phase current and its sampling points; (**b**) SVPWM; (**c**) sampling and switching points.

**Figure 14.** Measured current waveforms at 60 rpm and 2 N-m load. (**a**) axis current using AVV; (**b**) axis current using ZVV; (**c**) axis trajectory using AVV; (**d**) axis trajectory using ZVV.

**Figure 15.** Measured responses during transition intervals. (**a**) speeds; (**b**) positions; (**c**) position estimated errors.

**Figure 16.** Measured responses from 0 rpm to 600 rpm to −600 rpm. (**a**) speeds; (**b**) positions; (**c**) position estimated errors.

Figure 17a,b show the measured responses of the drive system with different values of external loads. Figure 17a shows the responses whena1N·m load is added. As we can observe, the estimated rotor position and estimated rotor speed can follow measured rotor position and rotor speed well. The position error is only ±2 electrical degrees. Figure 17b shows the responses when a 4 N·m load is

**Figure 17.** Measured responses of different loads at 600 rpm. (**a**)1N·m; (**b**)4N·m.

Figure 18a demonstrates a comparison of the speed responses by using different controllers. The PI controller has near 10% overshoot, which requires 0.3 s to reach a steady-state. However, the predictive controller only has a 3% overshoot and can reach a steady-state quickly. Figure 18b demonstrates the load disturbance responses at 600 rpm with a 2 N·m load. The PI controller drops by 150 rpm, but the predictive controller drops by only 60 rpm. In addition, the predictive controller has a quicker recovery time than the PI controller. Figure 18c demonstrates the step-input responses at different speeds by using the proposed predictive controller. All of them are linear responses. The reason is that the predictive controller uses more state variables than the PI controller. This demonstrates that the proposed drive system has wide and adjustable ranges, which include different speed ranges.

**Figure 18.** Measured responses at different speeds. (**a**) 600 rpm transient responses; (**b**) 600 rpm 2 N·m load responses; (**c**) different speed responses.

#### **10. Conclusions**

A sensorless DSP-based IPMSM drive system using current deviation detection is implemented in this paper. The ZVV rotor estimating method, which is very suitable for IPMSMs operating at zero-speeds and low-speeds, is originally investigated. Experimental results show that this ZVV estimating method can achieve high-performance sensorless speed control at zero-speed under full load conditions. In addition, a linear combination method, which is the simplest method to combine a ZVV algorithm and an AVV algorithm, is also proposed in this paper. As a result, the IPMSM drive system can be operated from 0 r/min to 3000 r/min. This linear combination method is more easily implemented than fuzzy-logic combination methods.

**Author Contributions:** Conceptualization, T.-H.L.; methodology, T.-H.L.; validation, C.-Y.T. and Z.-Y.W.; resources, T.-H.L.; writing—original draft preparation, T.-H.L. and M.S.M.; writing—review and editing, T.-H.L. and M.S.M.; supervision, T.-H.L.; funding acquisition, T.-H.L. All authors have read and agreed to the published version of the manuscript.

**Funding:** This research wan funded by the Ministry of Science and Technology, Taiwan, grant number MOST 109-2221-E011-050-, and the APC was funded by the Ministry of Science and Technology, Taiwan.

**Conflicts of Interest:** The authors declare no conflict of interest.

## **References**


© 2020 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (http://creativecommons.org/licenses/by/4.0/).

*Article*
