Автор Тема: Создание периодики на Arduino  (Прочитано 28687 раз)

Оффлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1847
  • Лайков: 10
    • Просмотр профиля
Создание периодики на Arduino
« Ответ #40 : 23 Июль 2016, 00:07:20 »
Да, согласен.
Все-таки, конечно, вариант с клапанами, мне кажется предпочтительнее. Не нужно заморачиваться с диаметрами шлангов, их дублированием, идти на компромисы. Когда захотел - налил, когда захотел - слил, никаких ограничений с каскадами и пр. возможные неудобства.
А почему Вы так принципиально против клапанов, сталкивались с ними ? Какие подводные камни в работе с ними ? Насколько велик риск поломки, какие факторы на этот риск влияют ?

Оффлайн kido

Создание периодики на Arduino
« Ответ #41 : 23 Июль 2016, 01:21:54 »
Я же говорю, издержки профессии ))) Будучи разработчиком систем АСУТП, стараешься по возможности сделать систему как можно проще.
Минус использования клапанов вижу в отсутствии обратной связи. При выходе из строя или не закачается раствор или не сольется. Мы ведь не контролируем их состояние. Или опять таки придется вводить косвенную обратную связь (как вы и предлагали, можно контролировать уровень раствора в емкости хранения).

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #42 : 23 Июль 2016, 12:08:31 »
Если бы я собирал "периодичку", то брал бы за основу это: http://www.hydroponicsonline.com/blog/6-plant-ebb-flow-flood-and-drain-hydroponic-system
+добавил бы дренажные трубки.


Спасибо, хороший  и простой вариант.  Когда буду собирать свою, опробую и такой вариант, только вместо бутылок использую свою схему с трубами. Думаю при достаточном диаметре труб и аналогичных габаритах, можно получить больший объем для корневой. Если норм получится, и разберусь с искусственным освещением, одну оставлю дома, вторую, более простую поставлю в офисе.

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #43 : 23 Июль 2016, 12:25:24 »
Я же говорю, издержки профессии ))) Будучи разработчиком систем АСУТП, стараешься по возможности сделать систему как можно проще.
Минус использования клапанов вижу в отсутствии обратной связи. При выходе из строя или не закачается раствор или не сольется. Мы ведь не контролируем их состояние. Или опять таки придется вводить косвенную обратную связь (как вы и предлагали, можно контролировать уровень раствора в емкости хранения).

Простота это хорошо. Мне свойственно все усложнять и  изобретать велосипеды, в этом для меня есть свой кайф :)

Насчет клапанов, думаю учитывая щадящие условия работы(фактически нулевое давление, не агрессивная среда, комнатная температура) при изначально рабочем клапане проблем быть не должно, в любом случае можно предусмотреть в конструкции аварийную систему. На случай поломки.



Кстат как специалист что думаете о таком клапане http://valveko.ru/valveko/klapany/bmc-09.html  вроде пишут что пригоден для работы при нулевом давлении. В отличии от клапанов для стиралок, которым необходимо давление воды для корректной работы.

 Если есть еще какие варианты по теме клапанов, предлагайте, буду признателен. Пока система с клапанами для меня предпочтительней, по ряду причин, я начинающий перцевод, мне нужна максимально гибкая система, чтоб проще было разобраться в тонкостях выращивания данной культуры. Да и каскад с его двойным(тройным, четверным:)) уменьшением рабочего объема раствора тоже весьма заманчив, всегда более свежий раствор, меньшая емкость для хранения, меньшее время работы помпы.... 

Оффлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1847
  • Лайков: 10
    • Просмотр профиля
