====== 動的半田ごてセラミックヒータ抵抗測定ユニット ====== ===== 概要 ===== 半田ごてのヒータにはニクロムヒータとセラミックヒータがあります。 セラミックヒータの温度と抵抗値の特性は、温度が上昇すると抵抗値が高くなります。 手持ちの半田ごて(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]]