Arduino schéma - arduino.sk

Regulátor solárního ohřevu v. 1.0

Kompletné projekty s návodom a zdrojovým kódom
Obrázok užívateľa
Príspevky: 64
Registrovaný: Str 30. Okt 2013 18:21:18
Bydlisko: ČR

Regulátor solárního ohřevu v. 1.0

Poslaťod Diego » Uto 24. Dec 2013 14:09:35

Pokud si člověk pořídí bazén, určitě po nějaké době začne pokukovat po solárním ohřevu. A když už má i solární ohřev, začne uvažovat jak nejefektivněji řídit čerpadlo pro co nejlepší vytápění.

Pro tento účel jsem vyrobil tento regulátor.

Regulátor funguje velice jednoduše:

čte teploty z čidel umístěných v bazénu a v solárním panelu

zobrazuje aktuální teplotu na LCD displeji

spíná čerpadlo pokud je teplota v panelu vyšší než teplota v bazénu, o nastavený rozdíl nebo více

vypíná čerpadlo pokud je teplota panelu stejná nebo nižší než teplota bazénu

Obrázok

Kód: Vybrať všetko
#include <DallasTemperature.h>
#include <OneWire.h>
#include <LiquidCrystal.h>

// Datová linka na pin 8
OneWire oneWire(8);

//LED dioda na pin 13
int led = 13;

//relé na pin 12
int rele = 12;

//rozdíl teplot při kterém sepne relé
int rozdil = 20;

// Prom?nné teplot
float Tbazen;
float Tpanel;

// Nastavení 1-wire
DallasTemperature sensors(&oneWire);

//Adresy čidel
DeviceAddress BAZEN = { 0x28, 0x1F, 0xBD, 0xCB, 0x04, 0x00, 0x00, 0xF1 };
DeviceAddress PANEL = { 0x28, 0x60, 0x67, 0xCE, 0x04, 0x00, 0x00, 0x2F };

//zapojení LCD - 7=RS; 6=Enable; 5=D4; 4=D5; 3=D6; 2=D7
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

//vytvoření znaku pro stupeň
byte degree[8] = {
B00111,
B00101,
B00111,
B00000,
B00000,
B00000,
B00000,
B00000
};

void setup(){

//vypni čerpadlo
digitalWrite(rele,HIGH);

//nastavení typu LCD - 16 znaků, 2 řádky
lcd.begin(16, 2);

//vytvoření znaku pro stupeň
lcd.createChar(0, degree);

sensors.begin();
//nastavení rozlišení
sensors.setResolution(BAZEN, 10);
sensors.setResolution(PANEL, 10);


pinMode(led, OUTPUT);
pinMode(rele, OUTPUT);
//demo
lcd.setCursor(0, 0);
lcd.print("Regulator bazenu");
lcd.setCursor(0, 1);
lcd.print(" v. 1.0 ");

delay(3000);

lcd.setCursor(0, 0);
lcd.print(" autor: ");
lcd.setCursor(0, 1);
lcd.print(" Michal Dlabka ");

delay(3000);

lcd.setCursor(0, 0);
lcd.print("elektronika2011 ");
lcd.setCursor(0, 1);
lcd.print(" .ic.cz ");

delay(3000);
}

void loop(){

sensors.requestTemperatures();

//načtení teplot z čidel
Tbazen = sensors.getTempC(BAZEN); //teplota bazenu
Tpanel = sensors.getTempC(PANEL); //teplota panelu

//smaž LCD
lcd.clear();

lcd.setCursor(0, 0); //nastav první řádek
lcd.print("Bazen:");
lcd.print(Tbazen); //teplota bazenu
lcd.write((byte)0);
lcd.print("C");


lcd.setCursor(0, 1); //nastav druhý řádek
lcd.print("Panel:");
lcd.print(Tpanel); //teplota panelu
lcd.write((byte)0);
lcd.print("C");

if (Tbazen >= Tpanel) //pokud je teplota bazénu stejná nebo v?tší než teplota panelu, pak
{
digitalWrite(rele, HIGH); //vypni čerpadlo
digitalWrite(led, LOW); //zhasni diodu
}

Tbazen = Tbazen + rozdil; //k teplot? bazénu přičti požadovaný rozdíl

if (Tpanel >= Tbazen) //pokud je teplota panelu v?tší než teplota bazénu + rozdíl, pak
{
digitalWrite(rele, LOW); //zapni čerpadlo
digitalWrite(led, HIGH); //roži diodu
}


delay(1000); //čekej 1s


}


