Суточный таймер. Как сделать?
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Суточный таймер. Как сделать?
На Arduino Nano делаю небольшую автоматику для контроля основных параметров микроклимата бройлерам. В этом устройстве запланировал реализовать и таймер включения и отключения освещения в нужное время. На первый взгляд казалось это просто, но в итоге не получается, и ничего придумать не могу. Может кто сталкивался, подскажите как правильно реализовать, чтоб работало как нужно.
Задача: Сделать 2 периода включения света.
Первый период это включение рано утром (например в 4:00 для увеличения светового дня) и выключение, когда уже светло (например в 9:00)
Второй период, включение в 17:00 и выключение в 2:00 (Время включения и отключения может меняться, в зависимости от возраста цыплят и времени года, эти диапазоны я меняю с пульта вручную, по ситуации, необходимости...)
Для реализации такого таймера, я считываю с часов время одним числом. Т.е если время 9:45, я считываю как число 945. Задаю переменную для включения утром и переменную для отключения утром. И еещ переменные для включения вечером и выключения ночью.
Получается Вкл в 4:00 Выкл 9:00
_________ Вкл в 17:00 Выкл 2:00
Хотел реализовать через блоки сравнения, но т.к происходит обнуление текущего времени при переходе на новые сутки сравнение будет работать не правильно
От и не пойму как реализовать такой простой таймер
Можно было бы сделать через сравнение текущего времени, например, если текущее время равно установленному для включения, то включить на 5 (или сколько нужно) часов. Но в таком случае, если произойдет перезагрузка конроллера (что не исключено), То Ардуино не будет знать, что сейчас время включенного освещения, и тем более не будет знать сколько этого времени осталось. Т.е. такой подход совсем некорректный
Задача: Сделать 2 периода включения света.
Первый период это включение рано утром (например в 4:00 для увеличения светового дня) и выключение, когда уже светло (например в 9:00)
Второй период, включение в 17:00 и выключение в 2:00 (Время включения и отключения может меняться, в зависимости от возраста цыплят и времени года, эти диапазоны я меняю с пульта вручную, по ситуации, необходимости...)
Для реализации такого таймера, я считываю с часов время одним числом. Т.е если время 9:45, я считываю как число 945. Задаю переменную для включения утром и переменную для отключения утром. И еещ переменные для включения вечером и выключения ночью.
Получается Вкл в 4:00 Выкл 9:00
_________ Вкл в 17:00 Выкл 2:00
Хотел реализовать через блоки сравнения, но т.к происходит обнуление текущего времени при переходе на новые сутки сравнение будет работать не правильно
От и не пойму как реализовать такой простой таймер
Можно было бы сделать через сравнение текущего времени, например, если текущее время равно установленному для включения, то включить на 5 (или сколько нужно) часов. Но в таком случае, если произойдет перезагрузка конроллера (что не исключено), То Ардуино не будет знать, что сейчас время включенного освещения, и тем более не будет знать сколько этого времени осталось. Т.е. такой подход совсем некорректный
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Суточный таймер. Как сделать?
Вообще то при переходе через 00:00 время надо разбивать 17:00 - 23:59, 00:00 - 2:00.
При этом. от неприятностей использовать условие 17:00 < вкл < 23:59 и 00:00 < вкл < 2:00/
При этом. от неприятностей использовать условие 17:00 < вкл < 23:59 и 00:00 < вкл < 2:00/
Win10-64, FLProg (portable)
Суточный таймер. Как сделать?
покажите то что вы уже сделали. И посмотрим что надо изменить тогда уже
Суточный таймер. Как сделать?
А я для этой цели использовал датчик света, он изначально стоит чтоб вечером или ночью по участку впотьмах не лазить. Собственно он и отключает внешний свет, а заодно и внутренний.
Делал на скорою руку, не успевали с переселением в новый курятник. Сейчас переделываю
Делал на скорою руку, не успевали с переселением в новый курятник. Сейчас переделываю
Последний раз редактировалось Agafon 27 сен 2016, 09:19, всего редактировалось 1 раз.
Win7-64 FLProg v2.1.0 IDE 1.6.3
Суточный таймер. Как сделать?
Тут довольно много ньюансов и нужно более менее представлять вашу схему. Например датчик освещенности для отключения освещения. Это аналоговое устройство или двухпозиционное. Чувствительность для отключение програмная или это какой то резистор на плате датчика. Индикация текущего времени . Способ задания таймера. Количество уставок.
Тут просто необходимо все понимать
Тут просто необходимо все понимать
Суточный таймер. Как сделать?
Почему бы не использовать будильник, установите время включения и выключения
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Bogomil 27 сен 2016, 09:49, всего редактировалось 1 раз.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Суточный таймер. Как сделать?
ВОт как я делал, но видимо придется делать дополнительное условие для перехода на новые суткиrw6cm писал(а):покажите то что вы уже сделали. И посмотрим что надо изменить тогда уже

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Суточный таймер. Как сделать?
Попробуйте мой блок, настоятельно рекомендую использовать DS3231. Она полностью совместима с 1307, а точность хода в разы лучше.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Суточный таймер. Как сделать?
При планировании на каждые сутки, команды должны рассматриваться с 00:00 до 23:59,AlexRyzh писал(а):видимо придется делать дополнительное условие для перехода на новые сутки
и путаницы не будет.
Win10-64, FLProg (portable)
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Суточный таймер. Как сделать?
в блоке I1*I2 я бы умножал на 60. Тогда ВремяСуток получится
в минутах от полуночи. Уже удобнее.
в минутах от полуночи. Уже удобнее.
С уважением,
Евгений Бобков
Евгений Бобков
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Суточный таймер. Как сделать?
Если нужно часто менять установки, удобней *100,eugeneb писал(а):в блоке I1*I2 я бы умножал на 60. Тогда ВремяСуток получитсяв минутах от полуночи. Уже удобнее.
время вводится реальное, а *60 придется в уме постоянно пересчитывать для ввода.
Win10-64, FLProg (portable)
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Суточный таймер. Как сделать?
программе удобнее непрерывная переменная, а для человека можно пересчитывать самой программой.
А впрочем, здесь это - по барабану. Просто некрасиво, когда у переменной провалы.
А впрочем, здесь это - по барабану. Просто некрасиво, когда у переменной провалы.
Последний раз редактировалось eugeneb 27 сен 2016, 11:27, всего редактировалось 1 раз.
С уважением,
Евгений Бобков
Евгений Бобков
Суточный таймер. Как сделать?
Я бы сделал так.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Суточный таймер. Как сделать?
Vitez, а Вы пробовали так делать? Этот блок срабатывает по совпадению, а если позже времени включения контроллер перезагрузится или был выключен событие будет пропущено. Это просто будильник.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Суточный таймер. Как сделать?
Оно то так. Но если нужно включить в 17:00, а выключить в 1:00 или 2:00, или 3:00, то вот здесь и начинается проблема.slavas писал(а):При планировании на каждые сутки, команды должны рассматриваться с 00:00 до 23:59,и путаницы не будет.
Вообще я решил обойти эту проблему, выключением света не в 1:00 не в 2:00, а в 23:59. Но утром включать раньше, чтоб набрать нужные часы освещения.
Добавлено (27.09.2016, 12:28)
---------------------------------------------
Спасибо. Пока не понимаю как он работает, по свободке разберусь, может реально то что нужноAlexRyzh писал(а):Попробуйте мой блок, настоятельно рекомендую использовать DS3231. Она полностью совместима с 1307, а точность хода в разы лучше.
Суточный таймер. Как сделать?
Ок. Ваша правда.slavas писал(а):Vitez, а Вы пробовали так делать? Этот блок срабатывает по совпадению, а если позже времени включения контроллер перезагрузится или был выключен событие будет пропущено. Это просто будильник.
Последний раз редактировалось Vitez 27 сен 2016, 12:34, всего редактировалось 1 раз.
- AlexRyzh
- Сержант
- Сообщения: 107
- Зарегистрирован: 22 дек 2015, 11:06
- Откуда: Мелитополь
- Контактная информация:
Суточный таймер. Как сделать?
Думаю вот так должно получиться. Не проверял, т.к. Ардуину подключил к работе, не хочу снимать для проверки.

