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 

Termistor (pretvorba iz upora v stopinj celzije)
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Ta tema je zaklenjena: ne moreš urejati sporočil ali odgovarjati na objave.   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
paco
Neznanec
Neznanec



Pridružen-a: Tor 27 Nov 2012 12:52
Prispevkov: 6
Aktiv.: 0.04

PrispevekObjavljeno: Čet Jan 03, 2013 2:42 pm    Naslov sporočila:  Termistor (pretvorba iz upora v stopinj celzije) Odgovori s citatom

Spoštovani,

imam pic18f2550 in na njega vezan termistor. Spisal sem programsko kodo, s katero odčitavam stanje termistorja, in mi vrača 400, 410 ... glavno tu nekje cifre. Seveda če ga segrejem ali ohladim se stanje spreminja. Zanima me, s kakšnim izračunom se da priti do stopinj celzija? Kakšen je izračun. Spodaj prilagam mojo kodo.

Koda:
#include <p18f2550.h>
#include <stdio.h>
#include <string.h>
#include "usb_cdc_funkcije.h"

extern void _startup (void);       
#pragma code REMAPPED_RESET_VECTOR = 0x1000
void _reset (void)
{
    _asm goto _startup _endasm
}

#pragma code

void main(void)

{
    //char data[] = "Hello World\n\r";
    char stanje=0;
    char numBytes;
    char buffer[32];
    int stevec=0;
    int rezultat;

    USBDeviceInit();

    ADCON0=0x05;
    ADCON1=0x0D;
    ADCON2=0x83;

    while(1)
    {
        USBDeviceTasks();
        if ((USBGetDeviceState() < CONFIGURED_STATE))//||(USBIsDeviceSuspended())) {
        {
            continue;
        }

        CDCTxService();

        stevec++;
        if (stevec==30000) {
            stevec=0;
            if (USBUSARTIsTxTrfReady())
            {
                ADCON0bits.GO=1;
                while(!PIR1bits.ADIF);
                PIR1bits.ADIF=0;

                rezultat=ADRESH*256 + ADRESL; //za?iftam 8x, to je isto kot mno?enje z 256

                sprintf(buffer,"Vrednost AD:%d\n",rezultat);
                putsUSBUSART(buffer);

            }
        }
    }
}



Lepo prosim za pomoč
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
forest70
Član
Član



Pridružen-a: Ned 20 Jul 2008 1:00
Prispevkov: 588
Aktiv.: 2.86
Kraj: Koper

PrispevekObjavljeno: Čet Jan 03, 2013 2:47 pm    Naslov sporočila:   Odgovori s citatom

V datasheet-u imaš diagram temperatura vs upornost. Iz tega diagrama moraš narditi funkcijo (formulo) . Ponavadi krivulje niso linearne .... Sad

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
xfce
Član
Član



Pridružen-a: Čet 28 Jul 2011 8:06
Prispevkov: 521
Aktiv.: 3.08

PrispevekObjavljeno: Čet Jan 03, 2013 2:52 pm    Naslov sporočila:   Odgovori s citatom

pomojem se ti ne splača hecati s temi nelinearnimi PTC in NTC. Bolje je imeti kakšen dallas in dobiš ven digitalne podatke... 1$ stane na ebayu.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
s56al
Član
Član



Pridružen-a: Pon 19 Sep 2005 12:03
Prispevkov: 788
Aktiv.: 3.33
Kraj: JN66SI & JN76TM

PrispevekObjavljeno: Čet Jan 03, 2013 4:12 pm    Naslov sporočila:   Odgovori s citatom

Ker karakteristika tvojega senzorja ni linearna, imaš v osnovi na voljo dve možnosti:

1. Interpoliraš karakteristiko senzorja s polinomom 2. ali višje stopnje, kot ti je predlagal forest70, t.j. "določiš formulo za preračun"...

2. Karakteristiko senzorja tabeliraš (kako na gosto, je odvisno od dopustnega pogreška), v vmesnih točkah pa izračunaš linearni približek (linearna aproskimacija). Primer programske kode v C za sicer od termistorja precej bolj linearni senzor Pt100, imaš tu:

http://en.wikipedia.org/wiki/Resistance_thermometer

Moj predlog: če merilni obseg zadošča, uporabi DS18S20, kot je sugeriral tudi že predhodnik. Z malce telovadbe lahko iz njega prečitaš temperaturo z ločljivostjo 1/16 C. Če si zadovoljen z ločljivostjo 0,5 C je zadeva še toliko bolj preprosta. Proizvajalec senzorja sicer jamči točnost 1C, a je vsaj okoli ničle ter v obsegu sobnih temperatur točnost preverjeno precej boljša od zajamčene v datasheetu-u. Če izdelka ne boš prodajal v več 1000 kosih, razlika v ceni glede na termistor ne bi smela predstavljati odločilni faktor.
.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
siljo
Član
Član



Pridružen-a: Tor 28 Okt 2003 8:08
Prispevkov: 1035
Aktiv.: 4.37
Kraj: Ribn'ca

PrispevekObjavljeno: Čet Jan 03, 2013 8:16 pm    Naslov sporočila:   Odgovori s citatom

