Солнечный трекер на Ардуино Очень Простой способ Solar Tracker

Солнечный трекер на Ардуино. Очень Простой способ Solar Tracker

Собрать систему слежения за солнцем очень просто и сейчас буквально за 10 минут я вам расскажу как это можно сделать.
Что же такое Солнечный трекер? Это устройство позволяющее следить за перемещением солнца и всегда поворачиваться к нему лицом.  Слежение за солнцем (Solar Tracker) соберём на Ардуино и подключим к нему солнечную батарею. Для движения за солнцем я использую шаговый двигатель 28BYJ-48 так как он дешёвый и часто применяется в Ардуино проектах. А ещё нам понадобятся 2 фоторезистора, но в конце я расскажу как можно и их убрать. Собрать прибор слежения за солнцем своими руками и использовать его как альтернативный источник энергии это в духе нашего времени.

Сегодня соберём Солнечный трекер. Если не знаете, что это, то это устройство, которое поворачивается за солнцем как подсолнух. Это может пригодиться, например для установки солнечной панели и она будет всегда направлена на солнце. В этом видео я покажу как собрать солнечный трекер своими руками. 
Нам понадобятся только Ардуино, шаговый двигатель, и пара фоторезисторов. А в конце я расскажу, как можно обойтись и без фоторезисторов.
Давайте посмотрим, что у меня получилось, а потом разберёмся как можно этот пример повторить. Это совсем не сложно.
Сразу хочу извиниться за качество съёмки и собранную модель, но главное, что схема работает и видно, как солнечная батарея движется в сторону света. 
Я специально взял не узконаправленный луч, а обычную лампу, так свет сразу попадает на оба фотоприёмника и это ближе к солнечному свету.
Теперь расскажу принцип работы.
Код программы считывает значения верхнего и нижнего фоторезистора и сравнивает их. Если на верхний попадает больший поток света, то мотор начинает движение вверх, и будет двигаться пока значения не сравняются. Тогда мотор остановится на десять секунд. Это значение можно поменять в скетче. А затем, если свет переместился, то начнётся движение в сторону света. 
Скорость перемещения можно изменить. Я специально сделал маленькую скорость, так как свет явление статичное и солнце двигается медленно. Про десятисекундную задержку я расскажу дальше в видео. Просто скажу, что когда свет сравняется, то малейшее колебания света вызывает срабатывание мотора и он может дергаться в диапазоне 1 градус вверх, вниз. Эта задержка устранит эту неприятность.
А теперь отвечу на вопрос почему я использовал шаговый двигатель, а не сервопривод. Всё, просто, шаговик более дешёв, менее капризен, способен работать с большими нагрузками, и потребляет меньше электричества. Правда и у него есть недостатки, но для этого проекта они не так важны.
Ну, вот всё что хотел рассказал. А теперь, тем кто заинтересовался, милости просим в техническую часть.
Я разбил её на несколько примеров. Я расскажу, как правильно подключить и настроить фоторезисторы. Научу управлять шаговым двигателем, и в конце расскажу, как собрать себе такой же трекер.

Сначала надо проверить фоторезисторы.
Для этого подключаем их к Аналоговым входам Ардуино и считываем значения. Вначале я подключил их по схеме с постоянным резистором. Можно взять любые, но я обычно использую номиналом от 4,7 кОм до 10 кОм. Прошиваем скетч и смотрим какие значения выдают ваши фоторезисторы. Они должны быть приблизительно одинаковые, и чем меньше они отличаются, тем проще будет потом настроить скетч.
Сразу скажу. Такие значения вполне могли бы подойти, но потом я вспомнил, что я сжёг эти Аналоговые порты, а когда подключил на другие, то разница была намного больше.
Резисторы и фоторезисторы даже из одной партии, могут значительно отличаться. Можете посмотреть вот это видео, там я подробно рассказываю о фоторезисторах.
И так как разница оказалось очень большая, то я решил подключить фоторезисторы через переменные резисторы, и настроить их как можно точнее.
Смотрим скетч с подключенными переменными резисторами.

Здесь я подключил фоторезисторы к аналоговым входам А3 и А4 и в выводе указал, какой из них будет нижний, а какой верхний. Прошиваем и смотрим.
 Сначала у меня получились вот такие значения. Они не пригодны для работы в скетче управления движением за солнцем. Поэтому надо их подогнать.
Сначала я настрою нижний фоторезистор. Вращением переменного резистора, вы можете настроить любые начальные значения. Желательно настраивать в полутёмном помещении, чтобы сразу указать порог, при котором у вас отключится мотор и не будет искать солнце. Какой смысл искать, то, чего нет. Например, вечером.

Так как у нас минимальное значение 0 а максимальное 1023, то я установил равно по средине, ну или почти посередине. Теперь также настроим верхний фоторезистор.
Вращаем переменный резистор и добиваемся как можно более точного совпадения с нижним фоторезистором. Как только установили, то можно считать, что первичную настройку закончили, и теперь можно переходить к работе с шаговым двигателем.
У меня получились вот такие значения. Они довольно близки к середине, и имеют маленький разброс.

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

Рассмотрим скетч.
Он, как всегда, прокомментирован, и лежит в архиве на моём сайте. Ссылка в описании.
Первое условие означает, что если предыдущая команда выполнена, или ничего другое не выполняется, то сделать 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 кОм, так как они самые распространённые в работе с микроконтроллерами.

Переменные резисторы подключаются так. 
Для этого примера, желательно производить настройку с переменными резисторами. Так будет проще сравнивать значения в скетче.


Примеры использования шаговых двигателей 28BYJ-48-5V
Управляем шаговым двигателем с телефона. Двигатель 28BYJ-48-5V
Шаговый двигатель 28BYJ-48-5V с драйвером на ULN2003
Солнечный трекер на Ардуино Очень Простой способ Solar Tracker
Шаговой Двигатель 28BYJ-48-5V: Основы управления и практическое применение.