Termistori eli NTC-vastus
Pekka Ritamäki
Termistorit ovat edullisia, helposti saatavissa olevia lämpötila-antureita. Toiselta nimeltään ne ovat NTC-vastuksia.
NTC tarkoittaa Negative Temperature Contol eli negatiivista lämpötilasäätöä.
Ne ovat helppokäyttöisiä, edullisia ja ne sopivat moniin mittauksiin.
Termistorit antavat kohtuullisen suuren jännitteen verrattuna vaikka lämpöparien millivolttisignaaleihin verrattuna.
Näiden ominaisuuksien ansiosta niitä käytetään yleisesti yksinkertaisissa lämpötilan mittauksissa.
Niitä ei voi käyttää korkeissa lämpötiloissa, mutta normaaleissa lämpötiloissa niitä käytetään laajalti.
Vaikka NTC:llä on monta hyvää ominaisuutta, niin niiden käyttö harrastajapiireissä on vähäistä, johtuen niiden monimutkaisista laskentatarpeista.
Siinä tarvitaan mm. logrimeja. Katso tuonne alas esimerkkiä.
Termistorit ovat lämpötilan mukaan muuttuvia vastuksia.
Kaikki vastukset vaihtelevat lämpötilan mukaan, mutta termistorit ovat rakentelltaan puolijohteita ja niiden resistiivisyys on erityisen herkkä lämpötilan vaihteluihin.
Toisin kuin useimmat muut aineet, termistorin vastus laskee lämpötilan kasvaessa.
Tämä johtuu puolijohteen ominaisuuksista. Joistakin tämä saattaa tuntua epäjohdonmukaiselta, mutta näin asia on.
Kuvassa tyypillisen termistorin vastus muuttuu lämpötilan funktiona. Huomaa kuinka vastus muuttuu 50 kohmin kohdalla.
Vastus on hyvin pieni huoneenlämpötilassa. Vastus muuttuu päinvastaiseen suuntaan kuin sen mielestäsi pitäisi muuttua. Muutoksen suuruus on suuri protentteina, jolloin mittauksista saadaan tarkka.
Eräs tärkeä seikka: kaikki 10 kohmin tai oikeastaan minkä tahansa arvon vastukset ovat kaikilla valmistajilla saman lailla käyttäyviä, jos niiden B arvot ovat samoja.
B-arvot vaihetlevat noin 4000 molemmin puolin.
Siis voit ostaa mistä tahansa paikasta NTC-vastuksen ja se toimii kuten toinen samanarvoinen vastus, jos otat sen B-arvon huomioon vastuksen lämpötilaa lakiessasi.
Niiden lämpötila-alue on -55…125°C.
Erittäin edullisten NTC-vastuksien tarkkuus on noin 0.1 -0.05%
Noita 0.01% vastuksia on myös saatavailla, mutta niiden hinnat alkavat 600 e/kpl.
Tavallisten NTC vastuksinen hinnat ovat normaalikaupoissa noin 0.15 — 1e/kpl.
Niitä voi olla kuitenkin eri tehosia.
Pienimmät ovat mittauskäyttöön sopivia, esimerksi 450 mW.
Niitä löytyy aksiialimallisia ja pintalootosmallisia.
Kuva 2 NTC-vastus
SMT NTC
• Mikä on termistori?
• Termistori on lämpötilasta riippuva vastus. Kun lämpötila muuttuu, vastus muuttuu ennustettavalla tavalla.
• Kuinka termistorin vastus muuttuu lämpötilan mukaan?
• Steinhart-Hart yhtälö antaa termistorin käänteisen lämpötilan vastuksen mukaan.
• Steinhardt-Hart yhtälön avulla voit mitata termistorin lämpötilan vastuksen mukaan.
• Steinhardt-Hart yhtälö on:
1/T = A + B*ln(R) + C*(ln(R))3 R = ohmia, T = K
• Vakiot A, B ja C voidaan määritellä kokeellisesti jokaisesta termistorista tai ne voidaan laskea mittaustietojen perustella.
"The Temperature Handbook" (Omega Engineering, Inc., 1989) kirja antaa mittaustietoa 5kilo-ohmin (huoneenlämpötilassa 25C) termistorista.
Nämä tiedot voidaan sijoittaa kolmeen yhtälöön. A, B ja C ovat tuntemattomia. Huomaa, että seuraavassa yhtälössä käytetään Kelvin asteita (0C= 273K, 25C=298K ja 50C=323K)
(1/273) = A + B ln(16330) + C (ln(16330))3
(1/298) = A + B ln(5000) + C (ln(5000))3
(1/323) = A + B ln(1801) + C (ln(1801))3

