簡易高抵抗測定器

概要

前回は、1Ω以下(最小は、約1mΩ)の低い抵抗値を測定する、“簡易低抵抗測定器“を製作しました。 今回は、1MΩ以上(最高は、約100MΩ)の高い抵抗値を測定する、“簡易高抵抗測定器”を製作しました。

動作原理

基本的には、オームの法則です。 つまり、未知の抵抗Rxに、電流(I)を流し、そのときのRxの両端の電圧(V)から求めます。 Rx=V÷I

<電流(I)の求め方> I=V2÷基準抵抗(R1=9.1MΩ)

<電圧(V)の求め方> V=V1-V2

<未知の抵抗(Rx)の求め方> Rx=V÷I

※今回の回路で、重要な役割を果たすのが、オペアンプ(LMC662)です。 このオペアンプの、入力インピーダンスは、1テラΩ以上あります。従って、基準抵抗(R1=9.1MΩ)には、殆ど影響を与えません。

回路図

ソースコード

※基準抵抗(R1=9.1MΩ)の精度が重要なので、プログラム上は、R1の実測値を反映させています。 ※出来るだけ精度の高い抵抗を使用してください。

//********************************************************************** /* 『簡易高抵抗測定器（High Resistance Meter）』 */ //********************************************************************** #define SW PORTA.F5 //********************************************************************** void main() { static unsigned char buf[20]; static unsigned int cnt; static double v1, v2, ohm, offset; // OSCCON = 0b01110000; // クロックは8Mhz CMCON = 0b00000111; // コンパレータは使用しない。 // Ａ／Ｄ変換を使用する。 ANSEL = 0b000000011; ADCON1.VCFG1 = 1; ADCON1.VCFG0 = 0; // ポートを初期化する。 TRISA = 0b11111111; TRISB = 0b00000000; // ＬＣＤを初期化する。 Lcd_Custom_Config(&PORTB,7,6,5,4,&PORTB,3,2,1); Lcd_Custom_Cmd(LCD_CURSOR_OFF); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Out(1, 1, "Resistance Meter"); Delay_ms(1000); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Chr(1, 12, 0xF4); Lcd_Custom_Out(2, 6, "mV"); Lcd_Custom_Out(2, 14, "mV"); // offset = 1.0; // while (1) { //非測定抵抗の入力電圧（V1)を測定します。 v1 = 0.0; for (cnt = 0; cnt < 5000; cnt++) { v1 += Adc_Read(0); } v1 = (v1 / 5000.0) * 2.44140625; WordToStr(v1, buf); Lcd_Custom_Out(2, 1, buf); // //非測定抵抗の出力電圧（V2)を測定します。 v2 = 0.0; for (cnt = 0; cnt < 5000; cnt++) { v2 += Adc_Read(1); } v2 = (v2 / 5000.0) * 2.44140625; // if (SW == 0) { offset = v1 / v2; // WordToStr(v2, buf); Lcd_Custom_Out(2, 9, buf); LongToStr(offset * 1000000, buf); buf[0] = buf[1]; buf[1] = buf[2]; buf[2] = buf[3]; buf[3] = buf[4]; buf[4] = '.'; Lcd_Custom_Out(1, 1, buf); Lcd_Custom_Chr(1, 12, '%'); // Lcd_Custom_Chr(1, 16, '*'); Delay_ms(100); Lcd_Custom_Chr(1, 16, ' '); Delay_ms(100); continue; } v2 = v2 * offset; WordToStr(v2, buf); Lcd_Custom_Out(2, 9, buf); //非測定抵抗の抵抗値を求めます。 ohm = (v1 - v2) / (v2 / 9800000); //基準となる抵抗の実測値を設定し精度を上げます。 //各値を表示します。 LongToStr(ohm, buf); Lcd_Custom_Out(1, 1, buf); Lcd_Custom_Chr(1, 12, 0xF4); } } //**********************************************************************

動作確認

測定端子を短絡させて、オフセット値を設定します。(SW1を押下します) LCDの表示内容(上側=オフセット比率、左下=V1、右下=V2)

実際に測定した、手持ちの高抵抗です。 左側から、1MΩ、2.7MΩ、3.3MΩ、4.7MΩ、9.1MΩです。

1MΩの測定結果です。(右側は、手持ちのテスターの測定結果です) LCDの表示内容(上側=Rxの値、左下=V1、右下=V2)

2.7MΩの測定結果です。(右側は、手持ちのテスターの測定結果です)

3.3MΩの測定結果です。(右側は、手持ちのテスターの測定結果です)

4.7MΩの測定結果です。(右側は、手持ちのテスターの測定結果です)

9.1MΩの測定結果です。(右側は、手持ちのテスターの測定結果です)

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細 This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details