MAXIMUM POWER POINT TRACKING Maximum Power Point Tracking, frequently referred to as MPPT, is an electronic system that operates the Photovoltaic (PV) modules in a manner that allows the modules to produce all the power they are capable of. MPPT is not a mechanical tracking system that “physically moves” the modules to make them point more directly at the sun. 

MPPT is a fully electronic system that varies the electrical operating point of the modules so that the modules are able to deliver maximum available power. Additional power harvested from the modules is then made available as increased battery charge current. 

MPPT can be used in conjunction with a mechanical tracking system, but the two systems are completely different. The Peak Power Tracker is a microprocessor controlled DC/DC step down converter used by a solar power system to charge a 12v battery.The microprocessor tries to maximize the watts input from the solar panel by controlling the step down ratio to keep the solar panel operating at its Maximum Power Point.
 
(Peak Solar Panel Watts) / (Battery Voltage) = MPPT Amps (i.e. 240W/12V = 20A)

Block Diagram:

Here’s what you’ll need to get started:

- Power supply 5v/2amp
- Arduino uno R3 board
- Solar Panel
- LDR’s
- 16*2 LCD Display
- 10kΩ Resistor
- 320Ω Resistor
- 1kΩ Resistor
- Bread board
- Servo motor
- LED’s 5mm
- Pc/Laptop
- Connecting wires
- Jumper wires
- Card board 

Software/Tools Require:

- Open Source Arduino software (IDE)
- Fritzing software

Circuit Diagram:


LIGHT DETECTING RESISTORS:-

The construction of an LDR includes a light-sensitive material that is placed on an insulating substrate like as ceramic. The material is placed in a zigzag shape in order to get the required power rating and resistance. The area of zigzag separates the metal placed areas into two regions Where the Ohmic contacts are made either on the sides of the area.

The resistances of the contacts must be as less as possible to make sure that the resistance, mainly varies due to the light effect only. The use of lead & cadmium materials is avoided as they are injurious to the environment.

The working principle of an LDR is photoconductivity, that is nothing but an optical phenomenon. When the light is absorbed by the material then the conductivity of the material reduces. When the light falls on the LDR, then the electrons in the valence band of the material are eager to the conduction band. But, the photons in the incident light must have energy superior than the bandgap of the material to make the electrons jump from one band to another band (valance to conduction).

Hence, when light having ample energy, more electrons are excited to the conduction band which grades in a large number of charge carriers. When the effect of this process and the flow of the current starts flowing more, the resistance of the device decreases.

16*2 LCD:

LCDs (Liquid Crystal Displays) are used in embedded system applications for displaying various parameters and status of the system.

LCD 16x2 is a 16-pin device that has 2 rows that can accommodate 16 characters each.

LCD 16x2 can be used in 4-bit mode or 8-bit mode.It is also possible to create custom characters.It has 8 data lines and 3 control lines that can be used for control purposes.


The 16×2 LCD pinout is shown below:-

- Pin1 (Ground/Source Pin): This is a GND pin of display, used to connect the GND terminal of the microcontroller unit or power source.

Pin2 (VCC/Source Pin): This is the voltage supply pin of the display, used to connect the supply pin of the power source.

- Pin3 (V0/VEE/Control Pin): This pin regulates the difference of the display, used to connect a changeable POT that can supply 0 to 5V.

- Pin4 (Register Select/Control Pin): This pin toggles among command or data register, used to connect a microcontroller unit pin and obtains either 0 or 1(0 = data mode, and 1 = command mode).

Pin5 (Read/Write/Control Pin): This pin toggles the display among the read or writes operation, and it is connected to a microcontroller unit pin to get either 0 or 1 (0 = Write Operation, and 1 = Read Operation).

Pin 6 (Enable/Control Pin): This pin should be held high to execute Read/Write process, and it is connected to the microcontroller unit & constantly held high.

Pins 7-14 (Data Pins): These pins are used to send data to the display. These pins are connected in two-wire modes like 4-wire mode and 8-wire mode. In 4-wire mode, only four pins are connected to the microcontroller unit like 0 to 3, whereas in 8-wire mode, 8-pins are connected to microcontroller unit like 0 to 7.

Pin15 (+ve pin of the LED): This pin is connected to +5V

Pin 16 (-ve pin of the LED): This pin is connected to GND


Servo Motor:

A servo motor is a type of motor that can rotate with great precision. Normally this type of motor consists of a control circuit that provides feedback on the current position of the motor shaft, this feedback allows the servo motors to rotate with great precision. If you want to rotate an object at some specific angles or distance, then you use a servo motor. It is just made up of a simple motor which runs through a servo mechanism.


If motor is powered by a DC power supply then it is called DC servo motor, and if it is AC-powered motor then it is called AC servo motor. For this tutorial, we will be discussing only about the DC servo motor working. Apart from these major classifications, there are many other types of servo motors based on the type of gear arrangement and operating characteristics. A servo motor usually comes with a gear arrangement that allows us to get a very high torque servo motor in small and lightweight packages. Due to these features, they are being used in many applications like toy car, RC helicopters and planes, Robotics, etc.

Servo Motor Working Mechanism:

It consists of three parts:

1.     Controlled device

2.     Output sensor

3.     Feedback system

It is a closed-loop system where it uses a positive feedback system to control motion and the final position of the shaft. Here the device is controlled by a feedback signal generated by comparing output signal and reference input signal.

Here reference input signal is compared to the reference output signal and the third signal is produced by the feedback system. And this third signal acts as an input signal to the control the device. This signal is present as long as the feedback signal is generated or there is a difference between the reference input signal and reference output signal. So the main task of servomechanism is to maintain the output of a system at the desired value at presence of noises.

This error signal acts as the input for motor and motor starts rotating. Now motor shaft is connected with the potentiometer and as the motor rotates so the potentiometer and it will generate a signal. So as the potentiometer’s angular position changes, its output feedback signal changes. After sometime the position of potentiometer reaches at a position that the output of potentiometer is same as external signal provided. At this condition, there will be no output signal from the amplifier to the motor input as there is no difference between external applied signal and the signal generated at potentiometer, and in this situation motor stops rotating.


Solar Panel:

A solar cell (also known as a photovoltaic cell or PV cell) is defined as an electrical device that converts light energy into electrical energy through the photovoltaic effect. A solar cell is basically a p-n junction diode. Solar cells are a form of photoelectric cell, defined as a device whose electrical characteristics – such as current, voltage, or resistance – vary when exposed to light.

Individual solar cells can be combined to form modules commonly known as solar panels. The common single junction silicon solar cell can produce a maximum open-circuit voltage of approximately 0.5 to 0.6 volts. By itself this isn’t much – but remember these solar cells are tiny. When combined into a large solar panel, considerable amounts of renewable energy can be generated.


Construction of Solar panel:-

A solar cell is basically a junction diode, although its construction it is little bit different from conventional p-n junction diodes. A very thin layer of p-type semiconductor is grown on a relatively thicker n-type semiconductor. We then apply a few finer electrodes on the top of the p-type semiconductor layer.


These electrodes do not obstruct light to reach the thin p-type layer. Just below the p-type layer there is a p-n junction. We also provide a current collecting electrode at the bottom of the n-type layer. We encapsulate the entire assembly by thin glass to protect the solar cell from any mechanical shock.

When light reaches the p-n junction, the light photons can easily enter in the junction, through very thin p-type layer. The light energy, in the form of photons, supplies sufficient energy to the junction to create a number of electron-hole pairs.

The materials which are used for this purpose must have band gap close to 1.5ev. Commonly used materials are-

  1. Silicon.
  2. GaAs.
  3. CdTe.
  4. CuInSe2

Working of “MPPT”:

LDRs sense the amount of sunlight falling on them. Four LDRs are divided into top, bottom, left and right.

For east – west tracking, the analog values from two top LDRs and two bottom LDRs are compared and if the left side of LDRs receive more light, the horizontal servo will move in that direction. If the right LDRs receive more light, the servo moves in that direction.

For angular deflection of the solar panel, the analog values from  left LDRs and right LDRs are compared. If the left side of LDRs receive more light than the right side, the horizontal servo will move  in that direction.

If the right set of LDRs receive more light, the servo moves in that direction.

 

RESULTS:-

EXPERIMENTAL OBSERVATIONS (TAKEN IN SUNLIGHT AS IRRADIANCE SOURCE)


 

Input voltage

(volts)

Input Intensity of light

(lux)

Output voltage

(volts)

Input Intensity of light

(lux)

1.

Reading 1

20v

1,00,000 lux

3.7v

 

2.

Reading 2

 

 

 

 

3.

Reading 3

 

 

 

 




Project File can be downloaded from Here!



Code:


#include<LiquidCrystal.h>
#include <Servo.h>
#define VOLT A0
#define LUX A1            //connect The LDR on Pin A1

Servo myservo;             
int initial_position = 90;   
int LDR1 = A2;          //connect The LDR1 on Pin A0
int LDR2 = A3;          //Connect The LDR2 on pin A1
int error = 5;          
int servopin=8;         //You can change servo just makesure its on arduino's PWM pin

const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
LiquidCrystal lcd(2,3,4,5,6,7);

float volt,lux;
int value1;

float voltage = 0.0;
float temp=0.0;
int analog_value0;

void setup()
{
   lcd.begin(16, 2); 
   lcd.setCursor (4,0);
   lcd.print("AI BASED");
   lcd.setCursor(0,1); 
   lcd.print("MPPT OF PV PANEL");
   delay(2000);

   Serial.begin(9600);
   pinMode(ledPin1, OUTPUT);  //initialize the LED pin1 as an output
   pinMode(ledPin2, OUTPUT);  //initialize the LED pin2 as an output
   pinMode(ledPin3, OUTPUT);  //initialize the LED pin3 as an output
   pinMode(lux, INPUT);       //initialize the LDR pin as an input

   




myservo.attach(servopin);  
   pinMode(LDR1, INPUT);   
   pinMode(LDR2, INPUT);
   myservo.write(initial_position);   //Move servo at 90 degree
   delay(2000);
}


void loop() 
{

 /*---------Voltage----------*/
   analog_value0 = analogRead(A0);
   voltage = (analog_value0 * 5.0) / 1024.0; 

   if (voltage < 0.1) 
   {
     voltage=0.0;
   } 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Voltage= ");
    lcd.print(voltage);
    lcd.setCursor(12,0);
    lcd.print(" V");
    delay(30);


 /*-----Light Intensity------*/

   value1=analogRead(LUX);
   volt=(value1/1023.0)*5;
   lux=((2500/volt)-500)/3.3;
   delay(30);
  
  //check if the LDR status is >= 300
  //if it is, the LED1 is HIGH

   if (lux >=300) 
   {
    digitalWrite(ledPin1, HIGH);               //turn LED on
    Serial.println("LDR is low, LED is ON");
    }
 




  else 
   {
    digitalWrite(ledPin1, LOW);          //turn LED off
    Serial.println("---------------");
   }

   //check if the LDR status is >= 500
   //if it is, the LED2 is HIGH
    
    if (lux >=500) 
   {
    digitalWrite(ledPin2, HIGH);               //turn LED on
    Serial.println("LDR is medium, LED is ON");
    }
   else 
   {
    digitalWrite(ledPin2, LOW);          //turn LED off
    Serial.println("---------------");
   }

   
   //check if the LDR status is >= 1000
   //if it is, the LED3 is HIGH
    
    if (lux >=1000) 
    {
     digitalWrite(ledPin3, HIGH);               //turn LED on
     Serial.println("LDR is bright, LED is ON");
    }
    else 
    {
     digitalWrite(ledPin3, LOW);          //turn LED off
     Serial.println("---------------");
    }

 /*---------servo motor----------*/
  
   int R1 = analogRead(LDR1); // read  LDR 1
   int R2 = analogRead(LDR2); // read  LDR 2
   int diff1= abs(R1 - R2);   
   int diff2= abs(R2 - R1);
  
  if((diff1 <= error) || (diff2 <= error)) {
    
  }



 else {    
    if(R1 > R2)
    {
      initial_position = --initial_position; //Move the servo towards 0 degree 
    }
    if(R1 < R2) 
    {
      initial_position = ++initial_position; //Move the servo towards 180 degree
    }
  }
  myservo.write(initial_position); // write the position to servo
  delay(100);

 /*------Display Result------*/
    
    lcd.setCursor(0,1);
    lcd.print("Intens= ");
    lcd.print((int)lux);
    lcd.print(" Lux");
   
    Serial.println((int)lux);
    delay(500);


}