Получается так:
Переменную ВыклСветаН в каждом цикле передаю во временную переменную "Сутки". Далее проверяю, меньше времени включения и меньше текущего времени? Если меньше, значит идет переход через сутки, и чтобы небыло ложного срабатывания, временной переменной присваиваю значение, например 5000, что явно больше 2359. И далее проверка на отключение идет по временной переменной.
Когда будет полночь, время будет 0000, условие не выполнится и переменная "Сутки" будет равна заданному значению времени отключения. И отключение произойдет в указанное время без ложных срабатываний.
Как-то так
Добавлено (27.09.2016, 14:37)
---------------------------------------------
Вернее вот более правильная картинка включения и выключения света (таймера) по указанному времени, с переходом на новые сутки


Получается так:
Переменную ВыклСветаН в каждом цикле передаю во временную переменную "Сутки". Далее проверяю, меньше времени включения и меньше текущего времени? Если меньше, значит идет переход через сутки, и чтобы небыло ложного срабатывания, временной переменной присваиваю значение, например 5000, что явно больше 2359. И далее проверка на отключение идет по временной переменной.
Когда будет полночь, время будет 0000, условие не выполнится и переменная "Сутки" будет равна заданному значению времени отключения. И отключение произойдет в указанное время без ложных срабатываний.
Как-то так
Добавлено (27.09.2016, 14:37)
---------------------------------------------
Вернее вот более правильная картинка включения и выключения света (таймера) по указанному времени, с переходом на новые сутки

- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
Суточный таймер. Как сделать?
AlexRyzh, инвертируйте логику.
У вас в сутках два интервала, когда свет должен гореть и два - когда не должен.
Все они чередуются. один интервал, когда должен, переходит через границу суток.
Вы ищете сигнал, который включает свет. Это усложняет программу.
А вы ищИте сигнал, который выключает свет. Потом его инвертируете.
У темных интервалов нет перехода через полночь.
Поэтому программа упростится.
У вас в сутках два интервала, когда свет должен гореть и два - когда не должен.
Все они чередуются. один интервал, когда должен, переходит через границу суток.
Вы ищете сигнал, который включает свет. Это усложняет программу.
А вы ищИте сигнал, который выключает свет. Потом его инвертируете.
У темных интервалов нет перехода через полночь.
Поэтому программа упростится.
С уважением,
Евгений Бобков
Евгений Бобков
Суточный таймер. Как сделать?
AlexRyzh, Я уже в двух своих проектах использую такую схему
[spoiler=Спойлер][/spoiler]Позволяет включать выключать нагрузку по времени, при том не важно было или нет отключение контролера. Время начала может быть больше времени окончания, то есть например включение в 23.00, выключить в 1.00.
Дискретность одна минута, можно и с секундами сделать, но тип уже будет Long.
Делал еще во времена когда не было пользовательских блоков, сейчас упаковал бы в блок.
[spoiler=Спойлер][/spoiler]Позволяет включать выключать нагрузку по времени, при том не важно было или нет отключение контролера. Время начала может быть больше времени окончания, то есть например включение в 23.00, выключить в 1.00.
Дискретность одна минута, можно и с секундами сделать, но тип уже будет Long.
Делал еще во времена когда не было пользовательских блоков, сейчас упаковал бы в блок.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Слимпер 27 сен 2016, 16:56, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость