Солнечный трекер

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017
Есть необходимость содать солнечный трекер. Железо уже сделано. Поварачивать по горизонтали будет актуатор, по вертикали механизм дворников от Жигулей. Управление от контролера Ардуино. Поворачивать по горизонтали один раз в час, а по вертикали один раз в месяц. Значит нужен код с часами и календарем. Сам я не смогу создать такой код, но вместе с сообществом что-то получится. Код часов с календарем привожу ниже. Работает он у меня замечательно. Нужно добавить остальную часть для управления двумя каналами реле.

// clock7+*****OLED display****RTC_DS1307****A4, A5****
// Add libraries
  #include <SPI.h>
  #include <Wire.h>
  #include "RTClib.h"
  #include <Adafruit_GFX.h>
  #include <Adafruit_SSD1306.h>
//
// setup OLED display
  #define OLED_RESET 4
  Adafruit_SSD1306 display(OLED_RESET);
  #if (SSD1306_LCDHEIGHT != 64)
  #error("Height incorrect, please fix Adafruit_SSD1306.h!");
  #endif
//
// Setup RTC
  RTC_DS1307 RTC;
  char monthString[37]= {"JanFebMarAprMayJunJulAugSepOctNovDec"};
  int  monthIndex[122] ={0,3,6,9,12,15,18,21,24,27,30,33};
//
 
 
void setup() {
  Serial.begin(9600);
  // If you want to set the aref to something other than 5v
  analogReference(EXTERNAL);
  Wire.begin();
  RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  // Use I2C Scanner to check the address, if necessary change the 0x3C in the line below
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // init done
  // set font size
  display.setTextSize(2);  // small font size
  display.setTextColor(WHITE);
  display.clearDisplay();
  
}
 
void loop() {
 //***** RTC **********
  DateTime now = RTC.now();
  display.setCursor(22,47);  
  display.print(now.day(), DEC);
  display.print('-');
  for (int i=0; i<=2; i++){
    display.print(monthString[monthIndex[now.month()-1]+i]);
  }
   
  //
  // display time in digital format
  display.setCursor(10,10); 
  display.print(now.hour(), DEC);
  printDigits(now.minute());
  printDigits(now.second());
  
  
  // update display with all data
  display.display();
  delay(100);
  display.clearDisplay();
 
}
 
// **************** End Main Loop *****************
 
void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  display.print(":");
  if(digits < 10)
    display.print('0');
    display.print(digits);
  }

 

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017
Добавил два реле и задал порты.
Вы меня сильно не пинайте. Ардуино у меня только второй день.

// clock7+*****OLED display****RTC_DS1307****A4, A5****
// Add libraries
  #include <SPI.h>
  #include <Wire.h>
  #include "RTClib.h"
  #include <Adafruit_GFX.h>
  #include <Adafruit_SSD1306.h>
//
// setup OLED display
  #define OLED_RESET 4
  Adafruit_SSD1306 display(OLED_RESET);
  #if (SSD1306_LCDHEIGHT != 64)
  #error("Height incorrect, please fix Adafruit_SSD1306.h!");
  #endif
//
// Setup RTC
  RTC_DS1307 RTC;
  char monthString[37]= {"JanFebMarAprMayJunJulAugSepOctNovDec"};
  int  monthIndex[122] ={0,3,6,9,12,15,18,21,24,27,30,33};
  
// Setup Relay 1 & 2  
int nRelayDrive1 = 0; // пин 0 у нас для управления реле 1
int nRelayDrive2 = 1; // пин 0 у нас для управления реле 2

void setup() {
  Serial.begin(9600);
  // If you want to set the aref to something other than 5v
  analogReference(EXTERNAL);
  Wire.begin();
  RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  // Use I2C Scanner to check the address, if necessary change the 0x3C in the line below
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
  // init done
  // set font size
  display.setTextSize(2);  // small font size
  display.setTextColor(WHITE);
  display.clearDisplay();
  

 // ************************Блок реле начало****************************

pinMode(nRelayDrive1, OUTPUT); // объявляем реле 1 в качестве выхода

digitalWrite(nRelayDrive1, HIGH); // отключаем реле 1

pinMode(nRelayDrive2, OUTPUT); // объявляем реле 2 в качестве выхода

digitalWrite(nRelayDrive2, HIGH); // отключаем реле 2

}
 // ***************************Блок реле конец**********************************
