Народный трекер для солнечных панелей

В России в декабре 2019 года приняли закон о микрогенерации, одновременно стоимость элементов для строительства домашних Электростанций снижается. Поэтому рынок зелёной энергетики будет в нашей стране активно развиваться. Смотрим видео на моем канале youtube

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

Основные компоненты солнечной электростанции (СЭС)

  • Солнечные панели
  • Рэйлинги и крепеж
  • Провода и кабели
  • Гибридный/сетевой инвертор
  • Аккумуляторная система храниения энергии
  • Электрощит и автоматические выключатели
  • Солнечный трекер (поворотная платформа приводами наклона)
  • Анемометр (датчик ветра)
  • Контроллер солнечного трекера

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

схема контроллера солнечного трекера
схема простого трекера на линейных актуаторах

Скетч и библиотеки

Я нашёл интересную библиотеку SolarLib, написанную Люком Миллером в 2012 году. Правда в аннотации автор прямо пишет, что из-за высокой точности вычислений либа работает только на мощных 32 битных ARM микроконтроллерах, а на всяком маломощном старье типа ардуино уно/нано она даже не компилится. 

Однако, автор оставил ссылку на сайт американского национального управления Океанами и Атмосферой, на котором я нашёл много интересного про расчеты положения небесных тел. 

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

Я решил принести миру немного пользы и на основе этих формул и частично либы Люка Миллера написал свою библиотеку SolarPos. Это простой пример использования моей библиотеки.

#define timeZoneOffset 3            //часовой пояс
#define mylat 54.2192               // широта
#define mylon 37.6974               //долгота

#include "SolarPos.h"               //моя либа
#include "DS3231M.h"                //библиотека часов реального времени

DateTime now1;                    //текущее время
SolarPos sp1(timeZoneOffset, mylat, mylon);     //объект SolarPos

void setup() {
  Serial.begin(115200);
  now1 = DateTime(2020,3,4,12,47,0);
}

void loop() {
  float angle = sp1.getSEC_Corr( now1.unixtime() );
  float azimuth = sp1.getSAA( now1.unixtime() );
  Serial.print("Time: ");
  printDateTime(now1);
  Serial.print("Elevation: ");
  Serial.print(angle);
  Serial.print("Azimuth: ");
  Serial.print(azimuth);

  Serial.print("Sunrise: ");
  printDateTime(sp1.getSunriseTime(now1.unixtime()));
  Serial.print("Sunset: ");
  printDateTime(sp1.getSunsetTime(now1.unixtime()));
  Serial.print("Day length, minutes: ");
  Serial.println(sp1.getSunDuration(now1.unixtime()));
  Serial.println();
  now1 = now1 + TimeSpan(0,1,0,0); //увеличиваем текущее время на час
  delay(1000);
}

void printDateTime(DateTime t){       // Utility function to print time and date
  Serial.print(t.year());
  printDateDigits(t.month());
  printDateDigits(t.day());
  Serial.print(" ");
  Serial.print(t.hour());
  printDigits(t.minute());
  printDigits(t.second());
  Serial.println();
}

void printDateDigits(int digits){   // Utility function to print month/day digits nicely
  Serial.print("-");
  if(digits < 10) Serial.print("0");
  Serial.print(digits); 
}