Создание периодики на Arduino
« Ответ #44 : 23 Июль 2016, 19:17:13 »
Решил набросать Вам самую громоздкую часть программы - управление режимами и их индикация. Паяльник брать в руки и доставать свою Ардуину было лень, но во время написания программы нужно проверять ее работоспособность, полез в интернет поискать какой-нить эмулятор Ардуины и набрел на просто потрясную штуку - Proteus. Даже видео захотелось снять, как он работает.
В общем используем 3 наших диода, 1 кнопку и 1 потенциометр (проще было бы конечно три потенциометра, по 1 на каждый параметр, но и с одним вполне юзабельно получилось).
На видео справа там подключен виртуальный осциллограф, так нагляднее следить за морганиями диодов, и внизу виртуальный вольтметр, для наглядности, чтобы понимать какое напряжение потенциометр на наш вход подает.
Принцип действия следующий:
Потенциометром мы меняем значение 3 переменных, которые могут принимать значение от 1 до 11. Т.е. ручка потенциометра влево до упора - будет 1, вправо до упора - 11. Можно кстати шкалу вокруг него впоследствии нарисовать - очень удобно и точно получится.
Каждая из этих переменных отвечает на 1 параметр. Например, первая - за частоту затоплений, вторая - продолжительность затоплений, третья - какие-нибудь спец. режимы (принудительное затопление или слив и т.д.). Затем к этим переменным мы просто подвяжем таймеры помпы и клапана.
Диод, отвечающий за каждый параметр моргает столько раз, сколько равна переменная, с последующий перерывом 2 секунды. Вначале все три установлены в значение 1.
Потенциометром в каждый момент времени мы регулируем только одну переменную. На видео вначале потенциометр подвязан к "красной" переменной, на 20-й секунде я его начинаю "крутить", соответственно мы видим, как меняется количество морганий красного диода, значит переменную изменили.
Кнопка у нас изменяет "подвязку" потенциометра. На 35-й секунде я нажимаю на нее и видно как поочередно загораются диоды (в момент смены режимов они уже не моргают как раньше, а просто горят, показывая к какой переменной в данный момент подвязан потенциометр).
На 50 секунде я оставляю подвязку на "зеленой" переменной и начинаю её изменять.
Подвязка происходит через 3 секунды с момента последнего нажатия кнопки. В этом момент переменная становится равна тому, в каком положении находится потенциометр, и диоды из режима отображения подвязки возвращаются в режим отображения значений своих переменных.
Задержка эта сделана для того, чтобы иметь возможность выбрать параметр, не изменяя другой, который вы изменять не хотите. Ну, к примеру, в данный момент потенциометр подвязан к красному диоду, а нам нужно изменить зеленый. Но для этого мы проходим через желтый, и если бы не было такой задержки, то желтый принял бы значение потенциометра при проходе через него, чего нам не нужно, а задержка даст возможность спокойно выбрать нужный параметр.
В общем не знаю на сколько доступно изложил, но на деле все довольно просто и интуитивно.
Вот видео:


« Последнее редактирование: 23 Июль 2016, 19:19:56 от Ann »

Оффлайн kido

Создание периодики на Arduino
« Ответ #45 : 23 Июль 2016, 21:45:05 »
Цитировать
Мне свойственно все усложнять и  изобретать велосипеды, в этом для меня есть свой кайф
Если мы говорим о неком лабораторном стенде, то можно и изобретать и усложнять. Лишь бы в радость на здоровье! ;)
На счет клапана мыслей особо нет, т.к. плотно с ними не сталкивался. Посоветую только одно: берите с катушкой на 12В.
Знаю из аквариумной темы, что пневмоклапана на 220В довольно сильно греются, гораздо сильнее чем на 12В. Правда там время работы измеряется часами.
Что касается уменьшения кол-ва раствора, то я сильно бы за этим не гнался, рискуете нарваться на нестабильность параметров. В большем объеме гораздо меньше колебаний и легче поддерживать концентрации компонентов.
Время работы помпы.... ну, не знаю! :) При потреблении 15-20Вт/ч мне было бы все равно работает помпа 2мин или 5мин.
Кстати, в вашем случае я бы уменшил диаметр со 160 до 110мм. Не такая уж большая у перца корневая. Это же не cаnnаbis! ))))))


Цитировать
1 потенциометр
Ann, а как в таком случае узнать предыдущее значение для каждой переменной?
« Последнее редактирование: 23 Июль 2016, 21:46:54 от kido »

Оффлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1847
  • Лайков: 10
    • Просмотр профиля
Создание периодики на Arduino
« Ответ #46 : 23 Июль 2016, 21:49:44 »
Ann, а как в таком случае узнать предыдущее значение для каждой переменной?
Не совсем понял суть вопроса, ну так каждый диод мигает столько раз, чему равна переменная. Ну, например, мигает красный диод по 3 раза с двухсекундными перерывами, значит "красная" переменная равна трем.

Оффлайн kido

