0% found this document useful (0 votes)
9 views47 pages

Batch 17 ME

Uploaded by

gokulmp.eee2021
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views47 pages

Batch 17 ME

Uploaded by

gokulmp.eee2021
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 47

DESIGN SIMULATION AND REALIZATION OF ARDUINO

BASED MPPT SOLARCHARGE CONTROLLER

A PROJECT REPORT

Submitted by

EDWIN JOEL.W (210416105009)

SATHYA PRAKASH.G (210416105037)

In partial fulfillment for the award of the degree

Of

BACHELOR OF ENGINEERING

In

ELECTRICAL AND ELECTRONICS ENGINEERING

CHENNAI INSTITUTE OF TECHNOLOGY

CHENNAI 600069

ANNA UNIVERSITY: CHENNAI 600025


SEPTEMBER 2020

1|Page
BONAFIDE CERTIFICATE

Certified that this project report on “DESIGN OF SOLAR CHARGE


CONTROLLER USING ARDUINO” is the bonafide work EDWIN
JOEL.W(210416105009) AND SATHYA PRAKASH (210416105037) who
carried out the project work under my supervision.

SIGNATURE SIGNATURE

Dr. M. ETTAPPAN Mr. M. EZHILMARAN

HEAD OF THE DEPARTMENT SUPERVISOR


Professor, Associate professor,
Department of Electrical and Department of Electrical and
Electronics Engineering, Electronics Engineering,
Chennai Institute of Technology, Chennai Institute of Technology,
Kundrathur-600069. Kundrathur-600069.

Submitted for Anna University Viva Voice held on 22.09.2020

INTERNAL EXAMINER EXTERNAL EXAMINAER

2|Page
ACKNOWLEDGEMENT

First of all, we bow our heads to the God Almighty for his everlasting grace in all
our endeavors.

It is a pleasure to thank the people who have made this project possible and have
given their encouragement, assistance and support throughout the whole process of the
completion of my project at Chennai Institute of Technology.

We would like to express our sincere gratitude to our respected Chairman


Shri. P. SRIRAM, for his valuable support and encouragement in technological
upgrades and novel projects.

We owe our sincere gratitude to our vice chairman Mr. P. JANAKIRAMAN


and our secretary Mrs. S. SRIDEVI, for helping us in all the way to complete this
project successfully.

Our sincere thanks to Dr. A.RAMESH M.E. , Ph.D Principal, Chennai Institute
of Technology, for his valuable suggestions, moral support and encouragement towards
completing this project work.

We express our gratefulness to Dr. M. ETTAPPAN Head of Department,


Department of Electrical and Electronics Engineering, Chennai Institute of Technology,
for guiding and encouraging during the project.

We would like to thank our supervisor Mr. M. EZHILMARAN Associate


Professor, Chennai Institute of Technology, for his valuable guidance and help in my
project work. He has provided his kind help from the very beginning of the project, to
the end of the editing the last word of our project. We also like to thank our program
coordinator Mr. KEERTHI VIJAYADHASAN, M.E for their valuable suggestions,
excellent guidance and constant support provided all through the course of our
project.
We blessed to have the help and kindness of our class mates. Words cannot
adequately express our appreciation for their patience, understanding and
unconditional support during difficult times and their invaluable help in formatting this
project.

3|Page
ABSTRACT

4|Page
Table of content

CHAPTER TITLE Page


No.
1
1.1 General 6
1.2 LITERATURE REVIEW 6
2
2.1 Photovoltaic Panels 9
2.2 Photovoltaic Modules/Array 10
2.3 Photovoltaic cell model 10
2.4 Maximum Power Point Tracking 12
2.5 MPPT Methods 13
2.6 Constant Voltage Method 14
2.7 Open Circuit Voltage Method 14
2.8 Short Circuit Current Method 15
2.9 Perturb and Observe Method 16
2.10 Incremental Conductance Method 18
3
3.1 Buck converter 20
4 Hardware Section
4.1 Panel specifications
23
4.2 Arduino as microcontroller 23
4.3 current sensing 29
4.4 voltage sensing 30
5 Design and implementation
31
6 Conclusion
6.1 Summary:
34
Reference 41

Appendix A 43

Appendix B 44

5|Page
CHAPTER 1
INTRODUCTION
1.1 GENERAL
Extracting useable electricity from the sun was made possible by
the discovery of the photoelectric mechanism via a semiconductor device which
converts photon energy into electrical energy. Solar energy generation offers the
advantages of: clean, non-polluting energy generation, production of energy close
to the consumer the very less maintenance requirement, and of having a very long
lifetime. Due to these advantages, today, the photovoltaic is one of the fastest
growing markets in the world. However, PV power is still considered to be
expensive, and the cost reduction of PV systems is subject to extensive research.
From the point of view of power electronics, this goal can be approached by
maximizing the energy output of a given PV array. The inverter should ensure the
highest possible conversion efficiency, while the requirement for the MPPT control
is to operate the PV array at the optimum working point (MPP) in all
environmental conditions. A considerable amount of PV capacity today is installed
in temperate climate zones. Although modern PV inverters’ MPPT efficiency is
very high in stable conditions, further research is needed to achieve similar
performance levels in variable conditions. The primary objective of this project is
to build efficient solar charger that will recharge the battery properly with
minimum loss with overcoming the voltage variation in solar panel. This charge
controller will protect the battery from overcharge and deep discharge. It will
maximize the solar generation by MPPT method. The proposed system is to
present a novel cost effective and efficient arduino based MPPT system for solar
photovoltaic system to ensure the maximum power point operation at all changing
Environmental condition.

1.2 LITERATURE REVIEW


GUIZA Dhaouadi, OUNNAS Djamel, SOUFI Youcef, CHENIKHE
Salah in their paper “Implementation of Incremental Conductance Based
MPPT Algorithm for Photovoltaic System” This paper deals with the hardware
implementation of incremental conductance (IncCond) algorithm based
maximumpower point tracking (MPPT) for a photovoltaic (PV)system using
Arduino board. The considered system consists of a DC-DC Boost converter, a PV
panel and a resistive load. Firstly, simulation tests using Matlab/Siumilink are
provided and then experimental validation is conduced based on an Arduino uno
and spatial Simulink package known as “support package for Arduino hardware”.
The simulation and experimental tests show the satisfied results of IncCond

6|Page
algorithm in terms of extraction of the maximum power point(MPP) form PV
panel.

Ammar AL-GIZI, Mohammed AL-SAADI, Sarab AL-