Ratkaisemalla yhtälöt, esimerkisi Excelin avulla, saadaan A, B ja C.
A = 0.001284
B = 2.364x 10-4 wli 0.0002364
C = 9.304x 10-8 eli 0.00000009304
Näiden kertoimien avulla voit laskea termistorin vastuksesta sen lämpötilan.
Vastuksen taas voi laskea A, B ja C arvoista
A, B ja C avulla voidaan tehdä termistorin ominaiskäyrä vastaus/Kelvin lämpötila. Se näkyy kuvassa 1.
Käytännön esimerkki
Kuva 4. Esimerkki NTC-vastuksella toteutusta lämpötilahälyttimestä. Se hälyttää kun tulee kylmä.
Kuvassa 4 on esimerkki hälytyslaitteesta, joka on toteutettu 22 kilo-ohmin NTC-vastuksella.
Siinä on ensin operaatiovahvistin IC1 mittaamassa NTC vastuksen ohmeja.
P1:llä asetetaan hälytyksen oikea arvo.
Kun lämpötila laskee, NTC-arvo nousee ja IC1:n ulostulo nousee myös ja transistori Q1 vetää.
NE555-piiri IC2 alkaa toimia 300Hz taajuudella.
Nasta 4 nousee ja poistaa resetoinnin NE555-piiristä.
Toinen esimerkki
Eräällä sukulaisellani oli ilma/vesi lämpötilalaite.
Se oli mennyt vuonna 2015 rikki siten, että se ei enää sulattanut ulkoyksikköä ja laite ei tietystikään enään toiminut kylmillä ilmoilla.
Sitä oli jo pari ammattilaista käynyt katsomassa, mutta ne olivat sanoneet, että sitä ei voi korjata vaan kaikki osat pitää uusia.
Hinta oli yli 10000 euroa.
Heillä oli kuitenkin sähkölämmitys, joten tämän laitteen korjaus ei ollut aivan äärimmäisen tärkeä.
Sukulaiseni piti sitä kalliina, koska melkein kaikki komponetit toimivat.
Hän pyysi minuakin katsomaan sitä.
Kyselin sen toiminnasta.
Siitä ei tuttavani osannut sanoa yhtään mitään.
Mietin, mitä siinä voisi tehdä.
Laite oli jo viisi vuotta vanha ja siitä ei ollut saatavilla tietystikään mitään kytkentäkaaviota.
Ainoa asia mikä siinä oli, laitteen kannessa oli sen lohkokaavio.
Sen kaverini lähetti valokuvana minulle.
Kuva 5. Daiwa pumpun ulkoyksikön lohkokaavio
Kuva 6. Ilma/Vesilämmityslaitteen ulkoyksikkö
Kun katselin lohkokokaaviota, siitä ei saanut kovinkaan paljon selville.
Siinä näkyi kutenkin kolmen vastuksen muodostama liitin.
Päättelin, että ne voivat olla termostaatteja.
Mitään arvoa ei kaaviosta näkynyt.
Menin paikan päälle ja otin mukaan ainoan termostaattini NTC-vastuksen: 10kilo-ohmia.
Silloin oli erittäin kylmä tammikuu ja tietysti pimeä koska kaverillani oli muita tehtäviä päivällä.
Otimme kannen auki taskulampun valossa ja löysin tuon liittimen.
Mittasin jokaisen vastuksen arvon.
Yksi vastus oli huomattavasti erilainen kuin muut.
Päätin vaihtaa tuon vastuksen.
Purin vastuksen johdon ja se meni laitteen sisäiseen lämmityspaikkaan.
Katkaisin johdot ja otin vastuksen mukaani autotalliin, jossa purin sen pienestä putkesta.
Se meni kuitenkin rikki koska se oli valettu putken sisään.
Ei se mitään, minullahan oli uusi vastus mukanani.
Laitoin uuden anturini toiseen putkeen ja täytimme sen kuumaliimalla.
Sitten liitimme uuden vastuksen vanhaan sokerinpalaliittimellä.
Kello oli jo kymmenen illalla kun lähdin kotiin, mutta emme vielä olleet kokeilleet ilma/vesipumppua.
Toimiikohan se?
Seuraavana päivänä kaverini kokeili sitä, mutta sama tulos, ei toimi!
Minä hieman ihmettelin.
Minulla ei vieläkään ollut tietoa mikä on oikea NTC-vastusen arvo.
Ulkona oli ollut niin kylmä, että vastuksen 25C arvoa en ollut pystynyt mittaamaan.
Otimme yhteyttä maahantuojaan.
Sain heti yhteyden sinne.
Sitten menikin pari viikkoa, mutta emme saaneet enää maahantuojan varaosamyyjää kiinni.
Hän oli aina matkoilla ja puhelin eikä sähköposti toiminut!
Hmm. Ilmeisesti hän ei enää ollut kiinnostunut meidän ongelmasta.
Kuva 7. Tässä on oikea NTC-vastus, hinta 0.42e/kpl tme.com:lla
Onneksi löysimme toisen maahantuojan ja saimme sieltä hankittua kolmen anturin sarjan juuri tähän ilma/vesipumppuun.
Ne anturit olivat 20 kilo-ohmia kaikki.
Hinta oli jotain 15-35 euroa.
Ei paha.
Näin saimme selville vastuksien koon.
No ne tulivat ja ne asennettiin paikoilleen. Ihme ja kumma, ne toimivat ja ima/vesi-pumppu lähti toimimaan normaalisti.
Siinä tuli säästettyä 10000 euroa ja paljon vaivaa.
En tosin ole koskaan nähnyt viallista NTC-vastusta 60 vuoden elektroniikkakokemuksellani.
Tässä on vielä 22kohmin NTC-vastus.
Hinta 0.42 e yksin kappalein ostettuna.
Tästä pystyy värien avulla määrittelemään vastuksen koon.
===
Tässä on steinhart-Hart koodia käyttävä PIC-koodi
PIC16F886 prosessori, johon on kytketty +5V ja RA.0 väliin 10k vastus.
Tästä samasta paikasta 10k NTC anturi maihin,
Toimii hyvin.
Aluksi mittaa 10k vastuksen virta ja sitten mittaa NTC-vastuksen vastus.
Sitten mittaa tänään NTC-vastuksen lämpötila.
Lopuksi laske 100 kpl lämpötilan keskiarvoa.
#include <16F886.h> #FUSES NOWDT //No Watch Dog Timer #FUSES INTRC_IO //Internal RC Osc, no CLKOUT #FUSES PROTECT //Code not protected from reading #FUSES IESO //Internal External Switch Over mode enabled #FUSES NOBROWNOUT //Reset when brownout detected #FUSES PUT //Power Up Timer #FUSES NOCPD //No EE protection #FUSES NODEBUG //No Debug mode for ICD #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOWRT //Program memory not write protecte #FUSES NOFCMEN //Fail-safe clock monitor enabled #FUSES NOIESO // internal External switch over mode disabled #FUSES NOMCLR // Master Clear pin not enabled //#FUSES NOBROWNOUT // Do not put brownout on #FUSES BORV21 // thsi should BORV21 (=2.1V) #device ADC=10 *=16 #USE FAST_IO(B) #USE FAST_IO(c) #use delay(clock=8000000, restart_wdt) #BYTE ADCCON1 =0x9F #bit VCFG0 = ADCCON1.4 //adcmuunin laitetaan ottaamaan refrenssi ulkoisesta refensistä, ei VCC:stä #use rs232(baud=9600, parity=N, xmit=PIN_C6, errors, bits=8,Errors ) // RS232 asetukset #BYTE WPUB = 0x95 #BYTE OPTION_REG = 0x81 #BIT PULLUPSBIT = OPTION_REG.7 #BIT PULLUPB7 = WPUB.7 #BIT PULLUPB6 = WPUB.6 #BIT PULLUPB5 = WPUB.5 #define CMD 0 #define DATA 1 #byte PoRTA =5 #BYTE PORTB =6 #BYTE PORTC =7 #BYTE PORTD =8 #BYTE PORTE =9 #BYTE TRISA =0x85 #BYTE TRISB =0x86 #BYTE TRISC =0x87 #include <math.h> void initHardware ( void) { setup_oscillator(OSC_8MHZ); setup_comparator( NC_NC_NC_NC); setup_spi(SPI_DISABLED ); // Tämä pitää olla ehdottomasti ennen TRIS käskyä !! setup_comparator (NC_NC_NC_NC); // tämä häiritsee A5:sta , jos ei ole NC_NC_NC_NC setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256) ; //| RTCC_8_BIT); setup_ccp2(CCP_OFF); // Pulssine laskenta setup_ccp1(CCP_OFF); setup_adc( ADC_CLOCK_INTERNAL ); setup_adc_ports( sAN0 |sAN1|sAN2|sAN3| VSS_VREF ); // Huom laita VSS_VREF! set_adc_channel(0); // 1k ohm kanava set_tris_a(0b00101111); // A4 = Output, A7 = output set_tris_b(0b00000000); // LCD nastat paitsi. tässä mallissa on B0=>VCC! set_tris_c( 0); // Tässä on C-portti output RC6 ja RC7 =Rs232 set_tris_e( 0); // Tässä on E-portti E0,E1,E2 outputteja } #define SERIESRESISTOR 10000 #define NOMINAL_RESISTANCE 10000 #define NOMINAL_TEMPERATURE 25 #define BCOEFFICIENT 3950 float Resistance; float steinhart; void measure_ntc( void) { float V1, V2,i; unsigned int16 ADCvalue; setup_adc_ports(sAN0|sAN1); setup_adc(ADC_CLOCK_INTERNAL); set_adc_channel(0); ADCvalue= read_adc(); v1= 5.0*(float) (1023-ADCvalue)/1023; i= v1 /10000 ; // jaa 10k V2 = (float)(ADCvalue)*5/1023; Resistance= V2/i ; } /********************* Count steinhart -hart ************************/ void steinhart1( void){ steinhart = Resistance / NOMINAL_RESISTANCE; // (R/Ro) steinhart = log(steinhart); // ln(R/Ro) steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro) steinhart += 1.0 / (NOMINAL_TEMPERATURE + 273.15); // + (1/To) steinhart = 1.0 / steinhart; // Invert steinhart -= 273.15; // convert to C } void main( void) { unsigned int8 i=0; float temp=0; initHardware(); while(1) { temp=0; for(i=0; i<100; i++) { measure_ntc(); steinhart1(); temp +=steinhart; } printf("\rTemp %6.2fC ",temp/100); } }
Tässä on piirilevyn kytkentäkaavio

OH3GDO