Создание периодики на Arduino
« Ответ #47 : 23 Июль 2016, 22:18:44 »
Теперь ясно

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #48 : 23 Июль 2016, 23:14:08 »
Решил набросать Вам самую громоздкую часть программы - управление режимами и их индикация. Паяльник брать в руки и доставать свою Ардуину было лень, но во время написания программы нужно проверять ее работоспособность, полез в интернет поискать какой-нить эмулятор Ардуины и набрел на просто потрясную штуку - Proteus. Даже видео захотелось снять, как он работает.
В общем используем 3 наших диода, 1 кнопку и 1 потенциометр (проще было бы конечно три потенциометра, по 1 на каждый параметр, но и с одним вполне юзабельно получилось).
На видео справа там подключен виртуальный осциллограф, так нагляднее следить за морганиями диодов, и внизу виртуальный вольтметр, для наглядности, чтобы понимать какое напряжение потенциометр на наш вход подает.
Принцип действия следующий:
Потенциометром мы меняем значение 3 переменных, которые могут принимать значение от 1 до 11. Т.е. ручка потенциометра влево до упора - будет 1, вправо до упора - 11. Можно кстати шкалу вокруг него впоследствии нарисовать - очень удобно и точно получится.
Каждая из этих переменных отвечает на 1 параметр. Например, первая - за частоту затоплений, вторая - продолжительность затоплений, третья - какие-нибудь спец. режимы (принудительное затопление или слив и т.д.). Затем к этим переменным мы просто подвяжем таймеры помпы и клапана.
Диод, отвечающий за каждый параметр моргает столько раз, сколько равна переменная, с последующий перерывом 2 секунды. Вначале все три установлены в значение 1.
Потенциометром в каждый момент времени мы регулируем только одну переменную. На видео вначале потенциометр подвязан к "красной" переменной, на 20-й секунде я его начинаю "крутить", соответственно мы видим, как меняется количество морганий красного диода, значит переменную изменили.
Кнопка у нас изменяет "подвязку" потенциометра. На 35-й секунде я нажимаю на нее и видно как поочередно загораются диоды (в момент смены режимов они уже не моргают как раньше, а просто горят, показывая к какой переменной в данный момент подвязан потенциометр).
На 50 секунде я оставляю подвязку на "зеленой" переменной и начинаю её изменять.
Подвязка происходит через 3 секунды с момента последнего нажатия кнопки. В этом момент переменная становится равна тому, в каком положении находится потенциометр, и диоды из режима отображения подвязки возвращаются в режим отображения значений своих переменных.
Задержка эта сделана для того, чтобы иметь возможность выбрать параметр, не изменяя другой, который вы изменять не хотите. Ну, к примеру, в данный момент потенциометр подвязан к красному диоду, а нам нужно изменить зеленый. Но для этого мы проходим через желтый, и если бы не было такой задержки, то желтый принял бы значение потенциометра при проходе через него, чего нам не нужно, а задержка даст возможность спокойно выбрать нужный параметр.
В общем не знаю на сколько доступно изложил, но на деле все довольно просто и интуитивно.
Вот видео:


Вполне понятно. Огромное спасибо!  Идея с одной кнопкой и одним потенциометром нравится. Проще все спаять будет, хотя я и неплохо это умею, но все же пайка это не мое...


Зы. Завтра буду ардуину крутить, соберу на макетной плате вашу схемку. Только потенциометр у меня дефектный оказался, но где то еще один валялся.   

Зы . скетч бы Ваш, тоже не помешал :)

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #49 : 23 Июль 2016, 23:22:48 »
Цитировать
Мне свойственно все усложнять и  изобретать велосипеды, в этом для меня есть свой кайф
Если мы говорим о неком лабораторном стенде, то можно и изобретать и усложнять. Лишь бы в радость на здоровье! ;)
На счет клапана мыслей особо нет, т.к. плотно с ними не сталкивался. Посоветую только одно: берите с катушкой на 12В.
Знаю из аквариумной темы, что пневмоклапана на 220В довольно сильно греются, гораздо сильнее чем на 12В. Правда там время работы измеряется часами.
Что касается уменьшения кол-ва раствора, то я сильно бы за этим не гнался, рискуете нарваться на нестабильность параметров. В большем объеме гораздо меньше колебаний и легче поддерживать концентрации компонентов.
Время работы помпы.... ну, не знаю! :) При потреблении 15-20Вт/ч мне было бы все равно работает помпа 2мин или 5мин.
Кстати, в вашем случае я бы уменшил диаметр со 160 до 110мм. Не такая уж большая у перца корневая. Это же не cаnnаbis! ))))))