CHLAIHAWI, Aurelian CRACIUNESCU, Mustafa Abbas FADEL in their paper
“Experimental Installation of Photovoltaic MPPT Controller Using Arduino
Board” This paper deals with several electronic devices as field programmable
gate arrays (FPGA) and dSPACE controllers are used to implement the maximum
power point tracking (MPPT) for the photovoltaic (PV) systems applications. In
contrast, the PIC microcontrollers are recommended to be used due to its low cost
and simplicity compared with the other hardware devices. In this paper, the
Arduino microcontroller is used to validate the function of perturb and observe
(P&O) MPPT controller used with a stand-alone PV system under constant climate
conditions and step variations in the connected load. From the comparison of
experimental and simulation results, the available maximum power of the solar
panel is successfully extracted by using Arduino Uno board irrespective of the
variable load conditions

Obeidi Nabil, Belmadani Bachir, Abdelkrim ALLAG in their paper


“Implementation of a new MPPT Technique for PV systems using a Boost
Converter \driven by Arduino MEGA” The present paper aims to propose an
implement of perturb and observe (P&O) technique for photovoltaic systems using
a boost converter driven by Arduino MEGA 2560 in a view of providing an
efficiency improvement of PV system. This method has been further characterised
by considering its fast ability of tracking the (MPPT) and reducing the
computational time using digital controls of the Arduino MEGA 2560
microcontroller. In the present paper, we proposed a simple method for
implementing the P&O technique by interrupts of the Arduino MEGA. Indeed, the
(P&O-MPPT) technique implementation technique has been carried out with
regard to the usage of the developed costless instruments. oreover, the regulation
of (P&O) MPPT technique which is responsible for the switching of MOSFET
exists in the dc-dc boost converter so that it can extract the MPP. This work has
been therefore simulated by Matlab/Simulink and programing by C code, and
consequently, in a view of the above, the (P&O) algorithm has been applied in a
real time by Arduino MEGA to decrease the cost of the MPPT controller and to
show the results of the performance for the proposed technique

Jyotismita Mishra, Subhadip Das, Deepak Kumar, Monalisa Pattnaik


in their paper “Performance Comparison of P&O and INC MPPT Algorithm
for a Stand-alone PV System” This paper presents a comparative experimental
7|Page
study of Perturb and observe (P&O) and Incremental conductance (Inc) MPPT
algorithm for an autonomous photovoltaic (PV) system. The steady-state and
transient behavior of both the techniques are analyzed thoroughly. A laboratory
setup for the stand-alone PV system is developed using a boost converter and the
MPPT algorithm is implemented in a 10-bit Arduino mega
2560 micro-controller. The functionality of both the algorithms is observed at
different irradiance and duty cycle perturbation which confirms that the
performance of Inc algorithm is better than P&O method

Saurabh Thakran, Jaspreet Singh, Prof. Rachan Garg, Dr. Priya


Mahajan in their paper “In this paper Perturbation and observe algorithm of
MPPT tracking is presented and hardware of SPV system has been designed.
Theoretical and design analysis of hardware is described in detail.The MPPT
algorithm is written in Arduino IDE and implemented in Arduino UNO R3.
MATLAB/Simulink has been used to simulate the SPV system,to demonstrate the
performance of MPPT controller and to compare the hardware results.”

Ashwin Chandwani, Abhay Kothari in their paper “Design,


Simulation and Implementation of Maximum Power Point Tracking (MPPT)
for Solar based Renewable Systems” This paper presents a holistic view of the
concept of Maximum Power Point Tracking (MPPT) generally used and
implemented for solar applications, so as to maximize the output for a conventional
solar panel. This paper comprises of detailed study in the field of MPPT in a
simulative environment using MATLAB and the same results are reproduced in
hardware using Perturb and Observe (P&O) algorithm. Improvement in the
performance of a conventional solar panel is seen through the simulation in terms
of output voltage of the boost converter connected as the main DC-DC converter
device. This is performed by changing the irradiance to the solar panel. The
waveforms of current, voltage and thus the output power show its maximized
value. The hardware results include the change in duty cycle with change in
irradiance and thus signify the change in output voltage and current for a flyback
converter controlled by the MPPT algorithm.

8|Page
CHAPTER 2
PHOTOVOLTAIC SYSTEM

2.1 Photovoltaic Panels:


The whole process by which a photovoltaic cell works is fairly
complex. To put it quite simply the mechanism is as such; the light excites
electrons to move from one layer to another through semi-conductive silicon
materials. This ultimately produces an electric current. This whole process is called
the photo electric effect. Solar cells called photovoltaic which are made from thin
slices of crystalline silicon, gallium arsenide, or other semiconductor materials
which are capable of converting solar radiation directly into electricity.

The generation of electric current happens inside the depletion zone of the p-n
junction. The area around the p-n junction is called the depletion zone where the
electrons from the “n-type” silicon, have diffused into the holes of the “p-type”
material. Whenever a photon of light hits the surface and is absorbed by one of
these atoms in the “n-type” silicon it will dislodge an electron, thus creating a free
electron and a hole. The free electron and hole produced have sufficient energy to
jump out of the depletion zone. If a wire is connected from the cathode (n-type
silicon) to the anode (p-type silicon) electrons will flow (current) through the wire.
The electron is attracted to the positive charge of the “p-type” material and travels
through the external load creating a flow of electric current. The hole which is

9|Page
created by the freed electron is attracted to the negative charge of “n-type” material
and drifts to the back electrical contact. As the electron enters the “p-type” silicon
from the back electrical contact it combines with the hole reestablishing the
electrical neutrality. By connecting large numbers of these cells into modules, the
cost of photovoltaic electricity gets reduced to certain amount per kilowatt-hour.
The simplest solar cells provide small amounts of power for watches and
calculators. There are more complex systems which can provide electricity to
houses and electric grids.

2.2 Photovoltaic Modules/Array:


The basic building blocks of solar or PV system are the solar or
PV cells. These individual cells are quite small producing about 1 or 2 KW of
power. In order to boost this power output of the PV cells they have to be
connected together forming larger units called modules. These modules however
can be connected to form arrays which are interconnected to produce more power.
By connecting these cells or modules in series the voltage can be increased. On the
other hand by connecting the cells or modules in parallel the output current can
reach higher values.

The PV devices can be made using different types of semiconductor materials and
can be arranged in various structures. There are mainly three types of materials
used for solar cells which are silicon, polycrystalline thin films, and single
crystalline thin film.

2.3 Photovoltaic cell model:


The characteristics of a PV cell can be further explained using an
equivalent circuit shown in the Fig: 2.3. The PV model consists of a current source,
a diode and a series resistance. The effect of parallel resistance represents the
10 | P a g e
leakage resistance of the cell which is very small in a single module. The current
source represents the current which is generated by the photons, and its output is
constant under constant temperature and constant incident radiation of light.
Current-voltage (I-V) curves are obtained by exposing the cell to a constant level
of light, while maintaining a constant cell temperature, varying the resistance of
the load, and measuring the produced current. When an I-V curve is drawn it
normally passes through two points:
 Short-circuit current (Isc): This is the current produced when the positive
and negative terminals of the cell are short-circuited (i.e., when the solar cell
is short circuited), and the voltage between the terminals is zero, which
corresponds to zero load resistance.
 Open-circuit voltage (Voc): This is the voltage across the positive and