kateri termistor pa imaš? lahko bi navedel točno oznako!
Prednost termistorjev je seveda velika sprememba v odvisnosti od temperature! Je pa malo zakomplicirana zadeva glede izračuna! ponavadi se za hitre izračune naredi kar LUT (look up table) in po možnosti kakšen korekcijski linearni faktor!
Če se gre v večje količine se zadeva izplača, ker so nekoliko cenejši, drugače pa za kakšen kos uporabiš že omenjene senzorje...

_________________
Lep pozdrav!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tehnicni
Član
Član



Pridružen-a: Pon 11 Feb 2013 12:09
Prispevkov: 40
Aktiv.: 0.27
Kraj: Kranj

PrispevekObjavljeno: Tor Apr 23, 2013 10:49 pm    Naslov sporočila:   Odgovori s citatom

Ker bom imel pri avtomatizaciji bajte vsaj 20 novih merilnih točk in ker bo pri nekaterih nevarnost odpovedi zaradi strele, sem nabavil 50 termistorjev. Pri DS18B20 imaš ful sitnosti, ko ti zaradi strele pregorijo, saj moraš novim prebrati ID in ga dodati v SW. Vprašanje kaj bo čez 5 ali 10 let, ali bom imel pri roki potrebno opremo.
Moje izkušne:
Tabela na strani proizvajalca je polna napak, celo tabela proizvajalca - verjetno drugega, ima napako in je še drugačna, čeprav gre za isti B.
Formula za izračun temperature s pomočjo B je dobra za pozitivne temperature, bolj kot greš pod ničlo hujša je napaka.
Nekako sem sestavil tabelo od -40 do 130°C na 5°C. Deloma iz formula s pomočjo B-ja, deloma iz podatkov prodajalca, deloma po lastnih meritvah. Ko sem določil tabelo je program za linearno interpolacijo simpel. Na Arduinu Leonardo sem naredil še povprečenje 6 AD vhodov (teče v ozadju pod interaptom) v trajanju 780ms (prvi možni n * 20ms) in dobil izredno stabilne rezultate, tako da mi na koncu ni žal, je šlo pa odločno preveč časa.
6 vhodov lahko multipleksiram, recimo X 4 in imam 24 vhodov z rezultati vsake dobre 3s.

_________________
Elektronik analogna in RF smer, LabView programer
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
MadMax
Član
Član



Pridružen-a: Pet 09 Sep 2005 22:16
Prispevkov: 4743
Aktiv.: 20.03

PrispevekObjavljeno: Sre Apr 24, 2013 6:55 am    Naslov sporočila:   Odgovori s citatom

Če ti bojo 18b20 pregorevali zaradi strele, bo zraven zagotovo crkovalo še kaj drugega, pa bojo omenjeni dsji še najmanjši problem.
Sicer pa lahko vežeš vsakega na svojo žico in pri branju ne =beš IDja. Tako odpadejo "ful sitnosti".

Če pa bi rad naredil kot se zagre, naredi z LM35. Sicer rabiš eno žico več, a "i ofce i nofce" nekako pač ne moreš imet.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Tehnicni
Član
Član



Pridružen-a: Pon 11 Feb 2013 12:09
Prispevkov: 40
Aktiv.: 0.27
Kraj: Kranj

PrispevekObjavljeno: Čet Apr 25, 2013 9:21 am    Naslov sporočila:   Odgovori s citatom

MadMax je napisal/a:
Če ti bojo 18b20 pregorevali zaradi strele, bo zraven zagotovo crkovalo še kaj drugega...

Ne vem če je ravno tako, digitalni pin na Arduinu se da dobro zaščititi, na strani DS-jev pa je težje, sploh če pride do preboja med recimo bojlerjem in senzorjem. Pri NTC-jih dam recimo 4K7 proti AD vhodu in sem po moje varen do napetosti, ki bo prebila ta upor, ampak bo prej prebilo v konektorju.

_________________
Elektronik analogna in RF smer, LabView programer
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5528
Aktiv.: 24.06
Kraj: Domzale

PrispevekObjavljeno: Čet Apr 25, 2013 9:34 am    Naslov sporočila:   Odgovori s citatom

Vilko je imel narejen kompleksen sistem z DSi na isti liniji, a je prišel do "hecnega" problema, ko je en (okvarjen) DS popolnoma pokvaril celotno komunikacijo.
No, po tem, ko je DSe vezal vsakega na svoj pin, se kaj takega seveda ni več moglo zgoditi.

LP, g

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MadMax
Član
Član



Pridružen-a: Pet 09 Sep 2005 22:16
Prispevkov: 4743
Aktiv.: 20.03

PrispevekObjavljeno: Čet Apr 25, 2013 10:13 am    Naslov sporočila:   Odgovori s citatom

Tehnicni je napisal/a:
Ne vem če je ravno tako, digitalni pin na Arduinu se da dobro zaščititi, na strani DS-jev pa je težje, sploh če pride do preboja med recimo bojlerjem in senzorjem. Pri NTC-jih dam recimo 4K7 proti AD vhodu in sem po moje varen do napetosti, ki bo prebila ta upor, ampak bo prej prebilo v konektorju.
Čakaj malo, a ti nimaš bojlerja ozemljenega? Pa kolektorje na strehi?
Ko se bo zaiskrilo, ti nobena tvoja žavba ne bo kaj dosti "zaščitila" vhoda, še najmanj pa en 4k upor. Aja, itak si že prepričan, le zakaj bi te prepričeval drugače...

Sicer pa ne glede na 1% v nazivu, z navadnimi termistorji nikoli ne boš niti na stopinjo točen, kaj šele na desetinko. Kaki KTY termistorčki so že malce boljši-predvsem bolj linearni (pa še vedno ne dovolj za celotno območje -25 ÷ +120, kolikor ti okvirno rabiš), kolikor toliko blizu DSu ali LM35 si pa šele s Pt, ki pa tudi drži ceno.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Tehnicni
Član
Član



Pridružen-a: Pon 11 Feb 2013 12:09
Prispevkov: 40
Aktiv.: 0.27
Kraj: Kranj

PrispevekObjavljeno: Čet Apr 25, 2013 11:38 am    Naslov sporočila:   Odgovori s citatom

1/4W upor za trenutek prenese 3kV 50Hz, sem pravkar preveril, čipi pa so zaščiteni z zaščitno diodo, ki v času nekaj us po moje komot prenese kak amper.
Termistorji, ki sem jih dobil iz Kitajske so res 1%, sem jih pomeril ene 15 kom. in računam, da imajo temperaturni koeficient tudi dovolj enak. Je pa seveda res, da preko formule za B ne moreš računati na kaj več kot par °C.
Experimentalna koda tule: http://www.podsvojostreho.net/forum/viewtopic.php?f=6&t=50872&p=501561#p501561
Ne se režat, 2 decimalki v izpisu sta samo za raziskovalne namene.

_________________
Elektronik analogna in RF smer, LabView programer
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
MadMax
Član
Član



Pridružen-a: Pet 09 Sep 2005 22:16
Prispevkov: 4743
Aktiv.: 20.03

PrispevekObjavljeno: Čet Apr 25, 2013 12:06 pm    Naslov sporočila:   Odgovori s citatom

Tehnicni je napisal/a:
1/4W upor za trenutek prenese 3kV 50Hz, sem pravkar preveril, čipi pa so zaščiteni z zaščitno diodo, ki v času nekaj us po moje komot prenese kak amper.

Čipi=procesor na arduinotu? Sanjaj mokre sanje, pa naj bodo prijetne...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Tehnicni
Član
Član



Pridružen-a: Pon 11 Feb 2013 12:09
Prispevkov: 40
Aktiv.: 0.27
Kraj: Kranj

PrispevekObjavljeno: Čet Apr 25, 2013 12:42 pm    Naslov sporočila:   Odgovori s citatom

Imaš kak podatek ali kar tako na pamet. Če zaščitna dioda prenese trajno 40mA, potem bo pri 10us po vsej verjetnosti krepko čet 1A. 100mA diodka pri 10uA pulzu nese preko 5A in to po specifikacijah.
_________________
Elektronik analogna in RF smer, LabView programer
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vitez93
Član
Član



Pridružen-a: Pet 19 Sep 2008 20:00
Prispevkov: 1018
Aktiv.: 5.00
Kraj: Celje- Dobrna

PrispevekObjavljeno: Čet Apr 25, 2013 1:03 pm    Naslov sporočila:   Odgovori s citatom

MadMax je napisal/a:

Ko se bo zaiskrilo, ti nobena tvoja žavba ne bo kaj dosti "zaščitila" vhoda, še najmanj pa en 4k upor. Aja, itak si že prepričan, le zakaj bi te prepričeval drugače...

Tole poslušaj.



Mikrokrmilniki crknejo, če je napajanje 7V namesto 5V, da ti pa strela udari pa nimaš teorije, da ti vezje preživi.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
MadMax
Član
Član



Pridružen-a: Pet 09 Sep 2005 22:16
Prispevkov: 4743
Aktiv.: 20.03

PrispevekObjavljeno: Čet Apr 25, 2013 1:05 pm    Naslov sporočila:   Odgovori s citatom

Pa kaj me ti za=bavaš ali kaj? Kje si videl zaščito 40mA?

Na pamet govorim.
40mA je abs. max. dovoljena obremenitev pina, konfiguriranega kot izhodni, s tem da hkrati še vsota vseh ne sme preseči določenega toka.

Za NejevernegaToneta™ so pa pri Atmelu v podatkovni list za čip, ki je na Leonardo platki, na strani 378 v poglavju 29.1 navedli "Absolute maximum ratings", a si tega NejeverniTeoretik™ ni prebral tolikokrat, da bi ga razumel.

Glej, ni to industrijski PLC modul za 300+EUR, ki požre vse in še več. Je zgolj čipek za par evrov.
Ampak kot sem že rekel, prepričevati prepričane je res jalovo početje...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Ta tema je zaklenjena: ne moreš urejati sporočil ali odgovarjati na objave.   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2  Naslednja
Stran 1 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: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group