Regulator ogrevanja s pomočjo Arduino

V tem delu bomo začetnikom milostno odpuščali vse grehe in jim pomagali, da svoje prve projekte pripeljejo do uspešnega konca

Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 28 Apr 2015, 14:48

Zadnjih nekaj mesecev (uh je že pol leta) se med drugim ukvarjam tudi z izgradnjo regulatorja ogrevanja.
Kar se programiranja tiče poznam samo osnove C++. Z malo googlanja in primerov ter seveda z vašo pomočjo mi počasi uspeva dokončati krmilnik za centralno ogrevanje (prototip je trenutno na eksperimentalni ploščici zraven peči.

Lansko leto sem se prvič spustil v arduino vode in sem prav tako z vašo pomočjo naredil prvi termostat za solarne kolektorje. Res da je enostaven vendar uporaben.
Testna verzija termostata na experimentalni ploščici:

Končna verzija:


Cilj tega je bil vse skup narediti s čim manj stroški in materialom, ki se najde doma.

Minulo zimo pa sem začel delati en malo večji projekt. Krmiljenje treh črpalk, dveh mešalnih ventilov en preklopni ventil in en običajni ventil, časovni modul ter nekaj senzorjev. Seveda bi lahko vse parametre nastavljal preko displeja v programu ali preko pametnega mobilnika ampak mi žal trenutno znanje programiranje to ne dopušča zato sem zadevo poenostavil s z nekaj zunanjimi stikali. Seveda pa sem v naprej pripravil navigacijske tipke s katerimi se bo lahko tudi parametre nastavljajo v samem programu.
Sam regulator bo predvsem skrbel za pravilno delovanje peči, polnjenje in praznjenje zalogovnika, segrevanje delavnice in pošiljanje ustrezne temp. vode za potrebe ogrevanja hiše (v hiši bo za ostalo ogrevanje poskrbela tovarniška regulacija).

Za tiste kateri pa preveč ne zaupajo tehnologiji in računalnikom pa sem pripravil še ročno upravljanje vseh obtočnih črpalk in motornih pogonov.
Spodaj prilagam sliki trenutnega stanja regulatorja. Sedaj čakam RTC modul in GX16-4 konektorje.
Z GX16-4 konektorji bodo v omarico priklopljene vse izmenične naprave (motorni pogoni in črpalke). S tem bom lahko v primeru remonta ali kakšne večje nadgradnje celotno omarico hitro in enostavno odstranil.

Med čakanjem elementov še v programu dodajam nekatere bonbončke in izboljšave in zato odpiram tudi temo za zelo dobrodošlo vašo pomoč in nasvete.

IMG_0225.JPG

IMG_0227.JPG
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 01 Maj 2015, 22:51

V mojem programu stalno berem temperaturo iz DS senzorjev. Pri tem uporabljam 12 bitno resolucijo. Le ta se je pri branju tipk izkazala, kot slabost saj branje tipke zahteva določen čas, ki pa postane nadležen. Če uporabim 7 bitno resolucijo ali manj, branje tipke poteka še dokaj solidno. Vseeno pa bi rad to branje tipk pohitril in pri tem obdržal višjo resolucijo.

Spremljal sem temo Zakaj je delay v glavni zanki nezaželjen in kako brez tega.
Program z enim senzorjem deluje odlično. V program za preverjanje konverzije bi rad vključil vse moje senzorje kateri so vezani na en digitalni pin. Za vsak senzor imam definiran naslov senzorja takole:
Koda: Izberi vse
DeviceAddress senzor1 = {
  0x28, 0x27, 0x40, 0x0A, 0x6, 0x0, 0x0, 0x0E };
DeviceAddress senzor2 = {
  0x28, 0x6B, 0x7B, 0xD3, 0x5, 0x0, 0x0, 0x84};
DeviceAddress senzor3 = {
  0x28, 0x53, 0x3, 0xE6, 0x5, 0x0, 0x0, 0x52};
.
.
.

Zanima me, kako se več senzorjev z naslovi vključi v spodnji program:
Koda: Izberi vse
#include <OneWire.h>  // for temp sensor
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x26, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#define TEMP_SENSOR_PIN  12  // D12

OneWire tempSensor(TEMP_SENSOR_PIN);

// configure temp sensor to 12bit resolution

void tempSensorConfig(OneWire &tempSensor) {
  tempSensor.reset();
  tempSensor.skip();      // ROM skip command
  tempSensor.write(0x4E); // Write Scratchpad command
  tempSensor.write(0x00); // Th register, ignore
  tempSensor.write(0x00); // Tl register, ignore
  tempSensor.write(0x7F); // Config register: resolution 12bit
}

// this function starts a temperature conversion process

void tempStartMeasurement(OneWire &tempSensor) {
  tempSensor.reset();
  tempSensor.skip();      // ROM skip command
  tempSensor.write(0x44); // start temp conversion
}
 
// Read previosuly measured/converted temperature from a sensor.
// Call it around one second after a measurement for fresh result
// 12bit result is read from sensor in two bytes

float tempReadTemperature(OneWire &tempSensor) {
  float temp;
  byte first, second, a;
  int ttemp=0;
  tempSensor.reset();
  tempSensor.skip();      // ROM skip command
  tempSensor.write(0xBE); // read Scratchpad
  first = tempSensor.read();
  second = tempSensor.read();
  temp = float(int(second & 0x07) * 256 + first) / 16;
  if (second >> 3) { // upper 5 bits of next byte are a sign
    temp = temp-128.00;
  }
  return temp;
}
void setup(void) {
  Serial.begin(9600);
  Wire.begin();
  lcd.begin(20, 4);
  tempSensorConfig(tempSensor);
  Serial.println("Branje temperature");
  Serial.println();
  tempStartMeasurement(tempSensor);
}
void loop(void) {
  if (tempSensor.read()) //to sem dodal in pojasnil v tekstu. Ta OneWire Funkcija vrne byte samih 0 (0s), če je DS zaseden s konverzijo, drugače vrne same enke (1s)
  {
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.setCursor(7, 1);
  lcd.print(tempReadTemperature(tempSensor));
  tempStartMeasurement(tempSensor);
 }
}
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 08 Maj 2015, 14:00

Kot sem že omenil bi rad motorne pogone, črpalke in glavno napajanje v sam krmilnik (dozo) priključil preko GX16-4 konektorjev. Od konektorjev do končnega porabnika boo med tem še 3 stikala in rele. Je je vredu imeti tolko prekinitev. Kar lahko storim je da ne vgradim priključnih konektorjev...
Kaj predlagate?
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a cimabella » 08 Maj 2015, 19:20

Pojma nimam, imaš pa kot običajno mojo moralno podporo ;)
Včasih človeku bolje služi sreča kot pamet.
cimabella
 