Цитировать
1 потенциометр
Ann, а как в таком случае узнать предыдущее значение для каждой переменной?

По сути это и есть лабораторный стенд :)

Наврено за клапанами я все же отправлюсь на али, они там по 250р.  да и помпу думаю там еще одну возму, тоже цена канареечная... все естественно на 12v. 

Для контроля параметров раствора приобретены все необходимые приблуды. Так что думаю повторяемости я достигну....

Помпа чутка гудит, так что чем меньше тем лучше, да и залить за минимальное время тоже полезно.

Пускай пока 160 побудет. Запас не помешает, а вот если не хватит, будет обидно....

Оффлайн kido

Создание периодики на Arduino
« Ответ #50 : 23 Июль 2016, 23:37:25 »
Для контроля параметров раствора приобретены все необходимые приблуды. Так что думаю повторяемости я достигну....
Не в повторяемости дело. Испарилось у вас, предположим, 100мл воды, для объема в 1л - это 10%, а для 10л - 1%. Концентрации поменяются соответственно. Но это я так, к слову :)

Помпа чутка гудит, так что чем меньше тем лучше, да и залить за минимальное время тоже полезно.

Пускай пока 160 побудет. Запас не помешает, а вот если не хватит, будет обидно....
"Вас, Ивановых, не поймешь!..."(с)  :D

Оффлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1847
  • Лайков: 10
    • Просмотр профиля
Создание периодики на Arduino
« Ответ #51 : 24 Июль 2016, 00:00:00 »
Немного прокомментировал, чтоб легче было разобраться, что не понятно, спрашивайте
(красным выделил переменные, которые можете изменять, остальные служебные)
int current_mode = 1;                       //Переменная, показывающая к какому параметру привязан потенциометр, может быть 1, 2, 3, которые соотв. "красному", "желтому" и "зеленому"
boolean change = 0;                         // Флаг, показывающий, что мы находимся в режиме изменения привязки потенциометра, 1-в режиме, 0-не в режиме
float change_last_time = 0;                 // для засечки 3 секундного таймера выхода из режима изменения привязки

int x=0;                                    //Переменная, в которой храним считанные показания потенциометра

int y = 0;                                  //Переменная, в которой храним считанные показания цифрового входа кнопки, 0 или 1, нажата или нет
float y_last_time = 0;                      //Для засечки таймера
[color=red]
int led_red = 1;[/color]                            //Наша главная "красная" переменная, к которой будем в дальнейшем привязывать исполняющие таймеры
boolean led_red_flag = 0;                   //Флаг для мигания
int led_red_current = 0;                    //Порядковый номер текущего "мига"
float led_red_last_time = 0;                //для засечки таймера

[color=red]int led_green = 1;     [/color]                     // Главная "зеленая" переменная
boolean led_green_flag = 0;                  // Далее все аналогично, как и у красной
int led_green_current = 0;
float led_green_last_time = 0;

[color=red]int led_blue = 1;          [/color]                 //Главная "желтая" переменная, назвал blue, но не важно
boolean led_blue_flag = 0;
int led_blue_current = 0;
float led_blue_last_time = 0;

[color=red]int led_freq = 200; [/color]                        //Частота мигания, т.е. перерыв между каждым миганием в миллисекундах
[color=red]int led_pause = 2000; [/color]                      //Пауза между сериями миганий в мс
                    

void setup() {
  pinMode(2, INPUT);                        //Пин для кнопки
  pinMode(11, OUTPUT);                      //пины для диодов
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(A5, INPUT);                       //пин для потенциометра
}

