Arduino a termistor na A/D

Novic

Arduino a termistor na A/D
« kdy: 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.


ABC

Re:Arduino a termistor na A/D
« Odpověď #1 kdy: 30. 12. 2012, 01:10:48 »
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.

RDa

  • *****
  • 2 935
    • Zobrazit profil
    • E-mail
Re:Arduino a termistor na A/D
« Odpověď #2 kdy: 30. 12. 2012, 01:15:38 »
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.

Re:Arduino a termistor na A/D
« Odpověď #3 kdy: 30. 12. 2012, 03:55:23 »
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.

Novic

Re:Arduino a termistor na A/D
« Odpověď #4 kdy: 30. 12. 2012, 09:36:32 »
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.


Re:Arduino a termistor na A/D
« Odpověď #5 kdy: 30. 12. 2012, 09:54:05 »
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íš :)

hawran neprihlaseny

Re:Arduino a termistor na A/D
« Odpověď #6 kdy: 30. 12. 2012, 14:56:41 »
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

hawran neprihlaseny

Re:Arduino a termistor na A/D
« Odpověď #7 kdy: 30. 12. 2012, 15:15:57 »
... 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 ...

ernie

Re:Arduino a termistor na A/D
« Odpověď #8 kdy: 31. 12. 2012, 02:16:10 »
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í.

chiptron.wz.cz

Re:Arduino a termistor na A/D
« Odpověď #9 kdy: 31. 12. 2012, 09:07:54 »
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

ernie

Re:Arduino a termistor na A/D
« Odpověď #10 kdy: 31. 12. 2012, 15:11:30 »
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.

ABC

Re:Arduino a termistor na A/D
« Odpověď #11 kdy: 01. 01. 2013, 12:44:25 »
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ě :-)

Zopper

  • *****
  • 896
    • Zobrazit profil
Re:Arduino a termistor na A/D
« Odpověď #12 kdy: 01. 01. 2013, 13:02:55 »
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ě. :)

Re:Arduino a termistor na A/D
« Odpověď #13 kdy: 01. 01. 2013, 17:53:15 »
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

Trident

Re:Arduino a termistor na A/D
« Odpověď #14 kdy: 01. 01. 2013, 18:27:42 »
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?