以前にも、hFEの測定の実験をしたことがあります。
今回は、もう少し実用的になるようにしてみました。
基本的な原理は、hFEの測定の実験と同様です。
改良のポイントは、
//********************************************************************** void main() { float v1, v2, v3, v4, ib, ic; char buf[10]; // OSCCON = 0b01110000; // クロックは8Mhz CMCON = 0b00000111; // コンパレータは使用しない。 ANSEL = 0b11000011; // A/D変換を使用する。 TRISA = 0b11100011; TRISB = 0b11110000; OPTION_REG.F7 = 0; // Lcd_Custom_Config(&PORTB, 3, 2, 1, 0, &PORTA, 2, 3, 4); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Cmd(LCD_CURSOR_OFF); // while (1) { if (PORTA.F5 == 1) { Lcd_Custom_Out(1, 12, "(NPN)"); v1 = Adc_Read(1) * 4.8828125; v2 = Adc_Read(0) * 4.8828125; v3 = Adc_Read(5) * 4.8828125; // ic = (5000.0 - v3) * 10; //μAに換算する。 ib = v1 - v2; //μAに換算する。 } else { Lcd_Custom_Out(1, 12, "(PNP)"); v1 = Adc_Read(1) * 4.8828125; v2 = Adc_Read(0) * 4.8828125; v4 = Adc_Read(6) * 4.8828125; // ic = V4 * 10; //μAに換算する。 ib = V2 - v1; //μAに換算する。 } // WordToStr(ib, buf); Lcd_Custom_Out(2, 1, "Ib="); Lcd_Custom_Out(2, 4, &buf[1]); // WordToStr(ic, buf); Lcd_Custom_Out(2, 9, "Ic="); Lcd_Custom_Out(2, 12, buf); // WordToStr(ic / ib, buf); Lcd_Custom_Out(1, 1, "hFE="); Lcd_Custom_Out(1, 5, &buf[1]); // Delay_ms(500); } } //**********************************************************************