Солнечный трекер – это устройство, которое может отслеживать положение солнца. На трекеры ставят солнечные панели, чтобы они могли аккумулировать больше энергии, благодаря изменению угла поворота в пространстве.
Данная реализация является моделью для прототипа. Описание полной сборки и настройки, как и сборки многих других занимательных устройств я описал в своей книге "Умная робототехника для начинающих. Разработка на Arduino".
Для создания работающей модели нам понадобяться прочный, но лёгкий материал, на котором будет производиться монтаж электрокомпонентов и сам он будет использоваться в качестве несущей конструкции. Можно выбрать вспенённый пвх лист 3 мм или листовой прозрачный пластик 1,5-3 мм. Так же подойдёт корпус из под лазерных дисков.
Нам нужны электрокомпоненты. Я возьму: arduino uno, два сервопривода- четыре фоторезистора, четыре резистора на 1 кОм, соединительные провода, плата для монтажа (можно беспаечную).
Чтобы производить монтаж электроники, вырезать и собирать конструкцию трекера нам нужны инструменты. Я воспользуюсь: канцелярским ножом и ножницами, клеем для пластика или термоклеем, карандашом, линейкой или штангенциркулем, наждачной бумагой мелкой фракции, паяльной станцией с припоем и канифолью.
Фоторезисторы в этом устройстве будут работать, как датчики света. Располагаться они должны по краям подвижной платформу. С какой стороны более яркий свет – в ту сторону и поворачивается устройство.
Рассмотрим схему конструкции.
Как видно на схеме, показания с фоторезисторов будут отправляться на пины A0, A1, A2 и A4. Фоторезисторы в купе с резисторами образуют делители напряжения. Этот вариант помогает лучше отследить изменения показаний.
Сборка конструкции
Конструкция позволяет перемещать площадку трекера в пространстве ограниченной цилинром.
Итак, согласно конструкции трекер вращается вокрук вертикальной оси, но при этом может наклонять верхнюю площадку.
К концам проводов фоторезистора можно припаять штекеры, для быстрого монтажа.
После сборки конструкции, нужно отметить расположение фоторезисторов на панели относительно порядка подключения.
После этого, необходимо определить положение сервоприводов – где у каждого положения либо , либо
. Здесь, вам понадобиться найти градус предельного положения платформы, для лучшей работы устройства, т.е. мы занимаемся калибровкой устройства.
В моём случае, первый сервопривод, который находится в основании, имеет промежуток вращения , второй сервопривод имеет интервал поворота
. Пометьте для себя в какую сторону фоторезистора поворачивается сервопривод при данных крайних точках диапазона.
В данной сборке второй сервопривод поворачивается от второго резистора (ближайшийк нам, см. рис.) в сторону четвёртого (самый дальний, см.рис), а первый сервопривод – от первого фоторезистора (крайний правыйсм. рис.) в сторону третьего (крайний левый, см. рис.).
Ниже представлен код программы на arduino ide, сохраним как sun_trecer.ino.
#include <Servo.h>
// вводим переменные для фоторезисторов, углов и сервоприводов
Servo myservo1;
Servo myservo2;
int foto1 =A0;
int foto2 =A1;
int foto3 =A2;
int foto4 =A3;
int i=10;
int j =20;
int k=0;
void setup() {
// назначение пинов и скорость передачи данных
myservo1.attach(13);
myservo2.attach(12);
pinMode(foto1, INPUT);
pinMode(foto2, INPUT);
pinMode(foto3, INPUT);
pinMode(foto4, INPUT);
Serial.begin(9600);
}
void loop() {
// проверяем условие между первым и третьем фоторезистором
if ( analogRead(foto1)>analogRead(foto3))
{
if (analogRead(foto1)-analogRead(foto3)>40){
i=i+1;
myservo1.write(i);
delay(20);
}
}
else {
if (analogRead(foto3)-analogRead(foto1)>40){
i=i-1 ;
myservo1.write(i);
delay(20);
}
}
// проверяем условие между вторым и четвёртым фоторезистором
if ( analogRead(foto2)>analogRead(foto4))
{
if (analogRead(foto2)-analogRead(foto4)>40){
j=j+1;
myservo2.write(j);
delay(20);
}
}
else {
if (analogRead(foto4)-analogRead(foto2)>40){
j=j-1 ;
myservo2.write(j);
delay(20);
}
}
// проверка граничных условий
if (i<=10){
i=10;
}
else if (i>=180){
i=180;
}
if (j<=10){
j=10;
}
else if (j>=120){
j=120;
}
// вывод значений для самопроверки
Serial.println("i=");
Serial.println(i);
Serial.println("foto1 =");
Serial.println(analogRead(foto1));
delay(300);
Serial.println("foto3 =");
Serial.println(analogRead(foto3));
Serial.println("j=");
Serial.println(j);
Serial.println("foto4 =");
Serial.println(analogRead(foto4));
Serial.println("foto2 =");
Serial.println(analogRead(foto2));
}
Загрузим программу и проверим работоспособность устройства. Ваша конструкция может не совпадать с конструкцией, представленной в статье из-за другого подключения фоторезисторов.
Видео на котором показан принцип работы солнечного трекера представлен здесь:
Автор: Andrykor
