247

Теплица на Ардуино-Мега. Часть 6.

Серия "Умная" теплица на Ардуино-Мега

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

Теперь расскажу об автоматическом поливе. Его конструкция в моей теплице выглядит примерно так:

Из большого бака раз в день в определенное время ( настраивается с помощью меню ) вода наливается в бак, расположенный в теплице, с помощью насоса. В моем случае в 10-00. Количество воды определяется срабатыванием поплавкового датчика. На всякий случай через меню можно настроить предельное время работы насоса ( защита от несработки датчика. Итак, вода налилась:

После этого вода в баке весь день греется в теплице, в которой тепло. А вечером, у меня настроено в 19-00, насос включатся на 40 секунд, вода переливается и уже самотеком, по закону сообщающихся сосудов, выливается на грядку:

Как я настраивал автополив можно посмотреть на Youtube.
Электрическую схему теплицы можно посмотреть в предыдущих постах, а вот скетч пришлось переделать. Время для работы насоса, достаточное для того, чтобы вода перелилась и начался полив, составляет 40 секунд. Я, недолго думая, написал:

digitalWrite (ReleNasos_2,0); // Включаем насос
delay (Parametr[2]*1000); // где Parametr[2] - это время в секундах, настраиваемое с  //помощью меню.
digitalWrite (ReleNasos_2,1); // Насос отключить

Однако оказалось, что если настраиваем 15 секунд, все работает нормально, а если 40, то программа останавливается на этом delay навсегда. Так и не разобрался, почему. Не подскажете начинающему? Переписал таким образом:

digitalWrite (ReleNasos_2,0); // Включаем насос
for (int Poliv_delay = 0; Poliv_delay<=Parametr[2]; Poliv_delay++)
{
delay (1000);
}
digitalWrite (ReleNasos_2,1); // Насос отключить

Все сразу заработало, но непонятки так и остались. Раз уж скетч я выкладывал ранее, выложу и измененный.

Arduino & Pi

1.5K постов20.9K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

Я бы для страховки добавил второй геркон внизу, т.е. продлил направляющую  до нижней границы...

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Зачем?

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

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

раскрыть ветку (4)
Автор поста оценил этот комментарий

Мне не надо сигнал на включение насоса. Мне надо, чтобы вода набиралась в 10-00.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

А, тогда пардон, не верно понял... Тогда в Вашем случае возможно переполнение регистра,
Попробуйте разбить один Delay на несколько, если например 20 будет работать без сбоев, то сделать две задержки...

раскрыть ветку (2)
Автор поста оценил этот комментарий

Ну я уже сделал через цикл по 1000мс. Теперь работает.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Здравствуйте. Я для продление работы ардуинки от аккумулятора использовал данную библиотеку: https://github.com/rocketscream/Low-Power
Смысл в том, что можно уводить микроконтроллер в спящий режим вплоть до 8 секунд. Это даёт большую экономию в плане потребления, и возможно продлевает срок службы ардуино.
Можно сделать просыпание по внешнему прерыванию, или по внутреннему таймеру, или совместить
вот пример по внутреннему таймеру

// **** INCLUDES *****

#include "LowPower.h"



void setup()


{


// No setup is required for this library


}



void loop()


{


// Enter power down state for 8 s with ADC and BOD module disabled


LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);



// Do something here


// Example: Read sensor, data logging, data transmission.


}


З.Ы.
Понимаю, в вашем случае энергопотребление не критично, просто решил поделиться опытом. Вдруг пригодится.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества