온도측정용 써미스터 실험 리뷰!
온도측정용 써미스터 신제품 5종 입고!!
●써미스터[ Thermistor ] 란?
온도 상승에 따라 전기저항이 현저하게 작아지는 반도체의 성질을 이용한 회로소자.
철, 니켈, 망간, 몰리브덴, 동 등의 산화물, 탄산염, 초산염, 염화물을 소결하여 만든다. 온도측정, 제어, 보상, 이득조정, 전력측정 등에 이용된다.
온도측정용 탐침형 써미스터 (온도측정용 써미스터 NTSF-4) 의 실험동영상을 한번 보실까요?
써미스터 반응속도가 정밀온도계보다는 조금 느리지만, 점점 정밀온도계와 점점 오차없이 같아지는 걸 보실 수 있으실 거에요!
정밀한 써미스터온도계 good입니다!
*써미스터 테이블표
저항값 | 온도 | 저항값 | 온도 | 저항값 | 온도 | 저항값 | 온도 |
217000 | -40 | 25680 | 2 | 5023 | 44 | 1374 | 86 |
204600 | -39 | 24580 | 3 | 4854 | 45 | 1336 | 87 |
193000 | -38 | 23530 | 4 | 4691 | 46 | 1300 | 88 |
182100 | -37 | 22540 | 5 | 4535 | 47 | 1264 | 89 |
171900 | -36 | 21590 | 6 | 4385 | 48 | 1230 | 90 |
162400 | -35 | 20690 | 7 | 4240 | 49 | 1197 | 91 |
153500 | -34 | 19820 | 8 | 4101 | 50 | 1165 | 92 |
145100 | -33 | 19010 | 9 | 3967 | 51 | 1134 | 93 |
137200 | -32 | 18220 | 10 | 3839 | 52 | 1104 | 94 |
129800 | -31 | 17480 | 11 | 3715 | 53 | 1075 | 95 |
122900 | -30 | 16770 | 12 | 3596 | 54 | 1046 | 96 |
116400 | -29 | 16090 | 13 | 3481 | 55 | 1019 | 97 |
110300 | -28 | 15450 | 14 | 3370 | 56 | 992.3 | 98 |
104500 | -27 | 14830 | 15 | 3264 | 57 | 966.5 | 99 |
99090 | -26 | 14240 | 16 | 3161 | 58 | 941.4 | 100 |
93990 | -25 | 13680 | 17 | 3062 | 59 | 917.2 | 101 |
89180 | -24 | 13140 | 18 | 2967 | 60 | 893.6 | 102 |
84650 | -23 | 12630 | 19 | 2875 | 61 | 870.7 | 103 |
80390 | -22 | 12140 | 20 | 2787 | 62 | 848.6 | 104 |
76360 | -21 | 11670 | 21 | 2701 | 63 | 827.1 | 105 |
72570 | -20 | 11230 | 22 | 2619 | 64 | 806.2 | 106 |
68980 | -19 | 10800 | 23 | 2539 | 65 | 785.9 | 107 |
65600 | -18 | 10390 | 24 | 2462 | 66 | 766.2 | 108 |
62410 | -17 | 10000 | 25 | 2388 | 67 | 747.1 | 109 |
59390 | -16 | 9626 | 26 | 2317 | 68 | 728.5 | 110 |
56530 | -15 | 9267 | 27 | 2248 | 69 | 710.5 | 111 |
53840 | -14 | 8925 | 28 | 2181 | 70 | 693 | 112 |
51280 | -13 | 8596 | 29 | 2117 | 71 | 676 | 113 |
48870 | -12 | 8282 | 30 | 2055 | 72 | 659.5 | 114 |
46580 | -11 | 7980 | 31 | 1995 | 73 | 643.4 | 115 |
44420 | -10 | 7692 | 32 | 1937 | 74 | 627.8 | 116 |
42360 | -9 | 7415 | 33 | 1881 | 75 | 612.7 | 117 |
40420 | -8 | 7150 | 34 | 1827 | 76 | 597.9 | 118 |
38580 | -7 | 6896 | 35 | 1774 | 77 | 583.6 | 119 |
36830 | -6 | 6652 | 36 | 1724 | 78 | 569.7 | 120 |
35170 | -5 | 6418 | 37 | 1675 | 79 | 556.2 | 121 |
33600 | -4 | 6193 | 38 | 1627 | 80 | 543 | 122 |
32100 | -3 | 5978 | 39 | 1582 | 81 | 530.2 | 123 |
30680 | -2 | 5771 | 40 | 1537 | 82 | 517.8 | 124 |
29340 | -1 | 5572 | 41 | 1494 | 83 | 505.7 | 125 |
28060 | 0 | 5382 | 42 | 1453 | 84 | ||
26840 | 1 | 5199 | 43 | 1413 | 85 |
*온도센서 회로도 – 클릭하기!!
*온도센서 프로그램소스
/*****************************************************
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 12.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <math.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
// Declare your global variables here
float ntc_val;
float temperature;
float sensor_adc = 0;
signed int dis_temperature = 0;
unsigned char lcd_string[8];
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0×00;
DDRA=0×00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0×00;
DDRB=0×00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0×00;
DDRC=0×00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0×00;
DDRD=0×00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0×00;
MCUCSR=0×00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×00;
// USART initialization
// USART disabled
UCSRB=0×00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// ADC initialization
// ADC Clock frequency: 93.750 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ACSR=0×80;
SFIOR=0×00;
ADMUX=0×40;
ADCSRA=0x8D;
// SPI initialization
// SPI disabled
SPCR=0×00;
// TWI initialization
// TWI disabled
TWCR=0×00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS – PORTB Bit 0
// RD – PORTB Bit 1
// EN – PORTB Bit 2
// D4 – PORTB Bit 4
// D5 – PORTB Bit 5
// D6 – PORTB Bit 6
// D7 – PORTB Bit 7
// Characters/line: 16
lcd_init(16);
//도씨 단위 표시 위해 캐릭터 LCD RAM 0번지에 특수 문자 라이팅
delay_ms(10);
lcd_write_byte(0b01000000, 0b00000111);
delay_ms(1);
lcd_write_byte(0b01000001, 0b00000101);
delay_ms(1);
lcd_write_byte(0b01000010, 0b00000111);
delay_ms(1);
lcd_write_byte(0b01000011, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000100, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000101, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000110, 0b00000000);
delay_ms(1);
lcd_write_byte(0b01000111, 0b00000000);
delay_ms(1);
lcd_gotoxy(0,0);
lcd_puts(” DeviceMart “);
lcd_gotoxy(0,1);
lcd_puts(” Laura Moon “);
delay_ms(3000);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(” DeviceMart “);
lcd_gotoxy(0,1);
lcd_puts(” Temp.”);
while (1)
{
//ADC 값 읽어 오기
ADMUX = 0×40;
ADCSRA |= 0×40;
while ((ADCSRA & 0×10)==0);
sensor_adc = (float)(ADCW);
// NTC_R(NTC RESISROT VALUE Ohm)
// ADC 값 읽어 다가 NTC_R 저항값 산출
// NTC_R /(NTC_R + 10000(분앖저항값 Ohm)) = ADC / 1023(10biT Resolustion)
// NTC_R 에관해 풀이 하면
// NTC_R = 10000*ADC / 1023-ADC
ntc_val = (10000 * sensor_adc) / (1023 – sensor_adc);
//NTS 시리즈 써미스터 데이터 시트에 온도에 따른 저항 테이블 값을 토대로 함수를 추출
//(706.6 * ntc_val(NTC_RESISTOR Ohm) ^ -0.1541) – 146
// ! 좀더 정밀한 온도값을 원할 경우 테이블 값을 저장해 비교 하는 방식을 사용 하세요.
temperature = (706.6 * pow(ntc_val,-0.1541)) – 146;
//온도를 소수점 한자리까지 표현 하기 위해 10을 곱한후 정수형 변환
temperature *= 10;
dis_temperature = (signed int)(temperature);
lcd_gotoxy(8,1);
if(dis_temperature < 0)
{
lcd_putchar(‘-’);
dis_temperature *= -1;
}
else (‘ ‘);
lcd_gotoxy(9,1);
lcd_putchar(dis_temperature / 1000 + ’0′);
dis_temperature %= 1000;
lcd_gotoxy(10,1);
lcd_putchar(dis_temperature / 100 + ’0′);
dis_temperature %= 100;
lcd_gotoxy(11,1);
lcd_putchar(dis_temperature / 10 + ’0′);
lcd_gotoxy(12,1);
lcd_putchar(‘.’);
lcd_gotoxy(13,1);
lcd_putchar(dis_temperature % 10 + ’0′);
lcd_gotoxy(14,1);
lcd_putchar(0×00);
lcd_gotoxy(15,1);
lcd_putchar(‘C’);
delay_ms(100);
}
}
*테이블값에 따른 함수 추출표
탐침형 외에 “판넬 부착형 써미스터” 도 아주 유용합니다!
방열판이나 엔클로저 등의 판넬에 부착하여 측정가능한 실용적인 써미스터랍니다^^
써미스터에 대한 디바이스마트 제품 리뷰였습니다!
많은 관심 부탁드립니다! :lol: