Начать новую тему 
Ответить на тему 
на страницу...   1  2  3  4  5  6
Сообщение
СообщениеДобавлено: 19.12.17 18:26
Аватара пользователя

Регистрация: 20.06.2016
Сообщения: 1628
 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 19.12.17 18:52
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
Ronaldin4ik, бро, в случае с Verik, imho лучше взять в аренду. А я бы для себя предпочел Flir One, так как он в 2 раза дешевле твоего Cat S60. :rasta:

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 19.12.17 19:19
Аватара пользователя

Регистрация: 20.06.2016
Сообщения: 1628
ilia1982,
Да я и не говорю, что катапиллер - это панацея от всех бед. Это был просто вариант. Вдруг товарищ ищет новый телефон себе, а тут и бонус в виде ИК камеры сразу. Но, понимаю, что цена высока, я согласен (телефон держал в руках, честно скажу, если смотреть через ИК рамеру, то заметно подтормаживает). Тем более, товарищ сам знает все источники тепла в своём боксе (что ему искать-то?). Наш электрик смотрит больше на контакты и соединения. Потому что, плохой контакт - повышенный нагрев. Он пробежал, подтянул их и готово. Я, если честно, не вижу такой острой необходимости в тепловизоре. Он нужен для поиска поломок и выхода из строя больше (ну и брак каких-либо компонентов эл. системы), ведь, устанавливая матрицу и так понятно, что она будет источником тепла. Так, побаловаться, не более.

_________________
Светильник на базе Cree СХВ3590,Светильник на базе плат от Castaman,Создание шкафа с максимальным КПД,Модернизация фильтровентиляционной системы шкафа (плоский фильтр, вентиляторы 12В, реобас),Устройство для круговой резки отверстий,Создание LED лампы с эффектом от ИК ,Создание канального вентилятора на базе компьютерного,Модернизация Quasar Board от Нуба,Организация подогрева тента на балконе 2.0,212 граммов с автомата,Экстрактор янтаря бутаном,Модернизация Quasar board 100 Elite V2 UV,Продление автономной работы вапорайзера


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 20.12.17 22:43
Аватара пользователя

Регистрация: 04.05.2009
Сообщения: 122
Дневник: Читать (1)
Часть 10. Тестирование

Ну что БРОтья. :pray: :friend: :rasta: Как же я рад выходу этой части. Сердце так и наровит закричать от радости. :mrgreen: Я наконец-то добрался до своей мечты, о которой все мои мысли уже 8 (очень долгих) последних лет. Это было очень не простое время. Однако, мне повезло встретить людей, которых объединяет ganja. :rasta: И я сейчас говорю о вас братья по интересу:
Ronaldin4ik, Taptempo, ЛицоБезГлаз, YourM7, AYO, ilia1982, Pzdc99, GreeNoLED, kikkk, freestyler, rickyticky, JIN777, d3ny, HolyTHC, skidrow, freestyler, ШИРЯЙ, ArtasLichKing, styx, drpsycho, jahzcore, klausF, oldsanta, позитронщик, fiftydog, Anon228, mjcats, trueama44, Ребзик, timeoftime, ВесёлыйОгородник, propelleryellow, RoadTo2GPW, SpalenayaXata

И ещё, хочу передать привет своему хорошему другу, который ничего не пишет на OLK, пока! Я о тебе Захар! :thumbs:

Финальная версия прошивки для Arduino
Напоминаю, что были поставлены ОЧЕНЬ высокие требования к боксу с самого первого дня. Это тумба, которая стоит в комнате у меня на работе. :roll: Комната размером 54кв.м.. В комнате находятся 4 человека, 2 из них не в теме MJ. :D Для того, что бы выращивать MJ у себя в боксе мне нужно было добиться абсолютного стэлс. П.С. В целом если даже палево получится, то я не простой работник, и мне плевать, что они думают на этот счёт. 8)

Но и чтобы они знали о моих увлечениях, я тоже допустить не мог. Так, что решение было принято. :notice: Сегодня я утверждаю, что я добился такого СТЭЛС, что и сам в шоке. :brow:

Вчера и сегодня тестирую прошивку после того как я дописал все функции программы управления боксом. Мне повезло протестировать все режимы. Например, вчера днём когда все были в комнате был включен максимальный режим, который я планирую держать ночью, когда в офисе вообще нет никого. Те выводы которые я сделал шокировали меня очень сильно. :? Никакого палева даже при максимальном режиме. Спасибо, за совет - использовать уплотнитель, и за BridgeLux отдельное спасибо.

Опыт: максимальная мощность
Вот немного статистики:
Вентиляторы: 2х80мм на входе, 3х92мм на угольном фильтре, 2х80мм на алюминиевом радиаторе.
Свет: 100вт COB LED (BridgeLux v22 2 x 3000K + 1 x 5000K)

Так как программа позволяет управлять скоростью каждого отдельного вентилятора с точностью от 0 (выключено) до 255 (максимум) и яркостью светильника плавно менять от 0 (выключено) до 255 (максимум), то у тебя открывает возможности для нового уровня. Так я, с помощью разных опытов, проверил самый жёсткий режим :notice:. И так, я решил включить вентиляторы и светильник на полную мощность. Эксперимент длился больше 4 часов.

Выводы:
Температура радиатора LED: < 43 градуса.
Шум: на общем фоне не возможно отличить от шума компьютера.
Температура Arduino платы: < 33 градуса.
Температура в боксе: < 28 градуса.
Влажность в боксе: < 12% (если убавить вентиляцию, то показатель может подняться до 20%, не выше).

Функции программы Arduino

