Ntc Vastus

Termistori eli NTC-vastus

Pekka Ritamäki
ntc.jpg

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.

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ä! Siis voit ostaa mistä tahansa paikasta NTC-vastuksen ja se toimii kuten toinen samanarvoinen vastus.
Niiden lämpötila-alue on -55…125°C.

Niitä voi olla kuitenkin eri tehosia. Pienimmät ovat mittauskäyttöön sopivia, esimerksi 450 mW.

NTC-vastus1.jpg

Kuva 2 NTC-vastus

• 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.

NTC-vastus3.jpg

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

NTC-vastus4.jpgNTC-vastus5.jpg

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

NTC-vastus6.jpg

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

NTC-vastus7.jpg

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ä.

Sululaiseni 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.

Daivalohkokaavio.jpg

Kuva 5. Daiwa pumpun ulkoyksikön lohkokaavio

NTC-vastus8.jpg

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-vastus.

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.

NTC-vastus9.jpg

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.

ntc22kohmia.jpg

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 NTX-vastuksen vastus.
Sitten mittaa tänän NTC-vastuksen lämpötila.
Lopuski laske 100 kpl lämpötilan keskiartvo.

#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

ntc1.jpg
OH3GDO
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License