void loop() {

 //***** RTC **********
  DateTime now = RTC.now();
  display.setCursor(22,47);  
  display.print(now.day(), DEC);
  display.print('-');
  for (int i=0; i<=2; i++){
    display.print(monthString[monthIndex[now.month()-1]+i]);
  }
   
  //
  // display time in digital format
  display.setCursor(10,10); 
  display.print(now.hour(), DEC);
  printDigits(now.minute());
  printDigits(now.second());
  
  
  // update display with all data
  display.display();
  delay(100);
  display.clearDisplay();

}

// **************** End Main Loop *****************

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  display.print(":");
  if(digits < 10)
    display.print('0');
    display.print(digits);

   
  }
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Это решение слишком сложное.

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

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну так запоминайте час, месяц - что Вам там нужно.

На каждом проходе цикла сравнивайте новые показания с запомненным. 

Если не совпадает - производите нужные действия и запоминаете новое время.

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Спасибо за совет, но мне это пока не по зубам.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Тогда чего Вы хотите?

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Я буду работать над этой программой. И, возможно, кто-нибудь поможет или поправит. Возможно кто-то опубликует свой проект. Время покажет. Я ардуиной занимаюсь второй день, какой с меня спрос. Нужно время разобраться в програмировании.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Если будете работать, обязательно помогут.

bwn
Offline
Зарегистрирован: 25.08.2014

В качестве спонсорской помощи:
1. Хранить.
2. Сравнивать.
3. Изучать.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Как возможность попробовать свои силы, а почему и нет...
В конечном итоге придёте, что нужны датчики положения

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

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

AlexeySh
Offline
Зарегистрирован: 16.01.2017

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

Да, ещё угол поворота по горизонтали по-моему будет зависеть от высоты солнца над горизонтом. И различаться в разное время года.

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

AlexeySh пишет:

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

Да, ещё угол поворота по горизонтали по-моему будет зависеть от высоты солнца над горизонтом. И различаться в разное время года.

с актуатором всё просто - он импульсы выдает, а угол места -резистор и грузик через шкив

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Ватт по 60 каждая! А для чего используете?

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Да по 60 ватт. После панелей контролер, зарядка на аккумулятор. Использую для дополнительного освещения в доме. Настольные лампы, над кухонным столом, возле умывальника подсветка и как резерв на случай отключения сети. Использую LED под 12 вольт. Все дома так привыкли, что без этого не могут.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Я всё таки взял бы готовый скетч, закомментировал всё ненужное, так как если нужен именно солнечный трекер, то за день угол места меняется от нуля до максимума на текущее положение угла места солнца и на закате опять до нуля, всё остальное как-то не комильфо, делать так уж делать или поищите на радиолюбительском сайте, есть трекер солнца и луны (прошивка)

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Спасибо. Уже пришел к этому выводу. Для начала буду пробовать на фоторезисторах в двух осях. Даже датчик сделал.

датчик

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Можно конечно и так попробовать

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Подпишусь на тему т. к. тоже интересует.

Пока имею следующие вопросы:

1. Какой есть немеханический, ну или несильно убиваемый датчик положения? (например, на панели закрепить лазерную указку, на стене линейку из фоторезисторов? Герконы? концевики?)

2. Как эту вещь держит шаговый двигатель с редуктором, всмысле хватает ли ему сил? Мб нужно делать какой-то стопор.

3. Можно ли забить на датчики освещённости и для расчёта угла тупо использовать широту места и часы?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

Подпишусь на тему т. к. тоже интересует.

Пока имею следующие вопросы:

