A Low-Cost Maximum Power Point Tracking System Based on Neural Network Inverse Model Controller

.


Introduction
In recent years, the use of alternative energy sources to reduce pollution, global warming, and environmental impact has become a priority for governments around the world.In this context, PV energy is becoming a very attractive solution for regions with high solar density.Unfortunately, the energy conversion efficiency of PV modules is still low, reducing the cost-benefit ratio of PV systems implementation.Consequently, increasing this energy efficiency is the aim of numerous research projects.There are different alternatives to optimize the performance of a PV system, such as solar trackers, hybrid systems, and algorithms for maximum power point tracking (MPPT).
Solar trackers are one or two-axis devices that change their orientation throughout the day to track the sun's path and maximize energy capture.In one-axis trackers, the surface rotates on a horizontal or vertical axis [1,2]; while, in the two-axis trackers, the surface is always perpendicular to the sun rays [3][4][5].The energy obtained depend on the type of tracker used.
The function of hybrid systems is to maintain the temperature in the manufacturer's recommended value for PV module, which is generally 25 • C.There are several studies in modeling, simulation, fabrication and implementation of thermal solar systems [6][7][8].
MPPT controllers ensure the highest available power to a load; regardless of variations in climatic conditions [9][10][11][12].The traditional solution for these controllers is the Perturb and Observe (P&O) algorithm.With this method, the operating point of the PV module is disturbed by increasing or

PV Module
The PV module was modeled using Equation (1) [5].This model has the advantage that it is only necessary to calculate the curve fitting parameter (b), which can be obtained from I-V equation.The other parameters are obtained from the electrical data of the PV module.
where V x and I x correspond to the open circuit voltage and the short-circuit current, which are represented by Equations ( 2) and (3).
where, s is the number of PV modules in series; p is the number of PV modules in parallel; E i is the solar irradiance; E in is 1000 W/m 2 ; T is the operating temperature; T N is 25 • C; T cv is the temperature coefficient of voltage; T ci is the temperature coefficient of current; V oc is the open circuit voltage; I sc is the short-circuit current; V max is 103%V oc ; and, V min is 85%V oc .Table 1 shows the electrical parameters of the 65 W PV module used (Yingli Solar, Baoding, China).Because the value of b is in the range of 0.01 to 0.18 [29,30], the approximation shown in Equation ( 4) can be made. 1 Using the electrical parameters presented in Table 1, V x = 21.7 V; I x = 4 A; I = 3.71 A; and, V = 17.5 V, the value of b is obtained, b = 0.07375.18.44 V Figures 1 and 2 show the I-V and P-V curves that are obtained with the electric model of the PV module in Simulink, with variable irradiation and constant temperature of 25 • C. For this purpose, irradiation and temperature were used as inputs, while current and voltage were used as outputs.
Electronics 2018, 7, 4 3 of 18  2 show the I-V and P-V curves that are obtained with the electric model of the PV module in Simulink, with variable irradiation and constant temperature of 25 °C.For this purpose, irradiation and temperature were used as inputs, while current and voltage were used as outputs.

DC-DC Converter Model
A buck converter was used as the control device, as shown in Figure 3.   2 show the I-V and P-V curves that are obtained with the electric model of the PV module in Simulink, with variable irradiation and constant temperature of 25 °C.For this purpose, irradiation and temperature were used as inputs, while current and voltage were used as outputs.

DC-DC Converter Model
A buck converter was used as the control device, as shown in Figure 3.

DC-DC Converter Model
A buck converter was used as the control device, as shown in Figure 3. Equations ( 5) and ( 6) are the ripples of the inductor current for the on and off states of the converter.
To operate in the continuous conduction mode, the critical output current must be greater than or equal to half the inductor current ripple [31].See Equation (8).
Using Equations ( 5) and ( 8), Equation ( 9) for the design of the inductor is obtained.
To calculate L, the following values are used: Vo = 12 V, Vs_max = 17.71V, f = 20 KHz e Io_max = 5.41 A. Assuming a ripple of 10% for a maximum output current, Equation ( 10) is obtained.
Using Equations ( 8) and (10), the critical output current is obtained.Subsequently, the value of the inductor is calculated, as shown in Equation (11 Assuming that the ripple of the inductor current flows through the capacitor and that the dc component flows through the load, the value of the capacitor for a ripple of 0.1% is shown in Equation (12).
where the inductor current ripple was calculated using Equation ( 5) and the value obtained for L in Equation (11). Figure 4 shows the model of the buck converter implemented in Simulink with the Plecs blockset, for which a current source that generates a voltage in the input capacitor was used.
Figure 5 shows the model in Simulink of the PV module with the buck converter.Equations ( 5) and ( 6) are the ripples of the inductor current for the on and off states of the converter.
To operate in the continuous conduction mode, the critical output current must be greater than or equal to half the inductor current ripple [31].See Equation (8).
Using Equations ( 5) and (8), Equation (9) for the design of the inductor is obtained.
To calculate L, the following values are used: V o = 12 V, V s_max = 17.71V, f = 20 KHz e I o_max = 5.41 A. Assuming a ripple of 10% for a maximum output current, Equation (10) is obtained.
Using Equations ( 8) and (10), the critical output current is obtained.Subsequently, the value of the inductor is calculated, as shown in Equation (11) Assuming that the ripple of the inductor current flows through the capacitor and that the dc component flows through the load, the value of the capacitor for a ripple of 0.1% is shown in Equation (12).
where the inductor current ripple was calculated using Equation ( 5) and the value obtained for L in Equation (11). Figure 4 shows the model of the buck converter implemented in Simulink with the Plecs blockset, for which a current source that generates a voltage in the input capacitor was used.
Figure 5 shows the model in Simulink of the PV module with the buck converter.

Neural Network Inverse Model Controller
The inverse control method was used to ensure maximum power transfer from the PV module to the battery.With this control technique, the dynamic of the plant is canceled by introducing an element between it and the input signal.The simplest strategy to implement the inverse control with

Neural Network Inverse Model Controller
The inverse control method was used to ensure maximum power transfer from the PV module to the battery.With this control technique, the dynamic of the plant is canceled by introducing an element between it and the input signal.The simplest strategy to implement the inverse control with

Neural Network Inverse Model Controller
The inverse control method was used to ensure maximum power transfer from the PV module to the battery.With this control technique, the dynamic of the plant is canceled by introducing an element between it and the input signal.The simplest strategy to implement the inverse control with

Neural Network Inverse Model Controller
The inverse control method was used to ensure maximum power transfer from the PV module to the battery.With this control technique, the dynamic of the plant is canceled by introducing an element between it and the input signal.The simplest strategy to implement the inverse control with artificial neural networks (ANNs) is the direct inverse model, in which an ANN is placed between the reference signal and the plant [32].
A NARX was trained, which can be mathematically defined, as shown in Equation ( 13); where u(t) and y(t) are the input and the output of the network at time t.Generally, a NARX has a hidden layer with hyperbolic tangent activation function, an output layer with linear activation function and two tapped delay line (TDL) [33,34].See Figure 7.
Electronics 2018, 7, 4 6 of 18 artificial neural networks (ANNs) is the direct inverse model, in which an ANN is placed between the reference signal and the plant [32].A NARX was trained, which can be mathematically defined, as shown in Equation ( 13); where u(t) and y(t) are the input and the output of the network at time t.Generally, a NARX has a hidden layer with hyperbolic tangent activation function, an output layer with linear activation function and two tapped delay line (TDL) [33,34].See Figure 7. NARX is a dynamic artificial neural network (DNN) with delays and feedbacks that can modify the impact of synaptic weights and bias on the network response.A DNN is used in problems involving time series, prediction, system identification, filtering, or dynamic modeling.The ability of this type of network to approximate the dynamic of a system, makes them suitable to implement a controller using the inverse model method.
Because the true output is available during the network training, a serial-parallel architecture was implemented using the true output instead of feeding back the estimated output, as shown in Figure 8.This configuration allowed the use of static backpropagation [25], with Levenberg-Marquardt optimization [33] for the network training.Where the new input P and the network target T are shown in Equation (14).
Training was performed with the tstool from Matlab/Simulink Neural Network Toolbox (MathWorks, Natick, MA, USA).The NARX was configured with an input (power) and an output (duty cycle).The network is made of a hidden layer of 10 neurons with a Tansig (Tangent sigmoid) NARX is a dynamic artificial neural network (DNN) with delays and feedbacks that can modify the impact of synaptic weights and bias on the network response.A DNN is used in problems involving time series, prediction, system identification, filtering, or dynamic modeling.The ability of this type of network to approximate the dynamic of a system, makes them suitable to implement a controller using the inverse model method.
Because the true output is available during the network training, a serial-parallel architecture was implemented using the true output instead of feeding back the estimated output, as shown in Figure 8.This configuration allowed the use of static backpropagation [25], with Levenberg-Marquardt optimization [33] for the network training.
Electronics 2018, 7, 4 6 of 18 artificial neural networks (ANNs) is the direct inverse model, in which an ANN is placed between the reference signal and the plant [32].A NARX was trained, which can be mathematically defined, as shown in Equation ( 13); where u(t) and y(t) are the input and the output of the network at time t.Generally, a NARX has a hidden layer with hyperbolic tangent activation function, an output layer with linear activation function and two tapped delay line (TDL) [33,34].See Figure 7. NARX is a dynamic artificial neural network (DNN) with delays and feedbacks that can modify the impact of synaptic weights and bias on the network response.A DNN is used in problems involving time series, prediction, system identification, filtering, or dynamic modeling.The ability of this type of network to approximate the dynamic of a system, makes them suitable to implement a controller using the inverse model method.
Because the true output is available during the network training, a serial-parallel architecture was implemented using the true output instead of feeding back the estimated output, as shown in Figure 8.This configuration allowed the use of static backpropagation [25], with Levenberg-Marquardt optimization [33] for the network training.Where the new input P and the network target T are shown in Equation (14).
Training was performed with the tstool from Matlab/Simulink Neural Network Toolbox (MathWorks, Natick, MA, USA).The NARX was configured with an input (power) and an output (duty cycle).The network is made of a hidden layer of 10 neurons with a Tansig (Tangent sigmoid) Where the new input P and the network target T are shown in Equation (14).
Training was performed with the tstool from Matlab/Simulink Neural Network Toolbox (MathWorks, Natick, MA, USA).The NARX was configured with an input (power) and an output (duty cycle).The network is made of a hidden layer of 10 neurons with a Tansig (Tangent sigmoid) transfer function and an output layer of a neuron with pureline transfer function.For the reference signal and the feedback signal, four delays were used.
A block diagram of the neurocontroller-plant system is shown in Figure 9.In the model of the plant, the output signal is the power of the PV module, while the input signal is the percentage of duty cycle that is applied to the pulse width modulation (PWM) signal of the dc-dc converter.
Electronics 2018, 7, 4 7 of 18 transfer function and an output layer of a neuron with pureline transfer function.For the reference signal and the feedback signal, four delays were used.
A block diagram of the neurocontroller-plant system is shown in Figure 9.In the model of the plant, the output signal is the power of the PV module, while the input signal is the percentage of duty cycle that is applied to the pulse width modulation (PWM) signal of the dc-dc converter.

Training of the Neural Network
In order to obtain the training data, the plant to be controlled was modeled, which has as input the variation of the duty cycle of a PWM signal, and as output the power extracted from the photovoltaic module.See Figure 9.The data were captured and stored in Excel for a week, for which duty cycle variations were made between 80% and 93.8%,where it was observed that only the values of the intervals of 86% up to 93.8% were useful for training.With the above, it was concluded that only maximum power values would be obtained in this range of percentages.In this way, a total of 101,862 data were used to perform the controller training: 50,931 data correspond to the power, and the remaining 50,931 data correspond to the duty cycle.
Once the training data set was obtained, the functions of the Matlab Neural Network Toolbox (NNT) to create the architecture of the NARX network were used.The number of neurons in the hidden layer, the number of delays for input and feedback, the training algorithm and its optimization were defined.The training data of the output of the plant and the objective of the neural network were imported from the file in Excel.After this, the NNT applies the arrangement shown in Figure 8 for training the NARX network (a dynamic network) with the static backpropagation with Levenberg-Marquardt optimization as if it were a static network.The results for the network training were verified with data obtained from the simulation carried out previously in the plant.After validating the training, the implementation was carried out.transfer function and an output layer of a neuron with pureline transfer function.For the reference signal and the feedback signal, four delays were used.
A block diagram of the neurocontroller-plant system is shown in Figure 9.In the model of the plant, the output signal is the power of the PV module, while the input signal is the percentage of duty cycle that is applied to the pulse width modulation (PWM) signal of the dc-dc converter.

Training of the Neural Network
In order to obtain the training data, the plant to be controlled was modeled, which has as input the variation of the duty cycle of a PWM signal, and as output the power extracted from the photovoltaic module.See Figure 9.The data were captured and stored in Excel for a week, for which duty cycle variations were made between 80% and 93.8%,where it was observed that only the values of the intervals of 86% up to 93.8% were useful for training.With the above, it was concluded that only maximum power values would be obtained in this range of percentages.In this way, a total of 101,862 data were used to perform the controller training: 50,931 data correspond to the power, and the remaining 50,931 data correspond to the duty cycle.
Once the training data set was obtained, the functions of the Matlab Neural Network Toolbox (NNT) to create the architecture of the NARX network were used.The number of neurons in the hidden layer, the number of delays for input and feedback, the training algorithm and its optimization were defined.The training data of the output of the plant and the objective of the neural network were imported from the file in Excel.After this, the NNT applies the arrangement shown in Figure 8 for training the NARX network (a dynamic network) with the static backpropagation with Levenberg-Marquardt optimization as if it were a static network.The results for the network training were verified with data obtained from the simulation carried out previously in the plant.After validating the training, the implementation was carried out.

Training of the Neural Network
In order to obtain the training data, the plant to be controlled was modeled, which has as input the variation of the duty cycle of a PWM signal, and as output the power extracted from the photovoltaic module.See Figure 9.The data were captured and stored in Excel for a week, for which duty cycle variations were made between 80% and 93.8%,where it was observed that only the values of the intervals of 86% up to 93.8% were useful for training.With the above, it was concluded that only maximum power values would be obtained in this range of percentages.In this way, a total of 101,862 data were used to perform the controller training: 50,931 data correspond to the power, and the remaining 50,931 data correspond to the duty cycle.
Once the training data set was obtained, the functions of the Matlab Neural Network Toolbox (NNT) to create the architecture of the NARX network were used.The number of neurons in the hidden layer, the number of delays for input and feedback, the training algorithm and its optimization were defined.The training data of the output of the plant and the objective of the neural network were imported from the file in Excel.After this, the NNT applies the arrangement shown in Figure 8 for training the NARX network (a dynamic network) with the static backpropagation with Levenberg-Marquardt optimization as if it were a static network.The results for the network training were verified with data obtained from the simulation carried out previously in the plant.After validating the training, the implementation was carried out.

Buck Converter Implementation
The converter was implemented in two stages.The first stage conditions the PWM signal from the Arduino board, compares it with a reference voltage level and generates a square output with a CMOS inverter gate activated by Schmitt Trigger.See Figure 11.

Buck Converter Implementation
The converter was implemented in two stages.The first stage conditions the PWM signal from the Arduino board, compares it with a reference voltage level and generates a square output with a CMOS inverter gate activated by Schmitt Trigger.See Figure 11.In stage 2, to activate the Mosfet IRFZ44N (Infineon Technologies, Neubiberg, Germany), a totem pole driver supplied by a low-power boost XL6009 converter (KylinChip Electronic, Shangai, China), was used.Additionally, an inductor was constructed using a ferrite core with type J material; in order to avoid the losses due to the Foucault effect and hysteresis.See Figure 12. Figure 13 shows the schematic diagram of the dc-dc converter implemented.To measure the current of the PV module and the battery, two hall effect current sensors ACS712 (Allegro MicroSystems, Worcester, MA, USA) of 30 A were used.To measure the voltage, two E3-01M-1 modules (Vistronica, Fusagasugá, Colombia) were used, which are responsible for regulating voltages from 25 V to 5 V. See Figure 14.In stage 2, to activate the Mosfet IRFZ44N (Infineon Technologies, Neubiberg, Germany), a totem pole driver supplied by a low-power boost XL6009 converter (KylinChip Electronic, Shangai, China), was used.Additionally, an inductor was constructed using a ferrite core with type J material; in order to avoid the losses due to the Foucault effect and hysteresis.See Figure 12.

Buck Converter Implementation
The converter was implemented in two stages.The first stage conditions the PWM signal from the Arduino board, compares it with a reference voltage level and generates a square output with a CMOS inverter gate activated by Schmitt Trigger.See Figure 11.In stage 2, to activate the Mosfet IRFZ44N (Infineon Technologies, Neubiberg, Germany), a totem pole driver supplied by a low-power boost XL6009 converter (KylinChip Electronic, Shangai, China), was used.Additionally, an inductor was constructed using a ferrite core with type J material; in order to avoid the losses due to the Foucault effect and hysteresis.See Figure 12. Figure 13 shows the schematic diagram of the dc-dc converter implemented.To measure the current of the PV module and the battery, two hall effect current sensors ACS712 (Allegro MicroSystems, Worcester, MA, USA) of 30 A were used.To measure the voltage, two E3-01M-1 modules (Vistronica, Fusagasugá, Colombia) were used, which are responsible for regulating voltages from 25 V to 5 V. See Figure 14. Figure 13 shows the schematic diagram of the dc-dc converter implemented.To measure the current of the PV module and the battery, two hall effect current sensors ACS712 (Allegro MicroSystems, Worcester, MA, USA) of 30 A were used.To measure the voltage, two E3-01M-1 modules (Vistronica, Fusagasugá, Colombia) were used, which are responsible for regulating voltages from 25 V to 5 V. See Figure 14.

Neural Network Inverse Controller Implementation
It was necessary to carry out the acquisition of a reference signal to obtain a duty cycle for the MPPT.In order to reduce costs, a static neural network was used to generate the reference signal, which has as inputs the temperature and voltage of a PV cell of 0.8 W and as output the maximum power obtained from the PV module.In this way, it was possible to acquire the reference signal.See Figure 15. Figure 16 shows the flow diagram of the inverse neural controller that was implemented using the low cost Arduino board.Table 2 shows the main specifications of the Arduino Mega board used, which is based on the ATmega 2560 (Microchip, Chandler, AZ, USA) microcontroller [27].

Neural Network Inverse Controller Implementation
It was necessary to carry out the acquisition of a reference signal to obtain a duty cycle for the MPPT.In order to reduce costs, a static neural network was used to generate the reference signal, which has as inputs the temperature and voltage of a PV cell of 0.8 W and as output the maximum power obtained from the PV module.In this way, it was possible to acquire the reference signal.See Figure 15. Figure 16 shows the flow diagram of the inverse neural controller that was implemented using the low cost Arduino board.Table 2 shows the main specifications of the Arduino Mega board used, which is based on the ATmega 2560 (Microchip, Chandler, AZ, USA) microcontroller [27].

Neural Network Inverse Controller Implementation
It was necessary to carry out the acquisition of a reference signal to obtain a duty cycle for the MPPT.In order to reduce costs, a static neural network was used to generate the reference signal, which has as inputs the temperature and voltage of a PV cell of 0.8 W and as output the maximum power obtained from the PV module.In this way, it was possible to acquire the reference signal.See Figure 15.

Neural Network Inverse Controller Implementation
It was necessary to carry out the acquisition of a reference signal to obtain a duty cycle for the MPPT.In order to reduce costs, a static neural network was used to generate the reference signal, which has as inputs the temperature and voltage of a PV cell of 0.8 W and as output the maximum power obtained from the PV module.In this way, it was possible to acquire the reference signal.See Figure 15. Figure 16 shows the flow diagram of the inverse neural controller that was implemented using the low cost Arduino board.Table 2 shows the main specifications of the Arduino Mega board used, which is based on the ATmega 2560 (Microchip, Chandler, AZ, USA) microcontroller [27].Figure 16 shows the flow diagram of the inverse neural controller that was implemented using the low cost Arduino board.Table 2 shows the main specifications of the Arduino Mega board used, which is based on the ATmega 2560 (Microchip, Chandler, AZ, USA) microcontroller [27].Figure 17 shows the PV system, which consists of the PV module, sensor with a static neural network, battery, buck converter, and Arduino neural controller.Figure 18 shows in detail the components used for the buck converter.Figure 17 shows the PV system, which consists of the PV module, sensor with a static neural network, battery, buck converter, and Arduino neural controller.Figure 18 shows in detail the components used for the buck converter.

Simulation Results
Figure 19 shows the output power of the PV module for the inverse neural controller and the P&O algorithm, using a constant temperature of 50 °C and a change in irradiation of 100 to 1000 W/m 2 .It can be observed that the neural controller is more efficient when compared to the P&O, since it eliminates the oscillations around the operating point and presents a better time response.The neuronal controller stabilizes in a time of 0.032 s, while the P&O decreases oscillations in a time of 0.034 s; however, it does not eliminate them completely.

Simulation Results
Figure 19 shows the output power of the PV module for the inverse neural controller and the P&O algorithm, using a constant temperature of 50 • C and a change in irradiation of 100 to 1000 W/m 2 .It can be observed that the neural controller is more efficient when compared to the P&O, since it eliminates the oscillations around the operating point and presents a better time response.The neuronal controller stabilizes in a time of 0.032 s, while the P&O decreases oscillations in a time of 0.034 s; however, it does not eliminate them completely.A constant temperature of 50 °C and an irradiation signal with sudden changes over seven possible values, at 0.03 s, 0.06 s, 0.09 s, 0.12 s, 0.15 s, 0.18 s, 0.21 s, 0.24 s, 0.27 s, and 0.30 s, were used to evaluate the performance of the system.See Figure 20.A constant temperature of 50 • C and an irradiation signal with sudden changes over seven possible values, at 0.03 s, 0.06 s, 0.09 s, 0.12 s, 0.15 s, 0.18 s, 0.21 s, 0.24 s, 0.27 s, and 0.30 s, were used to evaluate the performance of the system.See Figure 20.A constant temperature of 50 °C and an irradiation signal with sudden changes over seven possible values, at 0.03 s, 0.06 s, 0.09 s, 0.12 s, 0.15 s, 0.18 s, 0.21 s, 0.24 s, 0.27 s, and 0.30 s, were used to evaluate the performance of the system.See Figure 20.For these test conditions, Figure 21 shows the output power that was obtained from the PV module using the neural controller and the P&O algorithm.The results demonstrate that the neural controller accurately tracks the maximum power point without oscillations and power losses.In contrast, the P&O algorithm presents oscillations in each change of irradiation and power losses of 5.56%, 1.50%, 3.97%, 2.17%, 2.08%, 5.56%, 1.50%, 5.88%, 1.89%, 5.56%, and 1.50%.These results can be compared with the work presented in [20], where power losses between 2.3% and 2.5% were obtained during the evaluation of a MPPT control using a P&O algorithm and a glowworm swarm optimization for PV systems.For these test conditions, Figure 21 shows the output power that was obtained from the PV module using the neural controller and the P&O algorithm.The results demonstrate that the neural controller accurately tracks the maximum power point without oscillations and power losses.In contrast, the P&O algorithm presents oscillations in each change of irradiation and power losses of 5.56%, 1.50%, 3.97%, 2.17%, 2.08%, 5.56%, 1.50%, 5.88%, 1.89%, 5.56%, and 1.50%.These results can be compared with the work presented in [20], where power losses between 2.3% and 2.5% were obtained during the evaluation of a MPPT control using a P&O algorithm and a glowworm swarm optimization for PV systems.Figure 22 shows in detail the variations of the duty cycle presented with the traditional P&O algorithm in contrast to the stability shown by the inverse neural controller.Figure 22 shows in detail the variations of the duty cycle presented with the traditional P&O algorithm in contrast to the stability shown by the inverse neural controller.

Implementation Results
Figure 23 shows the implementation results that were obtained for the duty cycle.It can be seen that the neural controller has a constant duty cycle, while the P&O has oscillations.Figure 24 shows the results of temperature, power, battery voltage, and sensor voltage, for the two controllers.By analyzing the obtained power, between the samples 500 to 1000, it can be observed that the voltage of the sensor is practically equal in the neuronal and P&O controllers.It is logical that both of the controllers when reaching the MPP extract the same power of the PV module, however the P&O controller presented oscillations between 7 W and 10 W, while the power obtained from the neural control presents oscillations between 1 W and 2 W.

Implementation Results
Figure 23 shows the implementation results that were obtained for the duty cycle.It can be seen that the neural controller has a constant duty cycle, while the P&O has oscillations.Figure 24 shows the results of temperature, power, battery voltage, and sensor voltage, for the two controllers.By analyzing the obtained power, between the samples 500 to 1000, it can be observed that the voltage of the sensor is practically equal in the neuronal and P&O controllers.It is logical that both of the controllers when reaching MPP extract the same power of the PV module, the P&O controller presented oscillations between 7 W and 10 W, while the power obtained from the neural control presents oscillations between 1 W and 2 W.   Figure 25 shows the results obtained in the implementation of the controllers during two days in partially cloudy conditions.In the power curve, fluctuations can be observed due to the variations obtained with the voltage sensor.The increase in the battery voltage curve reflects that the battery is being properly charged with the use of the two controllers; highlighting the advantage of neuronal control that presents minimal oscillations.Additionally, in Figures 24 and 25, it is observed that with P&O a lower voltage level is obtained in the battery.This is because the resistance to the charge current is low, and therefore there is a greater current flow.Figure 25 shows the results obtained in the implementation of the controllers during two days in partially cloudy conditions.In the power curve, fluctuations can be observed due to the variations obtained with the voltage sensor.The increase in the battery voltage curve reflects that the battery is being properly charged with the use of the two controllers; highlighting the advantage of neuronal control that presents minimal oscillations.Additionally, in Figures 24 and 25, it is observed that with P&O a lower voltage level is obtained in the battery.This is because the resistance to the charge current is low, and therefore there is a greater current flow.Figure 26 shows the current extracted from the PV module and Figure 27, the current flowing to the battery.In Figure 26, higher current levels are observed due to the low resistance to the charge current, in contrast to the current values that are observed in Figure 27.In both cases, greater oscillations occur with P&O when compared with the neural control.
It should be noted that the results that are obtained in the simulation and implementation of the MPPT controller are based on the implementation of a buck converter with low losses due to the equivalent resistance Rs and the switching of the Mosfet, and the implementation of a dynamic recurrent neural network, which is ideal be used in systems with dynamic behavior, as is case of PV modules.In this way, the main contribution of this manuscript is the guarantee of supplying the maximum possible power to a battery without oscillations that generate power losses and affect the performance of the system.Negligible oscillations, use of low cost tools, and easy implementation are the main advantages of the proposed neural controller.Figure 26 shows the current extracted from the PV module and Figure 27, the current flowing to the battery.In Figure 26, higher current levels are observed due to the low resistance to the charge current, in contrast to the current values that are observed in Figure 27.In both cases, greater oscillations occur with P&O when compared with the neural control.
It should be noted that the results that are obtained in the simulation and implementation of the MPPT controller are based on the implementation of a buck converter with low losses due to the equivalent resistance R s and the switching of the Mosfet, and the implementation of a dynamic recurrent neural network, which is ideal to be used in systems with dynamic behavior, as is the case of PV modules.In this way, the main contribution of this manuscript is the guarantee of supplying the maximum possible power to a battery without oscillations that generate power losses and affect the performance of the system.Negligible oscillations, use of low cost tools, and easy implementation are the main advantages of the proposed neural controller.
equivalent resistance Rs and the switching of the Mosfet, and the implementation of a dynamic recurrent neural network, which is ideal to be used in systems with dynamic behavior, as is the case of PV modules.In this way, the main contribution of this manuscript is the guarantee of supplying the maximum possible power to a battery without oscillations that generate power losses and affect the performance of the system.Negligible oscillations, use of low cost tools, and easy implementation are the main advantages of the proposed neural controller.

Conclusions
this work, demonstrated that the neural network inverse model control strategy allows for tracking the maximum power point of a PV module in a more efficient way than the traditional P&O algorithm, minimizing the oscillations around the operating point.The NARX presented a better response to disturbances due to the ability of dynamic neural networks to address problems dynamic systems.The use of static neural network was a good choice, since data were obtained to establish the dynamics of the PV module in to perform the appropriate training for the NARX.
The buck converter was designed to operate in the continuous conduction mode, with a frequency of 20 KHz and a high permeability of the ferrite toroid, which allowed for decreasing losses due to the equivalent resistance.A low permeability of the ferrite core produces heating in the coil, leading to greater losses in the dc-dc converter.
The Neural Network Toolbox was an important tool to design and train the neural network.Besides, Simulink provides an appropriate environment to perform the simulations and approach the behavior of the real system.Additionally, the implementation of the controller in the Arduino platform allowed for evaluating the relevance of this type of tools in intelligent control systems.

Conclusions
With this work, it was demonstrated that the neural network inverse model control strategy allows for tracking the maximum power point of a PV module in a more efficient way than the traditional P&O algorithm, minimizing the oscillations around the operating point.The NARX presented a better response to disturbances due to the ability of dynamic neural networks to address problems involving dynamic systems.The use of static neural network was a good choice, since data were obtained to establish the dynamics of the PV module in order to perform the appropriate training for the NARX.
The buck converter was designed to operate in the continuous conduction mode, with a switching frequency of 20 KHz and a high permeability of the ferrite toroid, which allowed for decreasing the losses due to the equivalent resistance.A low permeability of the ferrite core produces heating in the coil, leading to greater losses in the dc-dc converter.
The Neural Network Toolbox was an important tool to design and train the neural network.Besides, Simulink provides an appropriate environment to perform the simulations and approach the behavior of the real system.Additionally, the implementation of the controller in the Arduino platform allowed for evaluating the relevance of this type of tools in intelligent control systems.

Figure 1 .
Figure 1.I-V curve of the PV module under different solar radiances.

Figure 2 .
Figure 2. P-V curve of the PV module under different solar radiances.

Figure 1 .
Figure 1.I-V curve of the PV module under different solar radiances.

Figure 1 .
Figure 1.I-V curve of the PV module under different solar radiances.

Figure 2 .
Figure 2. P-V curve of the PV module under different solar radiances.

Figure 2 .
Figure 2. P-V curve of the PV module under different solar radiances.

Figure 6
Figure 6 shows the voltage response of the converter for a duty cycle D = 0.9, resistive load of 10 Ω, constant temperature of the PV module of 25 °C, and dynamic values of irradiation between 100 and 1000 W/m 2 .

Figure 6
Figure 6 shows the voltage response of the converter for a duty cycle D = 0.9, resistive load of 10 Ω, constant temperature of the PV module of 25 °C, and dynamic values of irradiation between 100 and 1000 W/m 2 .

Figure 6
Figure 6 shows the voltage response of the converter for a duty cycle D = 0.9, resistive load of 10 Ω, constant temperature of the PV module of 25 • C, and dynamic values of irradiation between 100 and 1000 W/m 2 .

Figure 6
Figure 6 shows the voltage response of the converter for a duty cycle D = 0.9, resistive load of 10 Ω, constant temperature of the PV module of 25 °C, and dynamic values of irradiation between 100 and 1000 W/m 2 .

Figure 8 .
Figure 8. Series-parallel architecture for training a NARX.

Figure 8 .
Figure 8. Series-parallel architecture for training a NARX.

Figure 8 .
Figure 8. Series-parallel architecture for training a NARX.

Figure 10
Figure10shows the PV system implemented in Matlab-Simulink, which consists of the PV module, dc-dc converter, and inverse neural network model.

Figure 10
Figure10shows the PV system implemented in Matlab-Simulink, which consists of the PV module, dc-dc converter, and inverse neural network model.

Figure 10
Figure10shows the PV system implemented in Matlab-Simulink, which consists of the PV module, dc-dc converter, and inverse neural network model.

Figure 11 .
Figure 11.Schematic diagram for conditioning the PWM signal from the Arduino board.

Figure 11 .
Figure 11.Schematic diagram for conditioning the PWM signal from the Arduino board.

Figure 11 .
Figure 11.Schematic diagram for conditioning the PWM signal from the Arduino board.

Figure 13 .
Figure 13.Buck converter with current and voltage sensors.

Figure 13 .
Figure 13.Buck converter with current and voltage sensors.

Figure 18 .
Figure 18.Buck converter and sensors used.

Figure 18 .
Figure 18.Buck converter and sensors used.

Figure 19 .
Figure 19.Output power of the PV module for an irradiation change from 100 to 1000 W/m 2 , 50 °C.

2 Figure 19 .
Figure 19.Output power of the PV module for an irradiation change from 100 to 1000 W/m 2 , 50 • C.

Figure 19 .
Figure 19.Output power of the PV module for an irradiation change from 100 to 1000 W/m 2 , 50 °C.

Figure 21 .
Figure 21.Output power of the PV module under variable irradiation.

Figure 21 .
Figure 21.Output power of the PV module under variable irradiation.

Figure 22
Figure 22  shows in detail the variations of the duty cycle presented with the traditional P&O algorithm in contrast to the stability shown by the inverse neural controller.

Figure 21 .
Figure 21.Output power of the PV module under variable irradiation.

Figure 23 .
Figure 23.Real system duty cycle.Figure 23.Real system duty cycle.

Figure 23 .
Figure 23.Real system duty cycle.Figure 23.Real system duty cycle.

Figure 24 .
Figure 24.Implementation results for the neural controller and Perturb and Observe (P&O) algorithm.

Figure 25 .
Figure 25.Implementation results for two days for the neural controller and P&O.

Figure 26 .
Figure 26.Current obtained from the PV module.Figure 26.Current obtained from the PV module.

Figure 27 .
Figure 27.Current delivered to the battery.

Figure 27 .
Figure 27.Current delivered to the battery.