Testeurs de transistors

Le test d'un transistor

Les transistors bipolaires se testent assez facilement. Un transistor peut être considéré comme étant composé de 2 diodes. Un schéma équivalent est donné ci-contre pour un transistor NPN et PNP. Chaque diode traversée par un courant affiche une tension directe d'environ 0,6 V. La tension entre Base et Emetteur, Vbe = 0,6 V environ. Un testeur de transistors peut donc mesurer Vbe.
Un autre paramètre important est l'amplification en courant du transistor, appelé gain(Ic/Ib) : Ic est le courant dans le Collecteur, Ib le courant dans la Base.
Ce gain peut être mesuré, il varie suivant le type de transistor de 20 à 900.
Un suffixe placé sur le transistor indique une plage de gain, par exemple pour la série BC546-BC550 de Fairchild :

Suffixe
A
B
C
Gain
110 ~ 220
200~450
420~800

Testeur de transistor sur PC

Sur le schéma ci-contre le transistor à tester est relié à K1.
Pour un transistor NPN : 1->E , 2->B, 3->C
Pour un transistor PNP : 1->C , 2->B, 3->E
L'interrupteur S1 permet de choisir entre NPN et PNP.
CI1 est un petit microcontrôleur, un ATtiny13. Il possède des entrées analogiques et la sortie PB1 est utilisée en Port sériel.
On suppose Vbe = 0,6 V et on calcule le gain Ic/Ib.
K2 est un connecteur qui se relie à un câble sériel TTL/USB de chez FTDI.
Le câble alimente en 5 V le testeur et transmet les données sérielles au PC.
Un programme réalisé avec Profilab Expert d'Abacom permet l'affichage sur l'écran du PC du gain. Un simple programme de Terminal affiche aussi la valeur du gain.
Le programme de L'ATtiny 13 est écrit en BASCOM et comporte peu de lignes. Pour la programmation voir la page : Programmer un microcontrôleur AVR.


Le montage réalisée sur plaque d'expérimentation


La mise en boîtier

Le programme sur le PC

Le Port COM peut être changé en cliquant sur l'icône de la barre de menu (Hardware).
Le dessin montre les connexions à établir pour un transistor NPN et PNP.

Le programme en Bascom

 
' transistor tester
' Jmd janvier 2014
$regfile = "attiny13.dat"
$crystal = 4000000
$hwstack = 8
$swstack = 4
$framesize = 4

Dim Uc As Word
Dim U1 As Word
Dim U2 As Word
Dim I1 As Word
Dim I2 As Word
Dim V As Word

Open "comb.1:9600,8,n,1" For Output As #1

Config Adc = Single , Prescaler = Auto
Start Adc

Do
   Uc = Getadc(3)                                           ' Lecture ADC3

   Uc = Uc * 50
   U2 = Uc - 6000                                           ' Ube = 600 mV
   U1 = 51150 - Uc
   I1 = U1
   I2 = U2 / 100                                            ' Calcul du gain
   V = I1 / I2
   Print #1 , V
                                                            ' Ecriture port sériel
   Waitms 500
Loop

End
Les programmes et les dessins

Testeur de transistors avec Arduino

On relie à une carte Arduino un LCD, l'interrupteur et les 2 résistances. Le montage est expérimenté sur la carte Arduino Uno mais peut se transformer en circuit autonome alimenté par une pile 9V. Il faut pour cela un Atmega 328, avec son quartz et un régulateur de tension en 5V.


Le montage utilise 3 des entrées analogiques de l'Arduino car il mesure Vc, Vbe et teste la position de l'interrupteur S1.

La carte Arduino possédant plus d'entrées/sorties que l'ATtiny13, on peut ajouter des mesures. L'afficheur LCD affiche le gain, Vbe et le transistor testé NPN ou PNP. Il faut respecter les mêmes connections que pour le testeur précédent :
Pour un transistor NPN : 1->E , 2->B, 3->C
Pour un transistor PNP : 1->C , 2->B, 3->E

Des Shield Arduino pour LCD existent tout prêt, mais on peut s'en confectionner un maison sur une plaque d'expérimentation. Dans le cas ou on utilise un shield du commerce, il faut veiller à l'attribution des broches du LCD et modifier au besoin la ligne du programme :
LiquidCrystal lcd(2,3,4,5,6,7);

Le programme Arduino

 
 *
 * Testeur de transistor avec LCD
 * JM Defais 2014
 */

#include < LiquidCrystal.h >

LiquidCrystal lcd(2,3,4,5,6,7);

void setup(void)
{
lcd.begin(16,2);
lcd.clear();
lcd.print("Testeur transistor");
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Gain =");
lcd.setCursor(0,1);
lcd.print("Vbe =");
lcd.setCursor(9,1);
lcd.print("V");
}


void loop(void) 
{
  long UC = analogRead(A0);                //lecture de U collecteur/emetteur
  int K1 = analogRead(A1);                 // lecture de l'interrupteur
  long Vb = analogRead(A2);                // lecture de Vbe/ vbc
  if (K1 != 0)                             // test de la position de l'interrupteur
  {
    lcd.setCursor(12,1);
    lcd.print("NPN");
  }
  else
  {
    lcd.setCursor(12,1);
    lcd.print("PNP");
    Vb= UC - Vb;                          // Calcul de Vbe pour PNP
  }
  lcd.setCursor(5,1);
  lcd.print(Vb*((float)5/(float)1023));  // Calcul et affichage de Vbe
  long U2 = ((UC*50)- (Vb*50000/1023));
  
  long U1 = (51150 - (UC*50));
  lcd.setCursor(7,0);
  lcd.print(U1/(U2/100));                //Calcul et affichage du gain
  delay(500);
}
Le programme et les dessins