### Boost converter

The boost converter is required to convert DC voltage (*V*) to another DC voltage (*V*
_{o}). As shown in Fig. 4, this converter contains a MOSFET switch, which is controlled by PWM signal. Once the switch is ON, the inductor stores energy from the PV panel. Moreover, the reverse biased diode detaches the output from the PV generator and output capacitor provides current to the load. However, if the switch is OFF the inductor is in discharge state and the forward biased diode connects the output to PV generator. The PV panel voltage and inductor voltage (discharging state) contribute together for the output voltage. Therefore, the output voltage is always greater than input voltage (Motahhir et al. 2017).

The equations of this converter are shown below (Motahhir et al. 2015):

$$V_{\text{o}} = \frac{V}{1 - \alpha }$$

(2)

$$I_{\text{o}} = I\left( {1 - \alpha } \right)$$

(3)

### Incremental conductance algorithm

The INC algorithm is used to predict the voltage change in a PV panel by measuring the incremental changes in PV panel current and voltage. This algorithm is an amelioration of the P&O algorithm and can track changing conditions more rapidly (Radjai et al. 2014). This algorithm uses the incremental conductance (∆*I*/∆*V*) of the PV panel to find the sign of *P*–*V* curve slope (∆*P*/∆*V*) (Radjai et al. 2014). This algorithm finds the MPP by comparing the incremental conductance (∆*I*/∆*V*) to the conductance (− *I*/*V*). When they are equal, the MPP is reached and no more perturbation of duty cycle. When (∆*I*/∆*V*) is greater than (− *I*/*V*), the controller must increase the voltage. Otherwise, the controller must decrease the voltage (Radjai et al. 2014; Loukriz et al. 2016). Figure 5 shows the flowchart of the INC algorithm.

Implementation of the INC algorithm is presented in Fig. 6.

### Kalman filter based MPPT algorithm

#### Kalman filter design

The Kalman filter is a set of mathematical equations that provides an efficient computational (recursive) solution of the least-squares method. The filter is very powerful in several aspects: it supports estimations of past, present, and even future states, and it can do so even when the precise nature of the modeled system is unknown (Ramchandani et al. 2012). In 1960, Kalman published his famous paper describing a recursive solution to the discrete data linear filtering problem (Kalman 1960). Since that time, due in large part to advances in digital computing, the Kalman filter has been the subject of extensive research and application, particularly in the area of autonomous or assisted navigation.

In this filter, two set of equations are used during each iteration. The first set is called “the time update” or also “the prediction state”; it is composed of two equations. The first equation is used to project the state ahead (Aoune et al. 2016):

$$x_{k}^{ - } = Ax_{k - 1} + Bu_{k - 1}$$

(4)

where \(x_{k}^{ - }\) is the state estimate at iteration k calculated from previous iteration. \(x_{k - 1}\) is the state corrected at iteration *k* − 1 given by the measurement output \(z_{k - 1}\). *u*
_{
k−1} is the control process at the iteration *k* − 1. *A* is a constant that depends on the system in which the Kalman filter is used; it is the state transition model which is applied to the previous state. *B* is a constant that depends on the system in which the Kalman filter is used; it is the control-input model which is applied to the control process.

The second equation is used to project the error covariance ahead (Aoune et al. 2016):

$$P_{k}^{ - } = AP_{k - 1} A^{\text{T}} + Q$$

(5)

where *Q* is the process noise covariance. It is a covariance matrix associated with the noise in states; it is generally constructed intuitively, but there are some points that need to be regarded choosing it. Unmodeled dynamics and parameter uncertainties are modeled as process noise generally. \(P_{k}^{ - }\) is the priori error covariance at iteration *k*. \(P_{k - 1}\) is the posteriori error covariance at iteration *k* − 1.

The second set of equation is called “the measurement update” or also the “correction state,” and it is used to correct the value predicted during “the time update” step. This set of equations is constituted from three equations presented below (Aoune et al. 2016):

First, we compute the Kalman gain:

$$K_{k} = P_{k}^{ - } C^{\text{T}} \left( {CP_{k}^{ - } C^{\text{T}} + R} \right)^{ - 1}$$

(6)

Then we update the estimate *x*
_{
k
} via the measurement output *z*
_{
k
}:

$$x_{k} = x_{k}^{ - } + K_{k} \left( {z_{k} - Cx_{k}^{ - } } \right)$$

(7)

The last equation updates the error covariance:

$$P_{k} = \left( {I - K_{k} C} \right)P_{k}^{ - }$$

(8)

where *x*
_{
k
} is the state corrected at iteration *k* given by the measurement output \(z_{k}\). *P*
_{
k
} is the posteriori error covariance at iteration *k*. *K*
_{
k
} is the Kalman gain. *R* is the measurement noise covariance. It can be found by processing the measurement while the output of the system is held constant. In this case, only noise remains in the data after its mean is removed. *Z*
_{
k
} is the measurement value. *C* is a constant that depends on the system in which the Kalman filter is used; it is the observation model which maps the true state space into the observed space.

These two steps “the time update” and “the measurement update” are repeated during each iteration which causes noise to reduce and the error covariance to become zero (Aoune et al. 2016).

#### Design the MPPT algorithm using Kalman filter

In order to find the MPP using the Kalman filter, we need to design this filter to look for the voltage at the MPP. Therefore, based on the *P*–*V* curve shown in Fig. 3, the power increases with a gradual positive slope until reaches one optimal point then after that it decreases with a negative slope. Using this analysis, the voltage at MPP can be predicted using Eq. (9) and the priori error covariance is computed by Eq. (10), where *A* is 1 and *B* is *M*.

The prediction state:

$$V_{k}^{ - } = V_{k - 1} + M\frac{{\Delta P^{k - 1} }}{{\Delta V^{k - 1} }}$$

(9)

$$P_{k}^{ - } = P_{k - 1} + Q$$

(10)

where \(V_{k}^{ - }\) is the value of voltage estimated by the Kalman filter based MPPT at iteration *k*. \(V_{k}^{ - }\) is analogous to \(x_{k}^{ - }\). *M* is the scaling factor; it is analogous to *B*. \(\Delta P^{k - 1}\)/\(\Delta V^{k - 1}\) is the slope of the *P*–*V* curve at iteration *k* − 1. This slope is analogous to the control unit *u*
_{
k−1}.

The measurement update:

Using the error covariance from the prediction state, the Kalman gain *K*
_{
k
} is calculated by Eq. (11), where *C* is 1:

$$K_{k} = P_{k}^{ - } \left( {P_{k}^{ - } + R} \right)^{ - 1}$$

(11)

The measurement update equations correct the state and covariance predicted with the measurement PV voltage (*V*
_{in,k
}).

$$V_{k} = V_{k}^{ - } + K_{k} \times \left( {V_{{{\text{in,}} k}} - V_{k}^{ - } } \right)$$

(12)

$$P_{k} = \left( {1 - K_{k} } \right) \times P_{k}^{ - }$$

(13)

where *V*
_{
k
} is the value of voltage corrected by the Kalman filter based MPPT at iteration k given by the measurement PV voltage *V*
_{in,k
}.

Figure 7 shows the PV panel model connected to the Boost converter controlled by an embedded software running Kalman filter based MPPT developed using C language and C block provided by PSIM tool.