www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Diferenčni regulator

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
overload
Član
Član



Pridružen-a: Tor 23 Jun 2015 10:30
Prispevkov: 71
Aktiv.: 0.67

PrispevekObjavljeno: Čet Okt 27, 2016 2:26 pm    Naslov sporočila:  Diferenčni regulator Odgovori s citatom

Pozdravljeni

Ima kdo kakšno preverjeno "kodo" za izdelavo diferenčnega termostata s pomočjo Arduina? Se pravi klasika - tipanje dveh temperatur (DS18B20), nastavitev diference, omejitev zgornje temperature (kot pri solarnem ogrevanju bojlerja)

Rad bi tudi prikaz temperatur in stanje releja na 20x4 LCD zaslonu.

Ali pa če je kdo pripravljen za kakšen honorarček, potem na ZS.Whistle

Glede na to, da sem energetik, mi je uspelo s pomočjo gugla poiskati le adrese DS18B20 senzorjev, kaj dlje pa zaradi premalo časa nisem poskušal.

Aja, imam pa trenutno Arduino UNO (ponaredek seveda Laughing ) + LCD display 20x4 + vezje s 4 releji.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Peter
Član
Član



Pridružen-a: Sre 30 Jun 2004 12:55
Prispevkov: 375
Aktiv.: 1.69
Kraj: Pod krvavcem nekje

PrispevekObjavljeno: Čet Okt 27, 2016 8:38 pm    Naslov sporočila:   Odgovori s citatom

Zdravo
Tule poglej če ti kaj pride prav.

LP Peter

_________________
Vse se da pokvarit, le če se dovol časa ukvarjaš z njo!!!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ecobra
Član
Član



Pridružen-a: Pet 27 Jun 2014 14:16
Prispevkov: 310
Aktiv.: 2.61
Kraj: Radeče

PrispevekObjavljeno: Čet Okt 27, 2016 8:48 pm    Naslov sporočila:   Odgovori s citatom

Ali pa tukaj je tudi nekaj podobnega. Na googlu je veliko SW ja za arduino spisanega.
l.p.

_________________
Luna sije, pa ne greje.
Piška pije, pa ne šči...
Uzdaj se use i svoje kljuse.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Čet Okt 27, 2016 9:35 pm    Naslov sporočila:   Odgovori s citatom

Mislim, da je to naredil že naš forumaš, vendar sam tega ne najdem.
Končni izdelek je bil pa zelo ličen!

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
solomojster
Član
Član



Pridružen-a: Tor 18 Maj 2010 12:26
Prispevkov: 845
Aktiv.: 5.01
Kraj: NOVA GORICA

PrispevekObjavljeno: Pet Okt 28, 2016 12:28 pm    Naslov sporočila:   Odgovori s citatom

Koda:



    /*Solar hot water differential controller.  Uses Dallas Onewire bus for the temperature
 sensors.  Turns on pump via digital output hooked to a relay for high voltage switching of circulator pump.

 */


 #include <OneWire.h>
 #include <DallasTemperature.h>
 
 #include <PCD8544.h>
 //These first three variables are where the adjustments are made.

 //set maximum tank temperature in F
 int tankmax = 140;

 //set how much higher collector temperature should be, in F, before turning on pump
 int diff = 13;

 //Turn off pump whan temp is within this many degrees of the collector
 



 //set up pins for lcd display
 

 // Set input pin for onewire bus
 #define ONE_WIRE_BUS 10

 // Setup a oneWire instance to communicate with any OneWire devices
 OneWire oneWire(ONE_WIRE_BUS);

 // Pass our oneWire reference to Dallas Temperature.
 DallasTemperature sensors(&oneWire);

 //The thermometers are identified by their unique identifier

 byte tanktopThermometer[8] = {0x10, 0x5A, 0x6A, 0xD0, 0x01, 0x08, 0x00, 0x6A};//prepiši tvoje vrednosti.......

 byte collectorThermometer[8] = {0x10, 0x08, 0x98, 0xD0, 0x01, 0x08, 0x00, 0x0F};


 //set pin for pump relay
 int pump = 3;

 //set pin for led pump indicator
 int pumpLed = 13;
 int pumpstate;
 
 static PCD8544 lcd;

 //_______________________________________________________________________________________________________



 void setup ()
 {
   lcd.begin(84,48);
   //start serial port
  
   
 
   // Start up the onewire library
   sensors.begin();
 
 // locate devices on the bus
  
  
  Serial.print(sensors.getDeviceCount(), DEC);
 

  // report parasite power requirements
  

  // set the sensor resolution from 9 to 12 bit
  sensors.setResolution(tanktopThermometer, 9);
  sensors.setResolution(collectorThermometer, 9);
 
 
  //set pins to output
  pinMode (pump, OUTPUT);
  pinMode (pumpLed, OUTPUT);
 
 
  }

 //____________________________________________________________________________________________________________

 //functions that reads temp from sensors and returns as floating point value.

 float sensorValue (byte deviceAddress[])
 {
 float tempC = sensors.getTempC (deviceAddress);
 
 tempC;
 
 }


 //________________________________________________________________________________________________________________

 void loop ()
 {
 delay(2000);
 
  
  //get all sensor values
  sensors.requestTemperatures();
  lcd. clear();
  //set variables
   
  lcd.setCursor (0,0);
  lcd.print ("dnevna ");
  lcd.setCursor (0,1);
  lcd.print ("zunaj");
  lcd.setCursor (0,4);
  lcd.print ("crpalka");
 
  Serial.println(pumpstate);
  lcd.setCursor (50,4);
  lcd.print (pumpstate);
  
  
  
  
  
  
  float tank = (sensorValue(tanktopThermometer));
  float collector = (sensorValue(collectorThermometer));
 
 
  //prints temperature values to serial port and lcd
  
  
   
 
 
  lcd.setCursor (40,0);
  lcd.print (collector);
  lcd.print (" C");
  
  
  
  
  
 
  lcd.setCursor (40,1);
  lcd.print (tank);
  lcd.print (" C");
  
  
  
    
  
  
 
 
   /*turns on pump when collector is (diff) degrees above tank.
  and tank is below (tankmax) temperature.
  once pump turns on, pumpstate variable turns to "1" and causes pump to remain
  on as long as collector temp is higher than tank temp.
  If max tank temp is reached, pump always turns off.*/
 
  if (  ( (collector - diff) > tank ) && ( tank < tankmax ) )       
 {digitalWrite (pump, HIGH); digitalWrite (pumpLed, HIGH);pumpstate =1;  }
   
   
  else
     {digitalWrite (pump,LOW); digitalWrite (pumpLed,LOW); pumpstate = 0; }     
     
 
   
     
  delay(1);
 
 
}





Tale deluje z lcd nokia. Poglej priklope lcd-ja na spletu. V vrstici int diff= 13 spreminjaš diferenco.
priklop lcd-ja; nokia 5110
To use this sketch, connect the eight pins from your LCD like thus:
*
* Pin 1 -> +3.3V (rightmost, when facing the display head-on)
* Pin 2 -> Arduino digital pin 3
* Pin 3 -> Arduino digital pin 4
* Pin 4 -> Arduino digital pin 5
* Pin 5 -> Arduino digital pin 7
* Pin 6 -> Ground
* Pin 7 -> 10uF capacitor -> Ground
* Pin 8 -> Arduino digital pin 6
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
overload
Član
Član



Pridružen-a: Tor 23 Jun 2015 10:30
Prispevkov: 71
Aktiv.: 0.67

PrispevekObjavljeno: Pet Okt 28, 2016 4:33 pm    Naslov sporočila:   Odgovori s citatom

Hvala, bom malo pregledal in preizkusil te zadeve.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
rkulcar2
Član
Član



Pridružen-a: Sre 21 Feb 2007 23:15
Prispevkov: 120
Aktiv.: 0.58
Kraj: Lendava

PrispevekObjavljeno: Sre Nov 02, 2016 11:41 am    Naslov sporočila:   Odgovori s citatom

Živjo,

Jaz sem se pred časom lotil podobne zadeve. To je bil moj prvi Arduino projekt. Nekaj osnov programiranja sem imel iz srednje šole ampak, kaj če takrat to ni bilo zanimivo in nisem kaj dosti odnesel. Zato sem moral začeti znova. Iskal sem primere in postopoma dodajal vsako stvar posebej. Najprej LED, sledil je izpis napisa na LCD, dodajanje senzorja in izpis temperatur, stikala, potenciometri in tako sem prišel do končnega izdelka. V sledečem je še za meritev temperature uporabljen LM35.

https://www.youtube.com/watch?v=HlvU_6S-07g

Žal še vedno pa neznam narediti menija, da bi lahko s pomočjo tipk spreminjal vrednosti. Upam da mi to kdaj uspe osvojiti.

lp, David!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Sre Nov 02, 2016 1:57 pm    Naslov sporočila:   Odgovori s citatom

rkulcar2 je napisal/a:
...Jaz sem se pred časom lotil podobne zadeve.......
Ali je to ta zadeva, o kateri smo pisali tudi na forumu in je ne najdem?
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
rkulcar2
Član
Član



Pridružen-a: Sre 21 Feb 2007 23:15
Prispevkov: 120
Aktiv.: 0.58
Kraj: Lendava

PrispevekObjavljeno: Sre Nov 02, 2016 2:07 pm    Naslov sporočila:   Odgovori s citatom

Nismo nič kaj konkretno pisali. Sem pa o stvareh spraševal po raznih temah. Konkretno ni bilo nič predstavljeno.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
hamm
Član
Član



Pridružen-a: Sob 27 Okt 2012 21:47
Prispevkov: 216
Aktiv.: 1.55
Kraj: Mengeš

PrispevekObjavljeno: Sre Nov 02, 2016 2:30 pm    Naslov sporočila:   Odgovori s citatom

rkulcar2 je napisal/a:

Žal še vedno pa neznam narediti menija, da bi lahko s pomočjo tipk spreminjal vrednosti. Upam da mi to kdaj uspe osvojiti.

lp, David!


To se najlažje realizira s končnim avtomatom stanj (finite state machine). Jaz sem naredil tako, da je vsak menu svoje stanje.
Zadevo lahko realiziraš na 2 načina: en je s switch-case stavki, kar prinese veliko vrstic kode, je pa az začetnika lažje razumljivo, drugi način pa je s tabelo kazalcev na funkcije, ki se kličejo ob spremembi stanja.
Tule je lep primer za switch-case način:

http://coder-tronics.com/msp430-state-machine-project-pt1/
http://coder-tronics.com/msp430-state-machine-project-pt2/

S kazalci:
http://johnsantic.com/comp/state.html

Predvsem se je treba zadeve lotiti počasi in preudarno, v smislu da najprej na papirju narišeš vsa možna stanja in dogodke, ter povezave med njimi. Šele nato se shemo pretvori v kodo.

lp
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
rkulcar2
Član
Član



Pridružen-a: Sre 21 Feb 2007 23:15
Prispevkov: 120
Aktiv.: 0.58
Kraj: Lendava

PrispevekObjavljeno: Pon Nov 07, 2016 9:55 pm    Naslov sporočila:   Odgovori s citatom

@hamm, super! Bom se čez zimo kaj učil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Arduino sekcija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group