半田ごてのヒータにはニクロムヒータとセラミックヒータがあります。
セラミックヒータの温度と抵抗値の特性は、温度が上昇すると抵抗値が高くなります。
手持ちの半田ごて(20W)を実際に調べてみますと、OFF時には、約170Ω、ON時(半田付けが出来るくらいに温まった状態)には、約500Ωありました。
この温度による抵抗の変化を動的(通常に半田ごてにAC100Vを通電しながら)に測定するユニットを作成してみました。
これを応用すると精度の高い“半田ごて温度調整器“が出来そうです。
//********************************************************************** /* 『動的半田ごてヒータ抵抗測定ユニット』 ※半田ごてに電圧を加えたままで、ヒータ抵抗が測定できます。 ※ヒータ抵抗は温度が上昇すると抵抗値が上がっていきます。 ※これを応用することにより、半田ごての温度を調整することが出来そうです。 */ //********************************************************************** 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"); } } //**********************************************************************