elechobby:picdic:pic16f88:70

ダイオード温度計

温度計を自作する場合、一般的には、次のような高精度IC温度センサを利用します。

  • LM35DZ(0~100℃、10.0mV/℃ )
  • S8100B(:-40~+100℃、-8.0mV/℃ )

今回は、シリコンダイオードの温度特性を利用した温度計を作成してみました。

シリコンダイオードの順方向電圧は、接合部の温度が変化すると-2mV/℃の割合で変化します。
通常20℃の順方向電圧は、約600mVです。
測定可能な温度範囲は、ダイオードの種類にもよりますが、約-20℃から150℃まで可能です。
但し、温度変化の割合は必ずしも直線的ではないので、誤差がでますので、厳密な計測には向きません。

今回の温度計では、この電圧の変化を計測し、温度として表示しています。
ダイオードを5個直列に接続することにより、温度の変化による、電圧の変化量を-10mV/℃としました。

<シリコンダイオードの特性>

  • シリコン半導体の接合電圧(順方向電圧)は、通常0.5~0.9Vの範囲で使用される。
  • その接合電圧の温度係数は、負の値を持っており、約-1.7~-2.2mV/℃の値が示されることが多い。
  • また接合電圧の温度係数は、接合電圧に大きく依存し、接合電圧が大きくなると温度係数は小さくなる。
  • ダイオードに流す電流に応じて接合電圧が変化する。
  • 高電流密度になれば負の温度係数の絶対値は小さくなる。
  • 接合電圧が、0.65Vで温度係数は、約-2mV/℃になる。
  • 電流が小さければ温度係数の絶対値はもっと大きくなる。

ThermoMeter3.c
//********************************************************************** 
/*
  『温度計(シリコンダイオード使用)』 
*/
//********************************************************************** 
 
 
unsigned	int	measurement()
{
	unsigned	int		ad, cnt;
	//
	ad = 0;
	for (cnt = 0; cnt < 60; cnt++) {
		ad += Adc_Read(1);
	}
	return (ad / 60);
}
 
//********************************************************************** 
 
void main()
{
	static	unsigned	char	buf[6], cnt;
	static	unsigned	int		ad;
	//
	OSCCON = 0b01110000;		// クロックは8Mhz 
	CMCON  = 0b00000111;		// コンパレータは使用しない。
	// A/D変換を使用する。 
	ANSEL  = 0b00000010;
	// ポートを初期化する。 
	TRISA  = 0b00111010;
	TRISB  = 0b00001111;
	// 入力割り込みの設定
	INTCON.INTE = 1;
	INTCON.INTF = 0;
	OPTION_REG.INTEDG = 1;
	// LCDを初期化する。 
	Lcd_Custom_Config(&PORTB,4,5,6,7,&PORTA,0,7,6);
	Lcd_Custom_Cmd(LCD_CURSOR_OFF);
	Lcd_Custom_Cmd(LCD_CLEAR);
	Lcd_Custom_Out(1, 1, "ThermoMeter3");
	Delay_ms(500);
	Lcd_Custom_Cmd(LCD_CLEAR);
	//
	INTCON.PEIE = 1;	// これ以降の処理で割り込みを許可する。 
	INTCON.GIE = 1;		// これ以降の処理で割り込みを許可する。 
	//
	while (1) {
		ad = measurement();
		ad = (double)ad * 4.8828125;
		WordToStr(ad, buf);
		Lcd_Custom_Out(2, 1, buf);
		Lcd_Custom_Out(2, 6, "mV");
		//
		WordToStr(100.0 - (((double)ad - 1380.0) / 10.0), buf);
		Lcd_Custom_Out(1, 1, buf);
		Lcd_Custom_Out(1, 6, "゚C");
	}
}
 
//**********************************************************************

いつものブレッドボードで確認しました。
上の白い温度計は市販のものです。

シリコンダイオードを5個直列にした、温度センサー部分です。
市販の温度計よりも、温度変化に敏感に反応します。

上:温度を表示
下:5個のダイオードの両端電圧です。

ダイオードに流す電流によって、温度係数の絶対値が変わってきますので、使用するダイオードに応じて、バイアス用の抵抗、回路図では、100kを調整し、プログラム上の100℃のときの電圧や1℃あたりの温度計数(10mV)の単位を調整することにより、更に精度を高めることが可能となります。

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/pic16f88/70.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1