• 1
  • 2
Най - вълнуващия въпрос зимно време.
sashot - специалист
И така, както стана ясно, смятам да стартирам проект "контролер за сленчева система "направи сам", като предлагам създаването да стане на база колективния ум и труд на форума.
Целта - създаване на достъпен за повторение и по-нататъшно развитие и усъвършенстване конторлер, който не само да е по-евтин, (по първоначални расчети цената на апаратната част, при индивидуална поръчка от Китай няма да надвишава петдесет-шестдесет лева в базова конфикурация - микрокомпютърен блок, буквено-цифрен дисплей, датчици, часовник за реално време, интерфейсен (едернет/уайфай) модул, клавиатура с няколко бутона и енкодер), НО БЕЗ КОРПУС, който смятам че е по-правилно всеки сам да си избере/разработи, но и технически по-съвършен от предлаганите на пазара контролери.

Защо смятам че е уместно да се създаде подобно устройство, при наличието на пазара на широка гама готови контролери?

1. По понятни причини, предлаганите на пазара контролери, са ограничени като възможности за развитие и самостоятелно надграждане както апаратно, така и програмно - производителите с право си пазят хляба и инвестициите в инженеринг.
2. Практически всички фабрични контролери са лишени от възможности за интегриране в домашната система "умен дом", т.е. липсват им комуникационни възможности. И ако за следене трупане на статистически данни могат да се използват алтернативни подходи (същият температурен мониторинг, разработен от Jacket, чест и почитание за усилията, които той е вложил в това), то за външно/дистанционно управление в масовия случай трудно може да се говори. Всъщност единственият контролер с наистина развити комуникационни възможности, който съм виждал, е Siemens RVP350, (моля да не се приема за реклама или антиреклама) цената на който обаче е... или поне беше, когато той ми попадна в полезрението, четирицифрено число.

Има, разбира се и 3, 4, 5..., като цената също е някъде в тази редичка, но не на челни позиции. Все пак цената на конторлера далеч не е основния разход в изграждането на слънчева система за БГВ.

Основни принципи принципи на разработката.
1. Отворен код на софтуера, който да осигури не само неговата безплатност за всеки, решил да реализира контролера, но и възможности за негово развитие от много хора.
2. Модулност както на апаратната, така и на програмната част, която да осигури възможност всеки сам да избере конфигурация, която най-добре да отговаря на собствените си изисквания, очаквания и възможности. Модулността ще позволи и максимално лесно надграждане, усъвършенстване и всякакво друго развитие.
3. Колективност. Надявам се на нея, защото създаването на устройство с подобни характеристики определено не е по силите ми, ако не получавам вашата помощ с идеи и градивна критика. Просто не ми достигат необходимите знания и опит във всички аспекти и тънкости най-вече на топлотехниката и не се срамувам да си го призная. А няма да имам време, а защо да се лъжем и сили, да се самообразовам и придобия второ висше образование - този път по специалност топлотехника.
Разбира се не се чувствам и Господ-Бог в електрониката, схемотехниката и алгоритмирането-програмирането, въпреки че имам немалки теоретични знания и практически опит в тази област.

Разработката по никакъв начин не цели да "изяде хляба" на производителите на такова оборудване и смятам че тя няма осезаемо да намали приходите им, така че техни представители са особено добре дошли в дискусията да споделят опит и виждания, а защо не и да черпят идеи за техни бъдещи разработки.

И така откривам дискусията с два проблема, които през последните дни "терзаят съня ми".

Променлива/изменяема скорост на топлоносителя. Нужна ли е?