Prispevkov: 513
Pridružen: 23 Jan 2015, 16:49
Kraj: Gorenjska
Zahvalil se je: 53 krat
Prejel zahvalo: 428 krat
Uporabnika povabil: Nace
Število neizkoriščenih povabil: 80

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 08 Maj 2015, 21:19

cimabella je napisal/-a:Pojma nimam, imaš pa kot običajno mojo moralno podporo ;)


Če ni druge je ta vedno dobrodošla!
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a rafaellsi » 08 Maj 2015, 21:49

dkulcar je napisal/-a:Kot sem že omenil bi rad motorne pogone, črpalke in glavno napajanje v sam krmilnik (dozo) priključil preko GX16-4 konektorjev. Od konektorjev do končnega porabnika boo med tem še 3 stikala in rele. Je je vredu imeti tolko prekinitev. Kar lahko storim je da ne vgradim priključnih konektorjev...
Kaj predlagate?


Po mojem nestrokovnem mnenju mora zadeva za take manjše porabnike funkcionariti tudi prek več prekinitev. Sam sem sicer podobno zadevo reševal tako, da stanje stikal berem z kontrolerjem (Arduino) in potem kontroler, glede na prebrane vrednosti stikal, vklaplja rele (samo ena prekinitev). Je pa res, da ti na tak način lahko zelo hitro zmanjka pinov na kontrolerju. Na ta način lahko tudi definiraš pogoje za vklope posameznega sklopa.

Branje DS18.... senzorjev imam rešeno tako, da v zanki ob določenem času pošljem vsem senzorjem zahtevo za pripravo podatkov, in po preteku nastavljenega časa za konverzijo te podatke preberem z vseh senzorjev v zelo kratkem času, in ne čakaš vsakega senzorja posebej. To je omenjeno že v temi, ki si jo omenil v prvem postu.....
rafaellsi
 
Prispevkov: 373
Pridružen: 19 Jan 2015, 01:44
Kraj: Gorenjska
Zahvalil se je: 15 krat
Prejel zahvalo: 37 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 40

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a tilz0R » 09 Maj 2015, 23:34

Glede branja DS, lahko narediš tako kot je predhodnik povedal, ali narediš po "moji" metodi:

Pošlješ vsem "Start measurement" komando z OneWire komando, da sporočiš vsem naenkrat, ter nato delaš ostale stvari in preverjaš, če je OW pin na 1. Če je, so vsi senzorji končali s pretvorbo (razen, če jih imaš v passive mode, potem mora bit pin vedno 1 med konverzijo, drugače je low, če je vsaj eden aktiven na liniji).
Ko je pin na 1, preberi podatke, jih pretvori in takoj začni novo konverzijo.

To zgoraj vse velja samo, če ti je hitrost temperature dejansko pomembna. Če rabiš 1-2 vzorca/minuto, potem se s tem ni potrebno ukvarjat.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1476
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 190 krat
Prejel zahvalo: 362 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 27 Avg 2015, 18:10

Te dni mi je uspelo priklopiti omarico na omrežje.
Tukaj se mi je pojavil en problem.
Kar nekaj časa sem iskal in končno našel, kaj mi povzroča probleme na DS senzorjih, da mi le ti izpisujejo vrednost -127.
Problem povzroča 12V napajalnik iz ebaya:
http://www.ebay.com/itm/AC-TO-DC-12V-1A ... 540f544de8

Ko sem priklopil preko enega drugega kitajskega napajalnika so motnje izginile.

Je na omenjeni napajalnik možno dograditi kakšen dušilec motenj?
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a Peter123 » 28 Avg 2015, 07:21

Motnje so načeloma lahko sledeče:
Preko RF. Tu pomaga sama oddaljenost ali mnogo bolje kovinska kletka, ki je po možnosti še ozemljena. Nekateri kitajski napajalniki začnejo šele čez nekaj časa špricat.

Preko bakra. Tu ponavadi pomaga vezava pi filtra: elko - dušilka - elko.

Ker si zadevo realiziral s pomočjo prototipnih modulov boš po vsej verjetnosti naletel še na kak problem.
Peter123
 
Prispevkov: 852
Pridružen: 09 Feb 2015, 14:20
Kraj: 1117 Lj.
Zahvalil se je: 18 krat
Prejel zahvalo: 112 krat
Uporabnika povabil: jmivsek
Število neizkoriščenih povabil: 23

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dumr666 » 30 Avg 2015, 12:27

mene zanima pa nekaj drugega, kako si zadovoljen z releji? Še vedno vsi delujejo?
Robots will steal your job. But that's OK
Uporabniški avatar
dumr666
 
Prispevkov: 365
Pridružen: 23 Jan 2015, 15:38
Kraj: Ljubljana
Zahvalil se je: 44 krat
Prejel zahvalo: 41 krat
Uporabnika povabil: forest70
Število neizkoriščenih povabil: 7

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 31 Avg 2015, 23:45

@Peter123, hvala za pomoč. Na fazo in nulo sem vezal kondenzator in ju speljal preko tuljave. Sedaj deluje vredu brez motenj.

@dumr666, releji od lanske zime in do sedaj delujejo brez problema. Sedaj so pa montirani novi. Bom videl kako dolgo bodo delovali.

lp, David!
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a arksi » 01 Sep 2015, 07:13

dkulcar je napisal/-a:@Peter123, hvala za pomoč. Na fazo in nulo sem vezal kondenzator in ju speljal preko tuljave. Sedaj deluje vredu brez motenj.
..............lp, David!


Kolikšen in kakšen kondenzator, ter kakšno tuljavo si uporabil za tale tvoj RC člen proti motnjam?

LP
arksi
 
Prispevkov: 480
Pridružen: 21 Jan 2015, 08:01
Kraj: Dolenjska
Zahvalil se je: 550 krat
Prejel zahvalo: 84 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 11

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 01 Sep 2015, 09:01

kondenzator in tuljavo sem pobral iz enega drugega napajalnika. Kondenzator je bil folijski 0,1uF 250V, od tuljave pa ne vem podatka.
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 10 Okt 2015, 15:36

No pa se je že pojavil ta drugi problem.
Problem nastane spet pri senzorjih. Ko prižgem svetilko z dvema neonskima cevema mi senzorji izpišejo vrednost -127. Je tukaj kakšna rešitev?
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a damo » 10 Okt 2015, 17:19

Sem imel podoben problem, pri startu gorilca. Zadevo sem rešil tako, da ko berem temperaturo iz senzorjev, v primeru da preberem -127, počakam sekundo in preberem še enkrat. In tako največ 3 poskuse. Po tem dela bp.
Dobrga štromarja samo slab šnops strese.
damo
 
Prispevkov: 562
Pridružen: 18 Jan 2015, 08:18
Kraj: okolica KK
Zahvalil se je: 46 krat
Prejel zahvalo: 71 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 17

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 31 Okt 2017, 23:00

Živjo,

Danes sem naletel na en problem s senzorji.
Po formatiranju sem pozabil shraniti knjižnice s katerimi je moj program deloval. Sedaj sem nekako našel knjižnice ampak zgleda ne popolne.

Problem je sledeč.
Imam DS senzorje vezane na eno žico. Imam 10 senzorjev. Do sedaj mi je delovalo vseh 10 senzorjev. Po posodobitvi mi program noče zaznati več senzorjev in mi ne prebere temperatur. Če en del senzorjev odklopim se mi pokažejo temperature. V kombinaciji vseh 10 pa se nočejo.

Je problem v knjižnici? drugega problema ne vidim.
Vsakršna pomoč je zelo dobrodošla saj mi drugače centralna ne dela :evil:
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a arksi » 02 Nov 2017, 11:53

dkulcar je napisal/-a:..........Problem je sledeč.
Imam DS senzorje vezane na eno žico. Imam 10 senzorjev. Do sedaj mi je delovalo vseh 10 senzorjev. Po posodobitvi mi program noče zaznati več senzorjev in mi ne prebere temperatur. Če en del senzorjev odklopim se mi pokažejo temperature. V kombinaciji vseh 10 pa se nočejo.

Je problem v knjižnici? drugega problema ne vidim.
Vsakršna pomoč je zelo dobrodošla saj mi drugače centralna ne dela :evil:


Če ti je prej delovalo, potem je, verjetno, problem s knjižnicami. Lahko pa, da je ravno sedaj crknil kakšen DS in dela "štalo" na 1Wire vodilu. Poizkusi odklapljat posamezni DS in boš mogoče lociral defekt. Enkrat je o tem že pisal Vilko na elektronik.si.
arksi
 
Prispevkov: 480
Pridružen: 21 Jan 2015, 08:01
Kraj: Dolenjska
Zahvalil se je: 550 krat
Prejel zahvalo: 84 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 11

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 02 Nov 2017, 20:53

6-7 senzorjev je delovalo pravilno, ko pa sem priklopil še kakšnega dodatnega pa je kazal same nule.
Po poldnevnem ukvarjanju in iskanju vzroka problema sem končno uspel rešiti. Namestil arduino 1.6.9 in vanj vstavil nekaj shranjenih knjižnic. Po večkratnem nameščanju in iskanju knjižnic mi je le uspelo, da mi je prepoznalo vse senzorje.

Problem je v novi knjižnici in novem programu 1.8.5. V čem je fora to nevem. Mogoče bo kdo od vas vedel razložiti...
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a damo » 09 Dec 2017, 08:46

meni se v codeblocks dopade ker vkljucim v projekt vse knjiznice ki jih potrebujem in stvar dela. Ko cez par let odprem projekt, hocem takratne delujoce knjiznice in ne najnovejsih ki ni nujno da delajo.
Dobrga štromarja samo slab šnops strese.
damo
 
Prispevkov: 562
Pridružen: 18 Jan 2015, 08:18
Kraj: okolica KK
Zahvalil se je: 46 krat
Prejel zahvalo: 71 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 17

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a dkulcar » 29 Sep 2018, 21:39

Začela se je kurilna sezona in s tem novi problemi na moji avtomatiki. Avtomatiko sem povezal na zasilno napajanje preko inverterja. Problem je sledeč. Ko preklopim na napajanje iz inverterja mi ds senzorji nočejo merit. Ali nič ne izmerijo ali pa kažejo neko naključno vrednost. V čem je lahko problem?
dkulcar
 
Prispevkov: 90
Pridružen: 18 Feb 2015, 14:24
Kraj: Lendava
Zahvalil se je: 4 krat
Prejel zahvalo: 20 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 2

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a Peter123 » 30 Sep 2018, 08:36

Poizkusi s dodajanjem elektrolita na napajanje.
ALi pa dodajanjem keramike blizu DS senzorja.
Peter123
 
Prispevkov: 852
Pridružen: 09 Feb 2015, 14:20
Kraj: 1117 Lj.
Zahvalil se je: 18 krat
Prejel zahvalo: 112 krat
Uporabnika povabil: jmivsek
Število neizkoriščenih povabil: 23

Re: Regulator ogrevanja s pomočjo Arduino

OdgovorNapisal/-a vilnev77 » 30 Sep 2018, 13:11

Mogoče pa tudi maso napajanja arduinota na ozemljitev (ali vodovod) preko kondenzatorja 47nF ali pa direktno. Ne vemo pa kakšen inverter je v uporabi.
vilnev77
 
Prispevkov: 18
Pridružen: 29 Apr 2016, 09:10
Kraj: Mengeš
Zahvalil se je: 0 krat
Prejel zahvalo: 6 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 6


Vrni se na Elektronika za začetnike

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost