duinozone.cz - Arduino a Raspberry fórum

Autor Téma: Nastavnie hysterezi na spinanie rele  (Přečteno 7119 krát)

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #15 kdy: Prosinec 26, 2016, 11:31:12 dopoledne »
navic se mi pomalu ztrácí přehled v tom kodu. Opakuješ dokola stejne postupy pro zobrazení teploty.
neříkám, že je to špatně, jen se v tom začínám trochu ztrácet (když to vidím 1x za týden).
Asi bych zvolil jinou variantu. Představ si tabulkové řešení. 1 řádek = 1 řádek LCD.
typcidlopopishodnotajednotkystav rele
10x28, 0xFF, 0xAF, 0x77, 0x55, 0x16, 0x03, 0xD0UK25*C1
1 0x28, 0xFF, 0xAE, 0x2A, 0x55, 0x16, 0x03, 0x58AN22*C0

kde typ by byl :
typ - typ zobrazení (1 třeba pro teplotu, 2 stav rele,...)
cidlo - adresa cidla
popis - popisek
hodnota - aktualni hodnota
jednotka - v jakych jednotkach
stav rele - stav příslušneho rele

no co řádek, to 1 řádek na LCD. Co 1 sloupec to 1 pole (po1 rozměru, nebo můžeš použit vše pro 1 pole o 2 rozměrech))

Když bys použil toto, tak stačí jen procházet jednotlivé řádky a můžeš je libovolně rozšiřovat.

Navíc pro optimalizaci paměti, můžeš, nektéré pevné části zapsat do EEPROM a pak je jen číst.
K tomu by to asi chtělo rozšíření o číslo pinu rele, a mezní hodnoty sepnutí, ... to nechám na tobě.
Nic ti nevnucuju, jen je to návrh.
« Poslední změna: Prosinec 26, 2016, 11:39:02 dopoledne od posjirka »

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #16 kdy: Prosinec 26, 2016, 13:48:36 odpoledne »
Hm len to menu lcd.println("*C");  sum skusal aj tak ako uvadzas , ale robi to stale skorej si myslim ci by som to nemal definovať niekde inde , aby som jasne urcil na tejto pozícii v prvom a druhom riadku budes ukazovat *C .
len problem je v tom že to zacalo robit az po tom ked som do podmienok hysterzie  pridal lcd.print("*C"); tak ako v iných kodoch co si robim .
tak si myslím že či to nemá na to plyv nejaký.

 digitalWrite(8,HIGH);
               lcd.setCursor(10,1);
               lcd.print("  ON ");      // sem ked som to pridal

lcd.setCursor(0,0); //prve cidlo funkcne
  lcd.print("UK: ");
  displayTemperature(Probe01);
  lcd.print("*C");   // tu ked to nahram takto tak  to blbne .
idem urobit resset PC  a vyskusam to  este raz         
tak som to skusil nahrat este raz takto  a v hornom riadku sa *C zjavilo oneskorene
a ked sa preplo rele do stavu on tak na konci riadku  kde je on pribudla *

 
« Poslední změna: Prosinec 26, 2016, 14:00:15 odpoledne od drawtt »

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #17 kdy: Prosinec 26, 2016, 13:59:12 odpoledne »
nojo, ty taky napíšeš "UK"
zavoláš  displayTemperature(Probe01);
 - přečteš teplotu,
 - dáš podmínku sepnuti rele
vrátíš se zpět na loop a
napíšeš "*C"


:)

to je právě o čem mluvím, začínáš si komplikovat život a ztrácíš přehled.

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #18 kdy: Prosinec 26, 2016, 14:02:53 odpoledne »
aha no skusim to teda urobit podla tvojho navrhu ze to definujem rovno za cidlami, az to teda zase nepokazím  a aspon sa to naucím  :)

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #19 kdy: Prosinec 27, 2016, 13:23:23 odpoledne »
ještě jeden dotaz. Vím, že použití více čidel na 1 one wire sběrnici je normální, ale nemusí to být vždy to nejlepší řešení. Když použije co čidlo to 1 pin, mužeš si jednoduše ověřit že čidlo je správně zapojené, nepotřebuješ znát jeho adresu a při změně čidla (když se poruší) nemusíš nahrávát nový program. :)
jde o to, jeslti máš dost volných pinů a paměti. U Arduino Mega nebude rozhodně žádný problém, u Uno by už mohl být problém při použití LCd, které zabere piny i pměť. .... jen návrh

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #20 kdy: Prosinec 27, 2016, 13:55:29 odpoledne »
Nad tým som uvažoval, ale pripájam cidlá cez dallas temperature modul a  toto udelátko chcem pre úsporu miesta pripojiť na arduino nano  tak tam by asi bol problem .
to druhé  väčšie už budem pripínat, zrejme na piny.
inak skusal som  tie *C ale nakoniec som to  vykoumal tak že som ich  odstránil od  cidiel a dal som ho rovno mod lcd a ide to . len neviem cije to najlepsie riesenie..

//---------------- Initialize the lcd ------------------ 
       lcd.begin (16,2); // 16 x 2 LCD module
       lcd.setBacklightPin(3,POSITIVE); // BL, BL_POL
       lcd.setBacklight(HIGH);

       
       lcd.setCursor(8,0);
       lcd.print("*C");

      lcd.setCursor(8,1);
      lcd.print("*C");

možno by to šlo aj do jedného riadku , ale keď som to pridal  tak spodné *C sa stratili, tak som to vrátil tak ako je to v ukázke

este som sa chcel spýtat či by nebolo dobré pridat podmienku prekúrenia  UK  povedzme 95 stC a spustí led , alebo bzuciak . Myslíš že by som mohol k tým spodným podmienkam hysterezie pridať aj alarmovú ?
« Poslední změna: Prosinec 27, 2016, 14:44:01 odpoledne od drawtt »

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #21 kdy: Prosinec 27, 2016, 17:43:02 odpoledne »
to víš že můžeš přidat další podmínku. Na to je arduino přímo stavěné, stejně jako různá smart relé.
Myslím, že to začínáš brát za špatný konec.Ujasni si co potřebuješ. nemyslím teď vývoj programu, ten je samozřejmý. Spíš udržet koncept, tak aby fungoval. Různá dodělátka a natvrdo umístěné vsuvky (*C) by ti mohli pozdeji způsobit problémy. Zrovna *C ne ale když si na tyto řešení zvykneš budeš je pak používat i v programech a tam pak budeš mít bordel.
Vezmem to trochu z gruntu. Automatizace by malě fungovat asi takto:
1. počáteční nastvavení
2. nekonečná smyčka
3. měření všech hodnot
4. Vyhodnocení všech podmínek a proceů
5. regulace / úprava výstupů
6. Zobrazení hodnot
7. návrat na bod 2.

Zkus se těhle bloků držet. Nejdřív si změř všechny teploty a ulož si je do proměnných.
uprav si následné proměnné dle podmínek a procesů a nastav podle nich vstupy/výstupy/alarmy/...
pak teprve začni řešit zobrazení na LCD, až když máš všechny hodnoty změřené, ustálené a pohromadě.
Ty totiž měříš teplotu, hned jí chceš zobrazit, pak řešíš hysterezi teplot, ... je v tom zmatek.
na začátku bych ti doporučil obyčejný seriový výstup (monitor) pro výpis hodnot/menu.
Když to dáš dohormady pro seriový port tak LCD už je hračka.
Nepoceňuj ani silu LED diod. U výstupních relé se indikace pomocí LEd idody přímo nabízí, nic tě to nestojí a vý hned kde je co sepnuté.
Nakonec se dostaneš do malé krabičky cca 20x30 cm s LCD displayem  a řadou LED diod, se zdrojem a vývodkami :)
Stejně jako většina lidí
http://www.engineersgarage.com/contribution/dtmf-controlled-home-automation-system-using-8951
a je třeba se na to dívat už z pohledu celku. Jak se to bude tvářit, obsluhovat, udržovat, opravovat. a tím se vracím zpátky ke kodu. Musí mu udržet přehled, jinak budeš v pytli. Zkus to te´d zabalit a vrátit se ke kodu za měsíc nebo klidne i jen za 14 dni. týden budeš zkoumat jak to vlastně funguje....

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #22 kdy: Prosinec 27, 2016, 17:45:26 odpoledne »
jen nezapomen na bezpečnost. oddělení výkonnové a měřící části  je lepší udělat s rezervou. stačí malá pavučinka a troch avlhkosti a na teplotním čidel máš 230V visících ve vzduchu... trochu předbíhám ale když už jsem se tak rozjel tak a´t na to pak nezapomenu.

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #23 kdy: Prosinec 27, 2016, 18:01:31 odpoledne »
jasne to chapem , ale zaciatky su tazke. :)
takze v skratke
 tento obvod by mal v plnom nasadení a definitívne robiť nasledovné
