Тестер діодів і біполярних транзисторів

  • Час 30-04-2015, 10:00
  • Автор admin
  • Коментарів 0 Комент.
  • Силка url

Більшість сучасних тестерів (мультиметров) мають вбудовані функції тестування діодів і іноді транзисторів. Але якщо ваш тестер не має цих функцій, то ви можете зібрати тестер діодів і транзисторів своїми руками. Нижче представлений проект тестера на мікроконтролері PIC16F688.

Логіка тестування діодів дуже проста. Діод - це PN-перехід, який як відомо, проводить струм тільки в одному напрямку. Отже, робочий діод буде проводити струм в одному напрямку. Якщо діод проводить струм в обох напрямках, то значить діод неробочий - пробитий. Якщо діод ні в одному з напрямків не проводить, то діод також не робітник. Схемних реалізація даної логіки показана нижче.

Тестер діодів і біполярних транзисторів

Дану логіку легко можна адаптувати для тесту біполярних транзисторів, який містить два PN-переходу: один між базою і емітером (БЕ-перехід) і другий між базою і колектором (БК-перехід). Якщо обидва переходу проводять струм тільки в одному напрямку, транзистор - робочий, інакше - не робітник. Також ми можемо ідентифікувати тип транзистора PNP або NPN, визначивши напрямок провідності струму. Для тестування транзисторів, в мікроконтролері використовується 3 входу / виходу

Тестер діодів і біполярних транзисторів

Послідовність для тестування транзистора:
1. Включити вихід (встановити в одиницю) D2 і вважати D1 і D3. Якщо на D1 логічна одиниця, перехід БЕ проводить струм, інакше - ні. Якщо D3 в 1, то БК проводить струм, інакше - ні.
2. Встановити вихід D1 в 1 і вважати D2. Якщо D2 в 1, значить ЕБ проводять струм, інакше - ні.
3. Встановити вихід D3 в 1 і вважати D2. Якщо D2 в 1, значить КБ проводять струм, інакше - ні.

Далі, якщо БЕ і БК проводять струм, то транзистор NPN-типу і робітник. Якщо ж, ЕБ і КБ проводять струм, то транзистор PNP типу та також робітник. У всіх інших випадках (наприклад ЕБ і БЕ проводять струм або обидва переходу БК і КБ не проводять і т.п.) транзистор знаходиться не в робочому стані.

Прінціпіальаня схема тестера діодів і транзисторів і опис

Тестер діодів і біполярних транзисторів

Схема тестера дуже проста. У приладі передбачено 2 кнопки управління: Select (вибір) і Detail (детальніше). Після натискання кнопки Select відбувається вибір типу тесту: тест діода або транзистора. Кнопка Detail працює тільки при режимі тесту транзистора, на екрані LCD показується типу транзистора (NPN або PNP) і статуси провідності переходів транзистора.
Три ніжки тестованого транзистора (емітер, колектор і база) під'єднуються до "землі" через резистор 1 кОм. Для тестування використовуються висновки RA0, RA1, і RA2 мікроконтролера PIC16F688. Для тестування діода використовується тільки два висновки: Е і К (на схемі позначені D1 і D2).

Тестер діодів і біполярних транзисторів

Програма

Програмне забезпечення для даного проекту написано з використанням компілятора MikroC. Під час тестування і програмування будьте уважні і стежте за установками входів / виходів МК (RA0, RA1 і RA2) т.к. вони часто змінюються під час роботи. Перед тим, як встановити який-небудь вихід в 1, переконайтеся, що два інших входу / виходу МК визначені як входу. В іншому випадку можливі конфлікти входів / виходів МК.

/ * Project: Diode and Transistor Tester Internal Oscillator @ 4MHz, MCLR Enabled, PWRT Enabled, WDT OFF Copyright @ Rajendra Bhatt November 9, 2010 * / // LCD module connections sbit LCD_RS at RC4_bit; sbit LCD_EN at RC5_bit; sbit LCD_D4 at RC0_bit; sbit LCD_D5 at RC1_bit; sbit LCD_D6 at RC2_bit; sbit LCD_D7 at RC3_bit; sbit LCD_RS_Direction at TRISC4_bit; sbit LCD_EN_Direction at TRISC5_bit; sbit LCD_D4_Direction at TRISC0_bit; sbit LCD_D5_Direction at TRISC1_bit; sbit LCD_D6_Direction at TRISC2_bit; sbit LCD_D7_Direction at TRISC3_bit; // End LCD module connections sbit TestPin1 at RA0_bit; sbit TestPin2 at RA1_bit; sbit TestPin3 at RA2_bit; sbit Detail at RA4_bit; sbit SelectButton at RA5_bit; // Define Messages char message1 [] = "Diode Tester"; char message2 [] = "BJT Tester"; char message3 [] = "Result:"; char message4 [] = "Short"; char message5 [] = "Open"; char message6 [] = "Good"; char message7 [] = "BJT is"; char * type = "xxx"; char * BE_Info = "xxxxx"; char * BC_Info = "xxxxx"; unsigned int select, test1, test2, update_select, detail_select; unsigned int BE_Junc, BC_Junc, EB_Junc, CB_Junc; void debounce_delay (void) {Delay_ms (200); } Void main () {ANSEL = 0b00000000; // All I / O pins are configured as digital CMCON0 = 0? 07; // Disbale comparators PORTC = 0; PORTA = 0; TRISC = 0b00000000; // PORTC All Outputs TRISA = 0b00111000; // PORTA All Outputs, Except RA3 (I / P only) Lcd_Init (); // Initialize LCD Lcd_Cmd (_LCD_CLEAR); // CLEAR display Lcd_Cmd (_LCD_CURSOR_OFF); // Cursor off Lcd_Out (1,2, message1); // Write message1 in 1st row select = 0; test1 = 0; test2 = 0; update_select = 1; detail_select = 0; do {if (! SelectButton) {debounce_delay (); update_select = 1; switch (select) {case 0: select = 1; break; case 1: select = 0; break; } // Case end} if (select == 0) {// Diode Tester if (update_select) {Lcd_Cmd (_LCD_CLEAR); Lcd_Out (1,2, message1); Lcd_Out (2,2, message3); update_select = 0; } TRISA = 0b00110100; // RA0 O / P, RA2 I / P TestPin1 = 1; test1 = TestPin3; // Read I / P at RA2 TestPin1 = 0; TRISA = 0b00110001; // RA0 I / P, RA2 O / P TestPin3 = 1; test2 = TestPin1; TestPin3 = 0; if ((test1 == 1) && (Test2 == 1)) {Lcd_Out (2,10, message4); } If ((test1 == 1) && (Test2 == 0)) {Lcd_Out (2,10, message6); } If ((test1 == 0) && (Test2 == 1)) {Lcd_Out (2,10, message6); } If ((test1 == 0) && (Test2 == 0)) {Lcd_Out (2,10, message5); } } // End if (select == 0) if (select && ! Detail_select) {// Transistor Tester if (update_select) {Lcd_Cmd (_LCD_CLEAR); Lcd_Out (1,2, message2); update_select = 0; } // Test for BE and BC Junctions of NPN TRISA = 0b00110101; // RA0, RA2 I / P, RA1 O / P TestPin2 = 1; BE_Junc = TestPin1; // Read I / P at RA0 BC_Junc = TestPin3; // Read I / P at RA2 TestPin2 = 0; // Test for EB and CB Junctions of PNP TRISA = 0b00110110; // RA0 O / P, RA1 / RA2 I / P TestPin1 = 1; EB_Junc = TestPin2; TestPin1 = 0; TRISA = 0b00110011; // RA0 O / P, RA1 / RA2 I / P TestPin3 = 1; CB_Junc = TestPin2; TestPin3 = 0; if (BE_Junc && BC_Junc && ! EB_Junc && ! CB_Junc) {Lcd_Out (2,2, message3); Lcd_Out (2,10, message6); type = "NPN"; BE_info = "Good"; BC_info = "Good"; } Else if (! BE_Junc && ! BC_Junc && EB_Junc && CB_Junc) {Lcd_Out (2,2, message3); Lcd_Out (2,10, message6); type = "PNP"; BE_info = "Good"; BC_info = "Good"; } Else {Lcd_Out (2,2, message3); Lcd_Out (2,10, "Bad"); type = "Bad"; }} If (select && ! Detail) {debounce_delay (); switch (detail_select) {case 0: detail_select = 1; break; case 1: detail_select = 0; break; } // Case end update_select = 1; } if (detail_select && update_select) { // Test for BE Junction open if (! BE_Junc && ! EB_Junc) {BE_info = "Open"; } // Test for BC Junction open if (! BC_Junc && ! CB_Junc) {BC_info = "Open"; } // Test for BE Junction short if (BE_Junc && EB_Junc) {BE_info = "Short"; } // Test for BC Junction short if (BC_Junc && CB_Junc) {BC_info = "Short"; } Lcd_Cmd (_LCD_CLEAR); Lcd_Out (1,1, "Type:"); Lcd_Out (1,7, type); Lcd_Out (2,1, "BE:"); Lcd_Out (2,4, BE_info); Lcd_Out (2,9, "BC:"); Lcd_Out (2,12, BC_info); update_select = 0; } // End if (detail_select) } While (1); }

Тестер діодів і біполярних транзисторів

Tags

Коментарі до новини