В общия случай задачата на слънчевата система за БГВ е не просто да улови в колектора максимално количество топлинна енергия, но и да я пренесе максимално ефективно в бойлера и да постигне, по възможност, максимална температура на водата в него, естествено в рамките на допустимото. За да се случи това е небоходимо от една страна флуида да получи максимално количестов топлина в колектора и да отдаде максимално количество от нея в бойлера. Количеството топлина прието/отдадено от топлоносителя е интеграл по време от произведението на температурната разлика на вход и изход по количеството флуид, умножено по коефициента на топлоемкост на топлоносителя. Отгоре на всичко в системата участва и тръбен път, който генерира топлинни загуби, които също зависят от температурните разлики и обема на преминаваща течност.
В масовия случай скоростта на флуида в системата е постоянна и се определя от хидравличното съпротивление на тръбния път и топлообменниците в бойлера и колектора(ите) и характеристиките на помпата (в дрейнбек системите и от височината, която трябва да преодолее флуида, изкачвайки се от дрейнбек съда и колектора). Когато температурните разлики колектор - бойлер са големи, това не влияе силно на ефективността на системата, но когато не са, то намаляването на скоростта на флуида може значително, според мен, да повиши ефективността на системата, за да може той да се нагрее максимално в колектора и охлади в бойлера, особено когато става дума за по-дълъг тръбен път и съответно по-голямо количество течност, а значи и енергия, намираща се в него. Освен всичко друго, за правилно решаване на задачата по оптимизацията в тази насока, според мен е уместно в системата да иам поне 4 топлинни датчика по два, един на входа и един на изхода на топлообменниците - колектора и серпентината на бойлера, като се сравняват температурните разлики и на тяхна база по определен алгоритъм (функция, крива) се управлява дебита, осигуряван от помпата.
Разбира се такова намаляване на скоростта може да се реализира и с помпа с фиксиран дебит, чрез използване на старт-стопен режим на работа, но, според мен използването му е по-неефективно от плавно регулиране на скоростта.

Правилно ли разсъждавам и ако да, какъв е пътят за оптимизация, т.е. как се изчислява кривата, по която дебита на помпата трябва да бъде управляван в зависимост от температурната(ите) разлика(и)?
Ако не ме лъжат детските спомени, задачата за топлообменника, е класически учебников пример за решаване чрез диференциално уравнение. Надявам се във форума да има инженери - топлотехници, които, ако счетат разсъжденията ми за правилни (ако не са правилни или ако значимостта им няма особена практическа стойност, просто ме оборете и откажете от идеята и главоболията, свързани с нея), да разработят алгоритъма (функцията) за управление на скоростта на флуида.

Необходим ли е разходомер?

Тук визирам необходимостта от разходомер, не за нуждите на статистическо изчисляване на ефективността на системата, а за оптималното и управление. Какво имам предвид? Освен изчисленията на оптимален дебит, в зависимост от температурните разлики, ако разсъжденията ми за необходимост от променлив такъв са верни, според мен разходомер е необходим, особено при по-дълъг тръбен път, за правилно определяне на температурите ... за валидността на отчетените данни след стартиране на системата. По-точно за времето на тяхното измерване. Защото валидни даннни за температурата на входящия в серпентината на бойлера флуид, след старта на помпата имаме едва след като със сигурност през нея е преминала (и вече отминала) течността от буферния обем на тръбния път и вече е навлязла загрятата течност от колектора. Т.е. разходомерът е необходим и за своеобразно стробиране на данните. В една ДБ система трябва да се отчете и преминаването на буферния обем течност от дрейнбек съда. Верни ли са ми разсъжденията ми и има ли практически смисъл от тяхното прилагане?

Вътрешна рециркулация