1 merat teplotu z dvoch miest ú prvá len kontrolná, druhá výkonová , spína relé
2 možnosť nastaviť hysterezu externe a nie v kode ,na to mam lcd aj z tlacitkami , zatial ho nezapajam lebo cakam na arduino nano,a pravdu povediac to zatal asi nezvladam ani /
3 v prípade prehriatia kotla UK ma o tom informovať  napr bzučiak, alebo led dioda kde je zasa hystereza 95 st a -5 stC
4  transmiterom prenasat  tieto udaje na dalsi displej do domu, aby som nemusel stale chodit do pivnice
a to je vsetko co od tohoto modulu ocakavam.

samozrejme uznavam ze to este neviem ako ty a velmi ocenujem tvoje rady , rád sa ucím a tieto udelátka ma bavia a vzhladokm k tomu ze 20r spravujem siete a ine PC blbiny co uz ma nebavi tak tomuto by som sa chcel venovať . ale vidim že sa musim velmi vela este ucit

tak pre zaciatok by mi stacilo vybastlit tento projekt /* a uz aj za tvojej vydatnej pomoci / a ked bude vycistení a dobre urobený bude mi slúzit aj ako model ako postupovať pretože podobné projekty musim urobiť ešte tri , aby som dom zautomatizoval tak ako potrebujem.

každopádne keby ti to nevadilo mohol by som sem este raz vlozit moj aktuálny kod a ze by si  ho  skusil upravit tak ako to vidis ty a popr okomentoval kde som mal ake chyby to by mi asi pomohlo najviac.

co sa týk toho státia to je asi pravda treba oddych od toho a aj tak cakám na súdruhov s číny na transmiter, nano, bzuciak a LCD 16x2 i2C kde uz ja i2c naletovane zakže len trpezlivost  :)  a potom by som to chcel dat dokopy , teraz vyrábam krabicku.

aha este posledna otázka : ked dam cidlo k nádrzi a povedzme nameria hodnotu napr 22 sc ale relana hodnota vody je povedzme 24 st  , strata na obale nadrze ako tuto hodnotu pridan/22+2/=24 priamo v kode , lebo aj kotol na pevne palivo ma snimac az na vystupe teplej vody ale najvyssia teplota je v prvom clanku  takze rozdiel moze byť aj 10 st C ?

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #24 kdy: Prosinec 27, 2016, 21:39:15 odpoledne »
rozdíl teploty může být i tím, žes ho jen ponořil a odečetl. Pro ustálení teploty je třeba tak 2-3 minuty ideálně 5-10 aby byl na stejné teplotě jako má okolí.
s tím kodem ti můžu zkusit pomoct, Zkusím se ti na ten kod podívat ale časově jsem na tom špatně. Teď ještě dělám teploměr pro hlídání kotele (aktuální teplota + alarm při přehřátí).
Už jsem se na to 2 roky snažil dostat :).
Pozor na I2C má max dostah okolo 1m!!! doufám, že ten LCD necheš dát někam daleko....

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #25 kdy: Prosinec 27, 2016, 23:57:19 odpoledne »
no radši jsem to vzal hned ať na to nezapomenu:
Kód: [Vybrat]
// Regulace kotle
// duinozone.cz
// by drawtt & JP
// v1
// change log>
// v1
// - uprava originalniho programu na zakladni bloky (sber dat, vyhodnoceni, nastaveni vystupu, zobrazeni na LCD)
// - komentare

// knihovny
#include <OneWire.h> // *** kde jsi vzal knihovnu sem napis adresu kde jsi ji stahnul a jako verzi
#include <DallasTemperature.h> // *** kde jsi vzal knihovnu sem napis adresu kde jsi ji stahnul a jako verzi
#include <LCD.h> // *** kde jsi vzal knihovnu sem napis adresu kde jsi ji stahnul a jako verzi
#include <LiquidCrystal_I2C.h>  // *** kde jsi vzal knihovnu sem napis adresu kde jsi ji stahnul a jako verzi

// konstanty
#define ONE_WIRE_BUS 2    // pin ONE WIRE sbernice
#define RELE 8 // pin regulacniho rele
#define ALARM 9 // pin bzucaku alarmu *** dopln si spravny pin
#define setTEPLOTA A0 // analogovy pin nastaveni teploty rele *** nastav si jak potrebujes
#define setTEPLOTAmin 20 // nastaveni rozsahu teploty sepnuti - minimum  *** nastav si jak potrebujes
#define setTEPLOTAmax 40 // nastaveni rozsahu teploty sepnuti - maximum *** nastav si jak potrebujes
#define setHYSTEREZE A1 // analogovy in nasteveni hysterze teploty *** nastav si jak potrebujes
#define setHYSTEREZEmin 1 // nastaveni rozsahu hystereze teploty sepnuti - minimum *** nastav si jak potrebujes
#define setHYSTEREZEmax 10 // nastaveni rozsahu hystereze teploty sepnuti - maximum *** nastav si jak potrebujes
#define setALARM A2// analgovy pin nastaveni teploty alarmu *** nastav si jak potrebujes
#define setALARMmin 50 // nastaveni rozsahu teploty alarmu - minimum *** nastav si jak potrebujes
#define setALARMmax 100 // nastaveni rozsahu teploty alarmu - maximum *** nastav si jak potrebujes

// instance objektu
OneWire oneWire(ONE_WIRE_BUS); // instance sbernice ONE WIRE
DallasTemperature sensors(&oneWire); // instance cidel DS18B20
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7); // 0x27 0x3F is the default I2C bus address of the backpack-see article // instance LCD displaye

 // promenne
DeviceAddress Probe01 = { 0x28, 0xFF, 0xAF, 0x77, 0x55, 0x16, 0x03, 0xD0 }; // 1.cidlo "4"      28 FF AF 77 55 16 3 D0
DeviceAddress Probe02 = { 0x28, 0xFF, 0xAE, 0x2A, 0x55, 0x16, 0x03, 0x58 }; // 2.cidlo "5"      28 FF AE 2A 55 16 3 58
int Tprobe1 = 0; // teplota 1.cidla
int Tprobe2 = 0; // teplota 2.cidla
int nastavenaTeplota = 0; // teplota sepnnti rele
int nastavenaHystereze = 0; // hystereze vypnuti rele
int Talarm = 0; // nastavena teplota alarmu
int chyba = 0; // promena pro indikaci chyby  - 0(V PORADKU), 1(CHYBI CIDLO 1), 2(CHYBI CIDLO 2)
int screen = 1; // cislo obrazovky
int screenMAX = 2; // pocet obrazovek

void setup() {
  sensors.begin(); // zavedeni teplotnich cidel
 
  lcd.begin (16,2); // zavedeni LCD displaye
  lcd.setBacklightPin(3,POSITIVE); // nastaveni LCD - BL, BL_POL
  lcd.setBacklight(HIGH); // zapunti podsviceni

  pinMode(RELE, OUTPUT); // pin RELE jako výstup
  digitalWrite(RELE, LOW); // vypni RELE
  pinMode(setTEPLOTA, INPUT); // pin jako vstup - nastaveni teploty
  pinMode(setHYSTEREZETE, INPUT); // pin jako vstup - nastaveni hystereze
  pinMode(setALARM, INPUT); // pin jako vstup - nastaveni alarmu
}
void loop(){
  // nulovani promennych
  Tprobe1 = 0; // teplota 1.cidla
  Tprobe2 = 0; // teplota 2.cidla
  chyba = 0; // promena pro indikaci chyby  - neni cidlo

  // ziskani dat / mereni
  sensors.requestTemperatures(); // Posiela príkaz na získaie teplot
  Tprobe1 = int(sensors.getTempC(Probe01)); // mereni teplotu 1.cidla
  if (Tprobe1 == -127) chyba = 1; // kontrola zapojeni cidla
  Tprobe2 = int(sensors.getTempC(Probe02)); // mereni teplotu 2.cidla
  if (Tprobe2 == -127) chyba = 2; // kontrola zapojeni cidla

  // ziskani nastaveni z trimru
  nastavenaTeplota = map(analogRead(setTEPLOTA), 0, 1023, setTEPLOTAmin, setTEPLOTAmax); // nastaveni teploty sepnti rele - cteni trimru a rozlozeni podle min/max
  nastavenaHystereze = map(analogRead(setHYSTEREZE), 0, 1023, setHYSTEREZEmin, setHYSTEREZEmax); // nastaveni hystereze teploty sepnti rele - cteni trimru a rozlozeni podle min/max
  Talarm = map(analogRead(setALARM), 0, 1023, setALARMmin, setALARMmax); // nastaveni teploty alarmu - cteni trimru a rozlozeni podle min/max

  // regulace/podminky
  if (chyba == 0) { // pokud nenastala chyba mereni
    if (Tprobe2 > nastavenaTeplota) digitalWrite(RELE,HIGH); // prekroceni nastavene teploty 2.cidla = sepnuti RELE
    if (Tprobe2 < (nastavenaTeplota - nastavenaHystereze)) digitalWrite(RELE,LOW); // teplota 2.cidla spadla pod nastavenou teplotu-hystereze = vypnuti RELE
    if (Tprobe1 > Talarm){
      digitalWrite(ALARM,HIGH); // prekroceni nastavene teploty 1.cidla = sepnuti alarmu
    } else {
      digitalWrite(ALARM,LOW); // neprekroceni nastavene teploty 1.cidla = vypnuti alarmu
    }
  } else { // nastala chyba mereni
    digitalWrite(RELE,LOW); // vypni RELE
    digitalWrite(ALARM,HIGH);// sepni ALARM
    delay(200); // cekej 200ms
    digitalWrite(ALARM,LOW);// vypni ALARM
  }

  // zobrazeni na LCD
  if (chyba == 1) { // pokud nastala chyba mereni 1
    lcd.clear(); // smaz LCD
    lcd.setCursor(0,0); // nastav kurzor 
    lcd.print("CHYBA CIDLA 1");
  }
  if (chyba == 2) { // pokud nastala chyba mereni 2
    lcd.clear(); // smaz LCD
    lcd.setCursor(0,0); // nastav kurzor 
    lcd.print("CHYBA CIDLA 2");
  }
  if (chyba == 0) { // pokud nenastala chyba mereni
    // rozdeleni po obrazovkach
    switch (screen) {
      case 1:
        //  1 obrazovka
        //    0123456789012345
        //    UK : 120*C ALARM
        //    NAST.: 50*C
        lcd.clear(); // smaz LCD 
        lcd.setCursor(0,0); // nastav kurzor 
        lcd.print("UK: ");
        lcd.print(Tprobe1);
        lcd.print("*C");   
        if (digitalRead(ALARM) == HIGH) lcd.print("ALARM"); // zobrazeni alarmu na LCD
        lcd.setCursor(0,1); // nastav kurzor 
        lcd.print("NAST.: ");
        lcd.print(Talarm);
        lcd.println("*C");
        break;
      case 2:
        //  2 obrazovka
        //    0123456789012345
        //    AN : 30*C RELE
        //    NAST.: 30/28*C
        lcd.clear(); // smaz LCD 
        lcd.setCursor(0,0); // nastav kurzor 
        lcd.print("UK: ");
        lcd.print(Tprobe2);
        lcd.print("*C");   
        if (digitalRead(RELE) == HIGH) lcd.print("RELE"); // zobrazeni alarmu na LCD
        lcd.setCursor(0,1); // nastav kurzor 
        lcd.print("NAST.: ");
        lcd.print(nastavenaTeplota);
        lcd.println("/");
        lcd.print(nastavenaTeplota - nastavenaHystereze);
        lcd.println("*C");
        break;
      default:
        screen = 1; // pro jistotu
      break;
      screen++ ; // dalsi obrazovka
      if (screen > screenMAX) screen = 1; // ochrana proti preteceni poctu obrazovek
    }
  }
  delay(2000); // pauza 2s
}

Tam kde jsou *** tam jsou moje poznamky, nebo je třeba to nastavit podle tvých představ.
rozišeni teploty na více na je základ je hloupost. čidlo má toleranci 0,5st.C a větší rozlišení získá jen tak, že udělá víc vzorků a způrměruje jej. Nic co by přinášelo nějáký užitek.
Použil jsem nataveni pomocí 3 trimrů, které připojíš mezi zem, +5V a jezdce připojíš na příslušný analogový pin. Tím si mžeš nastavit co potřebuješ, bez tlačítek a bez úprav programu.
navíc máš proměnnou "chyba", která registruje chyby cidel.
Obrazovky se přepínají sami po 2 sekundách a zobrazují vždy samotné hodnoty + reakci(alarm/rele) a nastaveni trimru. Když trimri nezapojíš nastaví se vše na nejmenší hodnotu.
Je třeba doplnit kde jsi vzal knihovny (***) jinak je ten kod pro mě nečitelný, protože nevím kde stáhnout knihovny.
Každopádně je třeba to otestovat, mě to hází že nemám knihovny, tak to ani mlžu otestovat....
Je to můj rychlý návrh teď sesmolený a určitě bude třeba jej ještě dopřesnit.
každopádně je myslím použitelný a měl by splnit většinu tvých požadavků.
Je třeba tam vyřešit co s tím, když selžou čidla. Já jsem dal vypnout RELE, ale nemyslím si , že je to správné řešení.
Při chybě ti krátce sepne alarm, zatím co při překročení teploty je alarm sepnutý pořád.
je na tobě jestli se ti ho použiješ nebo ne.
je na tobě jestli se ti ho použiješ nebo ne.

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #26 kdy: Prosinec 28, 2016, 09:47:37 dopoledne »
K tomuto :
rozlišeni teploty na více na je základ je hloupost. čidlo má toleranci 0,5st.C a větší rozlišení získá jen tak, že udělá víc vzorků a způrměruje jej....

tu sme sa asi zle pochopili ja nechcem aby cidla vyhodnocovali naviac ale jednoducho k jeho teploto pripocitam  rozdiel medzi jeho teplotou a skutočnou teplotou kotla , lebo ako som povedal rozdiel medzi snimanim terajsieho termostatu a teplomeru ktorý je zabudovany priamo v kotli .

2. ako si to myslel s tym  napetim 230V ze pri vlhkosti preskoci cez relatko ci ? lebo dallas temp mam waterprof a idu do objimok  mosaznych vlozit...

3. Nepochopil som I2C na LCD ma dosah 1m ? Ja to chcem n apojit na uno a tam vysielač transmiteru no a nad pivnicou je obyvacka tam umiestnim druhy displej pripevneny na une a prijimač transmiteru. a ten dosah bude mat aj teraz na dialku vplyv ?

4 no a teraz idem studovat tvoj upraveny kod v1 na co sa tesím ,  :) info podam hned ako ho prelusknem ..

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #27 kdy: Prosinec 28, 2016, 09:53:11 dopoledne »
studujem kod  fíííha  dobrééé az sa hambím za svoj vypatlany

este poprosim o info aky hodnotu trimru by som mal kupit lebo doma nemam ale zaskocim do elektra pre  potrebny kus

Offline drawtt

  • Bastlíř začátečník
  • *
  • Příspěvků: 48
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #28 kdy: Prosinec 28, 2016, 10:20:50 dopoledne »
kniznice uz neviem odkial su ale tu som ich ulozil mozes si ich stiahnut

 http://uschovna.zoznam.sk/D1342688511914-EjFvEAASltQfLPfjQSIv

Offline posjirka

  • Zkušený bastlíř
  • ****
  • Příspěvků: 433
Re:Nastavnie hysterezi na spinanie rele
« Odpověď #29 kdy: Prosinec 28, 2016, 15:36:51 odpoledne »
add rozliseni. spatne se chapeme az ted. v puvodnik kodu jsi mel nastane rozliseni na 10 bitu coz je 0.25st C. to zbytecne zdrzuje pri mereni teploty. kdyz ma cidlo presnost 0.5 st C je zbytecne cekat delsi cas jen kvuli prumerovani teplot. zvlast kdyz potrebujes cele stupne.
add 2 kdyz mas rele ktere spina 230v a nemas dobre udelanu tistak (universalni nebo nedodrzis vzdalenost ci osetreni povrchu) tak se ti tam muze dostat vlhkost ktera muze udelat most mezi silovych 230v a bezpecnou casti 5v. tady opravdu opatrne a radsi pouzij orig moduly i kdyby z ciny.
add 3 i2c neboli twi sbernice je jak svoji povahou tak rychlost omezena pro pouziti na vetsi vzdalenosti. myslim vzdalenost procesoru a lcd po dratech. spolehlive je cca 1m dratu/kabelu pak je treba snizovat rychlost sbernice a to arduino moc nepodporuje. proc vlastne pouzivas i2c? nerikej ze mas malo pinu. to musi v pohode dat i nano. v aktualnim stavu mas 1pin pro cidla 2 piny pro rele mel bys 5 pinu pro lcd a 2/3 piny pro nastaveni. to je velkem 11 pinu. z toho 2/3 analogove.
add 4 nemas se zac stydet. proste si rozsiroval zaklad a me to pod ruku prislo jako polotovar. to se hned lip programuje. jeste bych tam dal novy znak st.C at nemusis davat * bude to lip vypadat. pro nastaveni bych doporucil trimry 10k lezate 10mm nebo 7.5mm roztec. dokonce muzes udelat to ze trimr bude jen pro nastaveni vyberu kombinace. predstav si ze chces mit 4 kombinace.
1 - 25/23 stC
2 - 25/21 stC
3 - 30/27 stC
4 - 30/25 stC
no a trimrem si vyberes 1 ze 4 kombinaci. samozrejme je mozne udelat 8 kombinaci coz je asi maximum. stejne tak jde udelat ne pomoci trimru ale dvojitou pinovou listu a pomoco odporu udelat napetovy delic. vyber kombinace by se pak provadel pomoci jumperu.
rozdelil bych cifla na kazde cidlo zvlast pin. jestli nepotrebujes zaporne hodnoty pouzil bych knihovnu one wire bez pridavku dallas. ten zbytecne zabira pamet.
byte chyba bych jeste rozhodil na vlastnich 8 bitu a rozdelil je na zavazne chyby (horni 4 bity) a obecne (dolni 4 bity). proc tak slozite? v 1 promene mas registr chyb a na konci podle zavaznosti muzes spustit alarm (chyba >7) nebo ne. pak je muzes nezavisle zobrazit na lcd s popisem chyby nabo ulozit do eeprom.
bezdratovou komunikaci bych radeji vynechal. prijde mi to komplikovane jen pro zobrazeni lcd. nekde jsem videl lcd na one wire sbernici a tam neni problem 10m po 3 dratech. jeste je moznost pouzit lcd s 74hc593 coz je posuvny registr za par korun. zkousrl jsem s utp kabelem delky 5m a bez problemu tam das data i napajeni. navic 6 drat muze byt tlacitko pro prepnuti zobrazeni. to ti po 433mhz moc nepujde. navic ruseni pomalost prenosu atd mi tam vylozebe vadi. je to ale jen muj pohled na vec ...