|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
overload Član
Pridružen-a: Tor 23 Jun 2015 10:30 Prispevkov: 71 Aktiv.: 0.67
|
Objavljeno: Čet Okt 27, 2016 2:26 pm Naslov sporočila: Diferenčni regulator |
|
|
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.
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 ) + LCD display 20x4 + vezje s 4 releji. |
|
Nazaj na vrh |
|
|
Peter Član
Pridružen-a: Sre 30 Jun 2004 12:55 Prispevkov: 375 Aktiv.: 1.69 Kraj: Pod krvavcem nekje
|
Objavljeno: Čet Okt 27, 2016 8:38 pm Naslov sporočila: |
|
|
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 |
|
|
ecobra Član
Pridružen-a: Pet 27 Jun 2014 14:16 Prispevkov: 310 Aktiv.: 2.61 Kraj: Radeče
|
Objavljeno: Čet Okt 27, 2016 8:48 pm Naslov sporočila: |
|
|
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 |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5766 Aktiv.: 25.97 Kraj: Grosuplje
|
Objavljeno: Čet Okt 27, 2016 9:35 pm Naslov sporočila: |
|
|
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 |
|
|
solomojster Član
Pridružen-a: Tor 18 Maj 2010 12:26 Prispevkov: 845 Aktiv.: 5.01 Kraj: NOVA GORICA
|
Objavljeno: Pet Okt 28, 2016 12:28 pm Naslov sporočila: |
|
|
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 |
|
|
overload Član
Pridružen-a: Tor 23 Jun 2015 10:30 Prispevkov: 71 Aktiv.: 0.67
|
Objavljeno: Pet Okt 28, 2016 4:33 pm Naslov sporočila: |
|
|
Hvala, bom malo pregledal in preizkusil te zadeve. |
|
Nazaj na vrh |
|
|
rkulcar2 Član
Pridružen-a: Sre 21 Feb 2007 23:15 Prispevkov: 120 Aktiv.: 0.58 Kraj: Lendava
|
Objavljeno: Sre Nov 02, 2016 11:41 am Naslov sporočila: |
|
|
Ž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 |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5766 Aktiv.: 25.97 Kraj: Grosuplje
|
Objavljeno: Sre Nov 02, 2016 1:57 pm Naslov sporočila: |
|
|
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 |
|
|
rkulcar2 Član
Pridružen-a: Sre 21 Feb 2007 23:15 Prispevkov: 120 Aktiv.: 0.58 Kraj: Lendava
|
Objavljeno: Sre Nov 02, 2016 2:07 pm Naslov sporočila: |
|
|
Nismo nič kaj konkretno pisali. Sem pa o stvareh spraševal po raznih temah. Konkretno ni bilo nič predstavljeno. |
|
Nazaj na vrh |
|
|
hamm Član
Pridružen-a: Sob 27 Okt 2012 21:47 Prispevkov: 216 Aktiv.: 1.55 Kraj: Mengeš
|
Objavljeno: Sre Nov 02, 2016 2:30 pm Naslov sporočila: |
|
|
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 |
|
|
rkulcar2 Član
Pridružen-a: Sre 21 Feb 2007 23:15 Prispevkov: 120 Aktiv.: 0.58 Kraj: Lendava
|
Objavljeno: Pon Nov 07, 2016 9:55 pm Naslov sporočila: |
|
|
@hamm, super! Bom se čez zimo kaj učil. |
|
Nazaj na vrh |
|
|
|
|
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
|