|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
sscott Član
Pridružen-a: Pet 10 Jul 2009 12:11 Prispevkov: 1133 Aktiv.: 6.29 Kraj: Medvode
|
Objavljeno: Čet Maj 23, 2019 5:12 pm Naslov sporočila: arduino termostat pomoč |
|
|
Napisal sem enostaven program za lm335 termostat. (LM35 ni dovolj stabilen)
termostat ima histerezo 5 stopinj, da se ne vklaplja in izklaplja brez veze
na displeju lepo vidim temperaturo, izhod vklaplja in izklaplja solid state rele.(trenutno led dioda)
vse ok do tukaj
Na displaju bi rad indikacijo kdaj je grelec vklopljen (*) in kdaj ne ( ).
Ta znak bi imel pred izmerjeno temperaturo, vendar zadeva ne dela.
Mučim se že par ur, pa ne uspem. Iščem vašo pomoč
LP
Opis: |
|
Velikost datoteke: |
2.12 MB |
Pogledana: |
20 krat |
|
|
|
Nazaj na vrh |
|
|
sscott Član
Pridružen-a: Pet 10 Jul 2009 12:11 Prispevkov: 1133 Aktiv.: 6.29 Kraj: Medvode
|
Objavljeno: Čet Maj 23, 2019 5:13 pm Naslov sporočila: |
|
|
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
#define LM335 1 // LM335 input pin is connected to Arduino A0 pin
int relay = 10; // yellow led - thermostar relay
int tempMin = 35; // relay on, histereza 5 stopinje
int tempMax = 40; // relay off, histereza 5 stopinje
int tempC;
void setup() {
pinMode(relay, OUTPUT);
lcd.begin(20,4);
}
void loop()
{
tempC = analogRead(LM335) * 0.489 - 273; // Read analog voltage and convert it to Celsius
if(tempC > tempMax) // if temp is higher than tempMax
{
digitalWrite(relay, LOW); // turn off relay
}
if(tempC < tempMin) // if temp is lower than tempMin
{
digitalWrite(relay, HIGH); // turn on relay
}
lcd.setCursor(0,0); // set cursor to 1 line
lcd.print(" LM335 THERMOSTAT");
lcd.setCursor(0,2); // move cursor to 3 line
lcd.print(" WATER TEMP: ");
lcd.print(tempC); // display the water temp
lcd.print((char)223);
lcd.print("C");
delay(200);
lcd.clear();
}
|
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Čet Maj 23, 2019 6:19 pm Naslov sporočila: |
|
|
Koda: |
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
#define LM335 1 // LM335 input pin is connected to Arduino A0 pin
int relay = 10; // yellow led - thermostar relay
int tempMin = 35; // relay on, histereza 5 stopinje
int tempMax = 40; // relay off, histereza 5 stopinje
int tempC;
byte stanjeOUT; // Stanje izhoda
void setup() {
pinMode(relay, OUTPUT);
lcd.begin(20,4);
}
void loop()
{
tempC = analogRead(LM335) * 0.489 - 273; // Read analog voltage and
convert it to Celsius
if(tempC > tempMax) // if temp is higher than tempMax
{
digitalWrite(relay, LOW); // turn off relay
stanjeOUT = 0;
}
if(tempC < tempMin) // if temp is lower than tempMin
{
digitalWrite(relay, HIGH); // turn on relay
stanjeOUT = 1;
}
lcd.setCursor(0,0); // set cursor to 1 line
if(stanjeOUT == 1)
{
lcd.print(" LM335 THERMOSTAT");
}
else
{
lcd.print(" LM335 thermostat");
}
lcd.setCursor(0,2); // move cursor to 3 line
lcd.print(" WATER TEMP: ");
// sem prestavi celoten if in else z "*" oziroma " " za izpis.
lcd.print(tempC); // display the water temp
lcd.print((char)223);
lcd.print("C");
delay(200);
// lcd.clear();
} |
Tisti celoten
if(stanjeOUT == 1) {....} else {....}
prestavi tam, kjer bi rad izpisal zvezdico "*" ob vklopljenem grelcu oziroma presledek " " ob izklopljenem grelcu.
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
sscott Član
Pridružen-a: Pet 10 Jul 2009 12:11 Prispevkov: 1133 Aktiv.: 6.29 Kraj: Medvode
|
Objavljeno: Čet Maj 23, 2019 6:41 pm Naslov sporočila: |
|
|
super
probam in sporočim če dele
|
|
Nazaj na vrh |
|
|
Jaka57 Moderator
Pridružen-a: Ned 12 Dec 2004 21:47 Prispevkov: 5773 Aktiv.: 25.90 Kraj: Grosuplje
|
Objavljeno: Čet Maj 23, 2019 6:48 pm Naslov sporočila: |
|
|
Takole:
(stanjeOUT==1) ? lcd.print("*") : lcd.print(" ") ;
_________________ Lp, Jaka |
|
Nazaj na vrh |
|
|
sscott Član
Pridružen-a: Pet 10 Jul 2009 12:11 Prispevkov: 1133 Aktiv.: 6.29 Kraj: Medvode
|
Objavljeno: Čet Maj 23, 2019 7:08 pm Naslov sporočila: |
|
|
hvala obema
dela tako kot sem želel
pozabil sem seveda
byte stanjeOUT; // Stanje izhoda
Je pa to moj prvo programiranje za arduinotom, tako da, me čaka še veliko učenja
|
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Čet Maj 23, 2019 8:48 pm Naslov sporočila: |
|
|
Za začetek preuči tole:
https://www.arduino.cc/reference/en/
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Pet Maj 24, 2019 12:00 am Naslov sporočila: |
|
|
Prej sploh nisem gledal slike ...
Ledice ne smeš priklopiti direktno na 5 V brez predupora
Odspajkaj (A) stran (ko pogledaš ledico od strani, je (A) mala trikotna ploščica, (K) stran pa velika trapezna ploščica) od obeh ledic dol z letvice in dodaj vmes nek upor med 270 in 1k ohm, kar imaš pri roki.
Imaš precejšnjo srečo, da nisi uničil izhoda
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
sscott Član
Pridružen-a: Pet 10 Jul 2009 12:11 Prispevkov: 1133 Aktiv.: 6.29 Kraj: Medvode
|
Objavljeno: Pet Maj 24, 2019 7:25 am Naslov sporočila: |
|
|
hvala za opozorilo
vem da led rabi predupor, vendar ker vse delam z smd nimam klasičnih uporov pri roki.
verjetno imajo pini iz arduinota neko omejitev toka
LP
|
|
Nazaj na vrh |
|
|
solomojster Član
Pridružen-a: Tor 18 Maj 2010 12:26 Prispevkov: 845 Aktiv.: 4.98 Kraj: NOVA GORICA
|
Objavljeno: Pet Maj 24, 2019 1:11 pm Naslov sporočila: |
|
|
Arduino že ima vgrajeno led diodo na pinu 13. Je večkrat uporabljena ravno takrat, ko nimaš uporov
Int relay =13
Kako pa enostavo narediti simbol ,tako da prikaže stanje vrtenja. Recimo obtočne črpalke ? (Ponazoritev vetrnice na enostaven način z črkami ali simboli)
|
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.04
|
Objavljeno: Pet Maj 24, 2019 9:22 pm Naslov sporočila: |
|
|
Lahko marediš svoje znake za prikaz na 5x7 (išči: Arduino LCD own characters). Za razločevanjem med utripanjem in vrtenjem morajo biti vsaj trije različni znaki. + in x nista dovolj.
Lahko pa se malo sprehodiš po ASCII tabeli in to narediš kot so to počeli nekoč s štirimi znaki:
I / - \ I / - \
Spreminjaš en števec
if(pogoji_so_izpolnjeni)
{
CrpalkaDelaStevec++; // 0, 1, 2, 3, 4, 1, 2, 3, 4, 1, ...
CrpalkaDela = 1;
}
else
{
CrpalkaDelaStevec = 0;
CrpalkaDela = 0;
}
if(CrpalkaDelaStevec > 4) CrpalkaDelaStevec = 1; // 1, 2, 3, 4, 1, 2, ...
in glede na vrednost izpišeš znak:
0x73 (0)
0x73 (1)
0x2F (2)
0x2D (3)
0x5C (4)
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
solomojster Član
Pridružen-a: Tor 18 Maj 2010 12:26 Prispevkov: 845 Aktiv.: 4.98 Kraj: NOVA GORICA
|
Objavljeno: Pet Maj 24, 2019 10:54 pm Naslov sporočila: |
|
|
Hvala Igo.
S tem se še nisem ukvarjal. Sem našel tole. Mogoče bi poskusil s trikotnikom.
|
|
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: 73 dni
Powered by phpBB © 2001, 2005 phpBB Group
|