Jak je vidět zapojení je velmi jednoduché. Popis pinů u MCU je proveden dvakrát s tím že, popisky uvnitř platí přímo pro MCU a popisky vně patří pro piny Arduino UNO. LCD displej jsem použil 2x16 znaků ale je možné použít jakýkoliv se standardním řadičem HD44780, jen se musí provést úprava programu. Pokud má displej podsvícení, lze ho zapojit také (ve schématu není zakresleno). LED dioda signalizuje spuštění čerpadla programem. Pokud je potřeba spustit čerpadlo manuálně, stačí přepnout přepínač AUT/MAN do polohy MANuál a následně spouštět čerpadlo vypínačem MAN. Napájecí zdroj je použitý hotový z USB nabíječky. Teplotní čidla DS18B20 jsou použitá ve vodotěsném provedení, kabel nastavený dle potřeby a opatřena konektorem JACK pro připojení.

Celkové napájení regulátoru a tím i čerpadla je vhodné provést přes proudový chránič.

Snažil jsem se o řádné okomentování takže by neměl být problém s přehledností. Nastavení rozdílové teploty (int rozdil = xx) bude nejspíš třeba upravit dle konkrétní funkčnosti. Adresy čidel musíte změnit podle vlastních čidel.

Obrázok

Obrázok

Obrázok


http://www.elektronika2011.cz
Naposledy upravil Diego dňa Pon 11. Jan 2016 18:32:59, celkovo upravené 2

Obrázok užívateľa
Príspevky: 300
Registrovaný: Pon 19. Nov 2012 12:01:08
Bydlisko: HC/BA

Re: Regulátor solárního ohřevu v. 1.0

Poslaťod tomXX » Str 25. Dec 2013 16:35:50

Ahoj, užitočná vec, ale myslím že dokonca tak jednoduchá, že by išla realizovať aj z diskétnych súčiastok, nejaký jednoduchý komparátor. Ja sa chystám použiť na "hotové" projekty takéto niečo, vyjde to lacnejšie ako samotný ATMEGA328P-PU - http://www.ebay.com/itm/200957063666 , prípadne aj verzia ktorá má priamo USB port - http://www.ebay.com/itm/310634777706

Pekné sviatky prajem ;)
blog.sitepoint.sk - zaujímavé riešenia okolo Arduina

Príspevky: 89
Registrovaný: Uto 03. Jún 2014 21:48:35
Bydlisko: Košice Slovakia

Re: Regulátor solárního ohřevu v. 1.0

Poslaťod kosice4 » Uto 03. Jún 2014 21:55:43

Diego veľmi dobré a praktické.
Zatiaľ bez display, ale funguje skvelo :)
Ďakujem za pomoc posjirka, Diego, Xeram a barado :)

Príspevky: 89
Registrovaný: Uto 03. Jún 2014 21:48:35
Bydlisko: Košice Slovakia

Re: Regulátor solárního ohřevu v. 1.0

Poslaťod kosice4 » Sob 21. Jún 2014 21:15:42

Už aj s 16*2 display, chodí krásne, super vec :D
Ďakujem Diego :)
Ďakujem za pomoc posjirka, Diego, Xeram a barado :)

Obrázok užívateľa
Príspevky: 64
Registrovaný: Str 30. Okt 2013 18:21:18
Bydlisko: ČR

Re: Regulátor solárního ohřevu v. 1.0

Poslaťod Diego » Ned 22. Jún 2014 9:22:45

Jsem rád že někdo využije můj nápad ;-)

Príspevky: 26
Registrovaný: Ned 17. Mar 2013 3:11:53

Re: Regulátor solárního ohřevu v. 1.0

Poslaťod sampler » Uto 01. Júl 2014 16:28:37

Ahoj Diego, riesim nieco podobne. V mojom pripade chcem ovladat ventil obtoku, kedze pieskova filtracia mi ide 24hod denne, jedine co by som rad ovladal je ten ventil, aby sa pri slnecnom pocasi isiel obtok cez solarnu plachtu a pri skaredom pocasi isla len samotna filtracia, kedze prechodom cez plachtu sa voda ochladzuje. Zatial riesim len odosielanie aktualnej teploty na free sluzbu xively, co mi uz funguje, nefunguju mi len desatinne miesta pri teplote. Viac v projekty vo faze vyvoja. http://arduino.sk/viewtopic.php?f=4&t=108&sid=36e2a7a1d1572d940236c69bf3f6a788 Marek

Späť na Hotové projekty