 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
paco Neznanec

Pridružen-a: Tor 27 Nov 2012 12:52 Prispevkov: 6 Aktiv.: 0.04
|
Objavljeno: Čet Jan 03, 2013 2:42 pm Naslov sporočila: Termistor (pretvorba iz upora v stopinj celzije) |
|
|
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 |
|
 |
forest70 Član


Pridružen-a: Ned 20 Jul 2008 1:00 Prispevkov: 588 Aktiv.: 2.86 Kraj: Koper
|
Objavljeno: Čet Jan 03, 2013 2:47 pm Naslov sporočila: |
|
|
V datasheet-u imaš diagram temperatura vs upornost. Iz tega diagrama moraš narditi funkcijo (formulo) . Ponavadi krivulje niso linearne ....
LP |
|
Nazaj na vrh |
|
 |
xfce Član

Pridružen-a: Čet 28 Jul 2011 8:06 Prispevkov: 521 Aktiv.: 3.08
|
Objavljeno: Čet Jan 03, 2013 2:52 pm Naslov sporočila: |
|
|
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 |
|
 |
s56al Član

Pridružen-a: Pon 19 Sep 2005 12:03 Prispevkov: 788 Aktiv.: 3.33 Kraj: JN66SI & JN76TM
|
Objavljeno: Čet Jan 03, 2013 4:12 pm Naslov sporočila: |
|
|
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 |
|
 |
siljo Član



Pridružen-a: Tor 28 Okt 2003 8:08 Prispevkov: 1035 Aktiv.: 4.37 Kraj: Ribn'ca
|
Objavljeno: Čet Jan 03, 2013 8:16 pm Naslov sporočila: |
|
|
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 |
|
 |
Tehnicni Član

Pridružen-a: Pon 11 Feb 2013 12:09 Prispevkov: 40 Aktiv.: 0.27 Kraj: Kranj
|
Objavljeno: Tor Apr 23, 2013 10:49 pm Naslov sporočila: |
|
|
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 |
|
 |
MadMax Član


Pridružen-a: Pet 09 Sep 2005 22:16 Prispevkov: 4743 Aktiv.: 20.03
|
Objavljeno: Sre Apr 24, 2013 6:55 am Naslov sporočila: |
|
|
Č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 |
|
 |
Tehnicni Član

Pridružen-a: Pon 11 Feb 2013 12:09 Prispevkov: 40 Aktiv.: 0.27 Kraj: Kranj
|
Objavljeno: Čet Apr 25, 2013 9:21 am Naslov sporočila: |
|
|
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 |
|
 |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5528 Aktiv.: 24.06 Kraj: Domzale
|
Objavljeno: Čet Apr 25, 2013 9:34 am Naslov sporočila: |
|
|
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 |
|
 |
MadMax Član


Pridružen-a: Pet 09 Sep 2005 22:16 Prispevkov: 4743 Aktiv.: 20.03
|
Objavljeno: Čet Apr 25, 2013 10:13 am Naslov sporočila: |
|
|
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 |
|
 |
Tehnicni Član

Pridružen-a: Pon 11 Feb 2013 12:09 Prispevkov: 40 Aktiv.: 0.27 Kraj: Kranj
|
Objavljeno: Čet Apr 25, 2013 11:38 am Naslov sporočila: |
|
|
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 |
|
 |
MadMax Član


Pridružen-a: Pet 09 Sep 2005 22:16 Prispevkov: 4743 Aktiv.: 20.03
|
Objavljeno: Čet Apr 25, 2013 12:06 pm Naslov sporočila: |
|
|
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 |
|
 |
Tehnicni Član

Pridružen-a: Pon 11 Feb 2013 12:09 Prispevkov: 40 Aktiv.: 0.27 Kraj: Kranj
|
Objavljeno: Čet Apr 25, 2013 12:42 pm Naslov sporočila: |
|
|
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 |
|
 |
vitez93 Član


Pridružen-a: Pet 19 Sep 2008 20:00 Prispevkov: 1018 Aktiv.: 5.00 Kraj: Celje- Dobrna
|
Objavljeno: Čet Apr 25, 2013 1:03 pm Naslov sporočila: |
|
|
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 |
|
 |
MadMax Član


Pridružen-a: Pet 09 Sep 2005 22:16 Prispevkov: 4743 Aktiv.: 20.03
|
Objavljeno: Čet Apr 25, 2013 1:05 pm Naslov sporočila: |
|
|
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 |
|
 |
|
|
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
|