Introduction: LDR Photovoltaic Solar Tracker

This Instructables is a Solar Tracker for PV Panel based on LDR (Light Dependent Resistor) Sensors.

A Solar Tracker aims to increase energy generation by pointing the PV Panel straight to the sun providing more light to it.

Despite the energy required for the control system, the comparison between a static panel and the other with Solar Tracker represents a 15% average increase of generation for the one with Solar Tracker.

Step 1: LDR Sensor Board

It was choosen three 7mm LDRs in series with 10 kΩ resistors in a board. This board was located with the PV Panel to collect data for the solar tracking.

In a nutshell, this circuit is a voltage divider, once the LDR behavior is known (lower resistance with higher light incidence), the LDR with higher light incidence shows the higher voltage, with the maximum voltage limited on 5V to comply with Arduino input requirements.

Due to sensor dimensions, the differences of voltage between the LDRs could be small once side by side. To overcome this, it was installed some "bulkhead" to reinforce the difference in the small scale representation.

Remembering that the objective is to keep the central LDR with the higher light incidence.

Step 2: Step Motor Driver

The step motor selected was reused. After some internet search it was found that it is a SANYO C-60X 891012, with Supply Voltage of 12 V, coil resistance of 48 Ω and step of 1.8º.

To create this circuit it was used the ICs L297 and L298 with some diodes as presented on L297 Application Note.

Step 3: Arduino Controller

The Arduino is responsible to receive the data from LDR Sensor Board, compare the values and take action to move the PV Panel pointing to the sun.

Controller Step-by-step (Continuous Loop)

  1. Start
  2. Read LDRs Voltages
  3. If central LDR has the greater value, return to step 2
  4. Right LDR has greater value ? If yes step 5, if no step 6
  5. Move one step to the right, back to step 4
  6. Left LDR has greater value, if yes step 7, if no, step 2
  7. Move one step to the right, back to step 6

Arduino pin-out

Analog Pins

  • Central LDR - 4
  • Right LDR - 5
  • Left LDR - 3

Digital Pins

  • Clockwise/Counter-Clockwise - 13
  • Speed (Clock) - 11
  • Enable/Disable - 12

Arduino Source Code

#define NAME "SOLAR TRACKER"
//Analog Pins int pinLdr_1 = 3; int pinLdr_2 = 4; int pinLdr_3 = 5; // ENABLE, HALF-FULL, CW-CCW, CLK int pinCwCCW = 13; int pinCLK = 11; int pinEnable = 12; int ldr1 = 0; int ldr2 = 0; int ldr3 = 0; void setup(){ pinMode(pinLdr_1,INPUT); pinMode(pinLdr_2,INPUT); pinMode(pinLdr_3,INPUT); pinMode(pinEnable, OUTPUT); pinMode(pinCwCCW, OUTPUT); pinMode(pinCLK, OUTPUT); } void reads(void){ ldr1 = analogRead(pinLdr_1); ldr2 = analogRead(pinLdr_2); ldr3 = analogRead(pinLdr_3); } void steps(int nro){ int i; //200 steps = 360 degress (full step) digitalWrite(pinEnable,HIGH); for(i=0;i<nro;i++){
digitalWrite(pinCLK,HIGH); delay(10); //10ms digitalWrite(pinCLK,LOW); delay(10); } digitalWrite(pinEnable,LOW); } void loop(){ reads(); digitalWrite(pinEnable,HIGH); Serial.begin(9600); if (ldr3 > ldr2 && ldr3 > ldr1){ moveL(); } else if (ldr1 > ldr2 && ldr1 > ldr3){ moveR(); } delay(500); } void moveL(){ reads(); digitalWrite(pinCwCCW,HIGH); while (ldr2ldr3) return; } } void moveR(){ reads(); digitalWrite(pinCwCCW,LOW); while (ldr2ldr1) return; } }

Step 4: Conclusion

This project proved that Solar Tracking increases the PV Energy Generation.
It is also a simple project that can be used as a didatic tool to explain more about Solar PV Energy been presented as an "electronic sunflower".

Solar Contest 2017

Runner Up in the
Solar Contest 2017