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 
Sponsored by SiOL

Motnje telefona na Adafruit MAX31855
Pojdi na stran Prejšnja  1, 2
 
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
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3532
Aktiv.: 23.01
Kraj: Krško

PrispevekObjavljeno: Pon Maj 13, 2019 9:31 am    Naslov sporočila:   Odgovori s citatom

Povprečenje vsega ne deluje. Glede na možne hitrosti temperaturnih sprememb v tvojem sistemu zanemari vse odčitke, ki od povprečja veljavnih odčitkov odstopajo za več kot recimo 1°C . Šele potem jih shrani v array, povpreči in povprečje primerjaj z novimi odčitki.
Da dobiš prvi osnutek povprečja po zagonu (ko je povprečje arraya 0), lahko prvi array napolniš direktno, drugega z večjim dovoljenim odstopanjem, tretjega z manjšim ... in potem prideš do 1°C.
To narediš z indeksom, ki gre prvič od 0 do 63, nato pa gre na 54 in kroži med 54 ter 63, za arrayindeks pa maskiraš spodnje 3 bite (od 0 do 7). To je za povprečje 8 vrednosti. Pri 16 pač kroži od 48 do 63.

Jaz merim temperature v zelo brutalnem industrijskem okolju. V nekem trenutku sem prišel na idejo, da bi se na LCD izpisovali posamezni biti odčitkov in povprečja, preden se odčitek pretvori v desetiške vrednosti. Se lažje vidi koliko bitov se spreminja kakor pri cifrah pri desetiškem prikazu. Ko vidiš s čim imaš opravka, narediš največ, kar lahko in spremeniš prikaz nazaj v desetiškega.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
pajo
Član
Član



Pridružen-a: Čet 29 Jan 2004 8:50
Prispevkov: 623
Aktiv.: 3.82
Kraj: Že od kje

PrispevekObjavljeno: Pon Maj 13, 2019 10:18 am    Naslov sporočila:   Odgovori s citatom

Pred časom sem gledal tega AD594/595 , vendar sem zaradi cene idejo opustil.
Sicer me vem, če bi izbira drugega tipa pomagala rešiti težavo.
Kakšno temperaturno območje želiš meriti in s kakšno natančnostjo?

_________________
Martin Krpan je že dobro vedel zakaj je posekal lipo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3532
Aktiv.: 23.01
Kraj: Krško

PrispevekObjavljeno: Pon Maj 13, 2019 11:45 am    Naslov sporočila:   Odgovori s citatom

Prej sem morda nejasno napisal ...

... To narediš z indeksom, ki gre prvič od 0 do 63, nato pa gre na 54 in kroži med 54 ter 63, za arrayindeks pa maskiraš z AND 0x07 zgornje bite stran in uporabiš samo spodnje 3 bite (od 0 do 7). ...
Koda:

Ob zagonu v Setup naj bo Omejitev = 255; ali zelo veliko.


void Povprecenje()
{
byte arrayindeks;
int Razlika;

  if(indeks > 53)
  {
    if(Omejitev > 1) Omejitev--; //Pocasi jo pripelje do 1
    Razlika = Odcitano - Povprecje;
    Razlika = abs(Razlika);
    if(Razlika > Omejitev) return; // leti ven
  }
  // Meritev je veljavna
 
  indeks++; // poveca ga veljaven odcitek
  if(indeks > 63) indeks = 54;
  arrayindeks = indeks & 0x07; // samo spodnji 3 biti
  Odcitek[arrayindeks] = Odcitano;
  for(i=0; i<8; i++)
  {
    Povprecje = Povprecje + Odcitek[i];
  }
  Povprecje = Povprecje / 8;
} // void Povprecenje()

Ne vem, kako pogosto odčitavaš temperaturo. Na začetku malo traja, da pride Omejitev do 1, potem pa ignorira vse Razlike večje od Omejitve.

Omejitev mora biti na začetku nekaj večja od največje možne izmerjene temperature, sicer bo problem pri vročem ponovnem zagonu, ko bo Povprecje=0, odčitki pa že okrog delovne temperature.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ElGrigon
Član
Član



Pridružen-a: Pon 24 Jul 2006 22:38
Prispevkov: 3852
Aktiv.: 24.67
Kraj: okolica Lenarta

PrispevekObjavljeno: Pon Maj 13, 2019 12:41 pm    Naslov sporočila:   Odgovori s citatom

Odčitavam v zanki brez zakasnitev razen ciklov, ki se izvedejo medtem. Bi moral izmeriti čas, ker ne vem koliko ciklov še leti skozi knjižnice.

Ja, PID mora reagirati v nekaj 100 ms, kar je sedaj zadovoljivo. To računanje s povprečji bi ga verjetno precej omejil oz. bi letel čez setpoint.

_________________
lp, ElGrigon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3532
Aktiv.: 23.01
Kraj: Krško

PrispevekObjavljeno: Pon Maj 13, 2019 1:47 pm    Naslov sporočila:   Odgovori s citatom

Jaz si to lahko privoščim, ker imam ene 200 kg železja in so spremembe dovolj počasne, da ne potrebujem D člena, saj zadostujeta samo P in I.

Motnje imajo vpliv predvsem na D, ker je v trenutku velika razlika v eno stran, takoj za njo pa v drugo stran ali enaka 0.
Saj lahko povprečiš tudi samo 4 ali 2 vrednosti, a ne imej prevelikega D vpliva, da ga ne bo zabijalo.

Zgornji podprogram Povprecenje() se enkrat izvede v dobri milisekundi ali dveh. Bo pa trajalo nekaj časa, da bo Omejitev postala 1. Lahko jo tudi hitreje zmanjšuješ (recimo za 5 naenkrat):
if(Omejitev > 1) Omejitev--;
if(Omejitev > 20) Omejitev = Omejitev - 4;


Če imaš lcd, prikazuj čas cikla glavne loop() zanke.
Koda:

void Setup
{
...
miliZdaj = millis(); // unsigned long spremenljivka
} // void Setup()

void loop()
{
  miliStar = miliZdaj; // unsigned long spremenljivka
  miliZdaj = millis(); // trenutna vrednost
  Prikazi_na_lcd (milizdaj - milistar) // razlika = trajanje loop()
...
} // void loop()

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ElGrigon
Član
Član



Pridružen-a: Pon 24 Jul 2006 22:38
Prispevkov: 3852
Aktiv.: 24.67
Kraj: okolica Lenarta

PrispevekObjavljeno: Pon Maj 13, 2019 10:08 pm    Naslov sporočila:   Odgovori s citatom

Danes sem zaprl cel modul v kovinsko ohišje, ozemljil, povezal še oplet termočlena, nič bolje...Za povrh sem dal preko vsega še kovinsko škatlo. Odklopil sem še grelec, da ni PWM signala po vodnikih.

Ali je oplet sploh v tem primeru učinkoviti?
Oplet je sicer od kabla, bi moral biti zelo tesen? Vodnikov se sicer ne vidi, toliko pokrije ampak ni pa stisnjen, ker sem ga navlekel na vodnike in nato zaključil pred bunkico s tulko in pri priključkih s termoskrčko od koder je speljan tudi vodnik za GND.

Kupljen opleten termočlen pa ne bo veljal za ta čip.

_________________
lp, ElGrigon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3532
Aktiv.: 23.01
Kraj: Krško

PrispevekObjavljeno: Pon Maj 13, 2019 11:12 pm    Naslov sporočila:   Odgovori s citatom

Jaz imam prave industrijske K termočlene z original kovinsko cevko na koncu in ustreznim kovinskim pletenim opletom od www.prelovsek.si .
Pri naročilu sem poudaril, da morajo biti galvansko ločeni in se potem bunkica cevke ne dotika direktno, ampak je vmes cevka iz steklene tkanine.
Izmerjena temperatura je ista, le odzivnost na hitre spremembe je malce manjša, ker se mora bunkica segreti skozi tkanino. A pri meni niso možne hitre spremembe, ampak največ 5 °C na minuto za gor in za dol, meritev je pa vsaki 2 sekundi.
Oklep sond je do 5 cm pred sponkami modulov. Za prehode skozi kovinsko dozo sem pa kar 7-krat polkrožno popilil dozo in pokrov in sonde na tesno stisnil vmes, vsako skozi svojo zarezo.