1. Какой есть немеханический, ну или несильно убиваемый датчик положения? (например, на панели закрепить лазерную указку, на стене линейку из фоторезисторов? Герконы? концевики?)

2. Как эту вещь держит шаговый двигатель с редуктором, всмысле хватает ли ему сил? Мб нужно делать какой-то стопор.

3. Можно ли забить на датчики освещённости и для расчёта угла тупо использовать широту места и часы?

Лучший неубиваемый датчик положения

Если с червячным то держит

Не можно, а нужно

bwn
Offline
Зарегистрирован: 25.08.2014

Он по кругу вращается или есть крайние положения. На предмет флюгера задумался.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

bwn пишет:

Он по кругу вращается или есть крайние положения. На предмет флюгера задумался.

Да, по кругу, сделан очень качественно, внутри датчик 12 бит, точность 0,08 градуса достижима!
Хочу 5 вольтовое питание прямо возле датчика организовать, если цифровать встроенным ацп ардуины то точность вполне, я тоже флюгер хочу сделать, но пока допиливаю ПО чёрного ящика
На таких датчиках лунные трекеры работают на параболах в 10 метров, точнее только отъюстированный телескоп

Если есть токарь, то можно прикупить саму микросхему и магнитик к ней, правда они вроде минимум парами продают, надо - ссылку скину

Aleks_neofit
Aleks_neofit аватар
Offline
Зарегистрирован: 28.12.2016

ua6em просветите плиз принцип датчика магнитный? можно ссылку на микросхему

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Aleks_neofit пишет:

ua6em просветите плиз принцип датчика магнитный? можно ссылку на микросхему

Вот к примеру, даташит надеюсь сами найдёте )))

Aleks_neofit
Aleks_neofit аватар
Offline
Зарегистрирован: 28.12.2016

ua6em Спасибо.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Aleks_neofit пишет:

ua6em Спасибо.

Не за что! Я прикупил готовые )))

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

braslav пишет:

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

А обрисуйте, если не сложно, механизм поворота панелей? Ну а слежение за светилом - не такая уж сложная задача

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Опорно-поворотное устройство для солнечных панелей пока недоделано и не испытано. Мысль такая, эта конструкция будет установлена на трубе (на фото оно установлено на коробке) диаметром 60 мм которая будет приварена на место коробки. С трех сторон этой трубы будут просверлены 6отверстий и на эти отверстия приварены гайки. Это будут радиальные крепления. Устройсво с трубой будет надето на трубу-опору, установленную на земле, меньшего диаметра. В гайки вворачаваются болты и крепят устройство. Карандашом дорисовано, в трубку будет установлена на своей оси рамка для панелей - будет поворачиваться по горизонтали актуатором. В задней части устройства винт который на данном этапе можно крутить вручную и строить панели по вертикали. Там будет установлен для поворота механизм стеклоочисителей от авто "Лада".

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

braslav пишет:

будет поворачиваться по горизонтали актуатором. В задней части устройства винт который на данном этапе можно крутить вручную и строить панели по вертикали. Там будет установлен для поворота механизм стеклоочисителей от авто "Лада".

А что есть актуатор?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ulis пишет:

braslav пишет:

будет поворачиваться по горизонтали актуатором. В задней части устройства винт который на данном этапе можно крутить вручную и строить панели по вертикали. Там будет установлен для поворота механизм стеклоочисителей от авто "Лада".

А что есть актуатор?

Яндекс

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Это такая раздвижная штанга с мотором, концевиками и датчиком.

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

braslav пишет:

Это такая раздвижная штанга с мотором, концевиками и датчиком.

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

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Возможно прикрою Жигулевский мотор. Остальное осадков не боится.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

SOLARSAN пишет:

Цена вопроса собранного полностью устройства?

b707
Offline
Зарегистрирован: 26.05.2017

SOLARSAN, что-то больно на рекламу похоже

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

 А где ж файлы проекта?

Вместо них только файл печатной платы .lay6

 

Abbat
Abbat аватар
Offline
Зарегистрирован: 23.08.2017