Всё это позволяет работать боксу в автоматическом режиме:
  • Режимы: можно создать до 255 различных режимов в день (по-умолчанию: 10, точность: 1 секунда)
  • Часы: DS3232 (Часы реального времени очень высокой точности с температурной компансацией)
  • Свет: 0 - 255 (ШИМ + реле размыкает цепь питания драйвера)
  • Вентиляторы: 3 группы вентиляторов (ШИМ)
  • Влажность, управление: будет установлен компактный увлажнитель COOPER&HUNTER CH-800-1 (реле размыкает цепь питания)
  • Влажность, измерение: DHT11 установлен внутри бокса, под угольным фильтром
  • Температура радиатора: 2 х DS18b20 (Цифровой термометр, точность: 9бит (можно увеличить до 12 бит))
  • Температура субстрата: DS18b20 (Герметичный датчик температуры, точность: 9бит (можно увеличить до 12 бит))
  • Температура за бортом: DS18b20
  • Интерфейс управления: USB подключен к компьютеру (может работать автономно, при выключено компьютере)
  • Мониторинг: Позволяет хранить историю наблюдений за 24 часа (экспорт CSV формате)

Также предусмотрел некоторые аварийные режимы, которые мы обсуждали. Если вентиляторы выйдут из строя, то температура радиатора LED может дойти до критических. Для решения этой задачи, я использовал 2 датчика температуры, которые гарантируют, что даже при выходе одного датчика из строя, то его роль может выполнять другой оставшийся. :notice: При достижении температуры в 50 градусов яркость света уменьшается в два раза, а при достижении температуры в 55 градусов, вообще выключается. Нормальный режим восстанавливается автоматически когда температура упадёт.

Скоро начало следующего шага :lol:
Осталось дождаться когда мне привезут увлажнитель и установить его в боксе. Планирую на выходных посадить семку!

До связи на выходных

_________________
st. Patrick :: Кухонный компактный гроу бокс - В процессе
---
Стелс тумба для офиса [ВxШxГ - 75x40x60][LED][Arduino] - Закончен
Первый раз | NL от Pyramid Seeds fem | BridgeLux LED 100 вт | 75x40x60 Arduino | Земля - Харвест


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 20.12.17 23:25
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
Verik [18.12.17 12:09] писал(а):
А вот температура внутри камеры роста держится на отметке 30 градусов, даже при максимальной мощности вентиляторов вдува и фильтра. Но я подозреваю, что это из-за того, что датчик температуры и влажности установлен так, что на него падают прямые лучи света. :hmmm:[/size]


Verik [20.12.17 22:43] писал(а):
Температура в боксе: < 28 градуса.

Так высокая температура в боксе была обусловлена неправильным расположением датчика температуры?

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 20.12.17 23:48
Аватара пользователя

Регистрация: 14.08.2017
Сообщения: 200
Читал репорт и охYевал, однозначно буду следить. Не смотря на дату реги, тоже не первый год на олке, но таких финтов ушами еще не видел :rasta:
Очень надеюсь, что автора не постигнет какая-нибудь неприятная неожиданность типа выхода из строя вентиляции с последующим моментальным распространением дичайших ароматов в радиусе десятков метров.
Когда со мной такое случилось в квартире, я особо не переживал, но вот в офисе... Проблема в том, что если вентик внезапно сгорит, то запах начнет распространяться моментально, пока ты будешь менять его, все вокруг уже прилично нанюхаются.

Verik, ох бро, надеюсь ты все предусмотрел, удачи тебе с этой смелой затеей, и да хранит тебя Джа! :friend:

P.S. сорян если я уже далеко не первый с этими предупреждениями/опасениями, возможно тебя это уже достало ) Просто ты полОЛКа на измену высадил походу :rasta:

_________________
2xLSD fem (BF)|LED 400W+4x25W|90x90x185|земля|скрог|454 г


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 11:33

Регистрация: 19.04.2017
Сообщения: 106
Бро, пара моментов :friend: :
Пососветую поменять DHT11 на DHT22, ибо DHT11 - полнейшее дерьмо и показывает плюс-минус дохрена. Иногда мне кажется, что он показывает просто рандомные данные. Особенно влажность.

По поводу увлажнителя... Есть такой момент, что если тебе для уменьшения температуры в боксе надо сильно увеличивать скорость вентиляторов вдува-выдува, то всю твою влажность будет элементарно выдувать из бокса. Как гласит Каннапедия:
Цитата:
Вентилятор должен обновлять воздух в боксе каждые 3–5 минут.

Соответственно влажность в боксе будет равна влажности в помещении, как мне кажется. :hmmm:

И еще, по поводу УЗ увлажнителя. Всем знакома ситуация, когда ты заливаешь в него воду из под крана, а потом на всей мебели в квартире белёсый налет. Чтобы этого избежать надо лить очень чистую воду - из под осмоса. Тогда налета 100% нет. Это я к чему... Х.з. на чем этот налет будет образовываться в боксе... а вдруг на линзах диодов? Это очень сильно снизит светоотдачу...

А вообще интересный проект! Удачи, бро!

_________________
[Бокс и неудача раз] [Неудача два] [Неудача три]


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 12:11
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
oldsanta [21.12.17 11:33] писал(а):
Как гласит Каннапедия:
Цитата:
Вентилятор должен обновлять воздух в боксе каждые 3–5 минут.

Эти древние письмена были написана, когда повсюду царил ДНАТ.
Я читал другую цитату: минимум 2-5 объемов бокса в час. Это требуемый минимум для восполнения расходуемого растениями CO2. Все более этого - для охлаждения воздуха и уменьшения влажности.

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 12:19