Идеята е навеяна от неволите на колегата engineer и се заключава на включване в системата на една малка (и евтина) рециркулационна помпичка, включена в тръбен път между изводите на горната и долната част на бойлера, която, при определени и високи/много високи температури в горната част на бойлера да се включва и да препомпва водата от горната част на бойлера в долната, като по този начин осигури възможност за натрупване на повече топла вода в бойлера. Освен всичко друго, си мисля, че подобна мярка ще има положителен ефект в борбата с легионелата, която при неравномерна температура на водата в бойлера, може и да бъде унищожена в горната - гореща част на бойлера, но спокойно да се развива в долната - по-хладна.
Алгоритъм на работа При достигане на примерно 70 градуса в горната част на бойлера и по ниско от 50 в долната без да се спира циркулацията по кръга бойлер - колектор,ако има условия за това. т.е температурата в колектора е по-висока от 70+дТ, се включва вътрешната рециркулация. При достигане на 65 в долната част, рециркулацията се спира. При спадане на температурата в горната част под 65 рециркулацията се спира, за да не се стига до излишна загуба на гореща вода.
Температурите, които са цитирани са примерни.
engineer - специалист
Ей ти я моята схема. Не твърдя, че е най-добрата, но покрива абсолютния минимум
може да се надгражда доста
Дисплея е dem16101syh
Тръбната схема я има в другата тема
viewtopic.php?f=10&t=54200&p=781990#p781990

Изображение
Причината да ползвам отделни захранки за Ардуиното и за Релето е, че като щракне релето AREF кляка малко и сензорите губят точност. GND на двете захранки е обединен.
Ето я и програмата:

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int temp1; //Бойлер - горен
int temp2; //Бойлер - долен
int temp3; //Слънчев панел
int counterOn=0; //при напълване на таймера помпата се включва
int counterOff=0; //при напълване на таймера помпата се изключва
int pumpstate=0; //статус на помпата 0=изключена, 1=включена
int allarmstate=0; //алармен статус
int allarmcount=0; //алармен брояч
int screen=0; // Номер екран: 0=Бойлер - горен; 1=Бойлер - долен; 2=Слънчев панел
// дисплея е едноредов и с копче се редува показваната температура
int oldbtn=1; //за логиката на бутона
int countlife=0; //мигалка, която показва, че контролера не е забил

// Ползва се делител за AREF, Uref = 1.188V

void setup()
{
lcd.begin(8,2);
lcd.noCursor();
pinMode(8,INPUT_PULLUP); //Бутон за изчистване на алармата
pinMode(9,INPUT_PULLUP); //Бутон за превъртане на екрана
pinMode(10,INPUT_PULLUP); //Бутон още незнам за какво
pinMode(11,OUTPUT); //Към релето на помпата
pinMode(12,OUTPUT); //Индикатор за аларма
pinMode(13,OUTPUT); //Мигалка
analogReference(EXTERNAL); //
}