SOLARSAN пишет:

Могу жирнымм шрифтом, но вроде и так видно https://drive.google.com/file/d/0BxGL_YZNVWC0WWNWRGdtbDJSWjQ/view?usp=sharing

Тоже жирным: там лежит SOLARSAN-GPSv2.lay6. Схемы и скетча нет...

ulis
ulis аватар
Offline
Зарегистрирован: 09.03.2011

SOLARSAN пишет:

Вот набросал...

Двух-осевой модуль SOLARSAN-GPS предназначен для слежения за солнцем на основе расчета данных, полученных от ГЛОНАСС & GPS приемника.

  • Чтобы расчитать текущее положение солнца для заданной долготы и широты местности, не нужны всякие джипиэсы и прочая лабудень, ибо экваториальные координаты светила известны с огромной точностью на тысячи лет вперед. Так что при всей красоте - это не наш метод. А можно вообще, поворачивать панели чисто параметрически, по освещенности 4-х контрольных небольших панелей, точности вполне хватит 
  • phoenixoid
    Offline
    Зарегистрирован: 14.07.2015

    Имхо вполне достаточно Уравнение восхода

    Abbat
    Abbat аватар
    Offline
    Зарегистрирован: 23.08.2017

    Здесь http://stjarnhimlen.se/comp/tutorial.html описано достаточно подробно и с примерами

    А вот скетч с нашего же сайта (поиск рулит!): http://arduino.ru/forum/programmirovanie/slezhenie-za-solntsem-sunpos

     

    braslav
    braslav аватар
    Offline
    Зарегистрирован: 25.02.2017

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

    Alex17
    Offline
    Зарегистрирован: 15.09.2017

    Всем привет. Тоже занимаюсь солнечным трекером. Работает в 2-х осях, собрал на микросхемке LM358 (по одной оси, две одинаковых схемки), пара фоторезисторов, несколько резисторов, и транзисторный Н-мост. Механика - на основе педального узла велосипеда. Следит сам за положением солнца. Сейчас занимаюсь "оптимизацией" системы, прикупил ардуинку. По моему мнению, подход автора темы - нерациональный. С использованием ардуинки можно обойтись двумя фоторезисторами (на канал) - и без всяких сложных вычислений. Если тема актуальна и кому-то интересно, могу описать подробнее. 

    bwn
    Offline
    Зарегистрирован: 25.08.2014

    Alex17 пишет:

    Всем привет. Тоже занимаюсь солнечным трекером. Работает в 2-х осях, собрал на микросхемке LM358 (по одной оси, две одинаковых схемки), пара фоторезисторов, несколько резисторов, и транзисторный Н-мост. Механика - на основе педального узла велосипеда. Следит сам за положением солнца. Сейчас занимаюсь "оптимизацией" системы, прикупил ардуинку. По моему мнению, подход автора темы - нерациональный. С использованием ардуинки можно обойтись двумя фоторезисторами (на канал) - и без всяких сложных вычислений. Если тема актуальна и кому-то интересно, могу описать подробнее. 

    А ардуинка то зачем. Там и компаратора за глаза.))))

    Alex17
    Offline
    Зарегистрирован: 15.09.2017

    У меня поворот по горизонту - на 270 градусов, и только в право или в лево (НЕ по кругу). Иногда компаратор тупо не справяется с задачей. А с ардуинкой - все как надо. К тому же надо развиваться - и самому, и проект. В планах - контроль заряда-разряда-выработки-потребления-баланса... Пока рисую отдельные компоненты скетча - датчики, часы.  

    ua6em
    ua6em аватар
    Offline
    Зарегистрирован: 17.08.2016

    Alex17 пишет:

    Всем привет. Тоже занимаюсь солнечным трекером. Работает в 2-х осях, собрал на микросхемке LM358 (по одной оси, две одинаковых схемки), пара фоторезисторов, несколько резисторов, и транзисторный Н-мост. Механика - на основе педального узла велосипеда. Следит сам за положением солнца. Сейчас занимаюсь "оптимизацией" системы, прикупил ардуинку. По моему мнению, подход автора темы - нерациональный. С использованием ардуинки можно обойтись двумя фоторезисторами (на канал) - и без всяких сложных вычислений. Если тема актуальна и кому-то интересно, могу описать подробнее. 

    так опишите

    Alex17
    Offline
    Зарегистрирован: 15.09.2017

    ua6em пишет:

    так опишите

    Хоть и не писака, но попробую. Правда, не столько про ардуино, сколько про подход к решению задачи. Может немного и офтоп, потому просьба не пинать...

    Свою систему делал для определенной цели. Поворотный механизм в горизонтальной плоскости – на базе педального узла велосипеда. Привод – велосипедная цепь – мотор от шуруповерта. Следящая схемка – на 2-х фоторезисторах + LM358 + Н-мост для управления двигателями.

    В процессе эксплуатации не понравилось несколько моментов:

    -           отслеживание положения солнца очень «острое», такая точность ни к чему, т.к. при частых стартах большой аппетит у мотора (стартовые токи большие).

    -          Из-за люфтов в механике и при наличии ветра происходило постоянное срабатывание.

    -          Проблемно было развернуть систему утром (вечером «смотрим» на запад, а утром солнце светит с тыла). Тоже самое, если половина дня тучи, а потом солнце.

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

    Потом захотелось чего-то еще (много чего), и решил взять ардуинку.

    Для автора топика – возьмите два подключеных последовательно фоторезистора, один вывод – на CND ардуинки, второй свободный - +5 В, и среднюю точку на любой аналоговый вход, простенькая программка по измерению напруги на этом входе (даже напруга не нужна, можно "в попугаях"), и по результату – управление двигателем. Как по мне - вариант намного проще и дешевле. Можно с нужным интервалом, чтоб не так часто срабатывала, можно (нужно) регулировать порог срабатывания, и еще много чего можно…

    Для себя, в проекте, – опИсанный контроль, полный контроль процессов заряда/потребления, статистика (пока без  SD), может и МППТ.

    Хотел вставить схемку подключения и самого датчика, но не пойму пока как это сделать... 

     

    DetSimen
    DetSimen аватар
    Offline
    Зарегистрирован: 25.01.2017

    "возьмите два подключеных последовательно фоторезистора, один вывод – на CND ардуинки, второй свободный - +5 В, и среднюю точку на любой аналоговый вход"

    Если фоторезисторы одинаковые и засвечиваются одинаково, напряжение в средней точки меняется незначительно.  И зависит только от разброса параметров фоторезисторов.  Я не понимаю, зачем такая схема?

    Alex17
    Offline
    Зарегистрирован: 15.09.2017

    DetSimen пишет:

    Если фоторезисторы одинаковые и засвечиваются одинаково, напряжение в средней точки меняется незначительно.  И зависит только от разброса параметров фоторезисторов.  Я не понимаю, зачем такая схема?

    Это  так  и задумывалось. Если засвечены одинаково - сопротивления их равны - значит направление на солнце - ничего поворачивать не надо. Если один из них в тени (даже наполовину) - сопротивление его меняется - меняются и плечи делителя и очень значительно. Сейчас у меня делитель запитан от 12 вольт. При  незначительном смещении в солнечный день потенциал средей точки меняется от 3 до 9 вольт. А дальше дело техники, или программы для ардуино.

    ruslan55
    Offline
    Зарегистрирован: 26.11.2015
    Предлагаю свой вариант солнечного трекера без фотодатчиков. Положение Солнца определяется по формулам небесной механики, исходя из точного времени и координат местоположения. Данный трекер собран на сервоприводах и обеспечивает слежение за Солнцем по всей видимой области неба в любое время, независимо от географического местоположения.
    Более подробно о трекере, можно почитать по следующей ссылке:
    Подробный видеоролик: https://www.youtube.com/embed/plxLlm0jfiM
    Солнечный трекер