====== 動的半田ごてセラミックヒータ抵抗測定ユニット ======
===== 概要 =====
半田ごてのヒータにはニクロムヒータとセラミックヒータがあります。
セラミックヒータの温度と抵抗値の特性は、温度が上昇すると抵抗値が高くなります。
手持ちの半田ごて(20W)を実際に調べてみますと、OFF時には、約170Ω、ON時(半田付けが出来るくらいに温まった状態)には、約500Ωありました。
この温度による抵抗の変化を動的(通常に半田ごてにAC100Vを通電しながら)に測定するユニットを作成してみました。
これを応用すると精度の高い“半田ごて温度調整器"が出来そうです。
===== 動作原理 =====
* 半田ごてには、AC100Vをブリッジダイオードで正弦波を全波に変換した電圧V0を加えます。
* 半田ごてには、更にVdd(+5V)からダイオードを経由して約4.4Vの電圧V1も同様に加えます。
* 電圧V0が0Vになるタイミングをブリッジダイオードとフォトカプラで得ます。(PICの割り込み信号に使用)
* 電圧V0が0Vになるタイミングでは、電圧V1が半田ごてのセラミックヒータ抵抗R0+1Ωの抵抗R1に加えられます。
* 抵抗R1の両端電圧V2をオペアンプで約101倍に増幅します。
* PICのA/D変換でこの増幅された電圧V2を取り込みます。
* PIC内部でV2を換算します。\\ V2=%%(V2×(5V÷1024))÷101%%
* この電圧V2と抵抗R1より電流I1を求めます。\\ I1=V2÷R1
* 電圧V1と電圧V2と電流I1より、セラミックヒータ抵抗R0を求めます。\\ R0=(V1-V2)÷I1
{{:imgpaste:202004:htmikan-20200429-182711.png}}
===== 回路図 =====
{{:imgpaste:202004:htmikan-20200429-182722.png}}
===== ソースコード =====
//**********************************************************************
/*
『動的半田ごてヒータ抵抗測定ユニット』
※半田ごてに電圧を加えたままで、ヒータ抵抗が測定できます。
※ヒータ抵抗は温度が上昇すると抵抗値が上がっていきます。
※これを応用することにより、半田ごての温度を調整することが出来そうです。
*/
//**********************************************************************
static unsigned char FLAG;
void interrupt(){
if (INTCON.INTF == 1) {
INTCON.INTF = 0;
PORTA.F2 = ~PORTA.F2;
FLAG = 1;
}
}
//**********************************************************************
unsigned int measurement()
{
unsigned int ad, max, min, cnt;
//
ad = 0;
max = 0;
min = 1024;
for (cnt = 0; cnt < 100; cnt++) {
ad = Adc_Read(1);
max = ad > max ? ad : max;
min = ad < min ? ad : min;
}
return (max);
}
//**********************************************************************
void main()
{
static unsigned char buf[6], cnt;
static unsigned int ad;
static double v1, r1, i1;
//
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, "HeaterResistance");
Delay_ms(500);
Lcd_Custom_Cmd(LCD_CLEAR);
//
INTCON.PEIE = 1; // これ以降の処理で割り込みを許可する。
INTCON.GIE = 1; // これ以降の処理で割り込みを許可する。
//
FLAG = 0;
while (1) {
ad = 0;
for (cnt = 0; cnt < 30; cnt++) {
while (FLAG == 0)
;
FLAG = 0;
ad += measurement();
}
ad = ad / 30;
v1 = ((double)ad * 4.8828125) / 101.0;
i1 = v1 / 1.0;
r1 = (4400 - v1) / i1;
//
WordToStr(r1, buf);
Lcd_Custom_Out(1, 1, buf);
buf[0] = 0xF4; // Ω
buf[1] = 0x00;
Lcd_Custom_Out(1, 6, buf);
//
WordToStr(v1, buf);
Lcd_Custom_Out(2, 1, buf);
Lcd_Custom_Out(2, 6, "mV");
//
WordToStr(i1, buf);
Lcd_Custom_Out(2, 9, buf);
Lcd_Custom_Out(2, 14, "mA");
}
}
//**********************************************************************
===== 動作確認 =====
いつものブレッドボードで動作確認しました。
AC100Vを使用しますので取り扱いにはご注意ください。
{{:imgpaste:202004:htmikan-20200429-182821.png?500}}
フォトカプラの入力電圧と出力電圧の波形です。
電圧が0Vになるタイミングをこれで得ることができます。
{{:imgpaste:202004:htmikan-20200429-182835.png?500}}
半田ごてに通電していないときのセラミックヒータ抵抗の値です。
{{:imgpaste:202004:htmikan-20200429-182850.png?500}}
半田ごてに通電し始めた時のセラミックヒータ抵抗の値です。
{{:imgpaste:202004:htmikan-20200429-182905.png?500}}
半田ごてに通電し、十分温まった時のセラミックヒータ抵抗の値です。
{{:imgpaste:202004:htmikan-20200429-182921.png?500}}
このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。[[elechobby:picdic:picdic|詳細]]
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.[[elechobby:picdic:picdic|Details]]