Регистрация: 19.04.2017
Сообщения: 106
ilia1982 [21.12.17 12:11] писал(а):
Я читал другую цитату: минимум 2-5 объемов бокса в час. Это требуемый минимум для восполнения расходуемого растениями CO2. Все более этого - для охлаждения воздуха и уменьшения влажности.

Тогда идеальным видится вариант:
Включается вытяжка на пару-тройку минут, воздух в боксе обновляется, влажность падает до уровня "в помещении", после этого на 20 минут (или до достижения необходимой влажности) включается увлажнитель.
Затем цикл повторяется. По мере роста куста циклы сокращаются - обновлять воздух надо чаще - растение потребляет больше СО2, и на цвете влажность должна быть ниже.

_________________
[Бокс и неудача раз] [Неудача два] [Неудача три]


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 19:36
Аватара пользователя

Регистрация: 20.06.2016
Сообщения: 1628
oldsanta,
Цитата:
Чтобы этого избежать надо лить очень чистую воду - из под осмоса. Тогда налета 100% нет

Лью из-под Осмоса, ppm 21. Налёт есть. Но, если установлена оптика на диоды, то протереть её раз в неделю - сущие пустяки.
Кстати, в УЗ увлажнителе у меня постоянно росла какая-то зелёная херня, типа водорослей (в Осмосной воде). Капал перекись водорода в бак. Водоросли стало меньше и она покраснела :shock:, мутировала походу. Потом начал ложить в бак увлажнителя серебряную ложку (кто-то мне на форуме подсказал, спасибо). Водоросль извёл таким образом.
П.С.
Тщательное промывание увлажнителя с хлоркой давало временный эффект.
Цитата:
Соответственно влажность в боксе будет равна влажности в помещении, как мне кажется.

Вот на практике наблюдается обратное. При включённой лампе влажность в боксе падает. Если в хате 50%, то может упасть до 30% в боске. Пока что, под этот феномен я теорию не подвёл (да и не гуглил шибко).

_________________
Светильник на базе Cree СХВ3590,Светильник на базе плат от Castaman,Создание шкафа с максимальным КПД,Модернизация фильтровентиляционной системы шкафа (плоский фильтр, вентиляторы 12В, реобас),Устройство для круговой резки отверстий,Создание LED лампы с эффектом от ИК ,Создание канального вентилятора на базе компьютерного,Модернизация Quasar Board от Нуба,Организация подогрева тента на балконе 2.0,212 граммов с автомата,Экстрактор янтаря бутаном,Модернизация Quasar board 100 Elite V2 UV,Продление автономной работы вапорайзера


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 21:17
Аватара пользователя

Регистрация: 04.05.2009
Сообщения: 122
Дневник: Читать (1)
Результаты автономной работы

Здарова всем :sun:

ilia1982, oldsanta, Ronaldin4ik, спасибо за советы! Да, я заметил, что DHT11 работает очень медленно, но показания выдаёт нормальные. Возможно в будущем поменяю на DHT22. Но пока начну цикл на DHT11. В увлажнитель буду лить фильтрованную воду, но у неё PPM: 200. Короче будет видно когда приедет увлажнитель. Но в любом случае я стартую на выходных. :mrgreen:

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

Сейчас режимов 5:
  1. Ранний рассвет: Начало в 17:00, мощность света: 40%, мощность вентиляторов: 30%
  2. Поздний рассвет: Начало в 19:00, мощность света: 60%, мощность вентиляторов: 50%
  3. День: Начало в 21:00, мощность света: 100%, мощность вентиляторов: 95%
  4. Перед ночью: Начало в 7:00, мощность света: 60%, мощность вентиляторов: 80%
  5. Ночь: Начало в 9:00, мощность света: 0%, мощность вентиляторов: 10%

Результат
411423

На этом графике показаны основные показатели температуры и влажности. Я доволен результатом. Температура на радиаторе: < 43 градуса, Температура в боксе: < 33 градуса, влажность падала до 12%. А самое главное, что бокс работает полностью автоматически :notice:

_________________
st. Patrick :: Кухонный компактный гроу бокс - В процессе
---
Стелс тумба для офиса [ВxШxГ - 75x40x60][LED][Arduino] - Закончен
Первый раз | NL от Pyramid Seeds fem | BridgeLux LED 100 вт | 75x40x60 Arduino | Земля - Харвест


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 21:22

Регистрация: 24.04.2017
Сообщения: 327
Verik [21.12.17 21:17] писал(а):
но у неё PPM: 200

Дистилированую лей она копейки стоит :friend:


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 21:31
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
Verik, при влажности 15% и температуре 30 градусов давление пара в боксе - 0.64 КПа. При правильном VPD в районе 1 КПа температура растений должна быть тогда 14 градусов. То есть, разница температур листьев и воздуха должна составлять 16 градусов. Скажу сразу - это невозможно. При очень сильном освещении и правильном ppm раствора и полностью открытых устьицах разница может достигать максимум 8 градусов, хотя обычно это всего 2 градуса.

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

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 21:45
Аватара пользователя

Регистрация: 04.05.2009
Сообщения: 122
Дневник: Читать (1)
SpalenayaXata, Ок. Я купил 5 литровую бутылку на заправке за 1.29$. Это вообще не проблема лить дистиллят.

ilia1982, увлажнитель уже заказал: COOPER&HUNTER CH-800-1. Это компактный увлажнитель, который не будет занимать слишком много места в боксе. Управление уже придумал, осталось только подключить. Arduino будет поддерживать определенную влажность с точностью до 10%.

Цитата:
при влажности 15% и температуре 30 градусов давление пара в боксе - 0.64 КПа. При правильном VPD в районе 1 КПа температура растений должна быть тогда 14 градусов