void loop()
{


// lcd.begin(8,2);
// lcd.noCursor();
temp1= analogRead(0); //в истинската програма са добавени
temp2=analogRead(1); //математически функции за корекция
temp3=analogRead(2); //според типа на използвания сензор
lcd.clear();
lcd.setCursor(0,0);
switch(screen){
case 0:
lcd.print("Boiler 1"); //Дисплейва температура 1
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(temp1);
lcd.print(" ");
lcd.print(char(223));
lcd.print("C");
break;

case 1:
lcd.print("Boiler 2"); //Дисплейва температура 2
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(temp2);
lcd.print(" ");
lcd.print(char(223));
lcd.print("C");
break;

case 2:
lcd.print("Panel"); //Дисплейва температура 3
lcd.setCursor(0,1);
lcd.print(" ");
lcd.print(temp3);
lcd.print(" ");
lcd.print(char(223));
lcd.print("C");
break;
}


delay(20);


if (temp3 > (temp2+8) && temp3 > (temp1+3) && !pumpstate && !allarmstate) counterOn++; //Условия за пускане на помпата
else counterOn=0; //Добавено е условието, което ми препоръча jabata
if (counterOn>300) //Изчаква около 6 сек за включване на помпата
{pumpstate=1;
digitalWrite (11,1); //Включване на помпата

}

if (temp3 < (temp2+3) && pumpstate) counterOff++; //Условия за изключване на помпата
else counterOff=0;
if (counterOff>3000) //Изчаква 60.....90 сек за изключване
{pumpstate=0;
digitalWrite (11,0); //Изкл. на помпата
}

if (temp2 < -30 || temp2 > 110 || temp3 < -30 || temp3 > 110) allarmcount++; //Условия за авариен стоп
else allarmcount=0; //При прекъсване на някое жило се мери ненормално
//ниска или ненормално висока температура
if (allarmcount>50) //Изчаква една сек преди авариен стоп
{allarmstate=1;
pumpstate=0;
digitalWrite (11,0); //Перманентно изключване на помпата
digitalWrite (12,1); //Индикация за авариен стоп
}

if(!digitalRead(9) && oldbtn) //Превъртане на номер екран от бутон
{delay(20);
if(!digitalRead(9) && oldbtn)
{screen++;
if(screen>2) screen=0;
oldbtn=0;
}
}

if(digitalRead(9) && !oldbtn) //Изчакване до отпускане на бутона
{delay(20);
if(digitalRead(9) && !oldbtn)
oldbtn=1;
}


if(!digitalRead(8)) //Изчистване на аварийната аларма
{delay(20);
if(!digitalRead(8))
{allarmstate=0;
digitalWrite(12,0);
}
}

//Тук имаше една логика с брояча countlife, която кара LED 13 да
//мига през около 1 секунда
//и показва че контролера е жив.

}
jabata - специалист
Като цяло в днешния свят на електроника има всякакви и какви ли не контролери, обаче много често се налага на човек да му трябва контролера да работи по някаква друга логика, не по логиката на стандартните, и тогава човек стига до направата на собствен контролер, което с Arduino става много лесно. Необходимо е само човек да има логическо мислене, и да седне да прочете 1 ден, как се пише Arduino програма, и си готов.
Другата причина човек да стигне дотам, е да го сърбят ръцете да направи нещо собствено, ако ще и хей така за спорта, отколкото да ползва нещо готово, което за съжаление в днешния консуматорски свят, малко хора биха ме разбрали.
Иначе по темата, за собствен контролер, добре е човек да мери поне 3 температури, и да ги ползва в логиката. А задължителните такива са изход колектор, вход серпентина, изход серпентина. (по примера на колегата engineer)
Тука идва момента че много често при бойлерите със серпентина температурата е неравномерна, което от създава главоболия на хората. И в този случай ще е добре контролера да командва и някаква циркулационна помпа да развърта водата в бойлера. Също би могло да се добави и източване на водата от бойлера и пускане на студена, с цел да не прегрее системата. Защото се оказва че едно прегряване носи много повече главоболия и загуба на пари, отколкото няколко литра вода.
sashot - специалист
Благодаря на колегите за включването в темата, приемам го като поддръжка. Особена благодарност на engineer, който с готовност сподели както схемата на свързването на своята система, така и сорса на своя софтуер!!!

Аз също съм се ориентирал към база Ардуино, най-вече поради достъпността и и изобилието на готови библиотеки.
Водейки се от прочетеното в сайта на украинеца поръчах две платки Мега2560, заради по-големите им ресурси, в сравнение с по-малките модели, при малка (няколко $) разлика в цената. Но така или иначе, софтуерът ще е съвместим и с по-малките версии, надявам се в неособено орязан вариант, стига да мога да го напъхам в малката им по обем памет. Дано намеря сили и търпение да напиша част от модулите на асемблер, което ще икономиса памет и ще повиши производителността... ако се напише кадърно, разбира се. Ако не греша, развойната среда на Атмел позволява взаимно интегриране на С и асемблерски код.
Системата, която смятам да правя за себе си ще е дрейн-бек, моля не ме вкарвайте в обяснителен режим защо така съм решил, но така или иначе софтуерът задължително ще има модул за защита от прегряване и замръзване на колектора, при използването му в класическа система, като при използването му в дрейнбек, той просто няма да се активира.
Личното ми мнение е, че температурните датчици трябва да са поне 4, а още по-добре повече.
По един на входа и изхода на колекторите и по един в горната и долната част на бойлера. Още по-добре да се добавят датчици, цената им, при поръчка от Китай е мижава, а входове при ардуиното - дал Бог, в средата на бойлера, на входа и изхода на серпентината на бойлера. Не е зле да има датчик на температурата на въздуха край колекторите и на тази в помещението, където се намира бойлера. Така ще могат да се анализират оценяват загубите и евентуално да се мисли или не за намаляването им.
За циркулационна помпа, развъртаща водата в бойлера вече писах. Според мен ще е полезна и ще повиши ефективността, особено при по-големи бойлери.
sashot - специалист
И така днес пристигнаха поръчаните платки Ардуино Мега 2560 с които започвам да експериментирам. Заедно с тях дойдоха и комбинираните датчици за температура и влажност DHT11. От основните чаркове, от които се нуждая за пълноценна работа липсва дисплея и датчиците. Надявам се да не се забавят много.
Какво междувременно ми се избистри като концепция в главата. За термодатчици в колекторите е желателно да се използват такива от типа Pt1000, някои от производителите на диференциални термостати ненапразно комбинират именно с тях изделията си. Основно предимство - издържат на високи температури, на които могат да се окажат изложени в една ДБ (пък и не само) система. Цената им наистина е в пъти по-висока от тази на аналоговите LMки или цифровите DS, но полупроводниковите просто може да не издържат прегряването и да предадат Богу дух. Недостатък на платиновите е че са аналогови, проблема вече го дъвкахме. Освен това, при наличие на повече точки на мерене, за тях ще се изискват повече жила. Цифровите DS18b20 могат да се закачат успоредно, като всеки си има собствен адрес и може да се сканира отделно, но пък едва ли ще понесат температури значително над 100 градуса. Ако се добави и датчик за осветеност (днес поръчах един такъв), датчик за външна температура, влажност, атм. налягане, скорост на вятъра и т.н. снопът жила към покрива става внушителен. Затова според мен правилната концепция е - горе, на покрива едно малко и евтино контролерче от типа на Уно, Микро или дори Нано, което да събира информацията от датчиците, като поради близостта им до тях, те могат (яаст от тях) и да са аналогови и да я препраща към основния контролер. Комуникация - или по едернет, със съответна платка за него или по някакъв, може и собствен сериен протокол. Предимство на използването на Едернет, че събраните данни ще са достъпни независимо от основния контролер, недостатък - оскъпяване с доп. хардуер и кабел задължително тип xTP.
Разбира се като вариант трябва да остане и възможност за директна комуникация на основния контролер с датчиците.

Очаквам вашите За и Против, както и други идеи.
sstefanov - майстор
Какво е "Едернет"? Ethernet ли имаш предвид?
Според мен е най-добре да си вземеш един ESP8266 модул и да му накачуриш датчиците. С него ще имаш WiFi връзка и няма да ти трябва сноп кабели, нито "Едернет". За него има даже и симулатор на Ардуино!
Аз имам една системка с такъв модул и няколко I2C температурни датчика, работи си ОК.
sashot - специалист
Едернет = Ethernet + мързел да се превключва на латиница :).

Безжичната връзка в случая е добре, защото се избягва рискът от поражения на цялата система от гръм, но не съм сигурен, че мижавата антенка на модулчето ще "хвърли" сигнал през 4 ж/б плочи. Пък и как да закача аналоговите датчици на ESP8266?
Така или иначе някакъв кабел трябва да има, защото модулчето трябва да се захрани с нещо. Не че не може с батерии, ама... А дали ще е UTP или 2х0.х особена разлика няма.
Според мен правилното решение е контролерът (концентраторът) с датчиците горе и контролера долу свързани с кабел, а връзката с основната мрежа - по wifi. Така при евентуални свръхнапрежения ще изгорят само двата контролера и евентуално датчиците, но не и оборудването, навързано по основната мрежа.
Концентраторът горе може да е и PicoIP, макар цената му да е значително по-висока от комбинация Arduino clone + Еthernet модулче.
sashot - специалист
Ето какво ми роди главата дотук. Пускам го в съвсем суров вид, за обсъждане.

/* Контролер за управление на соларна система за БГВ

Дефиниране на глобални променливи:
*/

// ЧАСОВНИК
byte Sec = 0; // Секунди 0 - 59
byte Min = 0; // Минути 0 - 59
byte Hour = 0; // Часове 0 - 23
// КАЛЕНДАР
byte Day = 27; // Дата 1 - 31
byte Moon = 5; // Месец 1 - 12
byte Year = 16; // Година 00 - 99
// ДЕН ОТ СЕДМИЦАТА
byte DayOfWeek = 5; // Ден от седмицата 1 - 7 (П - Н)
// ТЕМПЕРАТУРИ КОЛЕКТОР
int TCollectorIn = 15; // Температура колектор вход C?, -55 - + 125, при DS18B20, -55 - +250 при Pt1000
int TCollectorOut = 15; // Температура колектор изход C?, -55 - + 125, при DS18B20, -55 - +250 при Pt1000
int TCollectorAlH = 95; // Горен праг на аларма по температура колектор C?. Опасност от кипене.
int TcollectorAlL = 5; // Долен праг на аларма по температура колектор C?. Опасност от замръзване. Трябва ли???
// ТЕМПЕРАТУРИ СЕРПЕНТИНА 1
int TCoil1In = 10; // Температура серпентина1 вход C?, -55 - + 125, при DS18B20
int TCoil1Out = 10; // Температура серпентина1 изход C?, -55 - + 125, при DS18B20
// ТЕМПЕРАТУРИ СЕРПЕНТИНА 2
int TCoil2In = 10; // Температура серпентина2 вход C?, -55 - + 125, при DS18B20
int TCoil2Out = 10; // Температура серпентина2 изход C?, -55 - + 125, при DS18B20
// ТЕМПЕРАТУРА БОЙЛЕР
int TTankUp = 10; // Температура бойлер горе C?, -55 - + 125, при DS18B20
int TTankCenter = 10; // Температура бойлер среда C?, -55 - + 125, при DS18B20
int TTankLow = 10; // температура бойлер долу C?, -55 - + 125, при DS18B20
int TTankAlH = 90; // Горен праг на аларма по температура бойлер C. Измерване в горната част на бойлера.
int TTankAlL = 5; // Долен праг на аларма по температура бойлер C. Измерване в долната част на бойлера.
// ТЕМПЕРАТУРНИ РАЗЛИКИ ЗА СТАРТ И СТОП НА ПОМПАТА
byte DeltaTstart = 10; // Температурна разлика колектор - бойлер за старт
byte DeltaTstop = 3; // Температурна разлика колектор - бойлер за стоп
// ТЕМПЕРАТУРИ ОКОЛНА СРЕДА, ВЛАЖНОСТ, АТМ. НАЛЯГАНЕ, СКОРОСТ И ПОСОКА НА ВЯТЪРА, ОСВЕТЕНОСТ
int TAirOut = 15; // Температура околна вън C?, - 50 - + 125 при DS18B20, 0 - + 65 при BST-BMP180 и 0 - +50 при DHT11
int TAirIn = 15; // Температура околна вътре C?, 0 - 125 DS18B20, 0 - + 65 при BST-BMP180
byte RH = 50; // Относителна влажност %, 30 - 90 DHT11
Int PAir = 100; // Атмосферно налягане в KPa, 30 - 110. BST-BMP180. Изчислява се по алгоритъм от описанието
byte WindSpeed = 0; // Скорост на вятъра m/s * 5. 0 до 51 m/s
byte WindDir = 0; // Посока на вятъра, значения 0 - 16. 0 UDef, 1 S, 2 S-SW, 3 SW, 4 W-Sw, 5 W, 6 W-NW, 7 NW, 8 N-NW,
// 9 N, 10 N-NE, 11 NE, 12 E-NE, 13 E, 14 E-SE, 15 SE, 16 S-SE
int Illuminance=1; // Осветеност Lx 1 - 65535. BH1750FVI
// ДЕБИТ НА ГЛАВНА ПОМПА, УПРАВЛ. НАПРЕЖЕНИЕ НА ГЛАВНА ПОМПА, ДАТЧИЦИ НА ДРЕНАЖЕН СЪД, АНТИЛЕГИОНЕЛА.
byte FlowLPM = 0; // Дебит литри в минута * 10, 1 - 25,5 l/m
byte SPspeed = 0; // Управляващо напрежение за помпа на соларната система в отн. единици (0 - 255 за ШИМ = 0 - 5 В)
byte DBTankLevel = 128; // Сигнал от датчии в дренажния съд. Бит 0 - съд изпразен, бит 1 - съд пълен. За ДрейнБек система - старши бит 1.
byte AntiLegionella; // АНТИЛЕГИОНЕЛА БРОЯЧ часове
// ЗАЩИТНИ ДАТЧИЦИ ПО НИВА И НАЛИЧИЕ НА ВОДА
byte PumpAlarmStop = 7; // Защита на включване на помпа. Бит 0 - липса на флуид, бит 1 - Vcc < 20В, бит 2 - Vcc > 25В, бит 3 ниско ниво флуид, 4 липса на основно захранване... Това за правотокова помпа с 24 Волтово захранване като моята.
byte TankIsFull = 0; // За защита от включване на нагреватели при липса на вода в бойлера.


