Солнечный трекер на ардуино своими руками

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Не знаю катит ли это на проект)) но темы похожей на этом форуме я не нашел.

Делал на контроллере сименс год назад за 5000 р эту игрушку, сейчас реализовал макет на Ардуине за 7 долларов.

Сразу оговорюсь, что механика и электроника используется готовая - мотоподвес от спутниковой тарелки, ардуино только дает команды

С помощью коллег с форума, спасибо leshak и maksim удалось заменить кнопку управления мотоподвесом пином ардуины.

техника работы с кнопкой такова

1 раз нажана отпущена - шаг влево

2 раза нажата отпущена шаг враво

1 раз нажата и неотпущена - длительный поворот налево

2 раза нажата и не отпущена длительный поворот вправо

на 2 аналоговых входа светорезисторы. головки светорезисторов разделяет зеркальная пластина, чем длиньше и тоньше тем точнее позиционирование

подпрограмма таймерного прерывания осуществляет движение ( Нажимание кнопок)
код не претендует на оригинальность, возможны ошибки , но вроде как трэккер усердно ищет солнце в окне))

Не могу почемуто вставить фото, жму на картинку но не вижу там ничего типа - browse file и тд, подскажите ? загружу

Солнечный трекер позволяет отслеживать текущее положение источника света и корректировать угол поворота сенсоров таким образом, чтобы поток солнечного света на них был максимален. В качестве сенсоров выступают два фоторезистора.

Схема солнечного трекера

Принципиальная схема солнечного трекера

Схема состоит из одного сервопривода и 2-х фоторезисторов. Фоторезисторы меняют свое сопротивление в зависимости от падающего света, далее происходит сравнение этих двух величин. И в зависимости от того где полученное цифровое значение больше туда и происходит поворот сервопривода.

Поворот осуществляется до тех пор, пока цифровое значение света обоих фоторезисторов не уровняется. Другими словами сервопривод солнечного трекера перестанет поворачиваться, когда свет будет одинаково падать на оба фоторезистора. Ниже приведен небольшой код трекера из которого все понятно, что происходит.

Полученные значения сохраняются в переменные val1 и val2, далее происходит их сравнение. Если они равны то солнечный трекер находиться в покое, а если их разница больше или меньше нуля, то сервопривод начинает работать.

Фоторезисторы подключены по схеме делителя напряжения, через дополнительное сопротивление в 10 кОм подключенные к земле. При изменении сопротивления фоторезисторов, меняеться напряжение на вывода A0 и A1 платы Arduino.

Солнечный трекер - система, предназначенная для слежения за перемещением солнца, чтобы получить максимальный КПД от солнечных батарей.
Концепция трекера предельно проста - по двум датчикам контроллер заставляет серводвигатель поворачивать платформу с солнечной батареей в ту сторону, где больше света.
Домашний прототип рабочего трекера показан на фото ниже:

Прототип солнечного трекера

В проекте используется два датчика-фоторезистора, которые направлены в разные стороны от плоской поверхности на 45°, т.е. относительно друг-друга фоторезисторы сориентированы на 90°. На сами датчики надеты колпачки, чтобы поток света, падающий на них был узконаправленным.


В проекте используется контроллер Arduino. Контроллер периодически считывает значения с двух датчиков и сравнивает их. Если значения с датчиков одинаковы, значит панель наведена на солнце. В случае, если значение одного из датчиков отличается от другого, контроллер дает команду на серводвигатель для поворота платформы. Команда на серво работает до тех пор, пока значения с датчиков не сравняются.

Схема солнечного трекера

Для предотвращения чрезмерного поворота платформы присутствуют программные лимиты поворота, которые в случае необходимости можно отключить. Также, в коде программы предусмотрена константа deadband, при разности с датчиков меньше значения этой константы, контроллер не будет давать команду на поворот серводвигателя. Т.о. предотвращается дергание платформы (джиттер).
Также, на всякий случай добавлено 2 переменные позволяющие сгладить значения от датчиков. Это помогает отфильтровать "выбросы" и шум.

Скетчи для Arduino

В начальной секции программы описываются подключаемые библиотеки (в нашем случае servo.h), определяются пины и константы

В следующей части кода описывается функция Setup(). Данная функция выполняется только один раз при запуске программы или после сброса контроллера. Здесь вы можете вывести в Serial Monitor какие либо данные для отладки, или как в приведенном ниже примере сделать "прогон" серводвигателя по всей траектории до лимитов.

Финальная часть кода выполняется в циклической функции loop(). Здесь считываются значения с датчиков, производятся все расчеты и выдаются команды на серводвигатель.

Также, в программе используется вспомогательная функция getTravel(), которая используется для вычисления, куда поворачивать серво - влево, вправо или вообще ничего не делать. Функция просто возвращает значение: 0 - ничего не происходит, -1 поворот влево, +1 поворот право.

Видео работы трекера:

Конечно, это простой солнечный трекер и может служить основой для более сложных устройств. К примеру можно сделать более лучшую фильтрацию входных переменных, добавить ПИД-регулирование, в схему добавить второй сервопривод для перемещения солнечной панели по вертикали и получения максимального КПД.

Arduino и Радиолюбитель | Технари | IT DenisGeek

Arduino и Радиолюбитель | Технари | IT DenisGeek

Arduino и Радиолюбитель | Технари | IT DenisGeek запись закреплена

Солнечный трекер на ардуино :
Схема состоит из одного сервопривода и 2-х фоторезисторов. Фоторезисторы меняют свое сопротивление в зависимости от падающего света, далее происходит сравнение этих двух величин. И в зависимости от того где полученное цифровое значение больше туда и происходит поворот сервопривода.

Поворот осуществляется до тех пор, пока цифровое значение света обоих фоторезисторов не уровняется. Другими словами сервопривод солнечного трекера перестанет поворачиваться, когда свет будет одинаково падать на оба фоторезистора. Ниже приведен небольшой код трекера из которого все понятно, что происходит.

Полученные значения сохраняются в переменные val1 и val2, далее происходит их сравнение. Если они равны то солнечный трекер находиться в покое, а если их разница больше или меньше нуля, то сервопривод начинает работать.

Читайте также: