Датчик солнечной активности своими руками

Двухосевой солнечный трекер на Arduino

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

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

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

Итак, что использовалось при сборке:

  • Arduino MEGA 2560 R3
  • Сервопривод Tower SG90 — 2x
  • Фоторезистор MLG4416 (90mW; 5-10kOhm/1.0MOhm) — 4x
  • Звонок пьезоэлектрический KPR-G1750
  • Металлический конструктор
  • Резистор выводной 10 kOhm; 0,25W; 5% — 4x
  • Печатная макетная плата, корпус, шнуры для соединения

Mega использовалась исключительно по причине её наличия в шкафу на момент утверждения темы проекта, если учитывать покупку всех элементов с нуля, то в данном случае вполне себе хватит и Uno, но выйдет, конечно, дешевле.

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

Итак, начнём собирать трекер. Для начала разделим предстоящий фронт работ на условные четыре этапа: сборка подставки для солнечных панелей и крепление сервоприводов, крепление к собранной конструкции светочувствительных элементов, пайка и написание кода для Arduino.

Фигура первая: конструкторская

Путём интенсивного поиска была найдена парочка примеров конструкции подобных устройств. Наибольшего внимания удостоились два:

  • www.youtube.com/watch?v=SvKp3V9NHZY – победитель в номинации «Подача материала» проиграл в надёжности и практичности устройства: конструкция представляет собой соединение двух сервоприводов напрямую.
  • www.instructables.com/id/Simple-Dual-Axis-Solar-Tracker — собственно, отсюда и была взята основная идея моей конструкции, за исключением материала и общего внешнего вида поворотного корпуса.

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

Фигура вторая: схемотехническая

Главной задачей крепления фоторезисторов было даже не их подключение, а обеспечение разделения света для каждого из четырёх элементов. Понятно, что оставить их без каких-нибудь перегородок было нельзя, так как тогда значения, получаемые с фоторезисторов, были бы примерно одинаковы и поворота бы не получилось. Тут, к сожалению, возможности металлического конструктора подвели, главным образом из-за наличия во всех деталях отверстий. Найти подходящей металлической детали не получилось, поэтому мой солнечный трекер обзавёлся инновационной перегородкой из картона. Несмотря на достаточно убогонький вид, своё предназначение она выполняет отлично.

Фоторезисторы к корпусу прикреплены вполне надёжно, единственное, с чем стоило бы поработать – это с аккуратностью их расположения на платформе: сейчас они смотрят вверх недостаточно перпендикулярно, что может расстраивать перфекционистов и слегка портить точность поворота.

Читайте также:  Аромат малины своими руками

Немного схемотехники: подключение светочувствительных элементов осуществляется по схеме делителя напряжения, для чего потребовались указанные в списке элементов выводные резисторы. Все фоторезисторы припаяны к общему контакту, подключенному к пятивольтному выходу питания Arduino. Для удобства и эстетики ноги фоторезисторов припаяны к контактам двух трёхжильных изолированных проводов (один контакт остался неиспользуемым и спрятан). Все схемотехнические детали можно рассмотреть на схеме ниже.

Фигура третья: паяльная

Что-либо подробно описывать тут не несёт особого смысла, поэтому просто прилагаю фото используемых материалов и полученную в результате макетную плату.

Фигура четвёртая: с новым кодом!

Общий алгоритм работы заключается в обработке данных с фоторезисторов при помощи АЦП. Имеем 4 элемента, то есть 4 показания, находим среднее показание по левой стороне ((верхний левый + нижний левый) / 2), аналогично по правой, верхней и нижней сторонам. Если разница по модулю между левой и правой стороной больше порога, то осуществляем поворот в сторону с большим средним значением. Аналогично для верха и низа. Особые плюшки в коде: можно задавать вручную чувствительность срабатывания и максимальный и минимальный угол в двух плоскостях. Листинг рабочего кода приведён ниже.

Источник

Устройство слежения за солнцем

Как известно, КПД солнечной панели максимально при попадании на нее прямых солнечных лучей. Но т.к. солнце постоянно движется по горизонту, то КПД солнечных батарей сильно падает, когда солнечные лучи падают на панель под углом. Чтобы повысить КПД солнечных панелей, применяются системы следящие за солнцем и автоматически поворачивающие солнечную панель для попадания прямых лучей.
В данной статье представлена схема устройства слежения за солнцем или по другому трэкер (Solar Tracker).

Схема трэкера проста, компактна и вы легко сможете собрать ее своими руками. Для определения позиции солнца, используются два фоторезистора. Мотор включен по схеме H-моста (H-bridge), который позволяет коммутировать ток до 500 мА при напряжении питания 6-15В. В темноте, устройство также работоспособно и будет поворачивать моторчик на наиболее яркий источник света.

Принципиальная схема устройства слежения за солнцем

Как видно на рисунке ниже, схема проста до безобразия и содержит микросхему операционного усилителя LM1458 (К140УД20), транзисторы BD139 (КТ815Г, КТ961А) и BD140 (КТ814Г,КТ626В), фоторезисторы, диоды 1N4004 (КД243Г), резисторы и подстроечные резисторы.

Из схемы видно, что мотор М приводится в движение при разных значениях на выходах ОУ IC1a и IC1b. Таблица истинности:

Выход IC1a Выход IC1b Состояние мотора
Низк. Низк.
Низк. Выс. Вперед *
Выс. Выс. Остановлен
Выс. Низк. Назад *

* или наоборот, зависит от подключения мотора

Транзисторы в схеме работают в паре, по диагонали, коммутируя +Ve или -Ve к мотору, и заставляя его вращаться вперед или назад.

Во время остановки мотора, он продолжает вращаться, т.к. присутствует вращающийся момент. Вследствие этого, мотор какое-то время генерирует мощность, которая может вывести транзисторы из строя. Для защиты транзисторов от противоЭДС в схеме моста используется 4 диода.

Входной каскад состоит из двух ОУ (IC1) и фоторезисторов LDR и LDR’. Если количество света, попадающее на них одинаково, то сопротивления фоторезисторов также равны. Следовательно, если напряжение питания 12В, то в месте соединения фоторезисторов LDR LDR’ будет напряжение в 6В. Если количество света попадающего на один фоторезистор будет больше, чем на другом фоторезисторе, то напряжение будет изменяться.

Ограничения (лимиты) от +V до 0V устанавливаются четырьмя последовательно соединенными резисторами и подстраивается 2-мя подстроечными резисторами. Если напряжение выйдет за пределы этих ограничений, то ОУ запустит мотор и он постоянно будет вращаться.
Подстроечный резистор 20K регулируют чувствительность, т.е. диапазон между лимитами. Подстроечник 100К регулирует то, насколько лимиты будут симметричны относительно +V/2 (точка баланса).

Настройка схемы:
1. Проверьте напряжение источника питания схемы
2. Подключите двигатель пост. тока
3. Установите фоторезисторы рядом, чтобы на них попадало одинаковое количество света.
4. Полностью выкрутите оба подстроечный резистора против часовой стрелки
5. Подайте питание на схему. Моторчик закрутиться
6. Вращайте подстроечник 100К по часовой стрелке до тех пор, пока он не остановится. Отметьте эту позицию.
7. Продолжайте вращать подстроечник 100К по часовой стрелке до тех пор, пока мотор не начнет вращаться в другую сторону. Отметьте эту позицию.
8. Разделите угол между двумя позициями пополам и установите там подстроечник (это будет точка баланса).
9. Теперь, вращайте подстроечник 20К по часовой стрелке до тех пор, пока мотор не начнет дергаться
10. Немного верните положение подстроечника назад (против часовой стрелки), чтобы мотор остановился (данный подстроечник отвечает за чувствительность)
11. Проверьте корректность работы схемы, поочередно заслоняя от света один и второй фоторезисторы.

Читайте также:  Как сделать бар для газели своими руками

Источник

Солнечная панель на Arduino, отслеживающая местоположение Солнца

В этой статье мы рассмотрим проектирование солнечной панели на основе платы Arduino, отслеживающей местоположение Солнца (следующей за Солнцем) с целью максимизации количества энергии, вырабатываемой солнечной панелью (поскольку она всегда будет развернута в сторону света). Схема нашего устройства будет основана на использовании двух фоторезисторов (LDR — Light dependent resistor) для обнаружения света и сервомотора для автоматического поворота солнечной панели в направлении солнечного света.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Сервомотор sg90 (купить на AliExpress).
  3. Солнечная панель.
  4. Фоторезистор (2 шт.) (купить на AliExpress).
  5. Резистор 10 кОм (2 шт.) (купить на AliExpress).
  6. Батарея (от 6 до 12 В).

Как будет работать проект

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

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

Сборка конструкции

Для сборки конструкции нашего проекта необходимо выполнить следующую последовательность шагов.

Шаг 1. Возьмите небольшой кусок картона и сделайте в нем отверстие на одном из его концов. В дальнейшем мы будем вставлять в него шуруп чтобы зафиксировать сервомотор.

Шаг 2. Соедините вместе два небольших куска картона в форме буквы «V» с помощью клея. Прикрепите их к солнечной панели как показано на следующем рисунке.

Шаг 3. Затем прикрепите нижнюю часть этих скрепленных в форме буквы «V» кусков картона к тому куску картона, в котором вы ранее сделали отверстие.

Шаг 4. Затем через сделанное отверстие прикрепите к этому куску картона сервомотор с помощью шурупа (обычно данный шуруп идет в комплекте с сервомотором когда вы покупаете его).

Шаг 5. Теперь поместите сервомотор на другой кусок картона. Размер этого куска картона должен быть больше чем предыдущих использованных кусков картона чтобы на него могли поместиться собранная макетная плата с батареей.

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

Шаг 7. Теперь поместите плату Arduino, батарею и макетную плату на лист картона и сделайте соединения, показанные на схеме, приведенной далее в этой статье. Финальный вид нашей конструкции показан на следующем рисунке.

Работа схемы

Схема устройства представлена на следующем рисунке.

Читайте также:  Как делают скамейку своими руками

В рассматриваемой нами конструкции солнечной панели, следующей за Солнцем, плата Arduino запитывается от батареи 9V, а вся остальная часть схемы запитывается от Arduino. Рекомендованное напряжение для питания платы Arduino составляет от 7 до 12 Вольт (хотя на самом деле можно подавать от 6 до 20 Вольт), поэтому наши 9 Вольт вполне укладываются в этот диапазон. Соедините положительный вывод батареи к контакту Vin платы Arduino, а отрицательный вывод батареи – к земле платы Arduino.

Затем соедините положительный контакт сервомотора с контактом 5V платы Arduino, а землю сервомотора – с землей Arduino. Сигнальный контакт сервомотора подсоедините к цифровому контакту 9 платы Arduino. Более подробно о подключении сервомотора к плате Arduino можно прочитать в этой статье.

Далее соедините один контакт фоторезистора с одним концом сопротивления 10 кОм и также соедините этот конец к контакту A0 платы Arduino, а другой конец резистора подсоедините к земле, а другой контакт фоторезистора – к 5V Arduino. Аналогично и для другого фоторезистора, только с использованием контакта A1 платы Arduino.

Исходный код программы

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

#include //подключение библиотеки для работы с сервомотором
Servo sg90; //даем имя нашему сервомотору, назовем его sg90
int initial_position = 90; //переменная для хранения начальной позиции сервомотора
int LDR1 = A0; //контакт, к которому подключен первый фоторезистор
int LDR2 = A1; // контакт, к которому подключен второй фоторезистор
int error = 5; //переменная для хранения ошибки
int servopin=9;

Команда sg90.attach(servopin) «подсоединяет» сервомотор к контакту 9 платы Arduino. Далее устанавливаем контакты, к которым подключены фоторезисторы, в режим ввода данных. Затем устанавливаем сервомотор в начальную позицию (90 градусов).

void setup()
<
sg90.attach(servopin); // присоединяет сервомотор к контакту 9
pinMode(LDR1, INPUT); // на ввод данных
pinMode(LDR2, INPUT); // на ввод данных
sg90.write(initial_position); //поворачиваем сервомотор в начальную позицию (90 градусов)
delay(2000); // задержка 2 секунды
>

Затем мы будем считывать значения с фоторезисторов и сохранять их в переменных R1 и R2. Далее мы будем вычислять разницу между этими значениями чтобы определить направление, в котором мы будем поворачивать серводвигатель. Если разница между ними будет равна 0 это будет означать что на оба фоторезистора будет падать одинаковое количество света, поэтому солнечную панель в этот момент времени поворачивать нет необходимости. Ранее мы объявили переменную для хранения ошибки и ее значение равно 5, назначение ее будет следующим – если разница между значениями двух фоторезисторов будет меньше значения этой переменной (5), то сервомотор не будет двигаться (изменять свое положение). А если больше – то сервомотор будет вращать солнечную панель в направлении того фоторезистора, на который падает больше света. То есть значение этой переменной как бы регулирует чувствительность нашего устройства и определяет ту минимальную границу, при превышении которой нам следует начинать вращать серводвигатель.

int R1 = analogRead(LDR1); // считывание значения с фоторезистора 1
int R2 = analogRead(LDR2); // считывание значения с фоторезистора 2
int diff1= abs(R1 — R2); // расчет разницы между значениями с фоторезисторов
int diff2= abs(R2 — R1);
if((diff1
//если разница меньше величины ошибки/погрешности (error) то не делаем ничего
> else <
if(R1 > R2)
<
initial_position = —initial_position; //поворачиваем серводвигатель в направлении 0 градусов
>
if(R1
<
initial_position = ++initial_position; //поворачиваем серводвигатель в направлении 180 градусов
>
>

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

Источник

Оцените статью