Void
// Инициализация на в/и портове
//...
// Инициализация на устройства (цифрови датчици, външни модули, концентратори)
//...

}
loop {
// импулс към WatchDog
// изчитане на реално време от часовника
//...
// изчитане на значенията от датчиците и записване в глобалните променливи
//...
// проверка за алармиращи събития и действия ако има такива
//...
// проверка за условие за пускане/спиране на помпа/и и действие
//...
//Проверка за условие за включване на нагреватели за подгряване
//...
// Проверка за необходимост от аварийно охлаждане през нощта (само за класически вариант)
//...
// Проверка за условия за пускане на вътрешна и външна рециркулация и действие
//...
// проверка за условие за процедура антилегионела (алгоритъм за оптимизация от гледна точка на мин. разход на електроенергия)
//...
// изпращане на данни към дисплея
//...
// Запис на данни на SD
//...
//Изпращане на данни към сървър за натрупване на статистика на всеки кръгъл час
//...
//Проверка и обработка на заявка от клиент на web сървъра
//...
// проверка за достъп от клавиатура (или друго устройство за въвеждане, като енкодер или др.) и действие
//..
}


Макет за извеждане на данни в/у LCD2004
1 2
12345678901234567890
27/05/2016 Fri 14:16 Дата ден от седмицата час
Tc=ccc Tt=tt dT=dd P Температура колектор (изход), Температура бойлер (горе), Темп разлика мин дефинирана помпа работи 1-9 ако има място
To=oo Тi=ii Il=ll %% Температура вътре, температура вън, осветеност, КПД dT*Q*k спрямо максимално възможния каталожен добив от колектора.
Rh=hh P=aaa W=wwD-DD Влажност, атм. налягане, вятър - скорост и посока

Допълнителна индикация и визуализация

Тон - при аварийна ситуация тип сирена
- при операция с клавиатурата - бип

Индикация със светодиоди
- Авария обща - мига червено
- Вместо КПД на дисплея код авария,
- Индикация на включени ел. нагреватели зелено
- Индикация на антилегионела стерилизация мига зелено
- Индикация работеща външна рециркулация зелено
- Индикация работеща вътрешна рециркулация зелено

- Еrr.code: индицират се при аварийна ситуация на дисплея на мястото на КПД

Е0 - липса на основно захранване
Е1 - липса на вода в бойлера
Е2 - прегряване в бойлер
Е3 - прегряване на колектор
Е4 - опасност от замръзване на бойлер

F1 - липса на топлоносител
F2 - недостатъчно количество на топлоносител

P1 - свръхнапрежение на помпа
P2 - недостатъчно напрежение на помпа
P3 - неработеща помпа - недостатъчен или нулев дебит
P4 - грешни данни датчик дебит

