Я запланировал похожий проект отличие в том что электричества нет- все будет запитываться от солнечной батареи(кстати если есть интерес могу подсказать как сделать самому). Батарею уже собрал-работает на аккумулятор автомобильный, в пути контролер.
по поводу кода не могли бы выложить для ознакомления? а то еще не все моменты понимаю.
А еще вопрос по какому алгоритму будут открываться клапана?
По времени или по датчику влажности? я для себя думал -полив рано с утра(если не холодно) а днем только при сухости.
Да, в летнее время электричество есть (150-200вольт) =)
Повышение давления мне не требуется, у меня самотёчная система и клапана для этого рассчитаны на давление не больше 0.8бара.
Учитывать расход мне тоже не нужно т.к. скока в землю не лей, всё равно всё уйдёт =)Бочка из которой берётся вода для полива наполняется из колодца автоматически по двум датчикам. Просто засеку по времени сколько нужно чтобы пролить землю.
Клапана полива будут открываться рано утром пока все спят=). Днём поливать нельзя, быстро испаряется и возможность нанести ожоги растениям. Вечером поливать - на стенках теплицы будет конденсат.
А воду для полива ты где будешь брать? есть колодец? или планируешь использовать собранную дождевую воду?или привозить?=)
Не очень то это и датчик, просто показометр наличия потока )) но показометр навел на мысль. Обычные, бытовые водяные счетчики имеют ровно такое же устройство, крыльчатку внутри потока. Передача вращения от крыльчатки к непосредственно счетчику происходит через магнитную муфту.(по разные стороны корпуса. Все пластиковое безобразие возможно снять, сам видел как склеены между собой две части конструкции. вместо редуктора и циферблата, нас вполне устроит датчик холла. остается произвести градуировку между количеством жидкости и числом импульсов датчика.
А воду для полива ты где будешь брать? есть колодец? или планируешь использовать собранную дождевую воду?или привозить?=)
Вода как раз таки есть а света нет. Есть вопрос про клапана -если клапан на бОльшее давление то при малом он что не откроется разве? Просто есть водоснабжение с большим давлением и бак с водой с мЕньшим. чтоб не прогадать.
Насчет датчика я такой как указал trembo и имел в виду ,просто искать влом было )
от солнечной батареи(кстати если есть интерес могу подсказать как сделать самому). Батарею уже собрал-работает на аккумулятор автомобильный, в пути контролер.
Если в двух словах то купил фотоэлементы на ебее за 42 бакса. 40 штук размерами 156*78мм .В комплекте были шины для соединения и флюс. Соединение элементов требует минимальных навыков пайки(но очень хрупкие). Из 36-ти элементов собрал панель -предварительно уложив на стекло. Один элемент дает 0.5 вольта и ток короткого замыкания около 3-х ампер.
Панель дает в общем около 40-ка ватт .Панель заряжает аккумулятор а его в свою очередь использую на нагрузку.Заказал контроллер заряда чтобы не задумываться о перезаряде.
На ютубе множество роликов-учебников о сборе таких панелей из элементов.
Есть вопрос про клапана -если клапан на бОльшее давление то при малом он что не откроется разве? Просто есть водоснабжение с большим давлением и бак с водой с мЕньшим. чтоб не прогадать.
Я ставил от стиралки клапан 220в, при моём давлении не открывается и гудит. Ну мож пару капель выдавит)))
Я понял внем наверно обратный клапан стоит и маленькое давление неможет его продавить. Если вынуть пружину с клапана то будет работать.
Probelzaelo пишет:
Если совсем вынуть то перестанет закрываться... придется все же оставить пружинку, но более слабую.
пружина в клапанах от стиралки очень слабая и предназначена исключительно для возвращения штока соленоида в исходное состояние(до того, как было подано напряжение на катушку)
т.е.: нет напряжения - давление воды захлопывает мембрану и клапан закрывается, есть напряжение - шток соленоида не давит на мембрану и клапан открывается.
поэтому, если убрать или ослабить пружину клапана, то это может привести только к неполному захлопыванию/закрытию клапана.
*как следсвие из выше сказанного - клапаны от стиралок плохо работают с давлением ниже номинального водопроводного, не до конца захлопываются/закрываются/пропускают воду - рекомендую ставить шаровый вентиль с электроприводом.
"Основным преимуществом высоковольтных ЛЭП постоянного тока является возможность передавать большие объёмы электроэнергии на большие расстояния с меньшими потерями, чем у ЛЭП переменного тока."
[...]
"Основным недостатком высоковольтной ЛЭП постоянного тока является необходимость преобразования типа тока из переменного в постоянный и обратно. Используемые для этого устройства требуют дорогостоящего ЗИП, так как, фактически, являются уникальными для каждой линии."
Почему все-же используются преимущественно ЛЭП переменного тока? Как раз из-за основного недостатка HVDC - война токов тому пример.
Кстати, энергосистема Нью-Йорка окончательно переведена на переменный ток лишь в 2007 году...
"Основным преимуществом высоковольтных ЛЭП постоянного тока является возможность передавать большие объёмы электроэнергии на большие расстояния с меньшими потерями, чем у ЛЭП переменного тока."
[...]
"Основным недостатком высоковольтной ЛЭП постоянного тока является необходимость преобразования типа тока из переменного в постоянный и обратно. Используемые для этого устройства требуют дорогостоящего ЗИП, так как, фактически, являются уникальными для каждой линии."
Почему все-же используются преимущественно ЛЭП переменного тока? Как раз из-за основного недостатка HVDC - война токов тому пример.
Кстати, энергосистема Нью-Йорка окончательно переведена на переменный ток лишь в 2007 году...
Цитата конечно интересная, возьму себе на заметку .... НО ...
Когда я делал устройство (описывал тут в посте №52) основным условием заказчика было - переменный ток на клапанах !!! (мне естественно было проще управлять мосфетами постоянкой, чем морочить голову с симисторами для переменки)... Специально разговаривали с некоторыми дистрибютороми таких устройств, все заявляли, что применение переменки связано именно с уменьшением потерь (даже зависимость от расстояния приводили, сейчас уже цифр не помню)...
В общем ситуация вот такая.... Сравнительных тестов я не проводил, если кто-то экспериментировал было бы интересно...
мне естественно было проще управлять мосфетами постоянкой, чем морочить голову с симисторами для переменки)...
можно было мосфет или тиристор воткнуть, через диодный мостик )) расточительно, но проще и на нагрузке переменка.
renoshnik пишет:
Специально разговаривали с некоторыми дистрибютороми таких устройств, все заявляли, что применение переменки связано именно с уменьшением потерь (даже зависимость от расстояния приводили, сейчас уже цифр не помню)...
лгут собаки. потери уменьшить возможно с увеличением напряжения и снижая ток. а так то переменка должна бы просить бОльший ток для удержания якоря электромагнита то. нужно же держать все время а не в пульсе 50 гц
датчик потока жидкости как здесь ссылку приводили на dvrobot у меня есть. и клапан от омывателя девятки тоже вынужден использовать из-за его цены. есть в китае за 200р штука примерно клапаны получше, на 24 или 220 В. может и на 12 бывают, но это надо продаванов спрашивать. Но таможня может не пропустить партию эдак из..20. меня это вот останавливает пока что лишь от их заказа. Датчик потока нормальный, погрешность на 400мл глазу почти не заметна. разве что пришлось константу подбирать опытным путем, ибо врало на 30% если юзать ту что на сайте там написана.
Знает ли кто, сборка UDN2803 или что-то подобное потянет клапан омывателя девятки? сначала думал на модулях реле делать, но они много места занимают((
Знает ли кто, сборка UDN2803 или что-то подобное потянет клапан омывателя девятки? сначала думал на модулях реле делать, но они много места занимают((
Для ответа нужно понимать какой ток хотят клапана, обычно автомобильные устройства не стесняются своей прожорливости, а у ULN280Х нагрузка до 500mA на пин, но при условии что суммарный ток через все пины вместе не превышает 2.5А ... http://www.ti.com/lit/ds/symlink/uln2803a.pdf там есть другая беда, ключи на составном биполярном транзисторе... потому и с нагрузкой проблема. Может лучше призадуматься о нормальных MOSFET ключах на выходах?
Для ответа нужно понимать какой ток хотят клапана, обычно автомобильные устройства не стесняются своей прожорливости, а у ULN280Х нагрузка до 500mA на пин, но при условии что суммарный ток через все пины вместе не превышает 2.5А ... http://www.ti.com/lit/ds/symlink/uln2803a.pdf там есть другая беда, ключи на составном биполярном транзисторе... потому и с нагрузкой проблема. Может лучше призадуматься о нормальных MOSFET ключах на выходах?
Посмотрел в инете про клапан - написано не более 0.5А. Но надо проверить. Транзисторы есть несколько IRLR3110, по даташиту оч неплохи. Но пока с ними не возился еще, прогу пишу. Если делать на транзисторах, то куда подключать диод иль еще что для защиты от катушки?)
Всем привет, вот появилось время решил немного попрограммировать меню. 13кб вышло. Это не последняя версия, буду и буду её усовершенствовать, это предварительная версия. Управление меню происходит по трём кнопкам. В первом меню можно задать гистерезис работы актуатора(нижняя и верхняя темп.) Во 2 настройка полива(Вкл или выкл и продолжительность полива). В 3 время срабатывания поливалки. Все значению сохраняются в eeprom. Всё работает, глюков не заметил =) Вот что руки написали за выходные:
/* adress eeprom
EEPROM 0 Минимальное значение температуры актуатора
EEPROM 1 Максимальное значение темп актуатора
EEPROM 2 1/0 включение отключение полива (0=off / 1=on)
EEPROM 3 Продолжительность минут полива
EEPROM 4 минута полива
EEPROM 5 час полива
*/цикл
//LCD I2C 20x4
#include <EEPROM.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,20,4);
//LCD
//кнопка
// задаем константы
const int buttonPin = 15; // номер входа, подключенный к кнопке
const int buttonPin_1 = 14; //левая кнопка
const int buttonPin_0 = 16; //правая кнопка
const int ledPin = 13; // номер выхода светодиода
// переменные
int buttonState = 0; // переменная для хранения состояния кнопки
int buttonState_1 = 0; // переменная для хранения состояния кнопки
int buttonState_0 = 0; // previous state of the button
void setup() {
//LCD
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
lcd.init(); // initialize the lcd
lcd.backlight();
//--LCD
// initialize the button pin as a input:
// initialize the LED as an output:
pinMode(ledPin, OUTPUT);
// initialize serial communication:
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
// инициализируем пин, подключенный к кнопке, как вход
pinMode(buttonPin, INPUT);
pinMode(buttonPin_0, INPUT);
pinMode(buttonPin_1, INPUT);
}
void loop() {
// read the pushbutton input pin:
lcd.setCursor(0,0);
lcd.print("GREEN GARDEN MENU v1");
lcd.setCursor(0,2);
lcd.print("(=very good menu=)");
lcd.setCursor(0,3);
lcd.print(" MENU ");
buttonState = digitalRead(buttonPin);
// проверяем нажата ли кнопка
// если нажата, то buttonState будет HIGH:
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
menu();
}
}
void menu()
{
actuator_setup();
irrigtion_setup();
irrigation_set_time();
}
void actuator_setup()
{
lcd.clear(); //очищаем экран
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print(" -=ACTUATOR SETUP=- ");
int t_mini = EEPROM.read(0);
lcd.setCursor(0,1);
lcd.print("min = ");
lcd.print(t_mini);
lcd.print((char)223);
int t_maxi = EEPROM.read(1);
lcd.setCursor(11,1);
lcd.print("max = ");
lcd.print(t_maxi);
lcd.print((char)223);
lcd.setCursor(0,2);
lcd.print("____________________");
lcd.setCursor(0,3);
lcd.print("T_MIN NEXT T_MAX");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
break; }
if (buttonState_1 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
t_min();
delay(500);
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
t_max();
delay(500);// включаем светодиод
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
}}
void irrigtion_setup()
{
lcd.clear(); //очищаем экран
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print("-=IRRIGATION SETUP=-");
int on_off = EEPROM.read(2);
String x;
if (on_off == 1) {x="ON";}
if (on_off == 0) {x="OFF";}
lcd.setCursor(0,1);
lcd.print("irr=");
lcd.print(x);
int duration = EEPROM.read(3);
lcd.setCursor(10,1);
lcd.print("dur=");
lcd.print(duration);
lcd.print("min");
lcd.setCursor(0,2);
lcd.print("____________________");
lcd.setCursor(0,3);
lcd.print("ON/OFF NEXT DURATION");
// digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(500);// включаем светодиод
lcd.clear(); //очищаем экран
break;
}
if (buttonState_0 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
durration_irrigation();
delay(500);// включаем светодиод
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
on_off_irrigation();
delay(500);// включаем светодиод
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
}}
void irrigation_set_time()
{
lcd.clear(); //очищаем экран
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print("IRRIGATION SET TIME");
lcd.setCursor(0,1);
lcd.print("irr_time= "); string_irrigation_time();
lcd.setCursor(0,2);
lcd.print("____________________");
lcd.setCursor(0,3);
lcd.print("minuts NEXT hours");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
irrigation_set_minuts();
delay(500);
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
digitalWrite(ledPin, LOW);
lcd.clear();
irrigation_set_hours();
delay(500);// включаем светодиод
lcd.clear(); //очищаем экран
digitalWrite(ledPin, HIGH);
}
}}
//////--------------------------------------------------------------------------
//SUB MENU
void t_min()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print(" TEMP MINIMUM SETUP");
int t_min = EEPROM.read(0);
lcd.setCursor(0,1);
lcd.print("t = ");
lcd.print(t_min);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,3);
lcd.print("t_min-1 NEXT t_min+1");
lcd.setCursor(0,2);
lcd.print("____________________");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(0, t_min + 1);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(0, t_min - 1);
digitalWrite(ledPin, HIGH);
}
}
}
void t_max()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print(" TEMP MAXIMUM SETUP");
int t_max = EEPROM.read(1);
lcd.setCursor(0,1);
lcd.print("t = ");
lcd.print(t_max);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,3);
lcd.print("t_max-1 NEXT t_max+1");
lcd.setCursor(0,2);
lcd.print("____________________");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(1, t_max + 1);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(1, t_max - 1);
digitalWrite(ledPin, HIGH);
}
}
}
void on_off_irrigation()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print(" ON/OFF IRRIGATION ");
int on_off = EEPROM.read(2);
String x;
if (on_off == 1) {x="ON";}
if (on_off == 0) {x="OFF";}
lcd.setCursor(0,1);
lcd.print("now irrigation = ");
lcd.print(x);
lcd.setCursor(0,2);
lcd.print("____________________");
lcd.setCursor(0,3);
lcd.print("ON NEXT OFF");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(2, 0);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(2, 1);
digitalWrite(ledPin, HIGH);
}
}
}
void durration_irrigation()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print("DURRATION IRRIGATIN");
int duration = EEPROM.read(3);
lcd.setCursor(0,1);
lcd.print("durration = ");
lcd.print(duration);
lcd.print("min");
lcd.setCursor(0,3);
lcd.print("-1min NEXT +1min");
lcd.setCursor(0,2);
lcd.print("____________________");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(3, duration + 1);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
EEPROM.write(3, duration - 1);
digitalWrite(ledPin, HIGH);
}
}
}
void irrigation_set_minuts()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print("SET MINUTES");
int minuts = EEPROM.read(4);
lcd.setCursor(0,1);
lcd.print("minuts = ");
lcd.print(minuts);
lcd.print("min");
lcd.setCursor(0,3);
lcd.print("-1min NEXT +1min");
lcd.setCursor(0,2);
lcd.print("____________________");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
minuts = minuts + 1;
if (minuts >59){minuts=0;}
EEPROM.write(4, minuts);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
minuts = minuts - 1;
if (minuts < 0) {minuts=59;}
EEPROM.write(4, minuts);
digitalWrite(ledPin, HIGH);
}
}
}
void irrigation_set_hours()
{
lcd.clear(); //очищаем экран
delay(1000);
while(1){ //бесконечный цикл
buttonState = digitalRead(buttonPin); //запоминаем значение кнопки
buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки
buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки
lcd.setCursor(0,0);
lcd.print("SET hours");
int hours = EEPROM.read(5);
lcd.setCursor(0,1);
lcd.print("hours = ");
lcd.print(hours);
lcd.print("h");
lcd.setCursor(0,3);
lcd.print("-1hour NEXT +1hour");
lcd.setCursor(0,2);
lcd.print("____________________");
digitalWrite(ledPin, HIGH);
if (buttonState == HIGH) {
digitalWrite(ledPin, LOW);
delay(1000);// включаем светодиод
lcd.clear(); //очищаем экран
break;
digitalWrite(ledPin, HIGH);
}
if (buttonState_0 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
hours = hours + 1;
if (hours >23){hours=0;}
EEPROM.write(5, hours);
digitalWrite(ledPin, HIGH);
}
if (buttonState_1 == HIGH) {
delay(500);
digitalWrite(ledPin, LOW);
lcd.clear();
hours = hours - 1;
if (hours < 0) {hours=23;}
EEPROM.write(5, hours);
digitalWrite(ledPin, HIGH);
}
}
}
void string_irrigation_time() // функция формирования строки времни полива
{
String irr_time = ""; //объявление переменной строки
int minuts = EEPROM.read(4); //читаем память
int hours = EEPROM.read(5);
if (hours >= 0 && hours <=9) {irr_time += 0; irr_time += hours;} else{irr_time += hours;} //дописываем нолик
irr_time += ":";
if (minuts >= 0 && minuts <=9){irr_time += 0; irr_time += minuts;} else{irr_time += minuts;}
irr_time += ":";
irr_time += "00";
// lcd.setCursor(0,1);
//lcd.print("irr_time=");
lcd.print(irr_time);
}
"переменка" для уменьшения потерь на расстоянии....
в квартире такие клапана вполне применимы, а для ландшафтных систем нужна переменка ...
Не "переменка", а высокое напряжение, т.к. длина проводов - значительно больше... Высокое на постоянном токе - опасно всякими негаснущими дугами в выключателях и т.п., потому и советуют питание гнать переменкой, и преобразовывать его в постоянку уже по месту...
Высокое на постоянном токе - опасно всякими негаснущими дугами в выключателях и т.п., потому и советуют питание гнать переменкой, и преобразовывать его в постоянку уже по месту...
Есть и еще пара оправданий для переменки
вопервых химия, тк для проводников находящихся в среде(воздух и не сухой) и постоянно под напряжением, относительно друг друга, будет происходить как бы это по русску нечто типа электролиза при котором один проводник активно окисляется а второй как бы не менее активно восстанавливается.
А вовторых и это пожалуй главное, только переменное напряжение можно с легкостью понизить или увеличить с помощью самого трансформатора, сделать из 500КВ постоянки например те же 220 врядли получится без слишком дорогих "инструментов". Разумеется не будем рассматривать простой вариант типа - получить дугу от 500КВ и, за счет ее свечения, снять нужное напряжение с солнечной батареи ))
Можно поподробней, не совсем въехал как юзать эту директиву. с таким ещё не сталкивался=) Понял только, что если компилятор встретит buttonState в тексте программы он заменит её на !digitalRead(buttonPin); ? не понимаю смысла? =)
Если начАть или нАчать прйчёсывать код я бы сделал.....
заменил бы
const int buttonPin = 7; // номер входа, подключенный к кнопке
const int buttonPin_1 = 10; //кнопка +
const int buttonPin_0 = 11; //кнопка -
const int ledPin = 13; // номер выхода светодиода
Фигня эти пневмоцилиндры, я не ищю лёгких путей! форточку не откроешь по нажатию кнопки или команды МК. На влажность пофиг актуатору, он предназначен для любой погоды =) Да и какая электрическая часть в теплице? 12вольт? что-то даже как-то не страшно. Сезон отработало без нареканий и КЗ.
если в ваше отсутствие будет солнышко, а электричество отключат, или АКБ сядет, то в теплице будет до +55 градусов, что убьет все посадки. Гидроцилиндры работают независимо от наличия или отсутствия электричества - в этом их преимущество.
Всем привет, вот появилось время решил немного попрограммировать меню. 13кб вышло. Это не последняя версия, буду и буду её усовершенствовать, это предварительная версия. Управление меню происходит по трём кнопкам. В первом меню можно задать гистерезис работы актуатора(нижняя и верхняя темп.) Во 2 настройка полива(Вкл или выкл и продолжительность полива). В 3 время срабатывания поливалки. Все значению сохраняются в eeprom. Всё работает, глюков не заметил =)
Попробовал ваш код у себя запустить, правда переделал его немного у меня дисплей 2*16 так вот у меня както все работало неадкекватно то менялись пункты меню сами по себе то просто светилась надпись меню, я кнопки пока вообще не ставил просто скетч залил в контролер с дисплеем,мож это ис за отсутствия подтягиваюшего резистора,там правельно к земле подтягивать и к плюсу на сигнал?Я пробовал пинцетом имитировать нажатие кнопки замыкал пин кнопки на плюс но в общем хаосе этого почти небыло заметно.
какие детали я должен приобрести для начало? ну или вообще?
Товарищу нужен был вот такое устройство http://gazon.net.ua/kontroller-hunter-xch-1200.html но цена уж слишком кусачая...
Поэтому принято решение заняться хэнд-мэйдом...
результат следующий...
настольная сборка....
https://www.dropbox.com/sh/45eomilihshx5z0/wJBA_blLS5/IMG_20130915_203605.jpg
https://www.dropbox.com/sh/45eomilihshx5z0/0oS-dJB0Pv/IMG_20130923_15310...
собираем в корпус для монтажа....
https://www.dropbox.com/sh/45eomilihshx5z0/g35zYOvJPL/IMG_20131018_16034...
https://www.dropbox.com/sh/45eomilihshx5z0/9qyWay8zqp/IMG_20131018_17544...
https://www.dropbox.com/sh/45eomilihshx5z0/9jPuGBnhud/IMG_20131018_18004...
управление девайсом осуществляется со смартфона через блютуз...
https://www.dropbox.com/sh/45eomilihshx5z0/t6b4OsmMmp/P9150547.JPG
https://www.dropbox.com/sh/45eomilihshx5z0/b6D-sL_Xlc/Screenshot_2013-09...
В первом моём посте есть схема, там вроде всё подписано, ты хочешь собрать макет системы или целую теплицу?)
В первом моём посте есть схема, там вроде всё подписано, ты хочешь собрать макет системы или целую теплицу?)
мне пока только макет теплицы, размеры значительно по меньше))
Моя теплица начиналась с макета, который набрасал в гуглскечапе. Если нужен исходник дай знать.
Доброго времени суток. Отличный проект для дачи !! А у вас на даче электричество есть? от чего заряжаете упс?
Я только начал осваивать ардуино заказал мини на 328 чипе(вчера пришел).
Хотелось бы предложить для повышения давления поставте электропомпу от газели или еще чего подобного-стоят недорого.
По поводу расхода жидкости- http://www.ebay.com/itm/DN8-G1-4-Flow-Rate-Water-Speedometer-For-Compute... датчик вроде этого-тож недорогие.
Я запланировал похожий проект отличие в том что электричества нет- все будет запитываться от солнечной батареи(кстати если есть интерес могу подсказать как сделать самому). Батарею уже собрал-работает на аккумулятор автомобильный, в пути контролер.
по поводу кода не могли бы выложить для ознакомления? а то еще не все моменты понимаю.
А еще вопрос по какому алгоритму будут открываться клапана?
По времени или по датчику влажности? я для себя думал -полив рано с утра(если не холодно) а днем только при сухости.
Да, в летнее время электричество есть (150-200вольт) =)
Повышение давления мне не требуется, у меня самотёчная система и клапана для этого рассчитаны на давление не больше 0.8бара.
Учитывать расход мне тоже не нужно т.к. скока в землю не лей, всё равно всё уйдёт =)Бочка из которой берётся вода для полива наполняется из колодца автоматически по двум датчикам. Просто засеку по времени сколько нужно чтобы пролить землю.
Клапана полива будут открываться рано утром пока все спят=). Днём поливать нельзя, быстро испаряется и возможность нанести ожоги растениям. Вечером поливать - на стенках теплицы будет конденсат.
А воду для полива ты где будешь брать? есть колодец? или планируешь использовать собранную дождевую воду?или привозить?=)
Код можешь найти на предыдущей странице.
Есть нормальные, с датчиком Холла, с нормальной 1/2 резьбой и в два раза дешевле
http://www.ebay.com/itm/1pc-Water-Flow-Sensor-Switch-Flow-Meter-Waterpro...
Не очень то это и датчик, просто показометр наличия потока )) но показометр навел на мысль. Обычные, бытовые водяные счетчики имеют ровно такое же устройство, крыльчатку внутри потока. Передача вращения от крыльчатки к непосредственно счетчику происходит через магнитную муфту.(по разные стороны корпуса. Все пластиковое безобразие возможно снять, сам видел как склеены между собой две части конструкции. вместо редуктора и циферблата, нас вполне устроит датчик холла. остается произвести градуировку между количеством жидкости и числом импульсов датчика.
А воду для полива ты где будешь брать? есть колодец? или планируешь использовать собранную дождевую воду?или привозить?=)
Вода как раз таки есть а света нет. Есть вопрос про клапана -если клапан на бОльшее давление то при малом он что не откроется разве? Просто есть водоснабжение с большим давлением и бак с водой с мЕньшим. чтоб не прогадать.
Насчет датчика я такой как указал trembo и имел в виду ,просто искать влом было )
от солнечной батареи(кстати если есть интерес могу подсказать как сделать самому). Батарею уже собрал-работает на аккумулятор автомобильный, в пути контролер.
есле не сложно раскажите
Если в двух словах то купил фотоэлементы на ебее за 42 бакса. 40 штук размерами 156*78мм .В комплекте были шины для соединения и флюс. Соединение элементов требует минимальных навыков пайки(но очень хрупкие). Из 36-ти элементов собрал панель -предварительно уложив на стекло. Один элемент дает 0.5 вольта и ток короткого замыкания около 3-х ампер.
Панель дает в общем около 40-ка ватт .Панель заряжает аккумулятор а его в свою очередь использую на нагрузку.Заказал контроллер заряда чтобы не задумываться о перезаряде.
На ютубе множество роликов-учебников о сборе таких панелей из элементов.
Есть вопрос про клапана -если клапан на бОльшее давление то при малом он что не откроется разве? Просто есть водоснабжение с большим давлением и бак с водой с мЕньшим. чтоб не прогадать.
Я ставил от стиралки клапан 220в, при моём давлении не открывается и гудит. Ну мож пару капель выдавит)))
Я понял внем наверно обратный клапан стоит и маленькое давление неможет его продавить. Если вынуть пружину с клапана то будет работать.
Если совсем вынуть то перестанет закрываться... придется все же оставить пружинку, но более слабую.
Я понял внем наверно обратный клапан стоит и маленькое давление неможет его продавить. Если вынуть пружину с клапана то будет работать.
Если совсем вынуть то перестанет закрываться... придется все же оставить пружинку, но более слабую.
пружина в клапанах от стиралки очень слабая и предназначена исключительно для возвращения штока соленоида в исходное состояние(до того, как было подано напряжение на катушку)
т.е.: нет напряжения - давление воды захлопывает мембрану и клапан закрывается, есть напряжение - шток соленоида не давит на мембрану и клапан открывается.
поэтому, если убрать или ослабить пружину клапана, то это может привести только к неполному захлопыванию/закрытию клапана.
*как следсвие из выше сказанного - клапаны от стиралок плохо работают с давлением ниже номинального водопроводного, не до конца захлопываются/закрываются/пропускают воду - рекомендую ставить шаровый вентиль с электроприводом.
с шаровым вентилем тоже не просто он при жесткой воде со временем работает все туже
с шаровым вентилем тоже не просто он при жесткой воде со временем работает все туже
нужно брать что-то качественное немецкое в металле или японское в пластмассе
я к тому, что клапан от стиралки - совсем не подходит для малого давления
зачем изобретать "велосипед", его уже изобрели ...
питание 9 Вольт.
пропускная способность от 4 до 115 л/мин
диапазон давлений от 1,5 до 10 Бар
с шаровым вентилем тоже не просто он при жесткой воде со временем работает все туже
в морозы их разрывает !!! продувка системы перед зимой проблему НЕ решает ...
Если и пользоваться уже изобретенным, то зачем переплачивать то вчетверо? Бывает и подешевше вариация.
Я брал клапана тут.
Я брал клапана тут.
только учтите, что клапан управляется постоянным током... (лучше использовать переменку).
только учтите, что клапан управляется постоянным током... (лучше использовать переменку).
почему лучше?
Мне точно не лучше, у меня питание системы всей на 12вольтах п.т.
"переменка" для уменьшения потерь на расстоянии....
в квартире такие клапана вполне применимы, а для ландшафтных систем нужна переменка ...
"переменка" для уменьшения потерь на расстоянии....
в квартире такие клапана вполне применимы, а для ландшафтных систем нужна переменка ...
Ага-ага:
"Основным преимуществом высоковольтных ЛЭП постоянного тока является возможность передавать большие объёмы электроэнергии на большие расстояния с меньшими потерями, чем у ЛЭП переменного тока."
[...]
"Основным недостатком высоковольтной ЛЭП постоянного тока является необходимость преобразования типа тока из переменного в постоянный и обратно. Используемые для этого устройства требуют дорогостоящего ЗИП, так как, фактически, являются уникальными для каждой линии."
Почему все-же используются преимущественно ЛЭП переменного тока? Как раз из-за основного недостатка HVDC - война токов тому пример.
Кстати, энергосистема Нью-Йорка окончательно переведена на переменный ток лишь в 2007 году...
"переменка" для уменьшения потерь на расстоянии....
в квартире такие клапана вполне применимы, а для ландшафтных систем нужна переменка ...
Ага-ага:
"Основным преимуществом высоковольтных ЛЭП постоянного тока является возможность передавать большие объёмы электроэнергии на большие расстояния с меньшими потерями, чем у ЛЭП переменного тока."
[...]
"Основным недостатком высоковольтной ЛЭП постоянного тока является необходимость преобразования типа тока из переменного в постоянный и обратно. Используемые для этого устройства требуют дорогостоящего ЗИП, так как, фактически, являются уникальными для каждой линии."
Почему все-же используются преимущественно ЛЭП переменного тока? Как раз из-за основного недостатка HVDC - война токов тому пример.
Кстати, энергосистема Нью-Йорка окончательно переведена на переменный ток лишь в 2007 году...
Цитата конечно интересная, возьму себе на заметку .... НО ...
Когда я делал устройство (описывал тут в посте №52) основным условием заказчика было - переменный ток на клапанах !!! (мне естественно было проще управлять мосфетами постоянкой, чем морочить голову с симисторами для переменки)... Специально разговаривали с некоторыми дистрибютороми таких устройств, все заявляли, что применение переменки связано именно с уменьшением потерь (даже зависимость от расстояния приводили, сейчас уже цифр не помню)...
В общем ситуация вот такая.... Сравнительных тестов я не проводил, если кто-то экспериментировал было бы интересно...
можно было мосфет или тиристор воткнуть, через диодный мостик )) расточительно, но проще и на нагрузке переменка.
я вообще не понимаю, о каких потерях речь идёт(если они вообще есть) - кабель большего сечения спасёт от потерь.
этож не континентальную энергосистему разрабатывать и считать, сколько миллионов тонн меди нужно потратить...
*а дистрибьютора(читай "барыгу") слушать - себе дороже.
Верное замечание, послушав рекомендации торговца, обязательно задумайся стОит ли так делать.
а ведь действительно разве там будут настолько большие расстояния от управляющего блока до исполнительного механизма?
Думаю врядли тогда зачем это обсуждать.И все же есть автомобильные клапана с регулировкой для системы отопления новых ВАЗ
2110-12
и 12в и доступно
А что за клапан такой? Раскажите поподробней или ссылку..
датчик потока жидкости как здесь ссылку приводили на dvrobot у меня есть. и клапан от омывателя девятки тоже вынужден использовать из-за его цены. есть в китае за 200р штука примерно клапаны получше, на 24 или 220 В. может и на 12 бывают, но это надо продаванов спрашивать. Но таможня может не пропустить партию эдак из..20. меня это вот останавливает пока что лишь от их заказа. Датчик потока нормальный, погрешность на 400мл глазу почти не заметна. разве что пришлось константу подбирать опытным путем, ибо врало на 30% если юзать ту что на сайте там написана.
Знает ли кто, сборка UDN2803 или что-то подобное потянет клапан омывателя девятки? сначала думал на модулях реле делать, но они много места занимают((
Для ответа нужно понимать какой ток хотят клапана, обычно автомобильные устройства не стесняются своей прожорливости, а у ULN280Х нагрузка до 500mA на пин, но при условии что суммарный ток через все пины вместе не превышает 2.5А ... http://www.ti.com/lit/ds/symlink/uln2803a.pdf там есть другая беда, ключи на составном биполярном транзисторе... потому и с нагрузкой проблема. Может лучше призадуматься о нормальных MOSFET ключах на выходах?
Для ответа нужно понимать какой ток хотят клапана, обычно автомобильные устройства не стесняются своей прожорливости, а у ULN280Х нагрузка до 500mA на пин, но при условии что суммарный ток через все пины вместе не превышает 2.5А ... http://www.ti.com/lit/ds/symlink/uln2803a.pdf там есть другая беда, ключи на составном биполярном транзисторе... потому и с нагрузкой проблема. Может лучше призадуматься о нормальных MOSFET ключах на выходах?
Посмотрел в инете про клапан - написано не более 0.5А. Но надо проверить. Транзисторы есть несколько IRLR3110, по даташиту оч неплохи. Но пока с ними не возился еще, прогу пишу. Если делать на транзисторах, то куда подключать диод иль еще что для защиты от катушки?)
Это схемы и картинка для транзистора D882.
...
куда подключать диод иль еще что для защиты от катушки?)
Дык в даташите же красиво нарисован диод, его прекрасненько хватает для защиты от катушки, это как раз его место
Всем привет, вот появилось время решил немного попрограммировать меню. 13кб вышло. Это не последняя версия, буду и буду её усовершенствовать, это предварительная версия. Управление меню происходит по трём кнопкам. В первом меню можно задать гистерезис работы актуатора(нижняя и верхняя темп.) Во 2 настройка полива(Вкл или выкл и продолжительность полива). В 3 время срабатывания поливалки. Все значению сохраняются в eeprom. Всё работает, глюков не заметил =) Вот что руки написали за выходные:
"переменка" для уменьшения потерь на расстоянии....
в квартире такие клапана вполне применимы, а для ландшафтных систем нужна переменка ...
Не "переменка", а высокое напряжение, т.к. длина проводов - значительно больше... Высокое на постоянном токе - опасно всякими негаснущими дугами в выключателях и т.п., потому и советуют питание гнать переменкой, и преобразовывать его в постоянку уже по месту...
Есть и еще пара оправданий для переменки
вопервых химия, тк для проводников находящихся в среде(воздух и не сухой) и постоянно под напряжением, относительно друг друга, будет происходить как бы это по русску нечто типа электролиза при котором один проводник активно окисляется а второй как бы не менее активно восстанавливается.
А вовторых и это пожалуй главное, только переменное напряжение можно с легкостью понизить или увеличить с помощью самого трансформатора, сделать из 500КВ постоянки например те же 220 врядли получится без слишком дорогих "инструментов". Разумеется не будем рассматривать простой вариант типа - получить дугу от 500КВ и, за счет ее свечения, снять нужное напряжение с солнечной батареи ))
Будет намного удобнее понимать текст программы если вместо:
И ещё избавиться от внешних резисторов привязки:
Соответственно кнопки идут на землю.
Ну и попробовать заменить переменные buttonState.... //запоминаем значение кнопки
на
Ну a если вдруг переезжать на другую плату, например на Мегу какую...
лучше вместо 14,15,16 писать прямо, как есть, как на плате подписано: A0, A1, A2.
Будет намного удобнее понимать текст программы если вместо:
Спасибо, поправил.
И ещё избавиться от внешних резисторов привязки:
Соответственно кнопки идут на землю.
т.е. подключение кнопки идёт один контакт к земле, а другой к пину? Внешний резистор выкидываю?
Попробовал..., меню само сабой листается=)
Ну и попробовать заменить переменные buttonState.... //запоминаем значение кнопки
на
Можно поподробней, не совсем въехал как юзать эту директиву. с таким ещё не сталкивался=) Понял только, что если компилятор встретит buttonState в тексте программы он заменит её на !digitalRead(buttonPin); ? не понимаю смысла? =)
"переменка" для уменьшения потерь на расстоянии....
Не "переменка", а высокое напряжение, т.к. длина проводов - значительно больше...
Я часто использую вот эту парочку (когда не хватает сечения кабеля и слишком большая длинна)
http://www.ebay.com/itm/NEW-DC-DC-Adjustable-Step-up-Power-supply-voltage-Converter-Module-Output-5V-35V-/141048598227?pt=LH_DefaultDomain_0&hash=item20d726ced3
http://www.ebay.com/itm/2013-DC-DC-Buck-Converter-Step-Down-Module-LM2596-Power-Supply-Output-1-23V-30V-/291040362494?pt=LH_DefaultDomain_0&hash=item43c35b7ffe
Поднимаю в линию до 35 Вольт, а то что дошло - вниз до нужного ( обычно 12 или 5 Вольт)
И ещё неплохо подходят POE инжекторы, но там 44-57 Вольт по стандарту, поэтому идут
http://www.ebay.com/itm/LM2596HV-DC-Voltage-Regulator-Power-Converter-St...
Input voltage: 4.5-60V (Cannot work long time when it exceeds 50V)
Если начАть или нАчать прйчёсывать код я бы сделал.....
заменил бы
на
#define buttonEnterPin 7
#define buttonPlusPin 10
#define buttonMinusPin 11
#define ledPin 13
и тогда
#define EnterPressed !digitalRead(buttonEnterPin);
#define PlusPressed !digitalRead(buttonPlusPin);
#define MinusPressed !digitalRead(buttonMinusPin);
А теперь сравните ваше
if (buttonState == HIGH) и if (EnterPressed)
if (buttonState_0 == HIGH) и if (PlusPressed)
Родная тема. Занимаюсь чем-то подобным, но в рамках всего огорода. Правда с давлением у меня прболем нет.
Хотел бы уточнить. Актуатор - зачем лишняя электрическая часть (влажность в теплице), если есть механические на основе пневмоцилиндра ?
Фигня эти пневмоцилиндры, я не ищю лёгких путей! форточку не откроешь по нажатию кнопки или команды МК. На влажность пофиг актуатору, он предназначен для любой погоды =) Да и какая электрическая часть в теплице? 12вольт? что-то даже как-то не страшно. Сезон отработало без нареканий и КЗ.
если в ваше отсутствие будет солнышко, а электричество отключат, или АКБ сядет, то в теплице будет до +55 градусов, что убьет все посадки. Гидроцилиндры работают независимо от наличия или отсутствия электричества - в этом их преимущество.
Попробовал ваш код у себя запустить, правда переделал его немного у меня дисплей 2*16 так вот у меня както все работало неадкекватно то менялись пункты меню сами по себе то просто светилась надпись меню, я кнопки пока вообще не ставил просто скетч залил в контролер с дисплеем,мож это ис за отсутствия подтягиваюшего резистора,там правельно к земле подтягивать и к плюсу на сигнал?Я пробовал пинцетом имитировать нажатие кнопки замыкал пин кнопки на плюс но в общем хаосе этого почти небыло заметно.
Поставь кнопки, всё заработает. Сам пробовал отключать кнопку, начинается хаос)