Походу я понял, что у меня огромный пробел в знаниях о том как влажность влияет на растение. Я только знаю, что для вегетационного периода необходимо 40–50%, а для цветения как можно меньше. Может быть ты мог бы рассказать как это работает :oops: Я думаю не только я один буду благодарен :thumbs: Заранее спасибо!

_________________
st. Patrick :: Кухонный компактный гроу бокс - В процессе
---
Стелс тумба для офиса [ВxШxГ - 75x40x60][LED][Arduino] - Закончен
Первый раз | NL от Pyramid Seeds fem | BridgeLux LED 100 вт | 75x40x60 Arduino | Земля - Харвест


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 22:47
Аватара пользователя

Регистрация: 20.06.2016
Сообщения: 1628
ilia1982,
Цитата:
при влажности 15% и температуре 30 градусов давление пара в боксе - 0.64 КПа.

Да Бро, очень интересно, как посчитал. Ведь у товарища в боксе избыточное давление из-за вентиляторов на входе, а сам бокс сообщён с атмосферным воздухом. Тут попахивает хорошей курсовой работой, если ещё и сопротивление на выходе из шкафа посчитать (фильтр, повороты, доп. вентиляторы). Вангую, что твои данные верны для давления в одну атмосферу.

_________________
Светильник на базе Cree СХВ3590,Светильник на базе плат от Castaman,Создание шкафа с максимальным КПД,Модернизация фильтровентиляционной системы шкафа (плоский фильтр, вентиляторы 12В, реобас),Устройство для круговой резки отверстий,Создание LED лампы с эффектом от ИК ,Создание канального вентилятора на базе компьютерного,Модернизация Quasar Board от Нуба,Организация подогрева тента на балконе 2.0,212 граммов с автомата,Экстрактор янтаря бутаном,Модернизация Quasar board 100 Elite V2 UV,Продление автономной работы вапорайзера


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 21.12.17 23:10
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
Verik, все очень просто: испарение воды - эндотермический процесс, вода охлаждается при испарении. Лист почти на 90% состоит из воды, которая испаряется практически полностью только через устьица. Растение может контроллировать, закрыть эти устьица или открыть. Одновременно, лист нагревается за счет поглощения энергии света в спектрах фотосинтеза, а также за счет теплообмена с нагретым воздухом. Лист здоровой конопли при открытых устьицах холоднее воздуха на 2-8 градусов.

Одновременно, чтобы вода доставлялась до листа, должна бысть сила, что это делает. Эта сила - за счет разности давлений пара воды в листе и в окружающем воздухе. В неувядшем листе можно считать относительную влажность воды за 100%.

Для 100% влажности воздуха существует таблица, по которой исходя из температуры можно получить давление http://www.fptl.ru/spravo4nik/davlenie- ... -para.html .

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

Например, у нас 50% влажность и температура воздуха 27 градусов. Тогда давление пара воздуха: 3.56 * 0.50 = 1.78 КПа.
Давление пара в листе должно быть выше, и именно так и происходит. Допустим, мы измерили температуру листа и она 24 градуса. Тогда давление пара на поверхности листа (в устьицах) - 2.98 КПа. Тогда разница давлений, называемая VPD (Дефицит Давления Пара) - 1.2 КПа.

Для веги и первых 2-х недель цвета оптимальный VPD - 0.8 КПа, для последующих 2-х недель - 1.0, для оставшихся - 1.2 КПа.

Поэтому, такое состояние оптимально для конца цвета или допустимо для середины цвета.

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

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

Вот так все просто.


Ronaldin4ik, бро, как и многие здесь, я противник активной приточной вентиляции, потому что запах будет проникать через щели наружу. Сделать герметичный бокс - сложная задача, требующая специфичных материалов для гермитизации, например акрила, а отнюдь не ЛДСП. И очень надесь, что давление в данном боксе будет приближено к 1 атомосфере, и тогда не придется делать поправки на давление при вычислении давления пара в нем. И ты прав, что заострил внимание на этой проблеме.

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

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 22.12.17 01:12
Аватара пользователя

Регистрация: 20.06.2016
Сообщения: 1628
ilia1982,
Цитата:
Сделать герметичный бокс - сложная задача, требующая специфичных материалов для гермитизации, например акрила, а отнюдь не ЛДСП.