void printDigits(int digits){     // Utility function for time value printing
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

При инициализации объекта SolarPos ему передаются, часовой пояс и гео-координаты установки панелей, а методы getSEC_Corr() и getSAA() возвращают угол возвышения и азимут солнца в зависимости от текущего времени. Моя библиотека предназначена для работы совместно с часами реального времени, поэтому она использует объекты времени из библиотеки DS3231M.h. При этом, моя либа спокойно компилится под уно/нано и уж тем более под крутые еспшки и стмки, оставляя достаточно места под юзерский код.

Скетч найдёте на странице проекта на GitHub.

Описание режимов работы контроллера

Тут будет текст.

Поддержи Автора!

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

Если вам нравится идея проекта Народного трекера — поддержите автора!

Если проект народного трекера окажется востребованным, мы вместе сделаем Автономное электричество доступней. 

статья находится в процессе написания…

122 комментария к «Народный трекер для солнечных панелей»

  1. Задумка интересная. Но в современных реалиях малоактуальная. Разве что если решил уехать жить в такую глушь, где электричества нет и не будет.

  2. а если упростить задачу, по горизонту панель двигается по часам, достаточно скоректировать положение один раз, а по вертикали выставить на средний градус…. так как есть мнение что изменение до 45 градусов не сильно влияют на КПД панелей

    1. Тема оказалась не востребована 🙁

  3. Добавьте PayPal,а то не со всех стран Вам можно деньги перевести. Огромная благодарность за Ваш труд. Тема очень актуальная. Тот кто пишет что нет видимо сами не прочь заработать на этой теме.

  4. Добрый день еще раз. У меня такой вопрос — вы вашу библиотеку тестировали? У меня выдает ошибку компилятор на эти строки кода
    #ifndef SolarPos_h
    #define SolarPos_h
    Я в этом плохо разбираюсь. Помочь можете?

    1. Конечно тестировал. Я ее использую для своего одноосевого трекера. Библиотеке есть тестовый скетч. Он у вас компилирует? Дайте полный текст вашей ошибки.

  5. Вечер добрый, извините сейчас не дома, не могу проверить ещё раз ошибку, у меня к Вам ещё такой вопрос как все это подключить/привязать к сервомотора?

    1. 1. Никак, в листинге нет ничего для работы с сервой.
      2. Выучить азы программирования в Arduino IDE, и дописать самому.
      Автор показал что можно сделать(правда длину дня считает не совсем верно минуты 3 и пару градусов по углам ошибка, сравнивал с таблицей, вероятно что-то с типами данных).
      Помочь человеку никто не желает, а вот даром код напиши. (Вы же на работу не за спасибо ходите) А каждый хотя бы по 10 рублей скинул автору вот и был бы толк тратить время)

  6. тема интересная!!!!
    когда то учил в школе паскаль, сейчас очень тяжело разбираться с програмированием
    нашел скетч, но там весь астрономический календарь построен на математических расчетах. Пока не пробовал заказал ардуино реле часы и на всякий случай ЖПС трекер (для ледарей искать широту и долготу местности)
    сейчас мой трекер крутится по часовом реле 6 год по горизонтали

  7. Я за поддержку автора (финансово), я понимаю что труд должен быть вознагражден, но я могу перевести n сумму только через PayPal. Об Arduino я узнал 7 недель назад, не будьте так строги ,я учу, и за свои почти 50 лет учил и применяю на практике обширные знания но в другой сфере. Это ответ Владимиру.
    У меня просьба к автору, Вы могли бы выложить, если это Вас не затруднит, код которым управляются ваши панели. Для меня это было бы большим подспорьем, я конечно же доковыляю сам но боюсь что это займет много времени. Огромное Вам спасибо за все ваши проекты которыми вы так просто делитесь !!!!

  8. Проект отличный, но не доделанный сильно. Затравка для сбора средств скорее всего. Я вот практически закончил проект солнечного трекера на Arduino, с GPS и часами реального времени и с дисплеем от старого мобильного Nokia. Выложу абсолютно бесплатно для всех на радиокоте.

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

  9. Еще не «допилил». Схема подключения примерно такая же. Автор этого сайта не указал на картинке на какие пины подключать выходы с энкодера. В моем варианте «забиты» все пины ардуины, дополнительные датчики подключить врят ли выйдет. GPS планирую использовать только для получения координат места и синхронизации часов реального времени, но это не обязательно, работать будет и без GPS (надо только руками в скетч вбить свои координаты). И это будет прототип, то есть без исполнения в железе (проверяю схему в симуляторе). Кому надо оставляйте свою почту, вышлю исходники. На радиокоте что то глухо с публикацией статей сейчас.

  10. Еще не «допилил». Схема подключения примерно такая же.В моем варианте «забиты» все пины ардуины, дополнительные датчики подключить врят ли выйдет. GPS планирую использовать только для получения координат места и синхронизации часов реального времени, но это не обязательно, работать будет и без GPS (надо только руками в скетч вбить свои координаты). И это будет прототип, то есть без исполнения в железе (проверяю схему в симуляторе). Кому надо оставляйте свою почту, вышлю исходники. На радиокоте что то глухо с публикацией статей сейчас.

  11. Первый вариант. Не законченный, но уже рабочий. Во вложении картинки (подключение отличается от авторского варианта). Проект для Proteus (для тех кто знает что это и как пользоваться). Скетч для ардуины с комментариями. Необходимые библиотеки для компиляции. Тестовая готовая прошивка. Выкладываю безплатно, так как занимаюсь этим проектом в личных интересах и в свое свободное время.
    https://yadi.sk/d/C6aF41KmcpbDZg

    1. https://yadi.sk/d/C6aF41KmcpbDZg

      Здесь умное и точное устройство на две оси. Одну ось можно убрать (поворот по вертикали). На самом то деле ничего сложного. Сейчас осталось разобраться с сохранением (координат) положения трекера при отключении питания. В остальном уже рабочий вариант.

  12. https://yadi.sk/d/C6aF41KmcpbDZg

    Законченный вариант (Без GPS). Положение трекера сохраняется в ЕЕПРОМ при отклюяении питания. При закате трекер поворачивается на восход в режим ожидания. Вся необходимая инфа на дисплее от старого мобильника нокиа. Все пины ардуины забиты. Для подклюяения доп. датчиков необходимо отказаься от дисплея.

  13. Вопрос:
    1. Видел схемы без драйвера, можно ли использовать блок реле на 4 шт (уже прикупил) и как подключить
    2. можно ли сделать что б после заката оставался на месте а за 5-10 мин до восхода возвращался на исходную
    3.
    P.S. сначала думал собрать как тут http://arduino.ru/forum/programmirovanie/sketch-dlya-solnechnogo-trekera
    но у Вас Дмитрий интересней

    1. 1. Реле вместо драйвера использовать можно. Подключить можно на те же пины что и драйвер. Чуть поправить скетч. Драйвер использую только по причине того, что планирую сделать шим управление (мягкий старт). И при больших токах нужно использовать надежные не очень то компактные реле.
      2. Сделать можно но не целесообразно. Поясню. Трекер весь день следил за Солнцем, заряжал батареи. Батареи к концу дня заряжены. Ночью могут разрядится или еще какая то неисправность, в результате утром трекер не повернется на восход и система зарядки не заработает. Потому лучше поворачивать сразу же после заката в исходное положение.
      3. Это мой первый вариант. Автор данной статьи просто разозлил. Я этот вариант за пару вечеров склепал. Есть еще несколько вариантов калькуляторов для Солнца (для Луны, для любой планеты Солнецчной системы, это для трекеров телескопов). Проверю разные.

  14. 1. Если не тяжело можете для меня (для тех кто без драйвера!!! 🙂 ) поправить скетч
    2. У меня сетевой инвертор (аккумуляторов нет), а поворачивать хочу после заката так как практика такая что шквальный (ураганный) ветер в основном з севера (на глаз).
    3.видел информацию, очень большой проект итальянца — есть слежение солнце, луна…. https://github.com/k3ng/k3ng_rotator_controller/blob/master/k3ng_rotator_controller/k3ng_rotator_controller.ino
    на основе его на Украине сделан коммерческий проект https://drive.google.com/file/d/1tmIqvCqQfWALVugp9yhP492vGjQXV3hX/view?usp=sharing
    Не реклама!!!!!! просто на любом форуме как СПАМ его много.
    Сам уже где то 2 месяца собираю информацию по «умному трекеру» познание программирование школьный Паскаль (и то уже его забыл)

    1. k3ng_rotator_controller/k3ng_rotator_controller.ino
      Этот проект я видел и изучал подробно. Но там скетч для амеги, в мелкую ардиину не влезет. Очень много там датчиков всевозможных и прочего. Надо вычищать лишнее. Сейчас пока не до него. Хотя именно на него ориентируюсь в первую очередь. Мне нужен был трекер для параболической антенны, для нагревателя на ее основе. Для солнечных панелей не нужна особо большая точность. И еще думаю прикрутить таймер, чтобы например раз в 5 минут трекер включался. Раз в минуту, наверное, слишком часто. Энкодер планирую самодельный, два датчика холла, установленные рядом и на оси вращения актуатора ниодимовый магнит от старого жесткого диска. Таким образом будет происходить эмитация енкодера (распозноавние вращений влево и вправо). Просто датчик импульсов не годится, хотя вероятно и с ним можно заморочиться. Для реле сделаю скетч, и возврат на восход сделаю, но прямо в момент расчетного восхода, иначе никак.

    2. https://yadi.sk/d/pusOrJ5FPKE7wA

      Здесь тот же вариант, только с реле вместо драйвера. Трекер останавливается после заката и поворачивается на восход в момент наступления восхода (расчетный восход). Библиотеки для компиляции в исходном варианте. Сюда не добавлял. Интернет тормозит сильно (я далеко от города нахожусь).

  15. Дмитрий, огромная Вам благодарность, и огромное спасибо за вашу человечность и альтруизм!!! Вы достойный ЧЕЛОВЕК !

  16. Дмитрий, большое спасибо!!!!

    а в какой программе-эмуляторе проверяете скетчи?

  17. Proteus от лабцентрэлектроник — это эмулятор электронных схем. Выслать не могу. Ищите в интернете.

  18. Дмитрий, вопрос родился
    у меня трекер умеет крутится на 160-170 градусов (приблизительно, хватает)
    как объяснить трекеру что крутится нужно начинать с 85 градусов по азимуту (крайняя точка отчета утром) а солнце встает например 70 градусов.

    не нашел в скетче информацию где реальное положение трекера связывается с астрономическом значением
    P.S.
    извините за примитивные вопросы (как понимаю так и спрашиваю:) )

    1. Вопрос не примитивный. А оченть даже по делу. Я еще не реализовал лграничение по конечным точкам. Это сделать не сложно. Я сейчас занят работой по благоустройству двора и мелкому и крупному ремонту дома. Пока погода позволяет…. Время будет — понемногу буду доделывать прошивку и обновлять архивы с первым и вторым вариантом. На долго не растяну. Пару недель. И я не альтруист, у меня есть мотивы делать прошивку и выкладывать бесплатно. Я делаю для себя и выкладываю на обозрение, для тестирования так сказать.

    2. case 1: // если woshod=1 (то есть наступил) выполнить следующие строки (перевод трекера на
      // восход)
      Slegenie_G = azimuth*10; // вычислить положение трекера по горизонту (число имульсов для мотора энкодера =
      // азимут на 10, 10- число импульсов на градус)
      Slegenie_W = angle*10; // вычислить положение трекера по вертикали (число имульсов дя мотора энкодера =
      // склонение на 10, 10- число импульсов на градус)
      break;

      Slegenie_G — это координата для трекера, которая вычисляется по примитивной формуле Slegenie_G = azimuth*10;
      azimuth — это вычисленное калькулятором положение Солнца
      10- это число импульсов от энкодера при повороте на 1 градус. Может быть любым, это уже зависит от механической части.

  19. Также тормозит и даже останавливает работа (трава в дворе, под двором в саду) картошка (бурьян, жук) и т.д…. сейчас устанавливаю новый инвертор на 10 кВт (взамен 5кВт б/у без доков после ремонта) и готовлю доки на «зеленый». В свободное время от основной работы жены и ребенка:)

    и заметил что 10 число импульсов на градус встречается много раз в скетче. Есть ли смысл присвоить «буковки» и их менять в начале скетча типа как настройка отдельно для вертикали и горизонтали.

    1. Уже поменял на буковки в самом начале. Теперь только в начале скетча нужно вводить. Добавил возможность установить минимальные и максимальные углы поворота. Концевики скорее всего не буду добавлять в программу. Предполагаю, что концевики будут разрывать питание моторов приводов, чтобы механика не сломалась, так надежнее. Или же будет в программе один обобщенный сигнал со всех концевиков. В общем то программа практически готова (без GPS пока). Выложу вечером. Интенет виснет.

  20. Оперативно!!! Спасибо!!!
    Концевиков будет достаточно в механике так же не вижу надобности.
    Руки чешутся сделать но сначала глобальные вопросы (подключить инвертор) и переделать щитовую. Приедут проверять с РЕС перед подключением к «Зеленому»
    у меня принципе есть все для монтажа, даже GPS
    (WAVGAT GY-NEO6MV2, GPS NEO6MV2), телефон не рабочий Нокия присутствует, не помню какая Нокия и незнаю какой экранчик.

  21. и вот перечитал наши переписки нашел для себя интересный момент:
    «Просто датчик импульсов не годится, хотя вероятно и с ним можно заморочиться».
    У меня в заводском актуаторе кажись стоит датчик импульсов (геркон). нужно сегодня проверить!!!!

  22. какой хотите нагреватель парабола с зеркальной поверхностью и светить на бочку с водой или крутить Cолнечный коллектор (трубчастый) и как себя буду вести трубы соедининениые с краником в душе (перекручиватся, сгибатся)

    еще есть идея (мысль), для нагревателя наверное не очень актуально но все же. Панелей парусность большая. Датчиков ветра и т.д. нет и не знаю насколько нужно. Если ставить горизонтально град побьет. !!!А если приделать магнитный тормоз, магнитный замок на дверь в подъезд (есть в наличии).
    Думал когда то реализовать на реле (не крутится работает магнит, поехал трекер магнит отключился) но не придумал как реализовать механику на практике

  23. Тарелку параболическую (спутниковую) хочу использовать. Трубы перекручиваться не будут, так как трекер не делает полный оборот (движется лево право, не переходя через нулевую точку. Но мне не для нагрева воды надо…. Про датчик ветра и града не знаю что сказать. За много лет наблюдений — град всегда сопровождается сильным ветром, так что тут масло масляное, или или.

  24. Вот еще что интересно. В советской школе учили, что азимут отсчитывается от северного полюса. Направление на северный полюс определяли магнитным компасом. Сейчас ситуация совсем иная. Оказывается есть географический северный полюс и магнитный северный полюс. Разница между ними в 11.5 градусов. И эта разница продолжает увеличиваться. Кто нибудь знает, от какого полюса отсчитывать азимут!?

  25. Отвечаю на вопрос МЕХАТРОН DIY, чем разозлил автор?
    Тем что это не МЕХАТРОН DIY, а LOХАТРОН DIY.

  26. Аргументировать — это растягивать комменты на 1000 слов. К чему слова, если и так все на поверхности.

  27. Я постараюсь обьяснить. МЕХАТРОН DIY потому что написали что всё работает а скетч не выкладыли даже после просьб. Хотя тема называется»НАРОДНЫЙ ТРЕКЕР ДЛЯ СОЛНЕЧНЫХ ПАНЕЛЕЙ» — доступный, не дорогой и для непрофисионалов понятный и лёгкий для повторение.
    P.S. просьба удалить данное сообщение, оно не для всех!!!!

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

    1. интересно же!!!! скетч так и не скинули с доделкой

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

  30. …. и у него же используется геркон. можно ли как то использовать у Вашем проекте я не знаю, не хватает знаний, подсмотреть можно

  31. Закончил первый вариант трекера с библиотекой с этого сайта. Добавил GPS. Но к великому разочарованию данная библиотека не позволяет синхронизировать координаты с GPS. Координаты жестко фиксированы в самой прошивке. Но часы реального времени синхронизировать можно, что и реализовал. Раз в месяц часы синхронизируются по GPS (естественно при наличии GPS). Трекер срабатывает раз в пять минут. Время срабатывния можно изменить (от 2-х до 59-и минут). Сделал 4 варианта: с драйвером и энкодером, драйвером и герконом, реле и энкодером, реле и герконом. ( GPS приемник не обязателен). Выложу на обозрение на днях. Следующий вариант будет на другой библиотеке Солнечного калькулятора. Механики у меня пока нет. Все схемы и прошивки проверяю в симуляторах. Но с вероятностью 99% в железе заработает.

  32. супер! попробую собрать все на железе УРА!!!
    всё комплектуючие есть кроме экрана (не критично)
    не хватает времени катастрофически
    Маленькое отступление — вчера был человек с РЭС по зеленому тарифу были замечание буду убирать (самое большое замечание было — подключен б/у инвертор на который я не подавал документы) — после жду человека з областного РЭС будет подключать АСКУЭ и давать заключение на разрешение генерации (хотя работает больше 6 лет с постепенным усовершенствованиями )

  33. https://yadi.sk/d/1JDuhYcNrxuYOw
    Выкладываю несколько вариантов прошивок для трекера на библиотеке с этого сайта.
    1. Есть возможность вводить период срабатывания трекера (2-59 минут)
    2. Есть возможность подключить GPS приемник для синхронизации RTC.
    3. Трекер двухосевой. Для работы с одной осью необходимо немного править скетч.
    4. Управление по осям выполнено раздельно, сначала одна ось наводит трекер, потом вторая.
    С библиотекой Солнечного калькулятора невозможно выполнить синхронизацию координат по GPS. В ближайшее время буду проверять другие библиотеки и варианты. Обновления будут по этой же ссылке. Предыдущие варианты удалил.

  34. Добрый день, вечер, ночь!
    Дмитрий спасибо большое!!!!
    сегодня собрал всё на столе, прошил ардуино версия реле+геркон+жпс
    https://drive.google.com/file/d/16sXPeVXK0qJsAMTKVE6e7ma_Ynh8A368/view?usp=sharing

    завтра буду подключать к системе поворота
    Есть вопрос можно ли…?
    1. придумать простую настройку только на горизонталь (поставил 1 — только горизонталь, поставил -2 горизонталь и вертикаль)
    И не пойму как….
    2. подключить геркон — подавать +5v а после геркона подключать ардуино D6 и D7 контакт или подключать землю.Как правильно?
    3.Как правильно запустить что бы сихронизировать правильное положение трекера до солнца, думаю нужно включить до восхода солнца (до реального «0» положение). Или можно вручную поставить трекер
    первый раз на солнце. Спросил и сам ответил:)

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

  35. Простую настройку сделаю (поставил 1 — только горизонталь, поставил -2 горизонталь и вертикаль), но не сейчас. Геркон один конец на землю, второй на ардуино D6 или D7. С установкой на Солнце — это танцы с бубном. Нужно подгонять вручную. Отключать питание с моторов, крутить вручную. В полдень азимут 180 градусов, когда Солнце точно на юге. Программа высчитывает азимут и умножает на число импульсов на один градус поворота, это и будет координата для трекера (180*10 = 1800, 10- это число импульсов на градус поворота). За ноль трекер не проходит. Можно настроть на закате, когда трекер не управляется. Без импульсов работать не будет, включится или вертикаль или горизонталь и все, надо чтоб были импульсы. Для того чтобы работала одна ось надо найти в скетче :
    void poworot_left()
    {
    if (wrash_2 == false){
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    wrash_1 = true;
    left_1 = true;
    right_1 = false;
    }
    }

    void poworot_right()
    {
    if (wrash_2 == false){
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    wrash_1 = true;
    right_1 = true;
    left_1 = false;
    }
    }

    И заменить на это:

    void poworot_left()
    {
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    wrash_1 = true;
    left_1 = true;
    right_1 = false;
    }

    void poworot_right()
    {
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    wrash_1 = true;
    right_1 = true;
    left_1 = false;
    }

    Убирается зависимость от второй оси. Без дисплейчика настройка скорее всего будет сложноватой. Дорогу осилит идущий. Все в ваших руках.

    1. C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: In function ‘void setup()’:
      SolarPos_RELAY_GERCON_GPS:145:22: error: ‘SAVE_POS’ was not declared in this scope
      attachInterrupt(0, SAVE_POS, FALLING);
      ^~~~~~~~
      SolarPos_RELAY_GERCON_GPS:147:3: error: ‘CHTENIE’ was not declared in this scope
      CHTENIE(); // считать позицию трекера из еепром при включении питания
      ^~~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:147:3: note: suggested alternative: ‘CHANGE’
      CHTENIE(); // считать позицию трекера из еепром при включении питания
      ^~~~~~~
      CHANGE
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: In function ‘void loop()’:
      SolarPos_RELAY_GERCON_GPS:165:9: error: ‘getline’ was not declared in this scope
      if (getline(F(«$GPRMC»)))RMC();
      ^~~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:165:9: note: suggested alternative: ‘gmtime’
      if (getline(F(«$GPRMC»)))RMC();
      ^~~~~~~
      gmtime
      SolarPos_RELAY_GERCON_GPS:165:30: error: ‘RMC’ was not declared in this scope
      if (getline(F(«$GPRMC»)))RMC();
      ^~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:165:30: note: suggested alternative: ‘SMCR’
      if (getline(F(«$GPRMC»)))RMC();
      ^~~
      SMCR
      SolarPos_RELAY_GERCON_GPS:166:3: error: ‘SerialClear’ was not declared in this scope
      SerialClear();
      ^~~~~~~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:166:3: note: suggested alternative: ‘Serial’
      SerialClear();
      ^~~~~~~~~~~
      Serial
      SolarPos_RELAY_GERCON_GPS:309:33: error: ‘poworot_right’ was not declared in this scope
      if (enc1Counter > Slegenie_G) poworot_right(); // если счетчик импульсов больше вычисленного значения положения по горизонту, повернуть трекер вправо
      ^~~~~~~~~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:309:33: note: suggested alternative: ‘poworot_left’
      if (enc1Counter > Slegenie_G) poworot_right(); // если счетчик импульсов больше вычисленного значения положения по горизонту, повернуть трекер вправо
      ^~~~~~~~~~~~~
      poworot_left
      SolarPos_RELAY_GERCON_GPS:310:34: error: ‘stop_1’ was not declared in this scope
      if (enc1Counter == Slegenie_G) stop_1(); // если счетчик импульсов равен вычисленному значению положения по горизонту, остановить трекер
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:310:34: note: suggested alternative: ‘sp1’
      if (enc1Counter == Slegenie_G) stop_1(); // если счетчик импульсов равен вычисленному значению положения по горизонту, остановить трекер
      ^~~~~~
      sp1
      SolarPos_RELAY_GERCON_GPS:312:33: error: ‘naklon_niz’ was not declared in this scope
      if (enc2Counter Slegenie_W) naklon_werh(); // если счетчик импульсов больше вычисленного значения положения по вертикали, наклонить трекер вверх
      ^~~~~~~~~~~
      SolarPos_RELAY_GERCON_GPS:314:34: error: ‘stop_2’ was not declared in this scope
      if (enc2Counter == Slegenie_W) stop_2(); // если счетчик импульсов равен вычисленному значению положения по вертикали, остановить трекер
      ^~~~~~
      SolarPos_RELAY_GERCON_GPS:316:8: error: ‘minute’ was not declared in this scope
      if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:316:8: note: suggested alternative: ‘Line’
      if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
      ^~~~~~
      Line
      SolarPos_RELAY_GERCON_GPS:316:28: error: ‘second’ was not declared in this scope
      if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:316:28: note: suggested alternative: ‘Second’
      if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
      ^~~~~~
      Second
      SolarPos_RELAY_GERCON_GPS:320:7: error: ‘day’ was not declared in this scope
      if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
      ^~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:320:7: note: suggested alternative: ‘May’
      if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
      ^~~
      May
      SolarPos_RELAY_GERCON_GPS:320:22: error: ‘hour’ was not declared in this scope
      if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
      ^~~~
      SolarPos_RELAY_GERCON_GPS:320:38: error: ‘minute’ was not declared in this scope
      if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:320:38: note: suggested alternative: ‘Line’
      if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
      ^~~~~~
      Line
      SolarPos_RELAY_GERCON_GPS:322:31: error: ‘year’ was not declared in this scope
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:322:31: note: suggested alternative: ‘Mar’
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~
      Mar
      SolarPos_RELAY_GERCON_GPS:322:39: error: ‘month’ was not declared in this scope
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:322:39: note: suggested alternative: ‘month_t’
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~~
      month_t
      SolarPos_RELAY_GERCON_GPS:322:73: error: ‘second’ was not declared in this scope
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:322:73: note: suggested alternative: ‘Second’
      DS3231M.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
      ^~~~~~
      Second
      SolarPos_RELAY_GERCON_GPS:326:7: error: ‘day’ was not declared in this scope
      if (day() 27) sync_time = false;
      ^~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:326:7: note: suggested alternative: ‘May’
      if (day() 27) sync_time = false;
      ^~~
      May
      SolarPos_RELAY_GERCON_GPS:334:8: error: ‘second’ was not declared in this scope
      os = second();
      ^~~~~~
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:334:8: note: suggested alternative: ‘Second’
      os = second();
      ^~~~~~
      Second
      C:\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: At global scope:
      SolarPos_RELAY_GERCON_GPS:445:1: error: expected declaration before ‘}’ token
      }
      ^
      exit status 1
      ‘SAVE_POS’ was not declared in this scope

  36. Шить надо без GPS, так как он сидит на ком порте, через который происходит прошивка. Отключили GPS, прошили, подключили GPS. И еще надо выбирать в настройках правильную плату ARDUINO. Если ARDUINO NANO, надо еще выбрать процессор (old bootloader). Или снова прошить исходный вариант, возможно после исправлений для одной оси где то остался лишний символ «}», или наоборот не хватает.

  37. пробовал уже:
    1. на дужки подумал как первый вариант не помогло-перепроверил
    2. прошивки заливаю без дополнительных плат (собрал специально на шилдике)
    3. пробовал разные версии Ардуино ID
    4. Брал совсем новый скетч з вашего архива снова ошибки
    5 плату и прошивку выбираю правильно (были вчерашние ошибки -додумался за old bootloader )
    Реально целый день мучаюсь!!!!

  38. Надо проверить компиляцию без загрузки, если все норм, то проблемка в железе. Драйвера, или провод USB. И еще версию ARDUINO IDE надо проверить, я делаю все в 1.8.10. И еще надо компорт в ARDUINO IDE перепроверить, перенастроить. Бывает, что слетает иногда.

  39. поставил ARDUINO IDE 1.8.1
    железо проверил 100 раз, даже поставил проверочный скетч на светодиод 13 пин — все норм. С кетчом проблемма:(
    проверил компеляцию, вот ошибка
    Arduino: 1.8.1 (Windows 10), Плата:»Arduino Nano, ATmega328″
    SolarPos_RELAY_GERCON_GPS:343: error: variable or field ‘printDateTime_r’ declared void
    void printDateTime_r(DateTime t){ // Utility function to print time and date
    ^
    SolarPos_RELAY_GERCON_GPS:343: error: ‘DateTime’ was not declared in this scope
    SolarPos_RELAY_GERCON_GPS:363: error: variable or field ‘printDateTime_s’ declared void
    void printDateTime_s(DateTime t){ // Utility function to print time and date
    ^
    SolarPos_RELAY_GERCON_GPS:363: error: ‘DateTime’ was not declared in this scope
    SolarPos_RELAY_GERCON_GPS:376: error: variable or field ‘printDateTime’ declared void
    void printDateTime(DateTime t){ // Utility function to print time and date
    ^
    SolarPos_RELAY_GERCON_GPS:376: error: ‘DateTime’ was not declared in this scope
    D:\Arduino\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: In function ‘void setup()’:
    SolarPos_RELAY_GERCON_GPS:104: error: redefinition of ‘void setup()’
    void setup()
    ^
    D:\Arduino\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino:3:6: note: ‘void setup()’ previously defined here
    void setup(){

    ^
    D:\Arduino\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: In function ‘void loop()’:
    SolarPos_RELAY_GERCON_GPS:236: error: ‘printDateTime_r’ was not declared in this scope
    printDateTime_r(sp1.getSunriseTime(now1.unixtime()));
    ^
    SolarPos_RELAY_GERCON_GPS:239: error: ‘printDateTime_s’ was not declared in this scope
    printDateTime_s(sp1.getSunsetTime(now1.unixtime()));
    ^
    SolarPos_RELAY_GERCON_GPS:258: error: ‘printDateTime’ was not declared in this scope
    printDateTime(now1); // время на дисплей
    ^

    SolarPos_RELAY_GERCON_GPS:320: error: ‘minute’ was not declared in this scope

    if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
    ^
    SolarPos_RELAY_GERCON_GPS:320: error: ‘second’ was not declared in this scope
    if ((minute() == 59) && (second() > 55)) { // сбрасывать признак синхронизации координат в конце каждого часа (при наличии GPS)
    ^
    SolarPos_RELAY_GERCON_GPS:324: error: ‘day’ was not declared in this scope
    f (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS
    ^

    SolarPos_RELAY_GERCON_GPS:324: error: ‘hour’ was not declared in this scope

    if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS

    ^

    SolarPos_RELAY_GERCON_GPS:324: error: ‘minute’ was not declared in this scope

    if (day() == 27 && hour() == 00 && minute() == 31 && sync_time == false) { // выполнить синхронизацию часов реального времени раз в месяц (26 числа)при наличии сигнала с GPS

    ^

    SolarPos_RELAY_GERCON_GPS:326: error: ‘year’ was not declared in this scope

    DS3231M.adjust(DateTime(year(),month(),day(),hour(),minute(),second()));

    ^

    SolarPos_RELAY_GERCON_GPS:326: error: ‘month’ was not declared in this scope

    DS3231M.adjust(DateTime(year(),month(),day(),hour(),minute(),second()));

    ^

    SolarPos_RELAY_GERCON_GPS:326: error: ‘second’ was not declared in this scope

    DS3231M.adjust(DateTime(year(),month(),day(),hour(),minute(),second()));

    ^

    SolarPos_RELAY_GERCON_GPS:329: error: ‘day’ was not declared in this scope

    if (day() 27) sync_time = false;

    ^

    SolarPos_RELAY_GERCON_GPS:337: error: ‘second’ was not declared in this scope

    os = second();

    ^

    D:\Arduino\SolarPos_RELAY_GERCON_GPS\SolarPos_RELAY_GERCON_GPS.ino: In function ‘void RMC()’:

    SolarPos_RELAY_GERCON_GPS:535: error: ‘setTime’ was not declared in this scope

    getparam(9).substring(4, 6).toInt()); // РіРѕРґ

    ^

    SolarPos_RELAY_GERCON_GPS:537: error: ‘now’ was not declared in this scope

    time_t cet = CE.toLocal(now(), &tcr);

    ^

    exit status 1
    variable or field ‘printDateTime_r’ declared void

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    «Показать подробный вывод во время компиляции»
    ARDUINO IDE надо проверить, я делаю все в 1.8.1

  40. Нужно все библиотеки закинуть. Они в архиве есть. Нужно компилятор 1.8.10. С ранними версиями библиотеки не совместимы.

  41. ВСЕ ДЕЛАЛОСЬ 1.8.1 стоит, библиотеки добавлены, плата правильно Nano, загрущик ОЛД, порт правильно, драйвер ставил, яву обновил — комп перегрузил:)
    КОНЧИЛИСЬ ИДЕИ:(
    может дать доступ к TeamViewe попробуете

    1. нашел проблему у меня плата Nano китайская WAVGAT Nano 3.0
      пробую подружить (добавил у менеджер плат WAVGAT), + новые библиотеки есть — нужно глянуть пересекаюся они или нет

      P.S. нужно покупать нормальную Nano (немного по времени затянется, жаль)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх