As a high school student, I am working on an Arduino project and seeking guidance from an expert who can help me with the prototype (Dual-Axis Solar Tracking Robot using Arduino Uno). I need assistance with the code, also with the physical construction and design of the prototype.I would like to work with someone who can help me remotely using Webex or a similar platform, as I don't have the means to meet in person. I am available to work on the project this Saturday, at any time of the day or night.
Since I am a high school student, I am unable to pay for services (But if you want, then ok). However, I would be willing to compensate you for your time and expertise if you are willing to offer your services for free. If you are available and can help me, please let me know how long you think it will take and what I can expect in terms of guidance and support.
If this request is inappropriate for this forum, please let me know, and I apologize for any inconvenience caused.
hi!
looks like a good work to prepare your prototype!
will the ldr be attached to the side of the solar panel? In this case, they will "see" the same amount of light than the solar panel itself and won't be a good reference in my mind.
maybe I would have choose at least to put a ldr in a fixed position, to be used as a reference. Better choice could be to look at 3 different axis and try to moove the solar panel in order it receives more energy than the more exposed ldr.
So, where is the most energy coming from, using a LIGHT SENSITIVE PV array?
At the brightest point in the sky.
One of two solar tracking arrays at MARS Confectionary Ballarat, don't use timers, they track the BRIGHTEST part of the sky, now if that wasn't the most efficient way, why would they do it.
You don't need to know where in the Earth you are for a start.
Look up the examples suggested by @J-M-L to give you ideas.
How big is your solar array?
What coding and hardware support do you have from your school?
Hello @TomGeorge at any point in time the brightest point in the sky provides the most energy but that may just be for a few seconds.
You really should know where you are on the Earth!
The array you pointed to seems to be in Australia so perhaps assuming long periods of clear sky is a not bad strategy, but the Op did not give a location,
Also the array you referenced does not describe its actual strategy. It may not have timers but, having located the sun with a really strong signal, does it really move backwards on the sun track just because clouds mean that for a fleeting period the signal is stronger in the opposite direction from what is known to be the true track?
As a high school project it’s a good exploration but in practice it’s often cheaper and more efficient to add a few extra solar panel on a fixed structure (if of course there is room for it) and orient it appropriately for your location.
The energy consumed by the motors moving the structure and the cost of maintaining all the moving parts over 25/30 years just don’t make sense most of the time.
It is probably easier/better to buy some ready made hardware for the basic 2-axis movement than create something yourself. Look on aliexpress for the search phrase "pan tilt servo" for a selection of cheap modules. At the risk of having yet another half finished project cluttering up my desk, I'm very tempted to add one or two to my shopping list.
I'm hoping to get some help interpreting (or teaching me how it works) the code below. This code uses four LDRs (light-dependent resistors) to control two servos (a vertical and a horizontal one) based on the amount of light received by each of the LDRs. The goal of the code is to make the servos move in response to changes in the light environment, which is for my project (Dual-axis solar tracking robot)
Here's the code does:
'''
#include <Servo.h>
// Define the servo motors
Servo x_axis_servo;
Servo y_axis_servo;
// Define the LDRs
int top_left_ldr = A0;
int top_right_ldr = A1;
int bottom_left_ldr = A2;
int bottom_right_ldr = A3;
// Define the target intensity for the LDRs
int target_intensity = 20000;
// Define the speed at which the servo motors move
int servo_speed = 1;
// Define the setup function
void setup() {
// Attach the servo motors to pins 9 and 10
x_axis_servo.attach(9);
y_axis_servo.attach(10);
// Set the LDR pins as inputs
pinMode(top_left_ldr, INPUT);
pinMode(top_right_ldr, INPUT);
pinMode(bottom_left_ldr, INPUT);
pinMode(bottom_right_ldr, INPUT);
}
// Define the loop function
void loop() {
// Read the intensity of light hitting the LDRs
int top_left_intensity = analogRead(top_left_ldr);
int top_right_intensity = analogRead(top_right_ldr);
int bottom_left_intensity = analogRead(bottom_left_ldr);
int bottom_right_intensity = analogRead(bottom_right_ldr);
// Calculate the average intensity
int average_intensity = (top_left_intensity + top_right_intensity + bottom_left_intensity + bottom_right_intensity) / 4;
// Calculate the error between the target intensity and the actual intensity
int error = target_intensity - average_intensity;
// Calculate the position of the servo motors
int x_axis_position = x_axis_servo.read() + error / 1000 * servo_speed;
int y_axis_position = y_axis_servo.read() + error / 1000 * servo_speed;
// Limit the position of the servo motors to prevent them from going out of range
if (x_axis_position < 0) {
x_axis_position = 0;
} else if (x_axis_position > 180) {
x_axis_position = 180;
}
if (y_axis_position < 0) {
y_axis_position = 0;
} else if (y_axis_position > 180) {
y_axis_position = 180;
}
// Move the servo motors to the calculated position
x_axis_servo.write(x_axis_position);
y_axis_servo.write(y_axis_position);
// Delay for a short time to allow the servo motors to move
delay(10);
}
'''
If you have any questions or comments about the code, please let me know.
Also if there is any mistake please let me know.
Your two or more topics on the same or similar subject have been merged.
Please do not duplicate your questions as doing so wastes the time and effort of the volunteers trying to help you as they are then answering the same thing in different places.
Please create one topic only for your question and choose the forum category carefully. If you have multiple questions about the same project then please ask your questions in the one topic as the answers to one question provide useful context for the others, and also you won’t have to keep explaining your project repeatedly.
Repeated duplicate posting could result in a temporary or permanent ban from the forum.
Could you take a few moments to Learn How To Use The Forum
It will help you get the best out of the forum in the future.