C1 - Няма връзка с концентратора на данни
C2 - грешка в комуникацията с концентратора на данни

R1 - няма връзка с часовника за реално време
R2 - грешка при комуникация с часовника за реално време
R3 - грешни данни в часовника за реално време. необходимост от корекция

N1 - няма връзка с мрежовия модул
N2 - грешка при комуникация с мрежовия модул
N3 - грешка при свързване/изпр. на данни към сървър
N4 - грешка при свързване/изпр./приемане на данни от клиент

S1 - няма връзка с модула за SD карта
S2 - грешка при комуникация с модула за SD карта
S3 - няма SD карта
S4 - грешка при работа с SD карта


Т1 - грешни данни термодатчик колектор вход
Т2 - грешни данни термодатчик колектор изход
Т3 - грешни данни термодатчик серпентина1 вход
Т4 - грешни данни термодатчик серпентина1 изход
Т5 - грешни данни термодатчик серпентина2 вход
Т6 - грешни данни термодатчик серпентина2 изход

А1 - грешни данни термодатчик външна температура
А2 - грешни данни термодатчик вътрешна температура
А3 - грешни данни датчик относителна влажност
А4 - грешни данни датчик атм. налягане
А5 - грешни данни датчик за сила на вятъра
А6 - грешни данни датчик за посока на вятъра
А7 - грешни данни датчик осветеност


Хардуер:

Основен контролер Ардуино Мега2560 , евентуално Уно ако стигнат портове и памет. Иначе УНО с орязана версия на софтуера.
Помощен контролер (концентратор... по принцип може и без него) Ардуино Микро или Нано.
RTC, LAN, SD card модули.
Дисплей LCD 2004. Принципно може и друг със съответни корекции, но смятам че той е добър компромис.
Гледам и едни не лоши графични 320х200 на съвсем прилични цени. Ще се мисли и за тях.
Клавиатура - Видях в Али и поръчах два различни модела за с по 12 ($0.60) и с 20 ($1.19) бутона. Изглеждат симпатично и мисля, че ще са добра алтернатива на енкодера, който, разбира се, също има място.
Датчици, цитирани са в описанията на глобалните променливи. Част от тях, разбира се, са допълнителна екстра и спокойно може и без тях. Естествено може и други.
WatchDog - таймер с възможност за рестартиране и регулиране на времето за сработване. Може с 555, може и с друга основа.
Аварийно захранване - по желание, като може и само с някакво акумулаторче за Ардуиното. Може и без.



Чакам мозъчен щурм :)
engineer - специалист
Екстра.
Сега ако драснеш и тръбната схема ще се нагласят нещата. Върху схемата бива да отбележиш кой параметър къде се мери. За твое улеснение може да ползваш направо името на ползваната променлива.
sashot - специалист
Прикачен файл:
shema datchici.jpg
shema datchici.jpg (27.24 KиБ) Видяна 3097 пъти
Така изглеждат нещата с разположението на датчиците според мен.

Замислих се за датчиците, регистриращи наличие на флуид в системата и вода в бойлера ("осезатели" за наличие на течност).
Поплавъчни - абусрд. Най-добре ми изглежда да са електронни. Електрод вътре в бойлера през изолираща втулка и после мерене на проводимост между него и корпуса.
От какво да е втулката? Първото, което ми дойде наум - тапа ППР. Обаче работната температура на ППР е, според фирмените каталози, макс. 60 градуса, а в бойлера може и трябва да се вдигат повече. В топлопреносния флуид - още повече, така че ППР е под съмнение дали ще издържи. Другият вариант стругар да изработи тапа от тефлон или текстолит.
Някакви идеи?
  • 1
  • 2

Тема "Форумна разработка - контролер за слънчева система." | Включи се в дискусията:


Сподели форума:

Бъди информиран. Следвай "Направи сам" във Facebook:

Намери изпълнител и вдъхновения за дома. Следвай MaistorPlus във Facebook: