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

Тема в разделе "Arduino & Shields", создана пользователем sqr93, 11 июн 2013.

  1. sqr93

    sqr93 Нерд

    Гляньте и поправьте пожалуйста. Где то допустил ошибку с условиями.и как можно улучшить.
    Код (C):
    #include <robocraft.h>
    MOTOR MOTOR1 = { 3, 2, 1 };
    MOTOR MOTOR2 = { 5, 4, 2};
    int ldrlt = 0; //LDR top left
    int ldrrt = 1; //LDR top rigt
    int ldrld = 2; //LDR down left
    int ldrrd = 3; //ldr down rigt
    int en1 = 6;
    int en2 = 7;
    void setup()
    {
      Serial.begin(9600);
      pinMode(en1, OUTPUT);
      pinMode(en2, OUTPUT);
    }
    RoboCraft robot(&MOTOR1, &MOTOR2);
    void loop()
    {
      int lt = analogRead(ldrlt); // top left
      int rt = analogRead(ldrrt); // top right
      int ld = analogRead(ldrld); // down left
      int rd = analogRead(ldrrd); // down rigt
      int avt = (lt + rt) / 2; // average value top
      int avd = (ld + rd) / 2; // average value down
      int avl = (lt + ld) / 2; // average value left
      int avr = (rt + rd) / 2; // average value right

    Serial.print(lt); Serial.print("\t"); Serial.println(rt);
    delay(1000);

      int dvert = avt - avd; // check the diffirence of up and down
      int dhoriz = avl - avr;// check the diffirence og left and rigt
      {
      if ((avt-avd)<20 ) {delay(2);}
    else  {
        if (avt > avd)
        {
        digitalWrite(en1, HIGH);   // turn the en1 on (HIGH is the voltage level)
            robot.motor_forward(1,250); // 1 вперёд :)
            delay(100);            // wait for a second
            digitalWrite(en1, LOW); // turn the en1 off by making the voltage LO
            Serial.print('F_vert'); Serial.print("\t");
        }
        else
       {
          digitalWrite(en1, HIGH);   // turn the en1 on (HIGH is the voltage level)
            robot.motor_forward(1,150); // 1 вперёд :)
              delay(100);              // wait for a second
            digitalWrite(en1, LOW); // turn the en1 off by making the voltage LO
             Serial.println('b_vert');
        }
    }
       {
          if ((avl-avr)<20 )
          {delay(200);}
          else {
          if (avl > avr)
          {
            digitalWrite(en2, HIGH);   // turn the en1 on (HIGH is the voltage level)
            robot.motor_back(2,250); // 1 вперёд :)
            delay(160);            // wait for a second
            digitalWrite(en2, LOW); // turn the en1 off by making the voltage LO
               Serial.print('horisont'); Serial.print("\t");
          }
        else
          {  
            digitalWrite(en2, HIGH);   // turn the en1 on (HIGH is the voltage level)
            robot.motor_forward(2,250); //
            delay(160);            // wait for a second
            digitalWrite(en2, LOW); // turn the en1 off by making the voltage LO
               Serial.print('forward_horisont'); Serial.print("\t");
          }
         }
        delay(500);
      }}}

     
    oOImKpDf_no.jpg KGN8DRyZlmI.jpg
     
  2. sqr93

    sqr93 Нерд

    После вставки
    Код (C):
    if ((avl-avr)<20 )
          {delay(200);}
    перестает выполняться 2 часть условия=(
     
  3. Unixon

    Unixon Оракул Модератор

    Код (C):

    if (avl > avr)
    {
     if ((avl-avr)<20 )
     {
      delay(200);
     }
     else
     {
      digitalWrite(en2, HIGH);   // turn the en1 on (HIGH is the voltage level)
      robot.motor_back(2,250); // 1 вперёд :)
      delay(160);           // wait for a second
      digitalWrite(en2, LOW); // turn the en1 off by making the voltage LO
      Serial.print('horisont'); Serial.print("\t");
     }
    }
    else
    {
     digitalWrite(en2, HIGH);   // turn the en1 on (HIGH is the voltage level)
     robot.motor_forward(2,250); //
     delay(160);            // wait for a second
     digitalWrite(en2, LOW); // turn the en1 off by making the voltage LO
     Serial.print('forward_horisont'); Serial.print("\t");
    }
     
    sqr93 нравится это.
  4. sqr93

    sqr93 Нерд

    Спасибо помогло:)
     
  5. Kap-yra

    Kap-yra Нерд

    Здравствуйте просмотрел Ваш проект интересное решение. Сам собираю нечто похожее только в более крупном масштабе, уже почти готова механика и аппаратная, часть вращать будет батарею из 8 панелей тяговые двигатели 12 вольт от шуруповёрта с дополнительным редуктором, аппаратная часть реализована на ардуино уно + стабилизатор напряжения и тока + 4 блока реле думаю обойтись без дополнительных шилдов + 4 аналоговых датчика освещённости питание платы и силовой части раздельное на плате 9 вольт на реле 13.5вольт. Панели то же самодельные изготовленные из поликристаллических пластин 150х150 -36 штук на панель, используется контроллер заряда солар 60, планируется 4 акб по 190 ампер, инвертор тоже самодельный пока на 1000ватт индукционного типа с апроксимой, сейчас до устанавливаю тяговую часть всё остальное кроме программной части готово, в программировании не великий специалист поэтому ищу что люди делают серво двигатели и шаговики не устраивают по причине дороговизны, а в сети в основном все проекты на основе серво ели не сложно поделитесь опытом как реализовать программную часть, чрезвычайной точности не нужно угол погрешности 10-15 градусов терпим
     
  6. DIYMan

    DIYMan Guest

    Обычное решение, которое, к слову, ПО ОПРЕДЕЛЕНИЮ не является солнечным трекером, потому что следит не за Солнцем, а за освещённостью. Солнечный трекер - следит именно за положением нашего светила на небосклоне, и расчёты там - несколько сложнее, чем считывание и анализ показаний с четырёх фоторезисторов.
     
  7. Еще проще. Солнечная панель, слегка колеблющаяся время от времени. А порой бывают трекеры вообще без электроники и расчетов, поворачивающиеся за счет расширения газов в специально расположенных сосудах. Прямо, как будто, главное - не мнение сильно правильных педантов, а выполненная задача.
     
  8. Kap-yra

    Kap-yra Нерд

    это понятно но из проведённых опытов точно и не нужно, нужно ориентировать панель относительно светового потока так что бы определённый промежуток времени значение освещённости не падало ниже 5 процентов этого достаточно чтобы производительность батареи заметно не падала, так как выработка панели рассчитана с запасом и составляет при приблизительной ориентации на световой поток 22вольта холостого хода и около 17 под нагрузкой а постоянное поворачивание не нужно так как это сожрёт всю экономию на эффективность работы панели
     
  9. Если правильно понял. Вы с помощью реле собираетесь управлять двигателями? А как вы собираетесь менять направление движения? (Что то подобное уже встречалось.) Лучше тогда не реле, а подбирать что типа L298N(для примера, вам скорее всего что-то помощнее нужно). За основу взять скетч выше, немного переделать под ваш драйвер и должно получится. + концевики для подстраховки. А стоит ли овчинка выделки? Может просто установить в направлении 12 часового солнца? А то ведь ураганы могут быть и они могут всю конструкцию в дугу свернуть.
    Тоже планирую панель сделать, ищу технологию как подогревать элементы при пайке, чтобы их не деформировало после остывания. Так как хочу ламинатом закатать
     
  10. parovoZZ

    parovoZZ Гуру

    в духовке
    а если тучи?
     
  11. DIYMan

    DIYMan Guest

    Вот в этом всё отличие солнечного трекера от проекта с четырьмя фоторезисторами ;) Если устраивает ориентация относительно светового потока - ок, и такой вариант имеет право на жизнь. Однако замечу, что есть нюансы, например: характеристика панели может быть такой, что её эффективная работа доступна и в области инфракрасного спектра, который (например) датчик может тупо не воспринимать в силу своих характеристик.

    По итогу получаем: панельку надо направить на Солнце в любом случае (ибо в грамотном проекте должно быть без разницы - какая панель используется), а тучки - сплошные, вокруг серая хмарь. Тем не менее, если таки направлять на Солнце - то можно выжать N% от максимальной токоотдачи панели, даже в этом случае. Но - только при условии, что она будет сориентирована на Солнце не датчиками, а по положению светила на небе.

    Впрочем, это уже разговор из области эффективности использования ;)
     
  12. :). Голова не пролазит))) да и неудобно))). Один чел пишет что подогревать нужно до 110-120 грудусов. Тогда якобы элементы не деформирует. У него мраморная плита которую он подогревает плиткой. Ну нету у меня мраморной плиты(. Перепробовал все что доступно. Толстое законное стекло, керамогранит, кафельные плитки. Один хрен лопаются, как бы плавно ее подогревал.
    Возможно и это реализовать. Но в ТЗ написано, что простое двигатели постоянного тока. Тогда + к ним энкодеры и модуль реального времени. + В скетче добавить условие что если общая освещенность меньше какого либо порога то перейти задать положение по энкодерам согласно заранее забитым положениям. Такой скетч даже я смогу написать( надеюсь по крайней мере что смогу :))
     
  13. parovoZZ

    parovoZZ Гуру

    там мощность излучения настолько мала, что можно не принимать во внимание.
     
  14. DIYMan

    DIYMan Guest

    Не, ориентация на Солнце по заранее забитым положениям не делается ;) Делается через расчёт. Естественно, есть некий набор данных, которым оперируется, но в целом - небесная механика в этой части давно изучена, и рассчитать, в каком году какого месяца какого числа в какое время на какой широте где будет солнце на небосводе - задача давно решённая.
     
  15. DIYMan

    DIYMan Guest

    Это я - как пример, там и написано - "например". Возьми ещё чего-нибудь как абстракцию, не вопрос - откуда бы знать, что завтра не появится новый тип панели, который будет, лол, нейтрино улавливать - и эффективность этого улавливания будет близка к 100% только тогда, когда панель сориентирована на солнце, и при отклонении на считанные градусы - эффективность будет убывать в геометрической прогрессии?

    Вопрос только в том, что можно назвать настоящим солнечным трекером ;) Настоящий, пмсм - это который рассчитывает и знает, какого числа какого месяца какого хера находится Солнце на небосклоне.
     
    Сусемьбек нравится это.
  16. parovoZZ

    parovoZZ Гуру

    А почему нет? Достаточно добавить в проект RTC, забить в память таблицу и вперед.
    Ну появится - сможешь купить? Здесь всё покупается на алике. А на этом алике до сих пор нет attiny 0 и 1 серии, хотя выпускаются года два как.
     
  17. DIYMan

    DIYMan Guest

    Недостаточно в проект добавить RTC, вот в чём сермяжная правда. И таблицы одной в памяти - недостаточно. Что такое широта - рассказать? Что такое переход на летнее/зимнее время - рассказать? ;)
     
  18. Если внимательно посмотреть на DPDT реле, то выяснится, что это н-мост. Хоть и с оговорками.
     
  19. Kap-yra

    Kap-yra Нерд

    паял сам, чтобы не деформировало необходимо паять низкотемпературным припоем с низким содержанием свинца паяльник 35-40 ватт а лучше паяльник с открытой спиралью, то есть задача не перегреть кристалл, паял на куске картона и сверху ложил лист а4 флюс делал сам 85проц изопропиловый спирт + сосновая смола наносил с помощью промытого карандаша-корректора, подробнее могу рассказать, если интересно спрашивайте, систему уже почти собрал, тестил на работоспособность но пока без автоматической коррекции углов поворота и наклона, остался удовлетворён полученными результатами, а коррекция действительно необходима в виду увеличения производительности системы минимум на 4 часа максимальная отдача от панели возрастает на стационарном варианте разница в тесте была на лицо, только нужна помощь со скетчем для ардуино. ещё в си+ слабо шарю, только начал, вот кое что нашел может кто глянет что изменить в коде чтоб подошло, если есть меценаты :) могу скинуть фото аппаратной части , а кому надо и механики системы управления, сейчас доделываю систему приводов и редукторов.
     

    Вложения:

    Сусемьбек нравится это.
  20. Kap-yra

    Kap-yra Нерд

    реверс будет осуществляться за счёт реле их там 4 с развязкой по оптопаре одно реле включает вращение в одну сторону второе в другую, аналогично и вторая пара, дешево и сердито.