Проблемы с управлением солнечной батареей
- Войдите на сайт для отправки комментариев
Всем привет!
Использую ардуино в качестве хобби и как правило использую в очень простых проектах. Однако знакомый попросил помощи в управлении солнечными батареями. С железом не очень дружу, но железо(несколько реле,нужное напряжение для срабатывания реле) сделал коллега с работы и оно работает.
Проблема: Поставили ардуино и железо на месте для управления солнечной панелью. Выставляю стетч для отработки поворотов вправо, влево, вниз и вверх с интервалом в одну минуту. Все работает прекрасно, панель исполняет то, что нужно. Когда выставляю длинный промежуток(24 часа), то знакомый утверждает, что скетч отработал полный цикл один день(однако запустили мы в 15:00, а не в 10 утра, чтоб пройти ровно сутки) и на следующий день управление перестало работать. Не могу теперь понять, толи явная ошибка в коде, толи у нас где-то в силовой системе идет просадка питания. Прошу помощи в просматривании логики когда. Если там есть явные ошибки, то какие?
Сам скетч:
Для контроля времени используется временной модуль DS1307 с новой батарейкой. После отключения питания, модуль продолжал исправно работать от батарейки. Так же есть 2 защитных механизма(слева и справа), которые при замыкании останавливают повороты вправо или влево.(нужны для того, чтобы не спалить установку. При сильном ветре панель поворачивается быстрее и может дойти до конца возможного поворота раньше, чем нужно).
использую Arduino Uno, питание от блока питания 9V, напряжение на стабилизаторе не проседает, выход ардуино стабильные 5V выдает. Сама ардуино старая, может ли сам контроллер некорректно срабатывать?
В loop прописано 5 циклов для поворота вправо, по 2 цикла вверх и вниз и один для поворота влево.
Буду очень благодарен за любую помощь!
#include <RTClib.h> const byte contrPin2 = 11; // вверх const byte contrPin3 = 10; // вниз const byte contrPin4 = 8; // влево const byte contrPin5 = 9; //вправо int kaitseParemPin = 5; // защита при повороте вправо int kaitseVasakPin = 7; // защита при повороте влево int checkEndParem; // перееменная для контроля статуса правого защитного механизма int checkEndVasak; // перееменная для контроля статуса левого защитного механизма uint8_t hour1 = 10; // вверх:1 время:10:00, поворот:20 sek uint8_t minute1 = 0; uint8_t second1 = 20; uint8_t hour2 = 11; //вправо:1 время:11:00, поворот:23 sek uint8_t minute2 = 0; uint8_t second2 = 23; uint8_t hour3 = 13; //вправо:2 время:13:00, поворот:66 sek uint8_t minute3 = 0; uint8_t second3 = 59; uint8_t minute31 = 1; uint8_t second31 = 6; uint8_t hour4 = 13; // вверх:2, время:13:15, поворот:10 sek uint8_t minute4 = 15; uint8_t second4 = 10; uint8_t hour5 = 15; // вправо:3, время:15:00, поворот:80 sek uint8_t minute5 = 0; uint8_t second5 = 59; uint8_t minute51 = 1; uint8_t second51 = 20; uint8_t hour6 = 16; // вниз:1, время:16:00, поворот:8 sek uint8_t minute6 = 0; uint8_t second6 = 8; uint8_t hour7 = 17; //вправо:4 время:17:00, поворот:59 sek uint8_t minute7 = 0; uint8_t second7 = 59; uint8_t hour8 = 18; // вниз:2, время:18:00, поворот:26 sek uint8_t minute8 = 0; uint8_t second8 = 26; uint8_t hour9 = 19; //вправо:5 время:19:00, поворот:59 sek uint8_t minute9 = 0; uint8_t second9 = 59; uint8_t hour10 = 3; //влево время:03:00, поворот:260 sek uint8_t minute10 = 3; uint8_t second10 = 59; uint8_t minute101 = 4; uint8_t second101 = 20; RTC_DS1307 rtc; void setup() { if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // выставление времени модулю DS1307, взятие текущего времени компьютера pinMode(contrPin2, OUTPUT); pinMode(contrPin3, OUTPUT); pinMode(contrPin4, OUTPUT); pinMode(contrPin5, OUTPUT); pinMode(kaitseParemPin, INPUT); pinMode(kaitseVasakPin, INPUT); Serial.begin(9600); } void loop() { DateTime now = rtc.now(); // считывание времени временного модуля DS1307 checkEndParem = digitalRead(kaitseParemPin); // считывание состояния правого защитного механизма, где 0-не замкнут, 1-замкнут checkEndVasak = digitalRead(kaitseVasakPin); // считывание состояния левого защитного механизма, где 0-не замкнут, 1-замкнут if (now.hour() == hour2 && now.minute() == minute2 && now.second() <= second2 && checkEndParem == 0 && rtc.begin() == 1) { digitalWrite(contrPin5, HIGH); /* Если часы и минуты с модуля времени равны заданным в переменных и защитный механизм не замкнут и ардуино видит временной модуль, то активировать пин на количество секунд в переменной для поворота конструкции вправо*/ } else if ((now.hour() == hour3 && now.minute() == minute3 && now.second() <= second3 && checkEndParem == 0 && rtc.begin() == 1) || (now.hour() == hour3 && now.minute() == minute31 && now.second() <= second31 && checkEndParem == 0 && rtc.begin() == 1)) { digitalWrite(contrPin5, HIGH); } else if ((now.hour() == hour5 && now.minute() == minute5 && now.second() <= second5 && checkEndParem == 0 && rtc.begin() == 1) || (now.hour() == hour5 && now.minute() == minute51 && now.second() <= second51 && checkEndParem == 0 && rtc.begin() == 1)) { digitalWrite(contrPin5, HIGH); } else if (now.hour() == hour7 && now.minute() == minute7 && now.second() <= second7 && checkEndParem == 0 && rtc.begin() == 1) { digitalWrite(contrPin5, HIGH); } else if (now.hour() == hour9 && now.minute() == minute9 && now.second() <= second9 && checkEndParem == 0 && rtc.begin() == 1) { digitalWrite(contrPin5, HIGH); } else { digitalWrite(contrPin5, LOW); } if (now.hour() == hour1 && now.minute() == minute1 && now.second() <= second1 && rtc.begin() == 1) { digitalWrite(contrPin2, HIGH); /* если часы и минуты равны заданным в переменных и ардуино видит часовой модуль, то активировать пин на количество секунд в переменной для поднятия конструкции вверх */ } else if (now.hour() == hour4 && now.minute() == minute4 && now.second() <= second4 && rtc.begin() == 1) { digitalWrite(contrPin2, HIGH); } else { digitalWrite(contrPin2, LOW); } if (now.hour() == hour6 && now.minute() == minute6 && now.second() <= second6 && rtc.begin() == 1) { digitalWrite(contrPin3, HIGH); /* если часы и минуты равны заданным в переменных и ардуино видит часовой модуль, то активировать пин на количество секунд в переменной для опускания конструкции вниз */ } else if (now.hour() == hour8 && now.minute() == minute8 && now.second() <= second8 && rtc.begin() == 1) { digitalWrite(contrPin3, HIGH); } else { digitalWrite(contrPin3, LOW); } if ((now.hour() == hour10 && now.minute() <= minute10 && now.second() <= second10 && checkEndVasak == 0 && rtc.begin() == 1) || (now.hour() == hour10 && now.minute() == minute101 && now.second() <= second101 && checkEndVasak == 0 && rtc.begin() == 1)) { digitalWrite(contrPin4, HIGH); /* если часы и минуты равны заданным в переменных и ардуино видит часовой модуль и левый защитный механизм не активирован, то активировать пин на количество секунд в переменной для поворота конструкции влево */ } else { digitalWrite(contrPin4, LOW); } //printTime(now); // вывод времени на Serial Monitor, использую только когда проверяю исправность временного модуля. } /*void printTime(DateTime time) { Serial.print("TIME: "); Serial.print(time.year(), DEC); Serial.print('/'); Serial.print(time.month(), DEC); Serial.print('/'); Serial.print(time.day(), DEC); Serial.print(") "); Serial.print(time.hour(), DEC); Serial.print(':'); Serial.print(time.minute(), DEC); Serial.print(':'); Serial.println(time.second(), DEC); } */
Боюсь, что вот это понятно только Вам
Что Вы выставляете? Где выставляете? Через какой интерфейс? Или Вы переменные в скетче меняете? Тогда что про Ваш выложенный скетч - это он не работает? Или после "выставления"? Какой знакомый утверждает? Какие 15 и 10 и на какой день престало работать. И, кстати, что значит "перестало работать" - что стало делать? Ничего, вертеть постоянно, загорелось?
Давайте-ка толком.
Добрый вечер!
Спасибо за комментарий. Пытался детально расписать, получилось, как видно, плохо.
Солнечная установка стоит на участке у знакомого, для которого и писался скетч.(сам там не присутсвую постоянно). При тестировании на месте: брал этот скетч, который выставил на форум и менял время в переменных на то, в какой момент там находился. Т.е. я был там примерно в 13:00, поменял переменные первого цикла на 13:02(hour1 = 13, minute1 = 2, second1 = 20 второго на 13:03(hour2 = 13, minute2 = 3,second2 = 23),третьего на 13:04 чтобы в живую увидеть, что раз в минуту мой скетч поварачивает панель в нужные стороны, как должно быть по задумке. Раз в минуту отработка прошла успешно. После этого я поменял время переменных в этом же скетче на те, которые просил знакомый. Т.е. первый цикл в 10:00(hour1 = 10,minute1 = 0, second1 = 20) второй в 11:00(hour2 = 11,minute2 = 0, second2 = 23 третий в 13:00 и т.д. По итогу загрузил я этот скетч в ардуино примерно в 15:00 и все оставшиеся циклы до следующего утра были успешно выполнены(последний сработал в 3 утра и повернул панель в начальное положение влево)(опять же со слов знакомого, сам лично видел исполнение в 15:00). А вот в 10:00(поднятие панели вверх) должно было начаться новое выполнение и оно не началось. Как утверждает этот знакомый, панель просто ничего не делает, т.е. вообще не вертится.
Загружал скетч в ардуино через USB, используя arduino IDE софт.
Почему ничего не происходит, непонятно от слова совсем... В наличии есть новая arduino uno, но нужно перепаивать контакты на месте, чтобы установить новую. От этого возник такой вопрос: может ли контроллер в ардуино от старости или неверном использовании вести себя некорректно?
Второй вопрос: видны ли в скетче явные ошибки циклов при исполнении void loop, которые могут приводить к отказу работы именно ардуино? Или же такой скетч имеет место быть и должен работать и тогда проблему нужно будет искать в силовой части?(т.е. нехватка питания для раскрытия транзисторов и срабатывания реле для поворота).
Спасибо!
Давайте, я посмотрю либо завтра, либо в понедельник.
Пока лишь отмечу, что у Вас возможно использование Serial в строке №60 до его инициализации в строке №71.
И вообще, Вы пишете столько переменных и столько кода, сколько у Вас интервалов работы - текст огромный, нет-нет, да ошибёшься. Я бы сделал массив интервалов времени и одну коротенькую функцию, которая в цикле по массиву проверяла бы, попадает ли время в интервал или нет, а не дублировал бы это 100500 раз. текст бы бы коротенький, легко читаемый и соответственно, вероятность ошибок была бы сильно ниже.
#include <RTClib.h>
сдаеться мне , что в какой то момент времени ,механизм доходит до крайнего положения вверх и в сторону и из за того что checkEndParem = 1 и checkEndVasak = 1 , и при следующем цикле , ниодно условие в if не истино
и да , я бы тоже переписал на некий массив/сценарий "действий" . каждый элемент массива содержал в себе информацию о текущем действии : время начала действия ,время конца (или продолжительность) , фунцкия дейстивя(включить мотор ) , условие окончания.
Чисто языкознательный интерес- kaitse, parem, vasak - это что за язык? Турецкий?
сдаеться мне , что в какой то момент времени ,механизм доходит до крайнего положения вверх и в сторону и из за того что checkEndParem = 1 и checkEndVasak = 1 , и при следующем цикле , ниодно условие в if не истино
Концевики участвуют только в поворотах, подъем/опускание работает без условий.
похоже эстонский
Добрый день,
Да-это эстонский. Как-то уже машинально пишется на эстонском. Комменты тоже были все на эст.языке. Не сразу даже осознал, что тут вряд ли поймут :))
сдаеться мне , что в какой то момент времени ,механизм доходит до крайнего положения вверх и в сторону и из за того что checkEndParem = 1 и checkEndVasak = 1 , и при следующем цикле , ниодно условие в if не истино
Концевики участвуют только в поворотах, подъем/опускание работает без условий.
Добрый день,
Все верно, вверх и вниз работают без защиты. Более того, защита находится на разных концах установки. Если один физически замкнут, то второй с другой стороны никаким образом не может быть замкнут. И насколько я понимаю, то даже при срабатывании защиты скетч не останавливает работу, как в случае с вариантами delay(), а просто пропускает это условие и идет дальше.
Давайте, я посмотрю либо завтра, либо в понедельник.
Пока лишь отмечу, что у Вас возможно использование Serial в строке №60 до его инициализации в строке №71.
И вообще, Вы пишете столько переменных и столько кода, сколько у Вас интервалов работы - текст огромный, нет-нет, да ошибёшься. Я бы сделал массив интервалов времени и одну коротенькую функцию, которая в цикле по массиву проверяла бы, попадает ли время в интервал или нет, а не дублировал бы это 100500 раз. текст бы бы коротенький, легко читаемый и соответственно, вероятность ошибок была бы сильно ниже.
Буду очень признателен! Честно говоря, с функциями так и не разобрался до конца, времени не хватает. Готовые брал и пользовал, а самому как-то пока не сложилось в голове. Да и тут бы просто разобраться, где проблема.
Не обязательно ждать сутки полный цикл. Меняйте часы на минуты, минуты на секунды и пока знакомый жарит шашлычок прогоняете работу устройства по полному кругу. Вставляете отладочные сообщения и смотрите где проблема - в коде или железе.
По моему здесь не до конца разобрались
Т. е. верно ли , что в конце всех поворотов панель не замыкает концевик?
насколько я понимаю, то даже при срабатывании защиты скетч не останавливает работу, как в случае с вариантами delay(), а просто пропускает это условие и идет дальше.
вот тут либо вы что-то не понимаете, либо в программе что-то не так с логикой. Зачем нужен такой концевик, который не останавливает работу в крайнем положении?
По моему здесь не до конца разобрались
Т. е. верно ли , что в конце всех поворотов панель не замыкает концевик?
А где здесь концевик?
По коду подъем/опускание должно работать в любом случае. Другой вопрос - а различает ли этот знакомый что панель поднялась/опустилась? Я бы добавил еще два светодиода для индикации срабатывания концевиков. Ну и как уже предлагал выше, уменьшить интервалы и прогнать код в железе или любом симуляторе.
А где здесь концевик?
Верно, его нет.
По интервалам, самое то по моему.
Можно закомментировать работу с модулем, и считать "своими силами"
Вот набросал на скорую руку, вроде работает. Время в 10 раз быстрее. Немного скетч подкорректировать.
Ещё сделать резервную копию
Добрый вечер!
Спасибо всем за комментарии! Сьездил сегодня на место и нашел проблему, но легче от этого не стало... Загрузил скетч для просмотра работы модуля времени DS1307 и обнаружил, что модуль завис на времени 8:20:33 позавчера, т.е. 12.08.2022. Записал в модуль текущее время и сейчас установка работает(прогнал циклы в ускоренном режиме, как советовали выше и сейчас выставил обратно первичное время). Модуль работает от питания ардуино 3,3V с собственной батарейкой и проработал он недели 2 точно без проблем и при выключенном питании тоже не сбрасывалось время и тем более не зависало. Кто-нибудь сталкивался с зависанием таким? Можно ли как-то контролировать, что часики тикают и в случае чего производить какой-то рестарт? В данный момент добавлена только проверка связи модуля времени с ардуино и если ардуино перестает видеть модуль, то любой цикл перестает работать. В данном же случае ардуино видит модуль, но время замерзло. Это достаточно плохо хотя бы потому, что если в момент подьема вверх или опускании зависнет модуль, то он будет изнашивать механизм подьема до тех пор, пока не сядет аккумулятор.
А где здесь концевик?
Верно, его нет.
По интервалам, самое то по моему.
Можно закомментировать работу с модулем, и считать "своими силами"
Вот набросал на скорую руку, вроде работает. Время в 10 раз быстрее. Немного скетч подкорректировать.
Ещё сделать резервную копию
Добрый вечер!
Первый раз пробовал делать через millis(), но тут совсем не хватило опыта и в результате получил такое действие: первый цикл срабатывал раз в 24 часа, второй раз в 25 часов и тд. Т.е. после запуска ардуино первое срабатывание происходило спустя сутки, а вот дальше я не допонял чисто математически, что 25+25 = 50,26+26 = 52 и это дает сдвиг на 1 час каждый день. Т.е. спустя неделю первый поворот вправо бы сработыл не в 11 утра, а в 11+7=18.00. Тогда мне и посоветовали попробовать модуль времени. Сама идея с модулем времени кажется мне проще с точки зрения расчетов, так как один раз уже "погорел" с millis().
По срабатыванию защиты: замыкаться ни левый, не правый не должны в конце исполнения. Установлены исключительно для того, что если будет сильный ветер и из-за этого каждый поворот пойдет быстрее, чем планировалось. Тогда в конце концов достингет своей конечной точки куда быстрее нужного и может спалить насос.(панель в длину 8-10 метров и в высоту 5-6м, поэтому ветер достаточно сильно влияет на скорость поворота)
Добрый вечер!
Первый раз пробовал делать через millis()
Мой пример лишь для проверки. Если с ним работает - значит дело в модуле, железе.
Удобно в ускоренном времени смотреть, что надо в сериал выводить.
Но раз нашли причину, значит уже не нужно
P.S. По поводу работы модуля - я бы попробовал обращаться к нему пореже, напр. каждые 100мс
Модуль работает от питания ардуино 3,3V с собственной батарейкой и проработал он недели 2 точно без проблем и при выключенном питании тоже не сбрасывалось время и тем более не зависало.
Не понял про питание от ардуино 3,3 V. По даташиту микросхема DS1307 предназначена для работы от 4.5V до 5,5 V
Модуль работает от питания ардуино 3,3V с собственной батарейкой и проработал он недели 2 точно без проблем и при выключенном питании тоже не сбрасывалось время и тем более не зависало.
Не понял про питание от ардуино 3,3 V. По даташиту микросхема DS1307 предназначена для работы от 4.5V до 5,5 V
Добрый вечер,
Спасибо за информацию! Переставлю на контакт 5 V, но информацию о 3,3V взял с какого-то примера подключения и подумал, что раз резеврная батарейка 3-3,3V, то и основного такого же достаточно.
Добрый вечер!
Первый раз пробовал делать через millis()
Мой пример лишь для проверки. Если с ним работает - значит дело в модуле, железе.
Удобно в ускоренном времени смотреть, что надо в сериал выводить.
Но раз нашли причину, значит уже не нужно
P.S. По поводу работы модуля - я бы попробовал обращаться к нему пореже, напр. каждые 100мс
Спасибо! Добавил
Добрый вечер!
Спасибо всем за комментарии! Сьездил сегодня на место и нашел проблему, но легче от этого не стало... Загрузил скетч для просмотра работы модуля времени DS1307 и обнаружил, что модуль завис на времени 8:20:33 позавчера, т.е. 12.08.2022. Записал в модуль текущее время и сейчас установка работает(прогнал циклы в ускоренном режиме, как советовали выше и сейчас выставил обратно первичное время). Модуль работает от питания ардуино 3,3V с собственной батарейкой и проработал он недели 2 точно без проблем и при выключенном питании тоже не сбрасывалось время и тем более не зависало. Кто-нибудь сталкивался с зависанием таким? Можно ли как-то контролировать, что часики тикают и в случае чего производить какой-то рестарт? В данный момент добавлена только проверка связи модуля времени с ардуино и если ардуино перестает видеть модуль, то любой цикл перестает работать. В данном же случае ардуино видит модуль, но время замерзло. Это достаточно плохо хотя бы потому, что если в момент подьема вверх или опускании зависнет модуль, то он будет изнашивать механизм подьема до тех пор, пока не сядет аккумулятор.
Попробую сам ответить на свой же вопрос, темболее Дим-мычъ натолкнул на мысль использования счетчика ардуино. К сожалению, в наличии нету запасного модуля DS1307, в магазине обещали через 1-2 недели поставить, но сама идея такая, может что-то и выйдет(скорее всего код неверный, так как протестить не на чем):
раз резеврная батарейка 3-3,3V, то и основного такого же достаточно.
Upper всё верно говорит. Пересмотрел даташит - от 3В модуль только продолжает "хронометраж" времени. Выполнять команды - надо 4.5 - 5.5В. Так что , видимо, это главная причина сбоев.
Берите сразу DS3231 и точность лучше и зависать не будет
Попробую сам ответить на свой же вопрос, темболее Дим-мычъ натолкнул на мысль использования счетчика ардуино. К сожалению, в наличии нету запасного модуля DS1307, в магазине обещали через 1-2 недели поставить, но сама идея такая, может что-то и выйдет(скорее всего код неверный, так как протестить не на чем):
P.S. Даже если модуль времени 100% исправен, как по мне , защита всё равно нужна.
Лучше поставить ещё два концевика.
И да, код выше не рабочий.
А вот простейший пример программного выявления остановки времени.
Но от неверных значений конечно это не спасёт, только от остановки.
Попробую сам ответить на свой же вопрос, темболее Дим-мычъ натолкнул на мысль использования счетчика ардуино. К сожалению, в наличии нету запасного модуля DS1307, в магазине обещали через 1-2 недели поставить, но сама идея такая, может что-то и выйдет(скорее всего код неверный, так как протестить не на чем):
P.S. Даже если модуль времени 100% исправен, как по мне , защита всё равно нужна.
Лучше поставить ещё два концевика.
И да, код выше не рабочий.
А вот простейший пример программного выявления остановки времени.
Но от неверных значений конечно это не спасёт, только от остановки.
Большое спасибо! Как раз именно этого и не хватало, а у самого не хватило мозга правильно это сделать. Попробую внедрить и потестировать. Так как я уже своими глазами увидел, что время разок зависло(питание уже поправил на 5V как по мануалу и должно быть,пока что работает исправно), но на всякий случай...Техника есть техника. Главное здесь, да, чтоб не зависло в момент начала подьема, иначе спалю ему насос, а это досточно большие деньги. К слову, и установка то там с заливкой бетона и тд и тп стоила столько, что я даже не знаю через сколько лет он эту сумму отобьет, хоть и питает она в сезон весь дом и что-то даже государству продает.
После выходных смогу точнее сказать, работает исправно или не работает вся логика в целом. Этот знакомый сам вручную зачем-то крутит и теперь иной раз сам сказать не может, срабатывает ардуино или нет...Вчера, например, он каким-то образом "случайно" по его словам заблокировал защиту слева и утром сам же пожаловался, что поворот влево не сработал...Т.е. теперь уже пошла стадия, как и писали выше: "А точно ли этот знакомый понимает, что что-то срабатывает".
И по поводу двух концевиков уже тоже сказал ему. Поставит при подьеме вверх, подпаяем еще один пин к арудино. Вниз не нужно, так как там просто при срабатывании реле насос без давления под своим весом идет до упора вниз(если так правильно будет выразиться, извините за мой эстонский, как говорится).
Еще раз спасибо, после выходных дам обратную связь:)
К слову, и установка то там с заливкой бетона и тд и тп стоила столько, что я даже не знаю через сколько лет он эту сумму отобьет, хоть и питает она в сезон весь дом и что-то даже государству продает.
Вообще - то я здесь ,в Песочнице, в Ардуинку играюсь, а речь, как я вижу , идёт о дорогостоящем оборудовании)).
Как по мне, Ардуино не очень подходит для этих целей.
Пусть лучше хозяин купит к панели солнечный трекер, и чтобы его установили специалисты ИМХО.
и что-то даже государству продает.
эта тема вообще тупиковая, если вы готовы принять N-ое количество энергии в сеть под это самое количество надо держать по парами и резерв да и цена приёмки-продажи отличаются чуть ли не на порядок, здесь пробегала тема, где ТС имел желание избыток энергии по ненагруженным фазам скидывать для нагрева воды в бойлере, а не отдавать в общую сеть за сущие копейки...
Вообще - то я здесь ,в Песочнице, в Ардуинку играюсь, а речь, как я вижу , идёт о дорогостоящем оборудовании)).
Как по мне, Ардуино не очень подходит для этих целей.
Ну здесь я бы не согласился. Ардуинка, может и больше как игрушка, но это контроллер как и все остальные, при этом еще и дешевый. Задача контроллера, каким бы он не был, просто исполнять задачу. Я сам тружусь инженером, просто немножко в другую сферу направление, но автоматики у нас дорогостоящей много и ставили спецы и обслуживают спецы и тд и тп. И то что она дорогая(десятки тысяч евро) не говорит о том, что она безотказная...Тоже ломаются компоненты и вызывать приходится фирму и платить за обслуживание тоже достаточно дорого. Сами если полезем, то наверное какие-то поломки и ликвидируем, но тут сразу нарушение договора вступает в силу и оттуда последствия и тд и тп. Цена за контроллер вырастает в десятки а то и больше раз в случае, когда в силу вступает так называемая "обратная связь" от железа. Наличие логов, показ что вышло из строя или что не сработало и по какой причине. Такая обратная связь дает шанс быстрее среагировать оператору и вызвать надлежащую службу для устранения проблемы, но и по пути количество техники для контроля растет. Отсюда и суммы большие.
В моем же случае взято как "хобби" и было сразу оговорено, что делаю за спасибо и не супер то силен в этом. Так прямо и сказал "работать по итогу будет, но гарантий об отказоустойчивости и всем прочем-это извини". На это было получено согласие и все риски со сломанным мотором он берет на себя если вдруг что. Ну и плюс он понимает, что моторы в любом случае нужно будет чинить или менять, поэтому в данном случае желание сделать хотя бы автоматику бесплатно и быть уверенным, что я в случае чего, сьезжу на место не за 80 евро/час за вызов плюс ремонт, а просто по знакомству и погляжу, что в ардуине нашей случилось:))
Вот как-то примерно так. В любом случае за помощь спасибо! Доверяй интернету, но проверяй как говорится.
и что-то даже государству продает.
эта тема вообще тупиковая, если вы готовы принять N-ое количество энергии в сеть под это самое количество надо держать по парами и резерв да и цена приёмки-продажи отличаются чуть ли не на порядок, здесь пробегала тема, где ТС имел желание избыток энергии по ненагруженным фазам скидывать для нагрева воды в бойлере, а не отдавать в общую сеть за сущие копейки...
Не буду врать, никогда не интересовался как это устроено, даже у этого же самого знакомого. Но у него установка вырабатывает до 15 кВ и по меркам Эстонии-это не промышленное производство и там договор с электрокомпанией достаточно недорогой и что-то по оборудованию они тоже предоставляют. А вот если больше 15, то это уже промышленное производство и там да, очень как-то дорого это получается или даже чуть ли не в минус при малых мощностях. Но опять же повторюсь, это размытая прям информция. Человек говорит, что что-то с этого имеет, а суммы конкретные никогда не спрашивал.
мне озвучивали эту тему практически из первых уст, так что зелёная энергетика и единая энергосистема вещи несовместимые однако
В моем же случае взято как "хобби" и было сразу оговорено, что делаю за спасибо и не супер то силен в этом. Так прямо и сказал "работать по итогу будет, но гарантий об отказоустойчивости и всем прочем-это извини". На это было получено согласие и все риски со сломанным мотором он берет на себя
Ну это другое дело, хозяин - барин)).
Тогда вот ещё пример использования таймера Watchdog. Может помочь при зависании ардуинки.
Добавил в скетч из #25.
И ещё мысля: почему бы не использовать токовую защиту для мотора?
P.S. Ещё вариант остановки мотора прямо из обработчика
Оказывается в Протеусе хорошо работает этот модуль.
Ради интереса набросал программку , попробовал, как в #3 ЕвгенийП советовал скомпоновать, но на много лучше не получилось. Будем дальше учиться. Концевики не делал, всё же Протеус, только временные интервалы и программная защита от остановки времени + WDT.
С модулем лучше синхронизироваться через SOUT и опрашивать его раз в секунду по прерыванию ИМХО
Если делать в железе, то я бы завершал цикл "парковкой" на концевик, что-бы начинать всегда с одного и того же места
Выключатель имитирует обрыв/пропадание связи с модулем))
P.S. Извиняюсь, гифка , ожидал получше будет смотреться
Если применить экваториальную монтировку, то слежение необходимо по одной оси, второй достаточно подруливать раз в несколько суток.
это какой же привод стоит, если его ветром доворачивает ? Серва штоле?
Правильнее привязываться не ко времени, а к интенсивности освещенности панели
если изменения освещенности недостаточно, поставьте перпендикулярный панели зеркальный с двух сторон гребень : он будет оттенять часть панели и увеличит изменение освещенности при уходе солнца от нормали к поверхности.
корректировать панель можно по нарастанию освещенности с небольшим перепробегом после максимума.
это какой же привод стоит, если его ветром доворачивает ? Серва штоле?
у меня на супраловской 2х метровой антенне ветер кирпичную стену выворачивает )))
Правильнее привязываться не ко времени, а к интенсивности освещенности панели
Это точно.
Хотя здесь и так дали ТС-у советов с избытком, но , как я понял, он в Ардуино начинающий
А так да, по интенсивности лучше, чем вслепую крутить... Да ещё надо-бы пару кнопок, менюшку, экранчик, хотя-бы время установить, если что.