negative terminals under open-circuit conditions, when the current is zero,
which corresponds to infinite load resistance.

The current-voltage relationship of a PV cell is given below:


11 | P a g e
2.4 Maximum Power Point Tracking:
The Power-Voltage or current-voltage curve of a solar panel,
there is a peak operating point at which the Solar Panel delivers the
maximum possible power to the load. This unique point is called the
maximum power point (MPP) of solar panel. The photovoltaic nature of
the solar panels makes the (Power-Voltage or current-voltage) curves
depend on temperature and irradiance (the flux of radiant energy per unit
area) levels. In other words depending on the amount of sunlight per unit
area of the panels the curve will vary hence the peak point or MPP will
vary accordingly. Therefore it can be deduced that the operating current
and voltage which maximize power output will change with
environmental conditions.

12 | P a g e
From the Fig: 2.5 it can be seen that the MPP depends on certain
conditions such as the irradiance for instance which is given by the symbol ‘G’. At
different values of G from the graph it can be seen how the values of MPP has
slightly shifted. It is hence the work of charge controller using certain algorithm to
calculate the MPP at every instance providing the maximum power hence making
the system more efficient. In these applications, the load can demand more power
than the PV system can deliver. There are many different approaches to
maximizing the power from a PV system, this range from using simple voltage
relationships to more complexes multiple sample based analysis.

2.5 MPPT Methods:


There are some conventional methods for MPPT. Seven of
them are listed here. These methods include:
1. Constant Voltage method
2. Open Circuit Voltage method
3. Short Circuit Current method
4. Perturb and Observe method
5. Incremental Conductance method
6. Temperature method
7. Temperature Parametric method
Out of these methods mentioned the first five methods has been
discussed in details in this paper.

13 | P a g e
2.6 Constant Voltage Method:
The constant voltage method is quite a simple method but an
inefficient method. This method simply uses single voltage to represent the system.
In some cases this value is set by an external resistor connected to a current source
pin of the control IC. For the various different irradiance variations, the method
will collect about 80% of the available maximum power. The actual performance
will be determined by the average level of irradiance. Since the maximum power
point of a solar PVF module does not always lie between 70-80 percent of Voc,
this is why the tracking efficiency is low in this case.

2.7 Open Circuit Voltage Method:


Another method which is similar to the constant voltage method but an
improvement to it is the Open Circuit Voltage method which uses VOC to calculate
VMPP. Once the system obtains the VOC value, Vmpp is calculated by,

The VOC is the open circuit voltage of the PV Panel. The k value is
typically between to 0.7 to 0.8 as it is always less than unity (commonly used as
0.76). It is necessary to update VOC occasionally to compensate for any
temperature change. Sampling the VOC value can also help correct for temperature
changes and to some degree changes irradiance. Monitoring the input current can
indicate when the VOC should be re-

14 | P a g e
measured. The k value is a function of the logarithmic function of the irradiance,
increasing in value as the irradiance increases.

Benefits of using this method:


 The cost is relatively low.
 It is a much simpler method and easy to implement.

Drawbacks of this method:


 It is not a very accurate method and may not operate exactly at the
Maximum Power Point.
 The open circuit of the solar PV module varies with temperature so the open
circuit
voltage needs to be measured continuously for temperature variations.

2.8 Short Circuit Current Method:


This technique is also referred to as the constant current method. The
short circuit current method uses a value of ISC (Short Circuit Current) to estimate
IMPP (Maximum power point current). The Isc is the short circuit current of the PV
panel. Impp = k x ISC This method uses a short load pulse to generate a short circuit
condition. During the short circuit pulse, the input voltage will go to zero, so the
power conversion circuit must be powered from some other source. One advantage
of this system is the tolerance for input capacitance compared to the Voc method.
The k values are typically close to 0.9 to 0.98 (always smaller than 1)
VOC value, Vmpp is calculated by,

Benefits of using this method:


 It is simple and implementation cost is low.

15 | P a g e
 No input is required for this method

Drawbacks of this method:


 In most cases the irradiation is never exactly at the MPP due to variations
on the array that are not considered (it is not always accurate).
 Data varies under different weather conditions and locations.
 It has low efficiency. In these two methods we have to choose the right
constant k value carefully, to accurately calibrate the solar panel.

2.9 Perturb and Observe Method:


This method is a widely used approach to determine the MPP. In this
method the controller adjusts the voltage by a small amount from the array and
measures power, if the power increases, then there are further adjustments made in
the direction until power no longer increases. This is called the Perturb and
Observe Method. This method works by perturbing the system by increasing or
decreasing the PV module operating voltage and observing its impact on the output
power supplied by the module. The voltage to a cell is increased initially, if the
output power increase, the voltage is persistently increased till the point until the

16 | P a g e
output power starts declining. Once the output power starts decreasing, the voltage
to the cell is decreased until the point when the maximum power is reached. This
process is continued until the MPPT is attained. This results in an oscillation of the
output power around the MPP. The PV module’s output power curve is a function
of the voltage (P-V curve), at the constant irradiance and the constant module
temperature, it is also assumed that the PV module is operating at a point which is
away from the maximum power point. Now if the operating voltage of the PV
module is perturbed by a minute amount the resulting power P is then observed. If
it is seen that the P is positive, then in that case it is supposed that it has moved the
operating point closer to the MPP. Hence further voltage perturbations in the same
direction will continue moving the operating point toward the MPP. If the P is
negative, in that case the operating point will be moving away from the MPP and
the path of perturbation should be inverted to move back toward the MPP.

Benefits of using the P&O method:


 The simplicity of its algorithm
 Ease of implementation
 It has comparatively less implementation cost
 It is comparatively a more accurate method
17 | P a g e
Limitations to using this method:
 It cannot determine when it has actually reached the MPP. Under steady
state operation the output power oscillates around the MPP.
 This method is quite slow to find the MPP if the voltage is far away from
MPP
 In any case if there is any shadow on any of the panels (as they are in series
of parallel) then the power-voltage curve of the PV will have several peaks
and the P&O will not be able to distinguish them and find the genuine peak.

2.10 Incremental Conductance Method:


An observation based on a P-V characteristic curve the Incremental
Conductance Method was planned. In 1993 when this algorithm was made it was
intended to overcome some drawbacks of the P&O algorithm. The MPP can be
calculated with the help of the relation between dI/dV and -I/V. The incremental
conductance method is based on the fact that, the slope of the PV array of the
power curve is zero at the MPP, positive on the left of the MPP and negative on the
right on the MPP. This can be given by,

So if the MPP lies on right side, dl/dV < -I/V and then the Photo Voltaic voltage
must be reduced to reach the MPP. In order to find the MPP IC method can be
used, it has been known to improve the PV efficiency, reduce power loss and also
the system cost. When IC method is implemented in a microcontroller it is seen to
produce a much more stable performance compared to P&O method. The