Naredil sem eno tiskanino, na katero paše 8 modulov (1 za rezervo), s 74HC595 izbiram ChipSelect, ... cela komunikacija v obe smeri je dvignjena na 24 V in gre potem še dodatne 3 metre do tiskanine, na kateri je nataknjen Arduino, tam pa je spet poskrbljeno za pretvorbo iz 24 V na 5 V oziroma obratno. Ampak komunikacija je precej robustna in Arduino prejme tisto, kar so moduli poslali.

Je pa res, da nisem nikoli preveril posameznih bitov odčitka tudi z galvansko neizolirano sondo. Bit za NapakoKratkegaStika bi preprosto ignoriral, če bi le bili ostali biti v redu. Tudi oplet bi povezal na GND modula, da ne bi prišlo do kakšnih razlik potencialov, ... a ne vem, kaj bi se dejansko zgodilo.


Do kolikšne temperature greješ?
V skrajnem primeru preveri tudi kak
https://www.analog.com/en/products/ad8495.html#product-overview
ali kak podoben namenski čip za termočlene ter en 16-biten ADC s SPI ali I2C izhodom. Namenski čip in ADC sta v vseh sodobnih industrijskih termoregulatorjih in ne potrebujejo galvansko ločene sonde.
Ali pa kupi najcenejši kitajski termoregulator, ki ima tudi možnost serijske komunikacije za nastavljanje parametrov in Setpointa ter branja izmerjene temperature.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Peter123
Član
Član



Pridružen-a: Tor 13 Jan 2009 15:34
Prispevkov: 1147
Aktiv.: 9.10
Kraj: Lj.

PrispevekObjavljeno: Tor Maj 14, 2019 7:33 am    Naslov sporočila:   Odgovori s citatom

@ElGrigon
Če boš naložil slike ti lahko bolje pomagamo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ElGrigon
Član
Član



Pridružen-a: Pon 24 Jul 2006 22:38
Prispevkov: 3852
Aktiv.: 24.67
Kraj: okolica Lenarta

PrispevekObjavljeno: Tor Maj 14, 2019 7:56 am    Naslov sporočila:   Odgovori s citatom

Razmišljam, če bi še poskusil z max31856.
_________________
lp, ElGrigon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ElGrigon
Član
Član



Pridružen-a: Pon 24 Jul 2006 22:38
Prispevkov: 3852
Aktiv.: 24.67
Kraj: okolica Lenarta

PrispevekObjavljeno: Tor Maj 14, 2019 2:01 pm    Naslov sporočila:   Odgovori s citatom

Samo to še me zanima. Ali je možno, da je software spi bolj izpostavljen motnjam kot hardware spi?
Uporabljam namreč software spi.

_________________
lp, ElGrigon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3532
Aktiv.: 23.01
Kraj: Krško

PrispevekObjavljeno: Tor Maj 14, 2019 2:46 pm    Naslov sporočila:   Odgovori s citatom

Vir SPI ni pomemben. Jaz sem sam napisal podprogram za SPI z dovolj dolgimi zakasnitvami, da je na sprejemni strani zanesljivo prebrano natanko tisto, kar je na oddajni strani poslano. Rezultat je enak ne glede na dolžino zakasnitev (imam nastavljivo 0 do 10ms pred vsakim digital... R ali W znotraj for zanke).

SPI je čisto enostaven. Kar v zanki se spreminja stanja pinov z digitalWrite in se jih bere z digitalRead. Lepo napolniš 32-bitno spremenljivko in potem s shiftanjem in maskiranjem iz nje pridobiš potrebne bite.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-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
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
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: 22 dni


Powered by phpBB © 2001, 2005 phpBB Group