Sun-Tracking Cell Phone Charger

My main project is a sun tracking cell phone charger. I used a solar panel that rotates throughout the day to follow the Sun’s path while charging a mobile phone. I completed this project using an Arduino, Servo, boost converter, and solar panel. (WEBSITE NOT COMPLETE YET)


Brooke S.

Area of Interest

Environmental Engineering


Los Altos High School


Incoming Junior

Starter Project: MintyBoost

Brooke's Starter Project: MintyBoost

               As my Starter Project, I chose to build the MintyBoost as an introduction to my main project: a solar-tracking cell phone charger. This device uses a combination of resistors, an inductor, capacitor, and boost converter to function. By converting the 3V electricity supplied by two AA batteries into 5V electricity, the cellphone charged. When building this project, numerous miniature electrical components were soldered into specific areas of the circuit board, in specific directions. I particularly struggled with soldering the small components, as I accidentally soldered two pieces together. There was a tiny piece of solder connecting two wires at the back of the circuit board, so when current ran through the circuit, a very small circuit was created, causing the device to almost short circuit. The batteries and wires got extremely hot, and it would not charge the cell phone. To rectify this, I removed the batteries and desoldered the connecting piece. Immediately, the MintyBoost worked. By creating this project, I learned how each electrical component worked and how they work together to effectively get electricity from the battery to charge the cell phone.
           The boost converter was a key component in the MintyBoost. At a high level, its role is to step up the voltage supplied by the batteries into usable voltage the phone can use. Current is decreased while the voltage is increased. More specifically, a boost converter relies on an inductor,  a tightly-wound metal coil, and a switch to control the current to flowing through.  When current flows through it in a clockwise direction while the switch is off, it stores energy by creating a magnetic field. However, when the switch is open, the current is reduced. The impedance, or resistance/opposite force towards the current, is higher, so the current is maintained towards the load, or the cell phone. This causes the polarity to be reversed, allowing the circuit to be in series and producing a higher voltage. The switch must be turned on and off quick enough for a steady voltage to be outputted.

MintyBoost Materials

  • Circuit board
  • 2 x AA Battery Holder
  • USB Type A Female Jack
  • 10-22uH power inductor, at least 1A current capability
  • Schottky Diode
  • 100K 1/4W 5% resistor (brown black yellow gold)
  • 15K 1/4W 5% resistor (brown green orange gold)
  • Bypass capacitor (0.1uF)
  • Power supply capacitor (100uF/6.3V or higher)
  • 8-pin socket
  • 5V boost converter
  • 1/8W 1% 49.9K resistor (yellow white white red brown)
  • 1/8W 1% 75K resistor (violet green black red brown)
  • 1/8W 5% 3.3K resistor (orange orange red gold)


Starter Project 100%
Main Project 0%

First Milestone

Brooke's First Milestone

My first milestone is building the circuit for my project. To build my circuit, I used jumper wires, an Arduino, resistors, LDRs (light dependent resistors), a breadboard, a Servo, and a battery to power the Servo. The biggest challenge I faced was ensuring that everything was connected in the right places and getting both photoresistors to work. I had to modify my code to get both to function. In this video I have already built my wooden stand and filmed the video afterwards. A key component in my circuit is the breadboard. A breadboard is a plastic board with hundreds of small holes in it to be used for prototyping when building a circuit. Because this one is solderless, it is easy to add and remove components. Metal inside of the breadboard allows for current to pass through and connect a circuit. On the edges of the breadboard are symbols and numbers. The plus sign means positive, or power and the minus sign means negative or ground. These are important when connecting a power supply like a battery. The image below shows the connections in a breadboard.

Palo Alto STEM Summer Program

Using a Servo was also crucial for my project. Inside of the Servo, there is a DC motor, potentiometer, and a control circuit. Gears attach the motor to the arms on the outside of the Servo. The resistance in the potentiometer changes so that the control circuit is able to determine how much the motor is moving and in which direction. A potentiometer has various other functions as well; it can also work as a voltage divider so that it can convert a large voltage into a smaller one.

Circuit Image

STEM Summer Program Palo Alto


Starter Project 100%
Main Project 33.3%

Second Milestone

Brooke's Second Milestone

My second milestone is building the base for my solar panel. I used wooden dowels and hot glued them between two A Frames so that they could support the weight of the solar panel. I drilled two holes into vertical posts on opposing the sides and inserted steel rod between them so that I could mount my solar panel on that. In this video, I had progressed further on my project than my second milestone, which is why I already have my Servo and solar panel mounted. 

Solar Panel Stand Image

STEM Program Palo Alto


Starter Project 100%
Main Project 66.6%

Final Milestone

Brooke's Final Milestone


Starter Project 100%
Main Project 100%


Sun Tracking Feature Code

#include <Servo.h>
int pos = 0;
Servo servo;
int dark = 200;
int light = 400;
int servoSet = 100;

int difference = 10;
int eLDRPin = A0; 

int eastLDR = 0; 
int westLDR = 0;

void setup() {

void loop() {
  eastLDR = analogRead(eLDRPin); 
  westLDR = analogRead(wLDRPin);
  if (eastLDR < light && westLDR < light) {  
    while (servoSet <= 180 && servoSet >= 0) {  
  difference = eastLDR - westLDR ; 
  if (difference > 10) {        
    if (servoSet <= 180) {
      servoSet ++;
  } else if (difference < -10) {
    if (servoSet >= 0) {
      servoSet --;

Servo Sweep Code

/* Sweep
This example code is in the public domain.

modified 8 Nov 2013
by Scott Fitzgerald

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0; // variable to store the servo position

void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object

void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position

Servo Initial Position Code

#include <Servo.h>
Servo myservo1;   // Create a servo object to control the servo
int pos = 90;
void setup() {
 myservo1.attach(9);   //attaches the servo object to PWM pin 9
void loop() {

Sun Tracking Feature Schematic

Completed Project Image

STEM Summer Camps Coding & Robotics Classes For Kids San Francisco Coding & Robotics Classes For Kids New York Coding & Robotics Classes For Kids Denver Coding & Robotics Classes For Kids Palo Alto STEM Summer Camps For Kids in New York STEM Summer Camps For Kids in Palo Alto STEM Summer Camps For Kids San Francisco STEM Classes For Kids in New York STEM Classes For Kids in Palo Alto STEM Classes For Kids in San Francisco Code Classes For Kids Code Classes For Kids in New York Code Classes For Kids in Palo Alto Code Classes For Kids in San Francisco STEM Summer Camps For Kids 

Leave a Comment

Start typing and press Enter to search