Та не, вполне возможно. У меня получилось. Шкаф ЛДСП полностью разбирал и проклеивал соприкасающиеся стороны автомобильным герметиком. Внутри стены обклеены плёнкой типа Майлар. По периметру двери - Ш-образный дверной уплотнитель, места стыка под 45 град. Шкаф с избыточным давлением имеет место быть. На полноценный стройрепорт никак не разрожусь. Всё упирается в нехватку свободного времени. :(

_________________
Светильник на базе Cree СХВ3590,Светильник на базе плат от Castaman,Создание шкафа с максимальным КПД,Модернизация фильтровентиляционной системы шкафа (плоский фильтр, вентиляторы 12В, реобас),Устройство для круговой резки отверстий,Создание LED лампы с эффектом от ИК ,Создание канального вентилятора на базе компьютерного,Модернизация Quasar Board от Нуба,Организация подогрева тента на балконе 2.0,212 граммов с автомата,Экстрактор янтаря бутаном,Модернизация Quasar board 100 Elite V2 UV,Продление автономной работы вапорайзера


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 24.12.17 16:18
Аватара пользователя

Регистрация: 04.05.2009
Сообщения: 122
Дневник: Читать (1)
Часть 11. Гроу-репорт

Ещё раз хочу выразить огромную благодарность всем тем, кто посещал мой строй репорт. :pray: Отдельное спасибо хочу сказать Ronaldin4ik, AYO.

Репорт
Вот и случилось событие... :mrgreen: был начат гроу репорт в категории Grow Compact. fpost4701382.html#p4701382

Требования ставлю снова высокие. Так интереснее жить :brow:.
Объём горшка: 6 литров
Состав почвы (N/P/K):
  1. ТОРФОСМЕСЬ «РАССАДА» 10Л "ОВИ". Подробнее: https://ovi.in.ua/p29140855-torfosmes-rassada-10l.html - 70%
  2. Вермикулит - 15%
  3. Перлит - 15%
Дренаж пенопласт

Удобрения: Простые соли :notice:
  1. Монофосфат Калия (KH2PO4)
  2. Аммиачная селитра (NH4NO3)
  3. Калиевая селитра (KNO3)
  4. Кальциевая селитра (Са(NО3)2)
  5. Сульфат Калия (K2SO4)
  6. Сульфат Магния (семиводный MgSO4*7H2O)
  7. МИСТЕР-ЦВЕТ Анти-хлороз

Увлажнитель
Завтра должны доставить увлажнитель, и я тут же добавлю его в бокс. Он будет автоматически поддерживать влажность на уровне 50%. А пока семечка будет посажена под пластиковый стаканчик.

Программа Arduino
Как и обещал, вот код моей программы на Arduino. В 2 предыдущих сообщениях описаны все функции и режимы программы. Пока не содержит кода управления влажность, но он будет очень простой.
Код:
// Подключаем необходимые библиотеки:
// 1. Работа со временем
#include <TimeLib.h>
#include <TimeAlarms.h>
#include <DS3232RTC.h>
#include <Wire.h> // DS3232 работают по I2C/TWI протоколу (pins 20(SDA), 21(SCL))

// 2. Датчик влжности и температуры (DHT11) (pin 22)
#include <Wire.h>
#include "DHT.h"
#define DHTPIN 22
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// 3. Датчики температоры по протоколу 1wire (pin 23)
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(23);
// !!! Хочу обратить внимание, что DallasTemperature конфликтует с DS3232RTC.h. Читай:
//https://github.com/JChristensen/DS3232RTC/pull/38
DallasTemperature dsSensors(&oneWire); // Класс для работы с датчиками температуры

// 4. Коммуникация с компьютером
#include <CmdMessenger.h>
CmdMessenger cmdMessenger = CmdMessenger(Serial);

// Экстренный режим (когда температура светильника выше чем заданое значение)
#define MaxLightTempepature 55
boolean EmergencyMode = false;
#define CriticalLightTempepature 50
boolean CriticalMode = false;

// ### Интервалы внутри дня
struct DayInterval {
  time_t schedule;
  OnTick_t callback;
};
DayInterval dayIntervals[10]; // Максимально может быть установлено 20 дневных интервалов (можно увеличить, но не больше 255!)
byte dayIntervalsLength = 0;

// ### История датчиков
// # Сохранить измерения каждые 6 мин. в массив размером 240 = 24 час истории
#define historyInterval AlarmHMS(0, 6, 0) // Каждые 6 мин
#define maxHistoryLength 240 // !!! Не устанавливать больше чем 255
struct Sensors {
  byte dayIntervalIndex;
  float boardTemperature;
  float lightTemperature;
  float boxTemperature;
  float boxHumidity;
  boolean emergencyMode;
  boolean criticalMode;
};
Sensors SensorsHistory[maxHistoryLength];
time_t lastSaveHistoryTime;
byte currentSensorsHistorySize = 0;

// ### Функции для работы с датчиками и историей
// # Считывает значения с датчиков и возвращает Sensors
Sensors readSensors() {
  Sensors info;

  info.dayIntervalIndex = currentDayIntervalIndex();
  info.boardTemperature = RTC.temperature() / 4.;
  info.lightTemperature = readLightTemp();
  info.boxTemperature = dht.readTemperature();
  info.boxHumidity = dht.readHumidity();
  info.emergencyMode = EmergencyMode;
  info.criticalMode = CriticalMode;

  return info;
}

#define MinTemp 0
float readLightTemp() {
  // Адреса датчиков температуры на радиаторе
  uint8_t lightSensorAddress1[8] = { 0x28, 0xFF, 0x78, 0x6D, 0xB4, 0x16, 0x03, 0x90 };
  uint8_t lightSensorAddress2[8] = { 0x28, 0xFF, 0xD6, 0x2B, 0x01, 0x17, 0x04, 0x26 };
 
  dsSensors.requestTemperatures();
 
  float temp1 = dsSensors.getTempC(lightSensorAddress1);
  float temp2 = dsSensors.getTempC(lightSensorAddress2);

  if (temp1 > MinTemp && temp2 > MinTemp) {
    return (temp1 + temp2) / 2.0;
  } else if (temp1 > MinTemp && temp2 < MinTemp) {
    return temp1;
  } else if (temp1 < MinTemp && temp2 > MinTemp) {
    return temp2;
  }else{
    return -127;
  }
}

// # Сохраняет измерение в первый елемент массива SensorsHistory
void saveSensorsMeasure() {
  byte lastIndex = currentSensorsHistorySize;
  if (currentSensorsHistorySize == maxHistoryLength) {
    lastIndex--;
  }

  // Сдвинуть все элементы на один вправо
  for(byte i = lastIndex; i > 0; i--) {
    SensorsHistory[i] = SensorsHistory[i-1];
  }
  // Вставляемые элемент идёт вначало
  SensorsHistory[0] = readSensors();
  lastSaveHistoryTime = now();
 
  if (currentSensorsHistorySize != maxHistoryLength) {
    currentSensorsHistorySize++;
  }
}
// # Выводит показания датчиков
void printSensorInfo(Sensors item) {
  Serial.print(" dayIntervalIndex: ");
  Serial.print(item.dayIntervalIndex);
  Serial.print(" boardTemperature: ");
  Serial.print(item.boardTemperature);
  Serial.print(" lightTemperature: ");
  Serial.print(item.lightTemperature);
  Serial.print(" boxTemperature: ");
  Serial.print(item.boxTemperature);
  Serial.print(" boxHumidity: ");
  Serial.print(item.boxHumidity);
  Serial.print(" emergencyMode: ");
  Serial.print(item.emergencyMode);
  Serial.print(" criticalMode: ");
  Serial.print(item.criticalMode);
}


// ### Функции для работы с времинем
// # Разница между двумя переменными времени (внутри дня!)
time_t timeDiffToday(time_t fromTime, time_t toTime) {
  time_t fromTimeInSecs = elapsedSecsToday(fromTime);
  time_t toTimeInSecs = elapsedSecsToday(toTime);

  // Если сравниваемое время меньше чем исходное, то это уже следующие сутки (+24часа)
  if (toTimeInSecs < fromTimeInSecs) {
    return SECS_PER_DAY + toTimeInSecs - fromTimeInSecs;
  } else {
    return toTimeInSecs - fromTimeInSecs;
  }
}
// # Вывести время на экран
void printDigits(int digits) {
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits);
}
void printDateTime(time_t value) {
  Serial.print(day(value));
  Serial.print('.');
  Serial.print(month(value));
  Serial.print('.');
  Serial.print(year(value));
  Serial.print(' ');
 
  Serial.print(hour(value));
  printDigits(minute(value));
  printDigits(second(value));
}
void printlnDateTime(time_t value) {
  printDateTime(value);
  Serial.println();
}

// ### Функции для работы с дневными интервалами
// # Определение текущего интервала внутри дня
byte currentDayIntervalIndex() {
  time_t minTimeDiff = SECS_PER_DAY; // максимально возможное значение
  byte currentIndex;

  for(byte i = 0; i < dayIntervalsLength; i++) {
    time_t diff = timeDiffToday(now(), dayIntervals[i].schedule);

    // Поиск ближайшего дневного интервала
    if (diff < minTimeDiff) {
      minTimeDiff = diff;
      currentIndex = i;
    }
  }

  // В итоге нас интересует предыдущий интервал от найденного
  if (currentIndex == 0) {
    return dayIntervalsLength - 1;
  } else {
    return currentIndex - 1;
  }
}

void setupDayCallbacks() {
  for(byte i = 0; i < dayIntervalsLength; i++) {
    Alarm.alarmRepeat(dayIntervals[i].schedule, dayIntervals[i].callback);
  }
  // Запустить текуший дневной интервал
  startCurrentDayInterval();
}
void startCurrentDayInterval(){
  DayInterval interval = dayIntervals[currentDayIntervalIndex()];
  (*interval.callback)();
}

#define LIGHT_PIN 26
#define LIGHT_PWM 5

#define VENT_INPUT 6
#define LIGHT_FAN 7
#define VENT_OUTPUT 8
boolean showStatus = false;

void setup () {
  // Реле для света
  pinMode(LIGHT_PIN, OUTPUT);
  digitalWrite(LIGHT_PIN, HIGH);

  // ШИМ
  pinMode(VENT_INPUT, OUTPUT);
  pinMode(LIGHT_FAN, OUTPUT);
  pinMode(VENT_OUTPUT, OUTPUT);
  //timer 4 (controls pin 8, 7, 6)
  TCCR4B = TCCR4B & B11111000 | 0x01;

 
  Serial.begin(9600);
  cmdMessenger.printLfCr();   
  attachCommandCallbacks();

  dht.begin();
  dsSensors.begin();

  // Синхронизировать внутреннее время с часами DS3232
  setSyncProvider(RTC.get);

  if(timeStatus() != timeSet) {
    // В этом случае время будет установлено в 1.1.1970 00:00:00
    Serial.println("ОШИБКА! Не могу синхронизировать часы (может быть проблема с питанием или подключением)");
  } else {
    Serial.println("Время синхронизировано успешно!");     
  }

  // # Установить таймер
  // 1. Таймер для сохранения истории датчиков
  Alarm.timerRepeat(historyInterval, saveSensorsMeasure);

  // 2. Таймер для дневных интервалов
  dayIntervalsLength = 5;
  dayIntervals[0] = { AlarmHMS(17,0,0), modeEarlySunrise };
  dayIntervals[1] = { AlarmHMS(19,0,0), modeLateSunrise };
  dayIntervals[2] = { AlarmHMS(21,0,0), modeMorning };
  dayIntervals[3] = { AlarmHMS(7,0,0), modeBeforeNight };
  dayIntervals[4] = { AlarmHMS(9,0,0), modeNight };

  setupDayCallbacks();

  Alarm.timerRepeat(AlarmHMS(0,0,10), handleLightTemperature);
}

void loop () {
  cmdMessenger.feedinSerialData();

  if (showStatus) {
    printDateTime(now());
    Serial.print(" - ");
    printSensorInfo(readSensors());
    Serial.println();
  }

  Alarm.delay(1000); // wait one second between clock display
}

void handleLightTemperature() {
  float temp = readLightTemp();

  boolean newEmergencyMode = (temp <= 0 || temp >= MaxLightTempepature);
  boolean newCriticalMode = (temp >= CriticalLightTempepature);
  boolean needRestart = false;

  if (newEmergencyMode != EmergencyMode) {
    EmergencyMode = newEmergencyMode;
    needRestart = true;
  }

  if (newCriticalMode != CriticalMode) {
    CriticalMode = newCriticalMode;
    needRestart = true;
  }

  if (needRestart) startCurrentDayInterval();
}

// ### CmdMessenger комманды
enum {
  kHelp,
  kSetDateTime,
  kStatus,
  kLightPower,
  kFanSpeed,
  kPrintHistory,
};

void attachCommandCallbacks() {
  cmdMessenger.attach(OnUnknownCommand);
  cmdMessenger.attach(kHelp, OnHelp);
  cmdMessenger.attach(kSetDateTime, OnSetDateTime);
  cmdMessenger.attach(kStatus, OnStatus);
  cmdMessenger.attach(kLightPower, OnLightPower);
  cmdMessenger.attach(kFanSpeed, OnFanSpeed);
  cmdMessenger.attach(kPrintHistory, OnPrintHistory);

  ShowCommands();
}

void OnUnknownCommand() {
  Serial.println("Неизвестная комманда!");
  ShowCommands();
}

void OnHelp() {
  ShowCommands();
}

void ShowCommands() {
  Serial.println("Доступные комманды:");
  Serial.println(" 0;                                               - Выводит список доступных комманд");
  Serial.println(" 1,<год>,<месяц>,<день>,<час>,<минута>,<секунда>; - Установить системное дату и время");
  Serial.println(" 2;                                               - Выводит текущие показания датчиков");
  Serial.println(" 3,<яркость>;                                     - Установить яркость светильника (0 - 255)");
  Serial.println(" 4,<вентилятор>,<скорость>;                       - Установить скорость вентилятора (1 - вход, 2 - радиатор, 3 - выход) (0 - 255)");
  Serial.println(" 5;                                               - Экспортировать историю");
  Serial.println();
}

void OnSetDateTime() {
  time_t t;
  tmElements_t tm;

  tm.Year = CalendarYrToTm(cmdMessenger.readInt16Arg());
  tm.Month = cmdMessenger.readInt16Arg();
  tm.Day = cmdMessenger.readInt16Arg();
  tm.Hour = cmdMessenger.readInt16Arg();
  tm.Minute = cmdMessenger.readInt16Arg();
  tm.Second = cmdMessenger.readInt16Arg();
  t = makeTime(tm);

  // Перезаписать и пересинхронизировать внутреннее время с часами DS3232
  RTC.set(t);
  setTime(t);       

  Serial.print("Время успешно установлено в:");
  printlnDateTime(t);
}

void OnStatus() {
  showStatus = !showStatus;
}

void SetLightPower(int power) {
  if (CriticalMode) power = power / 2;
  if (EmergencyMode) power = 0;

  if (power > 0 && power < 256) {
    digitalWrite(LIGHT_PIN, LOW);
    analogWrite(LIGHT_PWM, power);
  } else {
    digitalWrite(LIGHT_PIN, HIGH);
    analogWrite(LIGHT_PWM, 0);
  }
  Serial.print("Яркость света установлена в:");
  Serial.println(power);
}
void OnLightPower() {
  SetLightPower(cmdMessenger.readInt16Arg());
}

void SetLightFanSpeed(byte fanSpeed) {
  analogWrite(LIGHT_FAN, fanSpeed);
  Serial.print("Скорость вертилятора света установлена в:");
  Serial.println(fanSpeed);
}
void SetFanSpeed(int fanIndex, int fanSpeed) {
  switch (fanIndex) {
    case 1: analogWrite(VENT_INPUT, fanSpeed); break;
    case 2: SetLightFanSpeed(fanSpeed); break;
    case 3: analogWrite(VENT_OUTPUT, fanSpeed); break;
    default: Serial.println("Неизвестный индекс вентилятора!");
  }
}
void OnFanSpeed() {
  int fanIndex = cmdMessenger.readInt16Arg();
  int fanSpeed = cmdMessenger.readInt16Arg();
 
  SetFanSpeed(fanIndex, fanSpeed);
}
void OnPrintHistory() {
  showStatus = false;

  Serial.println();
  Serial.println("\"Date time\", \"Mode index\", \"Board temperature\", \"Light temperature\", \"Box temperature\", \"Box humidity\", \"Emergency Mode\", \"Critical Mode\"");
  for (byte i = 0; i < currentSensorsHistorySize; i++) {
    time_t t = lastSaveHistoryTime - historyInterval * i;
    Sensors info =  SensorsHistory[i];

    printDateTime(t);
    Serial.print(",");
    Serial.print(info.dayIntervalIndex);
    Serial.print(",");
    Serial.print(info.boardTemperature);
    Serial.print(",");
    Serial.print(info.lightTemperature);
    Serial.print(",");
    Serial.print(info.boxTemperature);
    Serial.print(",");
    Serial.print(info.boxHumidity);
    Serial.print(",");
    Serial.print(info.emergencyMode);
    Serial.print(",");
    Serial.print(info.criticalMode);
    Serial.println();
  }
  Serial.println();
}

void modeEarlySunrise() {
  Serial.println("Режим: - Early Sunrise");
  SetLightPower(96);
  SetFanSpeed(1, 150);
  SetFanSpeed(2, 150);
  SetFanSpeed(3, 150);
}
void modeLateSunrise() {
  Serial.println("Режим: - Late Sunrise");
  SetLightPower(150);
  SetFanSpeed(1, 180);
  SetFanSpeed(2, 200);
  SetFanSpeed(3, 180);
}
void modeMorning() {
  Serial.println("Режим: - Morning");
  SetLightPower(255);
  SetFanSpeed(1, 255);
  SetFanSpeed(2, 255);
  SetFanSpeed(3, 255);
}
void modeBeforeNight() {
  Serial.println("Режим: - Before Night");
  SetLightPower(192);
  SetFanSpeed(1, 230);
  SetFanSpeed(2, 220);
  SetFanSpeed(3, 230);
}
void modeNight() {
  Serial.println("Режим: - Night");
  SetLightPower(0);
  SetFanSpeed(1, 100);
  SetFanSpeed(2, 0);
  SetFanSpeed(3, 100);
}


_________________
st. Patrick :: Кухонный компактный гроу бокс - В процессе
---
Стелс тумба для офиса [ВxШxГ - 75x40x60][LED][Arduino] - Закончен
Первый раз | NL от Pyramid Seeds fem | BridgeLux LED 100 вт | 75x40x60 Arduino | Земля - Харвест


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 24.12.17 19:09

Регистрация: 01.11.2010
Сообщения: 1642
Verik, :friend: вот молодец, только бы фотки выкладывал вообще бы цены тебе не было :smile:

_________________
Совершенно мудрый - опция отключена.


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 02.01.18 11:14
Аватара пользователя

Регистрация: 18.04.2013
Сообщения: 2784
Дневник: Читать (6)
Pzdc99 [15.10.17 08:33] писал(а):
По моимнаблюдениям 80 вентиляторы производят гораздо больше шума чем 120, как насчет шума из бокса? В офисе то?


Где меньше децибел будет, там и тише будет. Ищи сайленты (менее 21 дБ). Естественно, если у тебя RPM за 2500, то у тебя будет шелест от потока воздуха.
Для ардуино есть шилды/сплиттеры для вентиляторов, которые позволяет делать регулировку.

Verik писал(а):
Ну и напоследок были приобретены: Arduino Mega 2560 (китайский), плата расширения MEGA Sensor Shield V2.0, модуль твердотельных реле на 4 канала (для управления LED матрицами)


Если я ничего не путаю, то синие китайское Г для переключение нагрузок это не твердотелое реле, или твердотелое реле низкого качества,
Для наших нужд, и если есть нагрузки (для лед и синие китайские пойдут) нужно такое Изображение и на разных форумах, обычно под твердотелым реле имееют ввиду это
Более того, если у тебя Ардуино, то для такого реле как я привел, нужно чтоб старт у него было с 3в

_________________
Рэпчик :)
Я делю день на напасы разнообразного дыма | Мои homies прорывают ростом скрог | МОРДОР ПАДЁТ


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 02.01.18 17:41
Аватара пользователя

Регистрация: 14.11.2016
Сообщения: 4821
И еще немного дополню про VPD (Дефицит Давления Пара).

Оказывается, на VPD можно влиять не только изменяя температуру воздуха бокса, его влажность и интенсивность освещения. Есть еще один немаловажный параметр, который влияет на VPD и который мы можем контроллировать.

Это - скорость обдува. Чем интенсивнее обдув растений (лучше слегка под углом снизу вверх, потому что именно на нижней стороне листа находятся устьица), тем сильнее испарение с листьев, и тем ниже температура листа и больше разница между температурой листа и температурой воздуха в боксе.

Прямое влияние на VPD:
- То есть, чем сильнее обдув - тем ниже VPD.
- Чем выше влажность возуха в боксе - тем ниже VPD.

Косвенное влияние на VPD:
- Повышение температуры воздуха в боксе будет косвенно понижать влажность и увеличивать VPD.
- Повышение интенсивности света будет нагревать лист излучением в спектрах фотосинтеза и тем самым увеличивать VPD.

_________________
— Бабушка, почему у вас такие большие глаза?..


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 11.01.18 21:28

Регистрация: 20.06.2014
Сообщения: 162
Вот читаю твой строй репорт , и поражаюсь , кем по профессии будешь ? Откуда столько крутых навыков ? Я вот щас тоже пытаюсь в ардуино , но даже не знаю как приступиться , да и шкаф свой пилю , но не так красиво получается . Вобщем поражаюсь и завидую потихоньку , не только хорошо работающий мозг но и прямые руки .


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
СообщениеДобавлено: 27.01.18 18:32
Аватара пользователя

Регистрация: 16.09.2015
Сообщения: 163
Прочитал репорт - круто!
Слежу! Удачи в грове, пока все очень красиво идет :thumbs:


 Профиль Найти сообщения пользователя Галерея  
Ответить с цитатой
Показать сообщения за:  Сортировать по  

Начать новую тему 
Ответить на тему 
 Страница 6 из 6  [ Сообщений: 148 ]  на страницу...   1  2  3  4  5  6

   Похожие топики   Автор   Ответы   Просмотры   Последнее сообщение 
В этой теме нет новых непрочитанных сообщений. а как делать тумба-стелс

в форуме Я спросил у ясеня...

turtlerasta

2

288

24.05.22 07:02

HiddenGrowerBox Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Стелс тумба ГШВ 40*45*80\QB samsung 120B+660 osram

[ на страницу...: 1, 2 ]

в форуме Строй-репорт

chococateman

28

3759

14.05.21 15:50

AMatroskin Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. / Нужны ваши советы!!/ Тумба 80х80х40, 60 лед стелс

[ на страницу...: 1, 2 ]

в форуме Строй-репорт

Бугагашенька

38

1971

17.10.21 11:32

Ronaldin4ik Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Полу-стелс тумба, бытовые ЛЕД, битва за вертикаль

[ на страницу...: 1, 2 ]

в форуме Строй-репорт

Danmer

33

1371

07.05.23 11:46

vnpnzn1 Перейти к последнему сообщению

В этой теме нет новых непрочитанных сообщений. Тумба 0,12м3/Земля/Led(70-120w)/lowryder#2/Новичок/Закончен

[ на страницу...: 1, 2 ]

в форуме Grow LED

Zog7

40

4514

14.09.19 21:20

шАбИтЕлЬсКаНкА Перейти к последнему сообщению



Журнал вахтёра

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB® Forum Software © phpBB Group

M