18 | P a g e
procedure starts with measuring the present values of PV module voltage and
current. Then, it computes the incremental changes, dI (change in current) and dV
(change in voltage), which uses the present and previous values of the voltage and
current. With the help of the relationships in the equations mentioned above the
main check is then done. If the condition satisfies the inequality equation shown
above, it is assumed that the operating point is at the left side of the MPP thus must
be moved to the right by increasing the module voltage. Similarly, if the condition
satisfies the inequality equation it is assumed that the operating point is at the right
side of the MPP, thus must be moved to the left by decreasing the module voltage
Benefits:
 It is able to successfully detect any changes in the irradiation and shift its
MPP value by adjusting the duty cycle.
 It has a good tracking efficiency
 This method reduces oscillation around the MPP point
 It is able to reduce power loss and system cost as well
Drawbacks:
 The computational time is increased due to slowing down of the sampling
Frequency resulting from the higher complexity of the algorithm compared
to the P&O method.

19 | P a g e
CHAPTER-3
BUCK CONVERTER
3.1 INTRODUCTION:
DC- DC converter or switch is a voltage converter which converts
voltage level. Among other converters, Buck converter is a ubiquitously used for
converting a high voltage to a low voltage efficiently. We used buck converter so
that we can vary input voltage as our output battery is fixed in this case. A buck
converter circuit is shown below:

Fig: 4.5 simplified buck converter


A buck converter is designed by MOSFET, diode, inductor, capacitor
and resistor assembling by the above order. When a pulse width comes to the
MOSFET then it works a switch to open or close the circuit. During switch is on
because of reverse biased condition diode remains open during on period. As the
diode is open current flow through inductor increases which means inductor stores
energy.

Fig: 4.6 equivalent circuit for switch on period

20 | P a g e
On the other hand switch on period when switch off that means the
circuit is open and because of forward biased condition the diode is closed. At that
time charge or current through inductor decreases that means inductor started to
discharge through the diode and RC combination till off period.

Fig: 4.7 Equivalent circuit for switch off period


The duty ratio of on and off condition is calculated by using the
following formula:
D = V0 / Vs
Where,
D = Duty ratio
V0 = Input voltage from solar
Vs = Output voltage to the load
To calculate the minimum inductance we have to take use much higher switching
frequency. The
equation we use to calculate minimum inductance is:
Lmin = (1-D) R / 2Fs
Where,
D = Duty ratio
R = Load resistance
Fs = Switching frequency
In practical the inductance is higher than Lmin. To calculate proper inductance
from the circuit we
use
L = V0 (1-D) / d(iL).Fs
Where,
L = Inductance
V0 = Output voltage to the load

21 | P a g e
D = Duty ratio
d(iL) = Change in inductance current
Fs = Switching frequency
The value of capacitor is determined by:
C = (1-D) / 8L(dV0/V0)Fs
Where,
C = Capacitance
D = Duty ratio
(dV0/V0) = Output voltage ripple
Fs = Switching frequency
Value of components:

22 | P a g e
CHAPTER 4
HARDWARE SECTION
4.1 Panel specifications:
The PV module we used is based on polycrystalline silicon diode.
Usually, this type of PV module is used in home usage, projectbased work where
the cost should be in a reasonable range. The specifications provided with our PV
module is given below.
 Power (max): 15W
 Cell type & efficiency: polycrystalline
 Dimensions:285 mm *350 mm *22 mm
 Tolerance: 0 ~ ±3 %
 Voltage at maximum point (V mp):18 V
 Current at maximum point (I mp) :1.25 A
 Open circuit voltage (Voc): 19V
 Short circuit current (I sc): 0.84A
 Module application: class A
 Test condition: 1000W/m2, AM 1.5, 25°C

4.2 ARDUINO AS MICROCONTROLLER:


An open-source hardware platform based on an Atmel AVR 8-bit
microcontroller which is RISC architecture micro controller, designed for higher
languages developed in Trondheim, Norway in 1996. Reduced instruction set
computing, or RISC, is a CPU design strategy based on the insight that simplified
(as opposed to complex) instructions can provide higher performance if this
simplicity enables much faster execution of each instruction. A computer based on
this strategy is a reduced instruction set computer, also called RISC

An Arduino board has complementary components to facilitate


programming and incorporation into other circuits. An important aspect of the
Arduino is the standard way that connectors are exposed, allowing the CPU board
to be connected to a variety of interchangeable add-on modules known as shields.
Some shields communicate with the Arduino board directly over various pins, but
many shields are individually addressable via an I²C serial bus, allowing many
shields to be stacked and used in parallel. Official Arduino’s have used the mega
AVR series of chips, specifically the ATmega8, ATmega168, ATmega328,
ATmega1280, and ATmega2560. A handful of other processors have been used by
Arduino compatibles. Most boards include a 5 volt linear regulator and a 16 MHz
23 | P a g e
crystal oscillator (or ceramic resonator in some variants), although some designs
such as the LilyPad run at 8 MHz and dispense with the onboard voltage regulator
due to specific form-factor restrictions. An Arduino's microcontroller is also pre-
programmed with a boot loader that simplifies uploading of programs to the on-
chip flash memory, compared with other devices that typically need an external
programmer. This makes using an Arduino more straightforward by allowing the
use of an ordinary computer as the programmer.

The Arduino board exposes most of the microcontroller's I/O pins for
use by other circuits. The Diecimila, Duemilanove, and current Uno provide 14
digital I/O pins, six of which can produce pulse-width modulated signals, and six
analog inputs. These pins are on the top of the board, via female 0.10-inch (2.5
mm) headers. Several plug-in application shields are also commercially available.

ARDUINO UNO

Figure 15:Arduino
The Arduino Uno is a microcontroller board based on the
ATmega328. It has 14 digital input/output pins (of which 6 can be used as
PWM outputs), 6 analog inputs, a 16 MHz ceramic resonator, a USB
connection, a power jack, an ICSP header, and a reset button. It contains
everything needed to support

The microcontroller; simply connect it to a computer with a USB


cable or power it with a AC-to-DC adapter or battery to get started.
The Uno differs from all preceding boards in that it does not use the FTDI USB-to
serial driver chip. Instead, it features the Atmega16U2 (Atmega8U2 up to version
R2) programmed as a USB-to-serial converter.
1.0 pin out: added SDA and SCL pins that are near to the AREF pin and two other
new pins placed near to the RESET pin, the IOREF that allow the shields to adapt

24 | P a g e
to the voltage provided from the board. In future, shields will be compatible both
with the board that use the AVR, which operate with 5V and with the Arduino Due
that operate with 3.3V. The second one is a not connected pin, which is reserved
for future purposes.
"Uno" means one in Italian and is named to mark the upcoming
release of Arduino 1.0. The Uno and version 1.0 will be the reference versions of
Arduino, moving forward. The Uno is the latest in a series of USB Arduino boards,
and the reference model for the Arduino platform.

SUMMARY:
Schematic & Reference Design:

Figure 16: Arduino Schematic Diagram

The Arduino reference design can use an Atmega8, 168, or 328,


Current models use an ATmega328, but an Atmega8 is shown in the schematic for
reference. The pin configuration is identical on all three processors.
Power:
The Arduino Uno can be powered via the USB connection or with
an external power supply. The power source is selected automatically.

25 | P a g e
External (non-USB) power can come either from an AC-to-DC adapter (wall-wart)
or battery. The adapter can be connected by plugging a 2.1mm center-positive plug
into the board's power jack. Leads from a battery can be inserted in the Gnd and
Vin pin headers of the POWER connector.
The board can operate on an external supply of 6 to 20 volts. If
supplied with less than 7V, however, the 5V pin may supply less than five volts
and the board may be unstable. If using more than 12V, the voltage regulator may
overheat and damage the board. The recommended range is 7 to 12 volts.

The power pins are as follows:


VIN: The input voltage to the Arduino board when it's using an
external power source (as opposed to 5 volts from the USB connection or other
regulated power source). You can supply voltage through this pin, or, if supplying
voltage via the power jack, access it through this pin.
5V: This pin outputs a regulated 5V from the regulator on the board.
The board can be supplied with power either from the DC power jack (7 - 12V),
the USB connector (5V), or the VIN pin of the board (7-12V). Supplying voltage
via the 5V or 3.3V pins bypasses the regulator, and can damage your board. We
don't advise it.
3V3: A 3.3 volt supply generated by the on-board regulator. Maximum
current draw is 50 mA
GND: Ground pins.
IOREF: This pin on the Arduino board provides the voltage reference
with which the microcontroller operates. A properly configured shield can read the
IOREF pin voltage and select the appropriate power source or enable voltage
translators on the outputs for working with the 5V or 3.3V.

MEMORY:
The ATmega328 has 32 KB (with 0.5 KB used for the bootloader). It
also has 2 KB of SRAM and 1 KB of EEPROM.
Input and Output:
Each of the 14 digital pins on the Uno can be used as an input or
output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate
at 5 volts. Each pin can provide or receive a maximum of 40 mA and has an
internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition,
some pins have specialized functions:
Serial: 0 (RX) and 1 (TX): Used to receive (RX) and transmit (TX)
TTL serial data. These pins are connected to the corresponding pins of the
ATmega8U2 USB-to-TTL Serial chip.
26 | P a g e
External Interrupts: 2 and 3: These pins can be configured to
trigger an interrupt on a low value, a rising or falling edge, or a change in value.
See the attachInterrupt() function for details.

PWM: 3, 5, 6, 9, 10, and 11: Provide 8-bit PWM output with the
analogWrite() function.

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): These pins support


SPI communication using the SPI library.

LED: 13: There is a built-in LED connected to digital pin 13. When the
pin is HIGH value, the LED is on, when the pin is LOW, it's off. The Uno has 6
analog inputs, labeled A0 through A5, each of which provide 10 bits of resolution
(i.e. 1024 different values). By default they measure from ground to 5 volts, though
is it possible to change the upper end of their range using the AREF pin and the
analogReference() function. Additionally, some pins have specialized
functionality:

TWI: A4 or SDA pin and A5 or SCL pin. Support TWI


communication using the Wire library.There are a couple of other pins on the
board:

AREF. Reference voltage for the analog inputs. Used with


analogReference().

Reset. Bring this line LOW to reset the microcontroller. Typically


used to add a reset button to shields which block the one on the board.

Communication:
The Arduino Uno has a number of facilities for communicating with a
computer, another Arduino, or other microcontrollers. The ATmega328 provides
UART TTL (5V) serial communication, which is available on digital pins 0 (RX)
and 1 (TX). An ATmega16U2 on the board channels this serial communication
over USB and appears as a virtual com port to software on the computer. The
'16U2 firmware uses the standard USB COM drivers, and no external driver is
needed. However, on Windows, a .inf file is required. The Arduino software
includes a serial monitor which allows simple textual data to be sent to and from

27 | P a g e
the Arduino board. The RX and TX LEDs on the board will flash when data is
being transmitted via the USB-to-serial chip and USB connection to the computer
(but not for serial communication on pins 0 and 1).
A Software Serial library allows for serial communication on any of
the Uno's digital pins. The ATmega328 also supports I2C (TWI) and SPI
communication. The Arduino software includes a Wire library to simplify use of
the I2C bus. For SPI communication, use the SPI library.

PROGRAMMING:
The Arduino Uno can be programmed with the Arduino software
.Select "Arduino Uno from the Tools > Board menu (according to the
microcontroller on your board). The ATmega328 on the Arduino Uno comes
preburned with a boot loader that allows you to upload new code to it without the
use of an external hardware programmer. It communicates using the original
STK500 protocol (reference, C header files).
You can also bypass the boot loader and program the microcontroller
through the ICSP (In-Circuit Serial Programming) header. The ATmega16U2 (or
8U2 in the rev1 and rev2 boards) firmware source code is available. The
ATmega16U2/8U2 is loaded with a DFU boot loader, which can be activated by:
On Rev1 boards: connecting the solder jumper on the back of the board (near the
map of Italy) and then resetting the 8U2.

On Rev2 or later boards: there is a resistor that pulling the 8U2/16U2


HWB line to ground, making it easier to put into DFU mode.

USB Overcurrent Protection:


The Arduino Uno has a resettable polyfuse that protects your
computer's USB ports from shorts and overcurrent. Although most computers
provide their own internal protection, the fuse provides an extra layer of
protection. If more than 500 mA is applied to the USB port, the fuse will
automatically break the connection until the short or overload is removed.

Physical Characteristics:
The maximum length and width of the Uno PCB are 2.7 and 2.1 inches
respectively, with the USB connector and power jack extending beyond the
former dimension. Four screw holes allow the board to be attached to a surface
or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16"), not
an even multiple of the 100mil spacing of the other pins.

28 | P a g e
4.3 CURRENT SENSING:
To sense the current generated by the PV module in different
conditions we used a hall-effect current sensor that is manufactured commercially
for sensing AC, DC current to use in industrial or research or communication
systems. Most importantly, it is the most preferable microchip assembled Ic to be
used with microcontrollers as Arduino. (MicroSystems, 2016)

fig: 4.2 pin configuration

29 | P a g e
fig: 4.3 calibration procedure
For establishing the currents sensing equation we tested the current sensor and
gathered calibration data. We set up the sensor with our 50w PV module. The
connections were made as the pin outs configuration described above. With the help
of the Arduino we ran the program and we varied the supplied current of the PV
module by shading it partially or fully and collected data for 10 instances. Than we
put the data in MATLAB and did regression analysis. Henceforth, we used polyfit
function of MATLAB to get the most fitted output and to establish our equation.
The equation we got is Y = 1.5625*(X)-3.7375

4.4 VOLATAGE SENSING:


The main target of charge controller is to charge up the battery by
supplying it the required level of voltage. It is achieved by Arduino by the preset
algorithm of MPP. Notably, Arduino microcontroller chip consists of a built-in
analog to digital converter. By this conversion it enables the analog ac input to
convert into quantized digital values and then fed to the algorithm to compare the
voltage level with previous output level. Since, in our proposed system we used a
buck converter to step down the panel output voltage so we had to implement a
voltage division setup to acquire our desired value. Purposely, two sets of voltage
divider configuration is introduced in our system. Correspondingly, one is used in
input side and other in the output side before the voltage is fed to the battery. The
voltage level sensed in those parts is supplied to Arduino by connecting them to
Arduino analog pin and therefore it gets converted to digital quantized values.
Ultimately, voltage of the battery and PV module is sensed in this way.

30 | P a g e
CHAPTER 5
Design and implementation:

Schematics of the complete circuit with connectors to Arduino and Solar input

In this circuit the output which means battery voltage is almost


remain constant. For this, we have to vary input which is solar voltage to reach or
supply sufficient voltage to charge battery. So, for studying the circuit if we start
from the beginning, current sensor senses current and voltage divider senses
voltage. Before the battery there is current sensor and a voltage divider that
calculates the battery condition. When the battery is charging at that time by
measuring and using MPPT method voltage will vary by changing duty cycle to
give the maximum power. At the time when current is very low the panel voltage
will be very high. So arduino will set the duty cycle to zero so that the MOSFET
remain open and highest voltage can be read while the circuit will remain open.
When current start to increase then if much voltage supply is not needed then
Arduino will start to increase duty cycle slowly which means MOSFET will be
short and then voltage will start to decrease. By using this process the MPPT
method will try to give maximum power at any time and at any condition.

31 | P a g e
I-V AND P-V CHARACTERISTICS CURVE:

I-V charcteristics curve

P-V characteristic curve

32 | P a g e
DATA COLLECTED:

33 | P a g e
CHAPTER 6
Conclusion:
6.1 SUMMARY:
In the final analysis, this thesis presents an efficient photo
voltaic system with the capability of tracking the maximum power point
using incremental conductance method. Each components of this system
such as the solar panel, charge controller, DC-DC converter has all been
discussed about. The coding in terms of embedded language in Arduino
and MATLAB simulations of the I-V characteristics for load and
irradiations variation has been presented. Since the purpose of this thesis
was to design a more efficient MPPT solar charge controller using an
Arduino, so we have explained the maximum power point tracking and
the procedure we have followed to achieve that point. The use of an
Arduino and its advantages has been provided in this thesis along with
the converter used for our design of the solar charge controller. We have
later done the hardware implementation and we collected data to
differentiate the efficient method.

6.2 FUTURE SCOPE:


Solar energy is one of the sustainable and natural of others
renewable resources. Most importantly it is the most cost efficient
energy source we can use in our favor of financial support. In regard of
efficient charging from the solar energy via solar panel is controlled by
solar charge controller. To increase the efficient of the charging from the
PV module we need to improve the charge controller which is done by
maximum power point tracking. There are several methods in the
maximum power point tracking, For both cost and charge efficient we
use incremental conductance method which use buck convertors.
Additionally, more digital logic can also be implemented for maximum
output hence reducing the physical work.

34 | P a g e
References:
1.GUIZA Dhaouadi, OUNNAS Djamel, SOUFI Youcef, CHENIKHE
Salah “Implementation of Incremental Conductance Based MPPT
Algorithm for Photovoltaic System”.

2. Ammar AL-GIZI, Mohammed AL-SAADI, Sarab AL-CHLAIHAWI,


Aurelian CRACIUNESCU, Mustafa Abbas FADEL “Experimental
Installation of Photovoltaic MPPT Controller Using Arduino
Board”

3. Obeidi Nabil, Belmadani Bachir, Abdelkrim ALLAG


“Implementation of a new MPPT Technique for PV systems using a
Boost Converter \driven by Arduino MEGA”

4. Jyotismita Mishra, Subhadip Das, Deepak Kumar, Monalisa Pattnaik


“Performance Comparison of P&O and INC MPPT Algorithm for a
Stand-alone PV System”

5. Ashwin Chandwani, Abhay Kothari “Design, Simulation and


Implementation of Maximum Power Point Tracking (MPPT) for
Solar based Renewable Systems”

6. choudhary, dhananjay and saxena, anmol ratna (2014) ‘DC-DC buck


converter for MPPT of PV system’, International Journal of
Emerging Technology and Advanced Engineering, 4(7).

35 | P a g e
7. Kotak, V.C. and Tyagi, P. (2013) “DC To DC Converter in
Maximum Power Point Tracker’, International Journal of
Advanced Research in Electrical, Electronics and Instrumentation
Engineering, 2(12)”.

8. Harjai, A., Bhardwaj, A. and Sandhibigraha, M. (no date) ‘STUDY


OF MAXIMUM POWER POINT TRACKING (MPPT)
TECHNIQUES IN A SOLAR PHOTOVOLTAIC ARRAY’,

9.Putri, R.I., Wibowo, S. and Rifa’i, c M. (2015) ‘Maximum power


point tracking for Photovoltaic using incremental Conductance
method ☆’, Energy Procedia, 68, pp. 22–30.
doi:10.1016/j.egypro.2015.03.228

10. Kumari, S.J., Babu, C.S. and Professor, A. (2011) ‘COMPARISON


OF MAXIMUM POWER POINT TRACKING ALGORITHMS
FOR PHOTOVOLTAIC SYSTEM’,International Journal of
Advances in Engineering & Technology ©IJAET, 1(5), pp. 133–148.

11. Rahman, S., Sultana, N. and Masud, Q. (2012) Design of a Charge


Controller Circuit with Maximum Power Point Tracker (MPPT) for
Photovoltaic System. Thesis Report, BRAC University (2012),
Available at:
http://dspace.bracu.ac.bd/xmlui/bitstream/handle/10361/2389/Design%2
0of%20a%20Charge
%20Controller%20Circuit.pdf.pdf?sequence=1&isAllowed=y
(Accessed: 15 May 2016).

36 | P a g e
APPENDIX A
Code implemented:

#include <PWM.h>
#define panelMeter A0 // Analog input pin for PV voltmeter
#define batteryMeter A1 // Analog input pin for battery voltmeter
#define driver 3// PWM output pin to mosfet driver (needs to be 3 or 11 with safe timer)
#define shutDown 5 // connected to shutdown pin of mosfet driver (needs to be a PWM pin)
#define fan 6 // digital pin controlling the fan (needs to be a PWM pin)
#define load 4 // digital pin controlling the load MOSFET (use 4 because
PWM is not needed)
#define Vbulk 130 // Bulk voltage set-point (deci Volts)
#define lowBatt 110 // Low battery voltage set-point (deci Volts)
#define Vmax 150 // Maximum voltage the batteries should hit before
throwing an error (deci Volts)
#define check 15000 // 15 seconds in milliseconds
#define Vfloat 136 // Float voltage set-point (deci Volts)
long panelVolts = 0; // Solar panel Voltage (deci Volts)
long batteryVolts = 120; // Battery Voltage (deci Volts)
long Voc = 0; // Panel open-circuit voltage (deci Volts)
long Vcvm = 0; // Estimted voltage for MPP with CVM (deci Volts)
int pulseWidth = 100; // Digital value of pwm (should never be 0 or 255)
int lastpulseWidth = 100; // remember the value of pulseWidth for random resets
int pwm = 0; // Percentage of PWM
int b = 1; // do once
int stepAmount = 1; // Scaling factor of pwm for large differences in voltage
int inByte = 0; // incoming serial byte
int panelADC = 0; // for sending through serial
int batteryADC = 0; // for sending through serial
int state = 0; // for sending through serial
int LEDstate = LOW; // to record the state of the LED
//int errorCount = 0; // record the # of times an error has occurred
int32_t frequency = 40000; // Frequency (in HZ)
unsigned long time = 0; // Timer variable for timed charging cycles
unsigned long time2 = 0; // Second timer variable for blink cycles
String enable = "starting"; // string of text to show enable pin of MOSFET driver
String SOC = "Initializing"; // string of text to show the charger state
String Load = "Off"; // string of text to show the load state
enum charger_mode {no_battery, sleep, bulk, Float, error} charger_state; // enumerated
variable that holds state for charger state machine
void setup() {
Serial.begin(115200) // faster communication means faster tracking and less voltage
overshoot / undershoot

37 | P a g e
pinMode(13, OUTPUT); // set the LED pin as an output
pinMode(load, OUTPUT)// set the load pin as an output
pinMode(shutDown, OUTPUT);// set the shutDown pin as an output
pinMode(fan, OUTPUT);// set the fan pin as an output
disable_charger();// make sure the MOSFET driver is off
InitTimersSafe();// This is part of the PWM library. It allows you to set almost any PWM
frequency you want
charger_state = sleep; // start with charger state as sleep
bool success = SetPinFrequencySafe(driver, frequency);// if setting the frequency to the
desired pin was successful
if(success){
digitalWrite(13, HIGH);// turn on the LED
Serial.println("Timer frequency set success!");//and print it to the serialport
}
else{ // if not,
digitalWrite(13, LOW); // keep the LED off
Serial.println("Timer frequency set failed!");// and print it to the serialport
}
update_Vcvm();
//establishContact(); // send a byte to establish contact until receiver responds
(use with sendtogui)
}
void loop() { // Main loop
read_data(); // read the analog inputs
mode_select(); // use that info to decide what charging state we should be in
set_charger(); // run the selected charger sequence
run_load(); // turn the load on or off, depending on the battery voltage
run_fan(); // turn the fan on or off, depending on the charging cycle
//Use only one of these 2:
//sendtogui(); // for use with processing sketch
print_data(); // print data to the serial port so that humans know what you're doing
}
void read_data() { // function for reading analog inputs
panelVolts = 0;
for(int i=0;i<100;i++){
panelVolts += analogRead(panelMeter); // read the panel voltage 100 times and add the
values together
}
batteryVolts = 0;
for(int i=0;i<100;i++){
batteryVolts += analogRead(batteryMeter); // read the battery voltage 100 times
and add the values together
}

38 | P a g e
panelVolts = panelVolts/100; // Divide by 100 to get the average value
batteryVolts = batteryVolts/100;// Divide by 100 to get the average value
//panelADC = panelVolts; // for sending through serial (use with sendtogui)
//batteryADC = batteryVolts; // for sending through serial (use with sendtogui)
//panelADC = panelADC/4;// for sending through serial (use with sendtogui)
//batteryADC = batteryADC/4; // for sending through serial (use with sendtogui)
panelVolts = (panelVolts*488)/1197;// multiply the averaged ADC value by the scaling
factor to get a number in deci volts
batteryVolts = (batteryVolts*488)/2441;// multiply the averaged ADC value by the
scaling factor to get a number in deci volts
}
void mode_select(){
if (batteryVolts < 100) charger_state = no_battery ; // If battery voltage is below
10, there is no battery connected or dead / wrong battery
else if (batteryVolts > Vmax) charger_state = error;
// If battery voltage is over 15, there's a problem
else if ((batteryVolts > 100) && (batteryVolts < Vmax) && (panelVolts > Vmax)){
// If battery voltage is in the normal range and there is light on the panel
if (batteryVolts >= (Vfloat-1)) charger_state = Float;
// If battery voltage is above 13.5, go into float charging
else charger_state = bulk;
// If battery voltage is less than 13.5, go into bulk charging
}
else if (panelVolts < Vmax){
// If there's no light on the panel, go to sleep
charger_state = sleep;
}
}
void set_charger(){ // function for selecting the charging state

switch (charger_state){ // skip to the state that is currently set


case no_battery: // if none of the other cases are satisfied,
disable_charger(); // turn off the MOSFET driver
error_blink(); // blink LED to indicate an error
SOC = "No Battery!";
state = 0;
break;
case sleep: // the charger is in the sleep state
disable_charger();// disable the charger so that current doesn't leak back into
the solar panel
SOC = "Sleep";
sleep_blink();
state = 1;

39 | P a g e
pulseWidth = 100;
break;
case bulk: // the charger is in the bulk state
SOC = "Bulk";
CVM(); // begin the MPPT algorithm
run_charger(); // enable the MOSFET driver
digitalWrite(13, HIGH); // turn the LED on to indicate bulk
state = 2;
break;
case Float: // the charger is in the float state, it uses PWM instead of MPPT
SOC = "Float";
pulseWidth = 245;// set the pulseWidth to max (MPP doesn't matter when the battery is
full)
if (batteryVolts < Vfloat) run_charger(); // If battery voltage is below 13.6
enable the MOSFET driver
else disable_charger(); // If above, disable the MOSFET driver
digitalWrite(13, LOW); // Turn the LED off to indicate float
state = 3;
break;
case error: // if there's something wrong
disable_charger();// turn off the MOSFET driver
error_blink(); // blink LED to indicate an error
SOC = "Error";
state = 4;
//errorCount++;
break; // this state needs a reset to escape from
default: // if none of the other cases are satisfied,
disable_charger(); // turn off the MOSFET driver
error_blink(); // blink LED to indicate an error
SOC = "Off";
break;
}
}
void run_charger(){
pulseWidth = constrain (pulseWidth, 75, 245); // prevent overflow of pulse width
and not fully on or off for the charge pump
pwm = map(pulseWidth, 0, 255, 0, 100); // use pulseWidth to get a % value and
store it in pwm
pwmWrite(driver, pulseWidth); // send the new pulseWidth to the MOSFET driver
digitalWrite(shutDown, HIGH); // enable the MOSFET driver (enabling should always
be done after sending pulseWidth)
enable = "On";
}

40 | P a g e
void disable_charger(){
digitalWrite(shutDown, LOW); // disable the MOSFET driver
(disabling should always be done before sending pulseWidth)
enable = "Off";
}
void CVM(){ // Constant Voltage Method MPPT without a high voltage limit (doesn't need
an ammeter)
while(b > 0){ // do this once
time = millis(); // read millis and store in variable
b--;
}
if((millis() - time) >= check){ // if it's been more than the check time:
update_Vcvm();
}
//if (Vcvm < batteryVolts) Vcvm = (batteryVolts + 10); // to fix a stutter on initial
startup
stepAmount = (Vcvm - panelVolts)/10; // take bigger steps when the voltage is far
from the target
if (stepAmount < 1) stepAmount = 1; // the minimum step has to be one
if (panelVolts > Vcvm){ // if the calculated MPP voltage is lower than the panel
voltage,
if (pulseWidth < 245){ // this is to keep pulseWidth from overflowing
pulseWidth = pulseWidth + stepAmount; // put more load on the panel
}
else pulseWidth = 245; // this is to keep pulseWidth from overflowing
}
else if(panelVolts < Vcvm){ // or if the panel voltage is less than the calculated
MPP voltage,
if (pulseWidth > 75){ // this is to keep pulseWidth from overflowing
pulseWidth = pulseWidth - stepAmount; // remove some of the load from the panel
}
else pulseWidth = 75; // this is to keep pulseWidth from overflowing
}
}
void update_Vcvm(){
disable_charger(); // disable the MOSFET driver
delay(10); // wait for the voltage to level out
Voc = 0;
for(int i=0;i<100;i++){
Voc += analogRead(panelMeter); // read the panel voltage 100 times and
add the values together
}
Voc = Voc/100;

41 | P a g e
Voc = (Voc*488)/1197; // multiply it by the scaling factor to produce
a number in deci Volts
Vcvm = (Voc*76)/100; // Vcvm is 76% of Voc
b = 1; // reset the timer
}
void run_fan(){
switch(charger_state){
case bulk:
digitalWrite(fan, HIGH);
break;
default:
digitalWrite(fan, LOW);
break;
}
}
void run_load(){
if (batteryVolts > lowBatt){ // If the battery voltage is above 11V
digitalWrite(load, LOW); // Turn on the load MOSFET (LOW)
Load = "On"; // Write it in a string so that we can see it on the serial port
}
else{ // If the battery voltage is below 11V
digitalWrite(load, HIGH); // Turn off the load MOSFET (HIGH)
Load = "Off"; // Write it in a string so that we can
see it on the serial port
}
}
void error_blink(){ // function for blinking the LED when there is an error
if((millis() - time2) >= 200){ // fast 1/5 second blink without delay
LEDstate = !LEDstate;
digitalWrite(13, LEDstate);
time2 = millis();
}
}
void sleep_blink(){ // function for blinking the LED when
sleeping
if((millis() - time2) >= 2000){ // slow 2 second blink without delay
LEDstate = !LEDstate;
digitalWrite(13, LEDstate);
time2 = millis();
}
}
void establishContact() {
while (Serial.available() <= 0) {

42 | P a g e
Serial.print('A'); // send a capital A
delay(300);
}
}
void sendtogui() {
if (Serial.available() > 0) {
inByte = Serial.read();
Serial.write(panelADC);
Serial.write(batteryADC);
Serial.write(pwm);
Serial.write(state);
}
}
void print_data() { // Print all the information to the serial port
Serial.print("Voc:");
Serial.print(Voc);
Serial.print("\t");
Serial.print("Vpanel:");
Serial.print(panelVolts);
Serial.print("\t");
Serial.print("Vcvm:");
Serial.print(Vcvm);
Serial.print("\t");
Serial.print("Vbatt:");
Serial.print(batteryVolts);
Serial.print("\t");
Serial.print("PWM:");
Serial.print(pwm);
Serial.print("%");
Serial.print("\t");
Serial.print("pulseWidth:");
Serial.print(pulseWidth);
Serial.print("\t");
Serial.print("Enabled:");
Serial.print(enable);
Serial.print("\t");
Serial.print("Charger State:");
Serial.print(SOC);
Serial.print("\t");
Serial.print("Load State:");
Serial.println(Load);

43 | P a g e
APPENDIX-B

44 | P a g e
45 | P a g e
FEATURES
·Drain Current –ID=49A@ TC=25℃
·Drain Source Voltage-
: VDSS= 55V(Min)
·Static Drain-Source On-Resistance
: RDS(on) = 0.032Ω(Max)
·Fast Switching

DESCRIPTION
·Designed for low voltage, high speed switching
applications in power supplies, converters and power
motor controls, these devices are particularly well
suited for bridge circuits where diode speed and
commutating safe operating areas are critical and
offer additional safety margin against unexpected
voltage transients.

ABSOLUTE MAXIMUM RATINGS(Ta=25℃)


SYMBOL PARAMETER VALUE UNIT

VDSS Drain-Source Voltage 55 V


Gate-Source Voltage-
VGS ±20 V
Continuous
ID Drain Current-Continuous 49 A
Drain Current-Single Pluse
IDM 160 A
(tp≤10μs)
Total Dissipation
PD 94 W
@TC=25℃
Max. Operating Junction
TJ 175 ℃
Temperature
-
Tstg Storage Temperature ℃
55~175

46 | P a g e
THERMAL CHARACTERISTICS
SYMBOL PARAMETER MAX UNIT
Thermal Resistance,
Rth j-c 1.5 ℃/W
Junction to Case
Thermal Resistance,
Rth j-a 62 ℃/W
Junction to Ambient

isc Website:www.iscsemi.cn
INCHANGE Semiconductor isc Product Specification

isc N-Channel MOSFET Transistor IRFZ44N

ELECTRICAL CHARACTERISTICS
TC=25℃ unless otherwise specified

SYMBOL PARAMETER CONDITIONS MIN MAX UNIT

Drain-Source Breakdown
V(BR)DSS VGS= 0; ID= 0.25mA 55 V
Voltage

VGS(th) Gate Threshold Voltage VDS= VGS; ID= 0.25mA 2 4 V

Drain-Source On-
RDS(on) VGS= 10V; ID= 25A 0.032 Ω
Resistance
Gate-Body Leakage
IGSS VGS= ±20V;VDS= 0 ±100 nA
Current
VDS= 55V; VGS= 0
Zero Gate Voltage Drain 25
IDSS VDS= 55V; VGS= 0; Tj= μA
Current 250
150℃

VSD Forward On-Voltage IS= 25A; VGS= 0 1.3 V

47 | P a g e

You might also like