Суточный таймер. Как сделать?

Обсуждение и помощь в разработке различных проектов форумчан, например автоматика для теплицы, автоматика для котельной и т.д.
Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Суточный таймер. Как сделать?

#1

Сообщение AlexRyzh » 27.09.2016{, 08:49}

На Arduino Nano делаю небольшую автоматику для контроля основных параметров микроклимата бройлерам. В этом устройстве запланировал реализовать и таймер включения и отключения освещения в нужное время. На первый взгляд казалось это просто, но в итоге не получается, и ничего придумать не могу. Может кто сталкивался, подскажите как правильно реализовать, чтоб работало как нужно.
Задача: Сделать 2 периода включения света.
Первый период это включение рано утром (например в 4:00 для увеличения светового дня) и выключение, когда уже светло (например в 9:00)
Второй период, включение в 17:00 и выключение в 2:00 (Время включения и отключения может меняться, в зависимости от возраста цыплят и времени года, эти диапазоны я меняю с пульта вручную, по ситуации, необходимости...)
Для реализации такого таймера, я считываю с часов время одним числом. Т.е если время 9:45, я считываю как число 945. Задаю переменную для включения утром и переменную для отключения утром. И еещ переменные для включения вечером и выключения ночью.
Получается Вкл в 4:00 Выкл 9:00
_________  Вкл в 17:00 Выкл 2:00
Хотел реализовать через блоки сравнения, но т.к происходит обнуление текущего времени при переходе на новые сутки сравнение будет работать не правильно
От и не пойму как реализовать такой простой таймер

Можно было бы сделать через сравнение текущего времени, например, если текущее время равно установленному для включения, то включить на 5 (или сколько нужно) часов. Но в таком случае, если произойдет перезагрузка конроллера (что не исключено), То Ардуино не будет знать, что сейчас время включенного освещения, и тем более не будет знать сколько этого времени осталось. Т.е. такой подход совсем некорректный

Аватара пользователя
rw6cm
Полковник
Сообщения: 2073
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 250
Имя: Владимир

Суточный таймер. Как сделать?

#2

Сообщение rw6cm » 27.09.2016{, 09:09}

Вообще то при переходе через 00:00 время надо разбивать 17:00 - 23:59,  00:00 - 2:00.
При этом. от неприятностей использовать условие     17:00 < вкл < 23:59 и 00:00 < вкл < 2:00/
Win10-64, FLProg (portable)

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Суточный таймер. Как сделать?

#3

Сообщение confiden » 27.09.2016{, 09:16}

покажите то что вы уже сделали. И посмотрим что надо изменить тогда уже

Agafon
Рядовой
Сообщения: 28
Зарегистрирован: 14.07.2016{, 15:51}
Репутация: 0

Суточный таймер. Как сделать?

#4

Сообщение Agafon » 27.09.2016{, 09:18}

А я для этой цели использовал датчик света, он изначально стоит чтоб вечером или ночью по участку впотьмах не лазить. Собственно он и отключает внешний свет, а заодно и внутренний.
Делал на скорою руку, не успевали с переселением в новый курятник. Сейчас переделываю
Последний раз редактировалось Agafon 27.09.2016{, 09:19}, всего редактировалось 1 раз.
Win7-64 FLProg v2.1.0 IDE 1.6.3

confiden
Рядовой
Сообщения: 22
Зарегистрирован: 23.09.2016{, 22:23}
Репутация: 0
Откуда: Великие Луки

Суточный таймер. Как сделать?

#5

Сообщение confiden » 27.09.2016{, 09:19}

Тут довольно много ньюансов и нужно более менее представлять вашу схему. Например датчик освещенности для отключения освещения. Это аналоговое устройство или двухпозиционное. Чувствительность для отключение програмная или это какой то резистор на плате датчика. Индикация текущего времени . Способ задания таймера. Количество уставок. 
Тут просто необходимо все понимать

Bogomil
Рядовой
Сообщения: 46
Зарегистрирован: 19.09.2015{, 09:43}
Репутация: 0
Откуда: Ихтиман България

Суточный таймер. Как сделать?

#6

Сообщение Bogomil » 27.09.2016{, 09:49}


Почему бы не использовать будильник, установите время включения и выключения
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось Bogomil 27.09.2016{, 09:49}, всего редактировалось 1 раз.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Суточный таймер. Как сделать?

#7

Сообщение AlexRyzh » 27.09.2016{, 10:20}

rw6cm писал(а):покажите то что вы уже сделали. И посмотрим что надо изменить тогда уже
ВОт как я делал, но видимо придется делать дополнительное условие для перехода на новые сутки
Изображение
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
slavas
Лейтенант
Сообщения: 568
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Суточный таймер. Как сделать?

#8

Сообщение slavas » 27.09.2016{, 10:45}

Попробуйте мой блок, настоятельно рекомендую использовать DS3231. Она полностью совместима с 1307, а точность хода в разы лучше.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2073
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 250
Имя: Владимир

Суточный таймер. Как сделать?

#9

Сообщение rw6cm » 27.09.2016{, 10:47}

AlexRyzh писал(а):видимо придется делать дополнительное условие для перехода на новые сутки
При планировании на каждые сутки, команды должны рассматриваться с 00:00 до 23:59,
и путаницы не будет.
Win10-64, FLProg (portable)

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 475
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 16
Откуда: Нижний Новгород
Имя: Евгений

Суточный таймер. Как сделать?

#10

Сообщение eugeneb » 27.09.2016{, 10:57}

в блоке I1*I2 я бы умножал на 60. Тогда ВремяСуток получится
в минутах от полуночи. Уже удобнее.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2073
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 250
Имя: Владимир

Суточный таймер. Как сделать?

#11

Сообщение rw6cm » 27.09.2016{, 11:04}

eugeneb писал(а):в блоке I1*I2 я бы умножал на 60. Тогда ВремяСуток получитсяв минутах от полуночи. Уже удобнее.
Если нужно часто менять установки, удобней *100,
время вводится реальное, а *60 придется в уме постоянно пересчитывать для ввода.
Win10-64, FLProg (portable)

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 475
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 16
Откуда: Нижний Новгород
Имя: Евгений

Суточный таймер. Как сделать?

#12

Сообщение eugeneb » 27.09.2016{, 11:19}

программе удобнее непрерывная переменная, а для человека можно пересчитывать самой программой.
А впрочем, здесь это - по барабану. Просто некрасиво, когда у переменной провалы.
Последний раз редактировалось eugeneb 27.09.2016{, 11:27}, всего редактировалось 1 раз.

Аватара пользователя
Vitez
Сержант
Сообщения: 200
Зарегистрирован: 08.11.2015{, 14:32}
Репутация: 4

Суточный таймер. Как сделать?

#13

Сообщение Vitez » 27.09.2016{, 11:31}

Я бы сделал так.
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
slavas
Лейтенант
Сообщения: 568
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Суточный таймер. Как сделать?

#14

Сообщение slavas » 27.09.2016{, 11:46}

Vitez, а Вы пробовали так делать? Этот блок срабатывает по совпадению, а если позже времени включения контроллер перезагрузится или был выключен событие будет пропущено. Это просто будильник.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Суточный таймер. Как сделать?

#15

Сообщение AlexRyzh » 27.09.2016{, 12:28}

slavas писал(а):При планировании на каждые сутки, команды должны рассматриваться с 00:00 до 23:59,и путаницы не будет.
Оно то так. Но если нужно включить в 17:00, а выключить в 1:00 или 2:00, или 3:00, то вот здесь и начинается проблема.
Вообще я решил обойти эту проблему, выключением света не в 1:00 не в 2:00, а в 23:59. Но утром включать раньше, чтоб набрать нужные часы освещения.

Добавлено (27.09.2016, 12:28)
---------------------------------------------
AlexRyzh писал(а):Попробуйте мой блок, настоятельно рекомендую использовать DS3231. Она полностью совместима с 1307, а точность хода в разы лучше.
Спасибо. Пока не понимаю как он работает, по свободке разберусь, может реально то что нужно

Аватара пользователя
Vitez
Сержант
Сообщения: 200
Зарегистрирован: 08.11.2015{, 14:32}
Репутация: 4

Суточный таймер. Как сделать?

#16

Сообщение Vitez » 27.09.2016{, 12:30}

slavas писал(а):Vitez, а Вы пробовали так делать? Этот блок срабатывает по совпадению, а если позже времени включения контроллер перезагрузится или был выключен событие будет пропущено. Это просто будильник.
Ок. Ваша правда.
Последний раз редактировалось Vitez 27.09.2016{, 12:34}, всего редактировалось 1 раз.

Аватара пользователя
AlexRyzh
Сержант
Сообщения: 107
Зарегистрирован: 22.12.2015{, 11:06}
Репутация: 1
Откуда: Мелитополь
Контактная информация:

Суточный таймер. Как сделать?

#17

Сообщение AlexRyzh » 27.09.2016{, 14:37}

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

Добавлено (27.09.2016, 14:37)
---------------------------------------------
Вернее вот более правильная картинка включения и выключения света (таймера) по указанному времени, с переходом на новые сутки
Изображение

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 475
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 16
Откуда: Нижний Новгород
Имя: Евгений

Суточный таймер. Как сделать?

#18

Сообщение eugeneb » 27.09.2016{, 16:26}

AlexRyzh, инвертируйте логику.

У вас в сутках два интервала, когда свет должен гореть и два - когда не должен.
Все они чередуются. один интервал, когда должен, переходит через границу суток.
Вы ищете сигнал, который включает свет. Это усложняет программу.
А вы ищИте сигнал, который выключает свет. Потом его инвертируете.
У темных интервалов нет перехода через полночь.
Поэтому программа упростится.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 25
Откуда: Новосибирск

Суточный таймер. Как сделать?

#19

Сообщение Слимпер » 27.09.2016{, 16:56}

AlexRyzh, Я уже в двух своих проектах использую такую схему

СпойлерПоказать
Позволяет включать выключать нагрузку по времени, при том не важно было или нет отключение контролера. Время начала может быть больше времени окончания, то есть например включение в 23.00, выключить в 1.00.
Дискретность одна минута, можно и с секундами сделать, но тип уже будет Long.

Делал еще во времена когда не было пользовательских блоков, сейчас упаковал бы в блок.
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось Слимпер 27.09.2016{, 16:56}, всего редактировалось 1 раз.

Аватара пользователя
slavas
Лейтенант
Сообщения: 568
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 0
Откуда: Санкт-Петербург

Суточный таймер. Как сделать?

#20

Сообщение slavas » 27.09.2016{, 18:34}

Так я блок выкладывал сдесь, там это уже сделано.

Ответить

Вернуться в «Проекты различных устройств на Ардуино»