Fórum Root.cz
Hlavní témata => Hardware => Téma založeno: Novic 29. 12. 2012, 22:28:59
-
Nedělám do elektroniky a potřebuju poradit s připojením termistoru k A/D převodníku arduina. Technická specifikace termistoru je zde http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/181064-da-01-en-TEMPERATUR_SENSOR_TO92_MINI_KT210.pdf (přesně KT210 mini). Termistor zapojuju na analogový vstup arduina a přes 1k odpor "uzemňuji".
Vše funguje - při pokojové teploťě dostávám hodnotu 770 a po přiložení prstu na termistor 760. Tj. jsem v rozmezí 0-1023 (při napájení 5V). Teď to potřebuji převést na teplotu ve st. celsia. V přiloženém PDFku je vzorec pro výpočet, ale nejsem z něj moudrý. Může mi to prosím někdo algorytmicky vysvětlit (převod onoho 10bit čísla na st.C). Děkuji.
-
Ten vzorec s odmocninou je pro malej jednočip bez FPU asi těžko přechroustatelnej.
možnosti vidim:
a) aproximovat přímkou (tečna v pracovním bodě), nebo několika přímkama pokud požaduješ ucházející přesnost na větším rozsahu.
b) podle dostatečně přesnýho teploměru naměřit hodnoty lezoucí z A/D převodníku tak po 0.5stupni, což by mohlo jít udělat pomocí akvarijního topítka v nádobě s vodou :-) uložit do pole a pak to v cyklu porovnávat.
Jsem pouhej bastlíř, třeba ti poradí i nějakej profík.
-
Nebo taky muzete pouzit tabulku o 1024 prvcich, indexovanou cislem z prevodniku. Pravdepodobne ji ani nebudete potrebovat celou (zalezi na zapojeni a operacnim rozsahu). Danych 1024 resp. 2048 byte se hrave schova v programove pameti. A jak ji spocitat? Klidne v excelu a z puvodniho vzorce, aproximace neni potrebna.
-
Pokud správně koukám, jde o celočíselnou odmocninu, to není problém. Viz např: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=77866&start=0
Jinak je taky možný koupit čidlo s lineárním průběhem, třeba LM35.
-
Díky, ale... Chlapi, nechci být neuctivý, ale neporadili jste mě nic, co bych nevěděl. Výpočet arduino zvládne via knihovnu math.h. Řešení s referenčníma tabulkama mě napadlo také, nicméně dávám přednost ultimátnějšímu řešení a jiný HW k vůli tomu kupovat nebudu.
Šlo mi o to, co je to R25, kt, atd... Co do nich (tj. do vzorce) dosadit, nebo jak v arduinu získat z 10bit hodnotu v ohmech (asi je to potřebné do vzorce). Logicky Rmin a Rmax je 970 až 1030. To znamená, že hodnotu odporu termistoru dostanu jako 970+(((1030-970)/1024)*hodnoa_z_AD)? Co pak ale dostadit do kt, když je dané tabulkou podle teploty, kterou ale vypočítávám ve vzorci. To je jako začarované kolo... Vůbec to nechápu - o to mi šlo, pochopit to. Díky za trpělivost.
-
Nejspíš to zbytčně dramatizuješ.
http://playground.arduino.cc/Main/Kty81-110
- a odtud odkazovaný: http://www.sprut.de/electronic/pic/projekte/thermo/thermo.htm
P.S. nesmíš se divit, že ti někdo poradí něco, co víš, když nenapíšeš, co víš :)
-
Díky, ale... Chlapi, nechci být neuctivý, ale neporadili jste mě nic, co bych nevěděl.
...
... Vůbec to nechápu - o to mi šlo, pochopit to. Díky za trpělivost.
R25 - 25. odpor v řadě
kt - kilotuna
-
... Díky za trpělivost.
R25 - 25. odpor v řadě
kt - kilotuna
A teď vážně.
R25 bude zřejmě hodnota rezistance při 25°C.
Podle té specifikace má ta hodnota docela velký rozptyl, určitě by bylo vhodné si tuto hodnotu změřit, pokud chceš počítat s přesnými hodnotami.
Měřit při proudu, pro který je to specifikováno (a který by se měl použít při provozu).
O nutnosti mít stabilní zdroj proudu se ani nebudu nějak rozkecávat.
Koeficient kt je počítán v tom druhém vzorci, buďto jako poměr RT/R25 (pokud hodnoty odporů změříš) anebo (teoreticky) tím dalším vzorcem, kde je jen rozdil teplot a ty (asi materiálové) konstanty alfa a beta (které jsou definovány ve vzorci předchozím).
No a výsledná teplota v okolí té součástky je spočítána v tom třetím vzorci, všechny potřebné hodnoty už máš určené.
Ale jak pravili předřečníci, doporučoval bych uložit si hodnoty napětí na té součástce při známém pracovním proudu někam do pole, třeba po 0,5°C a pro měření pak použít aktuální hodnoty napětí jako index do toho pole (hrubě řečeno).
PS: zdroj toho pracovního proudu by měl být teplotně co nejstabilnější, ale právě změřením napětí a uložením do tabulky se kolísání hodnoty proudu s teplotou eliminuje ...
-
Právě řeším podobný problém s interním teplotním senzorem na ATtiny45 dík za nakopnutí, každopádně se mi pozdává, že hodnota přečtené teploty dost kolísá v závislosti na napájecím napětí, takže nezbyde, než použít termistor a nějakou kalibraci. Ještě jednou díky za nakopnutí.
-
Nechápu, proč používáte obyčejný termistor, který je absolutně nelineární. Pokud to tedy chceš měřit A/D převodníkem, tak si vyber teplotní čidlo, které je linearizované. Např: LM335. Nebo lépe, nějaké teplotní čidlo s výstupem I2C, 1-wire atp...
Měření teploty: interní čidlo v MSP430G2553
http://chiptron.wz.cz/MSPG2553-teplota-lcd-interni-cidlo-temperature-lcd-internal-sensor-mspgcc.php
-
Já osobně třeba proto. že se chci naučit programovat, pokud bych vyvíjel komerční maloseriový výrobek, tak sáhnu po digitálním čidle, i když co jsem měl rozebrané domácí programovatelné termostaty, tak v nich byl skoro vždy termistor, nebo PT 100/PT1000. Pokud to byla chytřejší věc, tak tam byl termočlánek pro hlídání teploty spalin a pro teplotu v místnosti a topné vody byla čidla PT1000.
-
Já osobně třeba proto. že se chci naučit programovat, pokud bych vyvíjel komerční maloseriový výrobek, tak sáhnu po digitálním čidle, i když co jsem měl rozebrané domácí programovatelné termostaty, tak v nich byl skoro vždy termistor, nebo PT 100/PT1000. Pokud to byla chytřejší věc, tak tam byl termočlánek pro hlídání teploty spalin a pro teplotu v místnosti a topné vody byla čidla PT1000.
I u výrobku vyráběného maloseriově, velkosériově, popř. v hromadné výrobě záleží na účelu měření. Od toho se odvíjí cena materiálu a nároky na lidský zdroje... :-) Jestli se vyplatí čidlo který má převodník v sobě (informace dostupná po sériový sběrnici), anebo implementovat převodník svépomocí na jednočipu popř. na FPGA zvolí konstruktér.
V pokojovejch termostatech stačí dvoubodový měření pro vypnutí a zapnutí topnýho tělesa s hysterezí. Tam může spolehlivě fungovat bimetal (viz žehličky), nebo nakalibrovanej termistor. Přesnost desetin stupně neni potřebná.
Pt 1000 s kompenzačním vedením zapojenej do můstku je k vidění spíš v průmyslovým nasazení, o termočlánkách do korozivního prostředí ani nemluvě :-)
-
V pokojovejch termostatech... Přesnost desetin stupně neni potřebná.
Kdyby šlo o desetiny... máme tři různé pokojové teploměry a ty se od sebe liší asi o dva až tři stupně. :)
-
V pokojovejch termostatech... Přesnost desetin stupně neni potřebná.
Kdyby šlo o desetiny... máme tři různé pokojové teploměry a ty se od sebe liší asi o dva až tři stupně. :)
A všechny tři jsou rtuťové?
:D
-
Já osobně třeba proto. že se chci naučit programovat, pokud bych vyvíjel komerční maloseriový výrobek, tak sáhnu po digitálním čidle, i když co jsem měl rozebrané domácí programovatelné termostaty, tak v nich byl skoro vždy termistor, nebo PT 100/PT1000. Pokud to byla chytřejší věc, tak tam byl termočlánek pro hlídání teploty spalin a pro teplotu v místnosti a topné vody byla čidla PT1000.
I u výrobku vyráběného maloseriově, velkosériově, popř. v hromadné výrobě záleží na účelu měření. Od toho se odvíjí cena materiálu a nároky na lidský zdroje... :-) Jestli se vyplatí čidlo který má převodník v sobě (informace dostupná po sériový sběrnici), anebo implementovat převodník svépomocí na jednočipu popř. na FPGA zvolí konstruktér.
V pokojovejch termostatech stačí dvoubodový měření pro vypnutí a zapnutí topnýho tělesa s hysterezí. Tam může spolehlivě fungovat bimetal (viz žehličky), nebo nakalibrovanej termistor. Přesnost desetin stupně neni potřebná.
Pt 1000 s kompenzačním vedením zapojenej do můstku je k vidění spíš v průmyslovým nasazení, o termočlánkách do korozivního prostředí ani nemluvě :-)
Nechapu proc az v xtem prispevku konec
U levnych pokojovych termostatu je zcela normalni presnost desetin stupne - krok 0,1 nebo 0,2. V pripade klimatizaci si vystacime vetsinou s celymi stupni nebo pulstupni. Integrovane systemy rizeni budouv pocitaji take s desetinami.
Nektere zpusoby vytapeni potrebuji jen zapnuto/vypnuto a nektere plynulou regulaci. Neda se to rict obecne.
U topnych teles zavisi na zpusobu vytapeni a pokud je mediem voda, tak zda-li se jedna o vysokoteplotni nebo nizkoteplotni zpusob vytapeni. Dale potom jak velka plocha topneho telese atd. Neni to tak jednoduche jak se na prvni zpusob zda. Kdyz treba podlahovka nabiha hodinu, tak je zbytecne mit plynulou regulaci protoze muze dojit k situaci kdy polovina bude vlazna a druha pulka uz studena. Stejne tak u starych dlouhych litinovych radiatoru.
Na druhou stranu pro plechovy radiator nebo elektricky topny panel je vhodna plynule regulace nebot k nabehu dochazi rychle.
Stejne tak se prechazi ke kotlum ktere umi plynule modulovat vykon v nejakem rozsahu a neopotrebovavaji se neustalym cyklovanim.
Pokud by jsi vyvijel treba rizeni chovneho inkubatoru pro plazy, tak tam potrebujes cidel vic a setiny stupne(staci krok 0,05) . Protoze na teplote ti treba zavisi to jestli snuska budou samci ci samice:)
Bimetal se spis dnes pouziva uz jen jako teplotni pojistka a nebo kurvitko.
Prevodnik na FPGA je dost dobry overkill;) Nevyrabejsi se pro tyto ucely snad specialni IO ve velkych seriich? Jaky to ma smysl?
-
;) Já jen odpovídal proč termistor. :) Prostě proto , že se s tim chci naučit dělat a třeba ho mám v šuplíku . Toť vše
-
co tohle?
http://learn.adafruit.com/thermistor/using-a-thermistor
jestli to teda jeste nikdo nepostoval
-
...
Vpodstatě se shodnem v tom že od účelu měření se odvíjí požadavek na přesnost. Zmínil jsem to právě proto že požadavek na přesnost autor tématu nespecifikoval. Jak chcete něco vyvíjet, když nemáte stanoven cíl čeho chcete dosáhnout?
Bimetal se spis dnes pouziva uz jen jako teplotni pojistka a nebo kurvitko.
Prevodnik na FPGA je dost dobry overkill;) Nevyrabejsi se pro tyto ucely snad specialni IO ve velkych seriich? Jaky to ma smysl?
Nemam k dispozici data porovnávající spolehlivost bimetalu s jinými principy termostatů, ale na to jak pitomej kus kovu to je, tak to do některejch aplikací stačí. Příbuzný dilatační teploměry maj taky svoje místo na trhu (jsou prý téměř nezničitelný).
Ohledně toho FPGA - čidla bejvaj součástí komplexnějších systémů, převodník nemusí zabírat celýho spartana. Může tam být navíc PSD regulátor, ethernet, UI a kdoví co ještě. Mimochodem jedna česká firma prodává dekodér IRC čidel na FPGA, jako náhradu za blbě dostupný specializovaný obvody. (druhá věc je že levné DSP od PICu mají výkonný dekodér integrován). A použití FPGA ve velkosériové výrobě neni úplně mimo. Z různých důvodů se používají např. v mobilních telefonech
-
...
Vpodstatě se shodnem v tom že od účelu měření se odvíjí požadavek na přesnost. Zmínil jsem to právě proto že požadavek na přesnost autor tématu nespecifikoval. Jak chcete něco vyvíjet, když nemáte stanoven cíl čeho chcete dosáhnout?
Přesnost... V prvním příspěvku je odkaz na konkrétní specifikaci terministoru v PDF. Viz. "Resistance tolerances of ± 3% or ± 1%". S tím jsem si tu součástku "bral". Celá diskuse se pak stočila někam, kam jsem nepotřeboval (byť některé jení fragmenty byly taky užitečné). Pro mě osobně byla nejužitečnější odpověď od hawrana.
-
KT(Y)xxx je kremíkový snímač teploty (s pozitívnou závislosťou na teplote, PTC), nie termistor (správa sa podobne, ale má inú teplotnú závislosť - tvar krivky sa viac približuje k lineárnemu).
Nejaký vzorový kód som nasiel v tejto diskusii (predposledný príspevok) http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=23077
ale neoveroval som ho. V príspevku za ním sa niekto zmieňuje, koľko to zaberie miesta a času (v radiči ATmega8 - to je predchodca Atmega328 v dnešných arduinach).
Potvrdzujem, že hodnota R25 je odpor pri 25stupňoch Celzia (a min-max je rozptyl tejto hodnoty v rámci tolerancie súčiastky). Podobne sa udáva odpor termistorov a iných teplotných snímačov.
Ak Vás zaujíma termistor (teplotne závislý rezistor), odkaz ktorý poslal robin martinez vyzerá byť dobrý popis merania teploty termistorom pomocou arduina.
Termistory vyzerajú takto: http://www.murata.com/products/catalog/pdf/r44e.pdf , teda dosť rôzne. Na experimentovanie sa dajú vybrať zo starej základnej dosky z PC, z akumulátorov apod - ale tam už nezistíte výrobcu ani typ. Často sa používajú termistory s odporom 10kohm pri 25 st. Celzia (väčšina tých čo som vybral zo starých dosák, bateriek..).
Ak by ste chceli termistor kupovať, na meranie teploty sa používajú termistory s negatívnou teplotnou závislosťou (NTC) - to je väčšina termistorov a vyrábajú sa aj s presnosťou 1% .
Teplotná závislosť termistora je nelineárna - linearizovať sa dá pomocou tabuľky, alebo vzorca (iného, ako pre KT(Y)xxx - Google, stránky arduino, wikipedia: "Steinhart-Hart Thermistor Equation") - existujú dve verzie rovnice (s troma koeficientami a s jedným) , odporúčam začať s jednoduchšou. Murata napr. udáva len koeficient B, takže tam zložitejšia ani nepripadá do úvahy.
Príklad tabuľky je tu: http://playground.arduino.cc/ComponentLib/Thermistor a na konci článku je odkaz aj na vzorec. Podobná tabuľka by asi bola vhodná aj na KT(Y).
Vzorcom (či už ide o termistor, alebo KT(Y)xxx) sa dá len aproximovať priebeh - teda k presnosti, ktorú dosiahnete tabuľkou sa môžete výpočtom len priblížiť a aj keď sa to na prvý pohľad nezdá, vzorec môže zabrať viac pamäte ako tabuľka. Riešenie so vzorcom zase vyzerá elegantnejšie, pri zmene snímača stačí zmeniť niekoľko konštánt - asi je najlepšie vyskúšať si obe varianty.
Neviem či som Vám pomohol, tiež s mikroradičmi len začínam. Uprednostnil som ale jednoduchšiu cestu - pokúšam sa postupovať od jednoduchých vecí k zložitejším. Na meranie teploty je podľa mňa na začiatok vhodný teplotný snímač LM36 - na výstupe má napätie, ktoré je priamo úmerné teplote a má lineárnu závislosť). Z Vašich otázok mám pocit, že by aj pre Vás mohlo mať pozitívny efekt, ak by ste sa vrátili o krok späť - a vyjasnili si meranie napätia na vstupe A/D prevodníka, prepočítavanie hodnoty 0-1023 na napätie a počítanie odporových deličov predtým, ako sa pustíte do (trocha) zložitejších vecí. Stačí si vybrať jeden z mnohých tutoriálov a stráviť s tým dva - tri večery.
-
a aj keď sa to na prvý pohľad nezdá, vzorec môže zabrať viac pamäte ako tabuľka.
Jenom na okraj: tohle se může stát úplně snadno - když měřím od -20 do +30 s přesností 0.5, potřebuju tabulku velkou nějakých 100B + kód na její prohledání, což bude krátká smyčka.
Oproti tomu pokud k výpočtu podle rovnice potřebuju ke kódu přidat nějakou matematickou funkci, kterou bych jinak nepoužil, může mě to stát jednotky kilobajtů (ono se to nezdá, ale jenom přiblblej printf má něco kolem 2kb, pokud si správně pamatuju).