void loop() {
  
if(!change){                                                //если не находимся в режиме смены привязки, значит меняем главные переменные
   x = analogRead(A5);
   if (current_mode == 1){ led_red = (int)(x/100) + 1;}     //Меняем переменную, в зависимости от текущей привязки
   if (current_mode == 2){ led_green = (int)(x/100) + 1;}   //Вот здесь важная формула, потенциометр на аналоговый вход выдает нам значение от 0 до 1024
   if (current_mode == 3){ led_blue = (int)(x/100) + 1;}    //Делим на 100, округляем и добавляем 1 (чтоб нуля не было), получается переменная может принимать значения
                                                            // от 1 до 11.
}


if(change && (millis()-change_last_time)>3000){             //Это момент выхода из режима привязки, обнуляются служебные переменные диодов, выключаются
  change = 0;                                              
  led_green_current = 0;
  led_red_current = 0;
  led_blue_current = 0;
  led_red_flag = 0;
  digitalWrite(11, 0);
  led_green_flag = 0;
  digitalWrite(12, 0);
  led_blue_flag = 0;
  digitalWrite(13, 0);
  }

if((millis()-y_last_time)>200){                     //Обработка нажатия на кнопку, добавил небольшой таймер 200мс, чтоб убрать "дребезг" - множественное срабатывание, кнопка будет срабатывать только если ее немного подержать (200мс)
  y = digitalRead(2);                               //читаем кнопочный выход
  if (y>0){                                         //если кнопка нажата
    current_mode++;                                 //инкрементируем текущий режим
    if(current_mode > 3) {current_mode = 1;}        //если получилось 4, то возвращаемся на 1
    change = 1;                                     //объявляем режим смены привязки
    change_last_time = millis();                    //засекаем для 3-секундного таймера выхода из режима смены
    digitalWrite(11, 0);                            //выключаем все диоды
    digitalWrite(12, 0);
    digitalWrite(13, 0);
    if (current_mode == 1){  digitalWrite(11, 1);}  //зажигаем только тот диод, к которому привязан потенциометр
    if (current_mode == 2){  digitalWrite(12, 1);}
    if (current_mode == 3){ digitalWrite(13, 1);}
    }
  y_last_time = millis();
  }

                                                          //Далее идут три блока моргания для каждого диода, они идентичны
                                                          
 if (!change && (millis()-led_red_last_time)>led_freq){   //Если не находимся в режиме смены привязки и время моргнуть наступило    
    led_red_flag = 1-led_red_flag;                        //Инвертируем флаг текущего состояния диода, если было 0, стало 1, было 1, стало 0
    digitalWrite(11, led_red_flag);                       //Включаем или выключаем диод в зависимости в текущего состояния флага
    led_red_last_time = millis();
    led_red_current++;                                    //инкрементируем текущий порядковый номер "мига"
    if (led_red_current > (led_red*2-1)){                 //если текущий порядковый номер "мига" превысил главную переменную, здесь идет умножение на 2, т.к. текущих мигов у нас будет в 2 раза больше (1для включения, 1 для выключения).
      led_red_current = 0;                                //обнуляем его
      led_red_last_time = millis() + (led_pause-led_freq);//делаем засчеку для следующего мига, но уже добавляем паузу
      led_red_flag = 0;                                   //ставим флаг в 0, т.к. в начале следующего цикла он инвертируется и станет 1
      }
    }

  if (!change && (millis()-led_green_last_time)>led_freq){
    led_green_flag = 1-led_green_flag;
    digitalWrite(12, led_green_flag);
    led_green_last_time = millis();
    led_green_current++;
    if (led_green_current > (led_green*2-1)){
      led_green_current = 0;
      led_green_last_time = millis() + (led_pause-led_freq);
      led_green_flag = 0;
      }
    }

  if (!change && (millis()-led_blue_last_time)>led_freq){
    led_blue_flag = 1-led_blue_flag;
    digitalWrite(13, led_blue_flag);
    led_blue_last_time = millis();
    led_blue_current++;
    if (led_blue_current > (led_blue*2-1)){
      led_blue_current = 0;
      led_blue_last_time = millis() + (led_pause-led_freq);
      led_blue_flag = 0;      }
    }
}[\code]
« Последнее редактирование: 28 Июль 2016, 00:05:53 от Ann »

Оффлайн kido

Создание периодики на Arduino
« Ответ #52 : 24 Июль 2016, 00:25:14 »
а компилятор понимает такую конструкцию?
led_red_flag = !led_red_flag;

если да, то эту строчку можно убрать
led_red_flag = 0;

Оффлайн Ann

  • Глобальный модератор
  • Habanero
  • *****
  • Сообщений: 1847
  • Лайков: 10
    • Просмотр профиля
Создание периодики на Arduino
« Ответ #53 : 24 Июль 2016, 00:58:02 »
Да, правильно, эта строчка не нужна. Видимо осталась с того момента, как я боролся с питанием. Как видите на эмулируемой Ардуине отсутствуют разъемы питания, и я не сразу разобрался как правильно подключить. Пытался делать искусственный +5V на цифровом пине, через программу делая на нем HIGH, вроде работало, но давало наводки, сигналы уже не были прямоугольными и работало не стабильно. Видимо тогда и включил эту строчку, пытаясь решить проблему, а затем забыл убрать.

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #54 : 24 Июль 2016, 13:04:38 »
Для контроля параметров раствора приобретены все необходимые приблуды. Так что думаю повторяемости я достигну....
Не в повторяемости дело. Испарилось у вас, предположим, 100мл воды, для объема в 1л - это 10%, а для 10л - 1%. Концентрации поменяются соответственно. Но это я так, к слову :)

Помпа чутка гудит, так что чем меньше тем лучше, да и залить за минимальное время тоже полезно.

Пускай пока 160 побудет. Запас не помешает, а вот если не хватит, будет обидно....
"Вас, Ивановых, не поймешь!..."(с)  :D



Если  все правильно посчитал, объем рабочего раствора у меня выйдет 15л.

Ивановых никогда не понять, нам всем свойственно пытаться совмещать не совместимое, или вообще выдвигать взаимоисключающие параграфы :)


Оффлайн kido

Создание периодики на Arduino
« Ответ #55 : 24 Июль 2016, 13:42:09 »
Если  все правильно посчитал, объем рабочего раствора у меня выйдет 15л.
Что-то маловато... Рассказывайте как считали.

Оффлайн alexis69

Создание периодики на Arduino
« Ответ #56 : 24 Июль 2016, 15:53:20 »
Вы тут вопрос клапанами решили?
Люди рекомендуют клапана от стеклоомывателя ВАЗ 2108 - 2199
Там так же есть обратные клапана.

p.s. а тот кто подходит к контролеру серьезно - интегрируют в систему ph и tds датчики для контроля и корректировки раствора.
ЭэээХ!

Оффлайн kido

Создание периодики на Arduino
« Ответ #57 : 24 Июль 2016, 16:18:36 »
p.s. а тот кто подходит к контролеру серьезно - интегрируют в систему ph и tds датчики для контроля и корректировки раствора.
ага, и стоимость системы растет по экспоненте

Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #58 : 24 Июль 2016, 16:51:02 »
Если  все правильно посчитал, объем рабочего раствора у меня выйдет 15л.
Что-то маловато... Рассказывайте как считали.

через площадь основания и длину цилиндра :

площадь основания 7,5x7,5 = 56,25х3.14 = 176,6см2 х 80 = 14.130 литра. Вроде так меня в школе учили, хотя могу и ошибаться, объемы мне редко считать приходится, тем более цилиндров.  Учитывая что емкость скорее всего будет заполнена не полностью, и объем трубок, думаю как раз и выйдет около15л...


Оффлайн AlexYalta

Создание периодики на Arduino
« Ответ #59 : 24 Июль 2016, 16:53:12 »
Вы тут вопрос клапанами решили?
Люди рекомендуют клапана от стеклоомывателя ВАЗ 2108 - 2199
Там так же есть обратные клапана.

p.s. а тот кто подходит к контролеру серьезно - интегрируют в систему ph и tds датчики для контроля и корректировки раствора.

тут бы пока с тем что есть разобраться. А там видно будет :)

зы. Сорри не прочел, с капанами вопрос пока открыт жумаю вот эти заказать http://ru.aliexpress.com/item/New-Top-Quality-1-2-for-DC-12V-Electric-Solenoid-Valve-N-C-Water-Inlet-Flow/32697150722.html?spm=2114.14010208.99999999.261.jGC4hk
и вот такую помпу http://ru.aliexpress.com/store/product/Anself-Ultra-quiet-Mini-Brushless-Oil-Water-Pump-Waterproof-Submersible-Fountain-Aquarium-Circulating-260L-H-Lift/2096012_32668948817.html
моя что то слабовата, была еще одна крутецкая немецкая, но я её подарил :(
« Последнее редактирование: 24 Июль 2016, 17:50:02 от AlexYalta »