Солнечный трекер на Ардуино Очень Простой способ Solar Tracker
Собрать систему слежения за солнцем очень просто и сейчас буквально за 10 минут я вам расскажу как это можно сделать.
Что же такое Солнечный трекер? Это устройство позволяющее следить за перемещением солнца и всегда поворачиваться к нему лицом. Слежение за солнцем (Solar Tracker) соберём на Ардуино и подключим к нему солнечную батарею. Для движения за солнцем я использую шаговый двигатель 28BYJ-48 так как он дешёвый и часто применяется в Ардуино проектах. А ещё нам понадобятся 2 фоторезистора, но в конце я расскажу как можно и их убрать. Собрать прибор слежения за солнцем своими руками и использовать его как альтернативный источник энергии это в духе нашего времени.
Сегодня соберём Солнечный трекер. Если не знаете, что это, то это устройство, которое поворачивается за солнцем как подсолнух. Это может пригодиться, например для установки солнечной панели и она будет всегда направлена на солнце. В этом видео я покажу как собрать солнечный трекер своими руками.
Нам понадобятся только Ардуино, шаговый двигатель, и пара фоторезисторов. А в конце я расскажу, как можно обойтись и без фоторезисторов.
Давайте посмотрим, что у меня получилось, а потом разберёмся как можно этот пример повторить. Это совсем не сложно.
Сразу хочу извиниться за качество съёмки и собранную модель, но главное, что схема работает и видно, как солнечная батарея движется в сторону света.
Я специально взял не узконаправленный луч, а обычную лампу, так свет сразу попадает на оба фотоприёмника и это ближе к солнечному свету.
Теперь расскажу принцип работы.
Код программы считывает значения верхнего и нижнего фоторезистора и сравнивает их. Если на верхний попадает больший поток света, то мотор начинает движение вверх, и будет двигаться пока значения не сравняются. Тогда мотор остановится на десять секунд. Это значение можно поменять в скетче. А затем, если свет переместился, то начнётся движение в сторону света.
Скорость перемещения можно изменить. Я специально сделал маленькую скорость, так как свет явление статичное и солнце двигается медленно. Про десятисекундную задержку я расскажу дальше в видео. Просто скажу, что когда свет сравняется, то малейшее колебания света вызывает срабатывание мотора и он может дергаться в диапазоне 1 градус вверх, вниз. Эта задержка устранит эту неприятность.
А теперь отвечу на вопрос почему я использовал шаговый двигатель, а не сервопривод. Всё, просто, шаговик более дешёв, менее капризен, способен работать с большими нагрузками, и потребляет меньше электричества. Правда и у него есть недостатки, но для этого проекта они не так важны.
Ну, вот всё что хотел рассказал. А теперь, тем кто заинтересовался, милости просим в техническую часть.
Я разбил её на несколько примеров. Я расскажу, как правильно подключить и настроить фоторезисторы. Научу управлять шаговым двигателем, и в конце расскажу, как собрать себе такой же трекер.
Сначала надо проверить фоторезисторы.
Для этого подключаем их к Аналоговым входам Ардуино и считываем значения. Вначале я подключил их по схеме с постоянным резистором. Можно взять любые, но я обычно использую номиналом от 4,7 кОм до 10 кОм. Прошиваем скетч и смотрим какие значения выдают ваши фоторезисторы. Они должны быть приблизительно одинаковые, и чем меньше они отличаются, тем проще будет потом настроить скетч.
Сразу скажу. Такие значения вполне могли бы подойти, но потом я вспомнил, что я сжёг эти Аналоговые порты, а когда подключил на другие, то разница была намного больше.
Резисторы и фоторезисторы даже из одной партии, могут значительно отличаться. Можете посмотреть вот это видео, там я подробно рассказываю о фоторезисторах.
И так как разница оказалось очень большая, то я решил подключить фоторезисторы через переменные резисторы, и настроить их как можно точнее.
Смотрим скетч с подключенными переменными резисторами.
Здесь я подключил фоторезисторы к аналоговым входам А3 и А4 и в выводе указал, какой из них будет нижний, а какой верхний. Прошиваем и смотрим.
Сначала у меня получились вот такие значения. Они не пригодны для работы в скетче управления движением за солнцем. Поэтому надо их подогнать.
Сначала я настрою нижний фоторезистор. Вращением переменного резистора, вы можете настроить любые начальные значения. Желательно настраивать в полутёмном помещении, чтобы сразу указать порог, при котором у вас отключится мотор и не будет искать солнце. Какой смысл искать, то, чего нет. Например, вечером.
Теперь подключим шаговый двигатель. Здесь я расскажу только самое основное, кому интересно, то могут посмотреть вот эти видео. В одном много теории и описаны разные библиотеки, а во втором управление двигателем с телефона, при помощи ползунка.
Рассмотрим скетч.
Он, как всегда, прокомментирован, и лежит в архиве на моём сайте. Ссылка в описании.
Первое условие означает, что если предыдущая команда выполнена, или ничего другое не выполняется, то сделать 2 оборота против часовой стрелки, со скоростью 15 оборотов в минуту.
После окончания поменять значение переменной на TRUE.
Затем сразу же изменить скорость на 5 оборотов в минуту и сделать поворот на 360 градусов по часовой стрелке. После выполнения изменить значение переменной на TRUE.
Последнее условия – это вращение со скоростью 15 оборотов в минуту против часовой стрелки до тех пор, пока другая команда не отменит это условие.
И последняя команда – это запуск шагового двигателя. Это обязательная команда, без неё мотор не будет работать.
Рассмотрим ещё один скетч.
Я назвал его качели. Для слежения за солнцем, необязательно устанавливать фоторезисторы. Достаточно просто установить солнечную батарею в нужное время в нужное место. И вам необязательно даже устанавливать для этого часы. Можно взять один из моих примеров, где я делал часы без модуля часов. Так, как большая точность здесь не важна, то этот пример как нельзя лучше сюда подойдёт.
Замерев в каком положении должно быть солнце в определённое время можно заранее установить батарею в это положение, и не важно есть ли на улице тучи, ваша солнечная станция всегда будет смотреть в нужное место и собирать те крохи солнца, которые есть в нашей средней полосе.
Ну и наконец дошло дело до главного скрипта дня.
Как подключить шаговик, вы уже знаете. Фоторезисторы сверху и снизу от солнечной батареи так и называются. BOTTOM и UP, то есть низ и верх.
Всё остальное как и в предыдущем скетче, только скорость я сделал 5 оборотов в минуту.
В цикле LOOP происходит вся основная магия слежки.
Сначала считываем данные с фоторезисторов и присваиваем переменным.
Чтобы не работать с большими числами, я в функции map перевёл значения от 0 до 1023 в диапазон от 0 до 100. Это более грубые данные и с ними проще работать. Меньше будет дёрганий мотора.
Вычисляет абсолютную величину (модуль) числа.
Так мы выводим полученные значения в монитор порта. Это очень сильно пригодиться для настройки. Например, для определения, когда уже солнца ждать не стоит.
Сначала идут просто считанные данные с фоторезисторов, а дальше уже обработанные, с ними мы и будем дальше работать.
В этом условии задаём значение меньше которого уже ждать солнца не стоит. Вам надо здесь указать свои значения.
Если свет попадает на верхний и нижний фоторезистор одинаково, я сделал паузу в 10 секунд, а то на этом пограничном состоянии мотор начинает часто срабатывать.
Если на верхний фоторезистор поступает больше солнца, то движемся вверх, если наоборот, то вниз.
Этот delay() нужен только для замедления отображения в мониторе, можно убрать.
Это функции обработчики фоторезисторов. Здесь указано куда крутиться и на сколько градусов.
Схема подключения
Фоторезистор с постоянным резистором подключается вот так. Это обычная схема делителя напряжения, где один вывод фоторезистора подключается к питанию, а второй, через дополнительный резистор подключается к другому полюсу питания. Не важно, как вы подключаете фоторезистор к плюсу или к минусу, просто в скетч будут приходить данные от 0 до 1023 или от 1023 до 0. Вам надо будет только написать другое условие. Величина резисторов также не важна. Я использую резисторы 4,7 ком или 10 кОм, так как они самые распространённые в работе с микроконтроллерами.
Переменные резисторы подключаются так.
Для этого примера, желательно производить настройку с переменными резисторами. Так будет проще сравнивать значения в скетче.
Источник
Arduino трекер солнечной батареи
Cолнечный трекер (система слежения за солнцем) на Arduino
Если вы установили солнечные панели, то вы, наверное, знаете, что панели работают лучше всего, когда они направлены напрямую к солнцу. Это звучит достаточно просто, за исключением того, что Солнце движется в течение всего дня. Именно поэтому в настоящее время существует целый ряд различных механизмов, которые работают на ряде принципов с целью поворота вашей панели или массив панелей непосредственно к Солнцу, они называются солнечные трекеры.
Есть два основных типа трекеров, одно- и двоосевые трекеры. Одноосевые трекеры корректируются каждый месяц или около учета сезонных изменений в положении Солнца, единственная ось затем используется для отслеживания ежедневного движения солнца по небу. Двоосевые трекеры устраняют необходимость ежемесячной корректировки: с помощью одной оси идет отслеживание движения Солнца в день, а другая ось для отслеживания сезонного движения. Одноосевой солнечный трекер улучшает прием солнечного излучения примерно на 25%, а двоосевой трекер примерно на 40%.
Эта система управления трекером предназначена принимать солнечный свет с востока и запада (слева и справа) стороны панели солнечных батарей и определяет, каким способом переместить панель, чтобы он был напрвлен непосредственно на источник света. Сервопривод используется для приведения в действие панели слежения; они доступны в широком диапазоне размеров и их можно масштабировать в соответствии с размерами панели.
Шаг 1: Элементы
Arduino Uno
Одноосевая основа (смотреть шаг 6)
2 х 4.7 кОм резисторы
2 х фоторезистора (LDR)
Сервопривод
Шаг 2: Собрать схему
Прежде всего, необходимо начать сборку компонентов на вашей панели солнечных батарей, или на макете. В фоторезисторах сопротивления изменяются с изменением интенсивности света, поэтому они должны быть соединены таким образом, что изменение сопротивления преобразуется в сигнал напряжения, который попадает в Arduino. Сервопривод управляется через один из выходов ШИМ в Arduino.
Сервопривод должен иметь такие размеры, в зависимости от размера вашей солнечной панели. Панель используется в этом примере является небольшой и сравнительно легкой; поэтому используется небольшой сервопривод и питается от Arduino. Для большего сервопривода (все, что выше 9 граммов), вам нужно будет питать сервопривод внешне, так как Arduino не обладает достаточным потенциалом для этого.
Шаг 3: Код
Скачать файл: solartracker.zip [849 b] (cкачиваний: 1009)
Теперь вы можете загрузить код на ваш Arduino.
Кодовые переменные измеряют интенсивность света от обоих фоторезисты, сравниваются, чтобы увидеть, который получает больше света. Если разность больше, чем небольшой порог, то Ардуино подает сигнал на сервопривод двигаться в том же направлении, чтобы направить панель в направлении источника света. Если свет падает ниже определенного уровня обоих датчиков, то она определяется как ночное время и панель перемещается на восток в ожидании восхода солнца.
Шаг 4: Калибровка ошибки датчика
Из-за различий между фоторезисторами, резисторами и сопротивлений используемой проволоки, будет разница между сигналом, полученным от обоих датчиков, даже если они получают одинаковое количество света. Это учитывается путем введения калибровки смещения в расчет, это число нужно будет скорректировать в коде в соответствии с вашими настройками. Отрегулируйте этот поправочный коэффициент,
Строка 13: int calibration = 204
Наиболее точным способом определить этот фактор является дать свет поровну между обоими датчиками, а затем использовать монитор последовательного порта на вашем компьютере, чтобы увидеть выходные значения на восточном и западном датчике. Разница между этими двумя значениями и будет калибровка смещения. Фотодатчики очень чувствительны, поэтому трекер движется только тогда, когда разница между ними больше, чем 15 (в коде), в противном случае он будет непрерывно отслеживать падение света.
Шаг 6: Изготовление одноосевой основы
Ваша основа должна выглядеть как на прилагаемом изображении, когда она будет завершена.
В идеале стенд должен быть сделан из алюминиевого угла, как он является сильным, прочным и пригоден для использования на открытом воздухе, но он также может быть изготовлена из дерева, фанеры или ПВХ труб.
Стенд по существу состоит из двух частей, основания и поддержки панели. Они соединены вокруг точки опоры, на которой опорные панели могут делать орбитальное движение. Сервопривод монтируется на основание и рычаг приводит в движение опору панели.
В идеале, точка поворота должна быть помещена в центр тяжести опоры панели.
Два сервопривода может быть использовано для более тяжелых панелей, по одной на каждой стороне панели. Геометрия должна быть такой же, и сервоприводы должны иметь тот же тип / модель. Затем можно дублировать код сервомотора в программном обеспечении, таким образом, что обоим сервоприводам присвоены те же команды, и они будут двигаться вместе, чтобы привести в действие панель.
Для очень тяжелых панелей или для солнечных батарей, сервоприводы должны быть заменены более сильными шаговыми двигателями.
Источник
Солнечный трекер
Солнечный трекер — система, предназначенная для слежения за перемещением солнца, чтобы получить максимальный КПД от солнечных батарей.
Концепция трекера предельно проста — по двум датчикам контроллер заставляет серводвигатель поворачивать платформу с солнечной батареей в ту сторону, где больше света.
Домашний прототип рабочего трекера показан на фото ниже:
В проекте используется два датчика-фоторезистора, которые направлены в разные стороны от плоской поверхности на 45°, т.е. относительно друг-друга фоторезисторы сориентированы на 90°. На сами датчики надеты колпачки, чтобы поток света, падающий на них был узконаправленным.
В проекте используется контроллер Arduino. Контроллер периодически считывает значения с двух датчиков и сравнивает их. Если значения с датчиков одинаковы, значит панель наведена на солнце. В случае, если значение одного из датчиков отличается от другого, контроллер дает команду на серводвигатель для поворота платформы. Команда на серво работает до тех пор, пока значения с датчиков не сравняются.
Для предотвращения чрезмерного поворота платформы присутствуют программные лимиты поворота, которые в случае необходимости можно отключить. Также, в коде программы предусмотрена константа deadband, при разности с датчиков меньше значения этой константы, контроллер не будет давать команду на поворот серводвигателя. Т.о. предотвращается дергание платформы (джиттер).
Также, на всякий случай добавлено 2 переменные позволяющие сгладить значения от датчиков. Это помогает отфильтровать «выбросы» и шум.
Скетчи для Arduino
В начальной секции программы описываются подключаемые библиотеки (в нашем случае servo.h), определяются пины и константы
В следующей части кода описывается функция Setup(). Данная функция выполняется только один раз при запуске программы или после сброса контроллера. Здесь вы можете вывести в Serial Monitor какие либо данные для отладки, или как в приведенном ниже примере сделать «прогон» серводвигателя по всей траектории до лимитов.
Финальная часть кода выполняется в циклической функции loop(). Здесь считываются значения с датчиков, производятся все расчеты и выдаются команды на серводвигатель.
Также, в программе используется вспомогательная функция getTravel(), которая используется для вычисления, куда поворачивать серво — влево, вправо или вообще ничего не делать. Функция просто возвращает значение: 0 — ничего не происходит, -1 поворот влево, +1 поворот право.
Конечно, это простой солнечный трекер и может служить основой для более сложных устройств. К примеру можно сделать более лучшую фильтрацию входных переменных, добавить ПИД-регулирование, в схему добавить второй сервопривод для перемещения солнечной панели по вертикали и получения максимального КПД.
Источник