Hi,
I' m stuck in my project and I hope that somebody can help me! I wish to create an Arduino based project that fully test the npn transistors (so that I can supply base witch voltage from 0-3,6V and collector witch voltage 0-12V) and after all measurements draw a I(U) characteristics and count h parameters of transistor.
First of all, I tried to connect it as simple as possible using 15V/1A SMPS and 7812 stabilizer unfortunately it didn't work properly (when Ube>0,6V Uce=0V, and when Ube<0,6V Uce was almost the voltage supplied to collector) - so completely other way around. (The circuit was like in the Fritzing sketch below:)
Then I realized that the problem can be caused by too high current on Ib, that's why I applied 2MOhms parallel resistors into base and collector supply, and I also changed the power supply unit to stabilized 12V/300mA. Unfortunately now, it's working a bit more as should but no matter what Ube would be Uce is always open (almost equals to collector supply voltage). When Uce is high (i.e. 12V) and U supplying base is low (0V) there occurs Ube voltage of approx. 0,4V. Does anyone know why is that behaving that way? And what to do in order to get rid of it. I also realized when measuring with multimeter that emitter voltage (although its connect to ground pin is not always (0V) - when Uce=12V and Ube=0,7V Ue is approx. 0,2V. That's why I plugged A4 pin to measure it and add 1M resistor to decrease that voltage before gnd pin and suddenly my Arduino stopped working (probably it burned). To make things more sure I apply also the final sketch from Fritzing:
And code: (U1 - supply on base, U2 - supply on collector)
#include <LiquidCrystal_I2C.h> //Zawarcie biblioteki do wyświetlacza LCD
LiquidCrystal_I2C lcd(0x27,16,2); //Adres wyświetlacza
float resistor1 = 20000; //Przypisanie wartości R oporników uzytych jako dzielnik napięcia
float resistor2 = 10000;
void setup() { //Funkcja inicjująca
Serial.begin(9600); // Inicjalizacja komunikacji szeregowej
lcd.init(); // Inicjalizacja wyświetlacza LCD
lcd.backlight();
lcd.setCursor(0,0);
}
void loop() { //Funkcja wykonawcza
int wartoscAnalogowa = analogRead(A0); // Odczytaj wartość analogową z pinu A0
float ubwej = wartoscAnalogowa * (5.0 / 1024.0); // Konwersja na napięcie [V]
int wartoscAnalogowa1 = analogRead(A1); // Odczytaj wartość analogową z pinu A1
float ucwej = wartoscAnalogowa1 * (5.0 / 1024.0) * (resistor1 + resistor2) / resistor2; // Konwersja na napięcie [V]
int wartoscAnalogowa2 = analogRead(A2); // Odczytaj wartość analogową z pinu A2
float ubwyj = wartoscAnalogowa2 * (5.0 / 1024.0); // Konwersja na napięcie [V]
int wartoscAnalogowa3 = analogRead(A3); // Odczytaj wartość analogową z pinu A3
float ucwyj = wartoscAnalogowa3 * (5.0 / 1024.0) * (resistor1 + resistor2) /resistor2; // Konwersja na napięcie [V]
int wartoscAnalogowa4 = analogRead(A4); // Odczytaj wartość analogową z pinu A4
float ue = wartoscAnalogowa4 * (5.0 / 1024.0) * (resistor1 + resistor2) /resistor2; // Konwersja na napięcie [V]
Serial.println("NASTAWA: ");
Serial.print("U1 "); //Wyświetl w porcie szeregowym napis "xyz"
Serial.print(ubwej,3); //Wyświetl w porcie szeregowym wartość napięcia Ube z dokładnością do 3 miejsc po przecinku
Serial.print("V ");
Serial.print("U2 ");
Serial.print(ucwej,3); //Wyświetl w porcie szeregowym wartość napięcia Uce z dokładnością do 3 miejsc po przecinku
Serial.println("V ");
Serial.println("POMIAR: ");
Serial.print("Ube ");
Serial.print(ubwyj-ue,3); //Wyświetl w porcie szeregowym wartość napięcia Ube z dokładnością do 3 miejsc po przecinku
Serial.print("V ");
Serial.print("Uce ");
Serial.print(ucwyj-ue,3); //Wyświetl w porcie szeregowym wartość napięcia Uce z dokładnością do 3 miejsc po przecinku
Serial.println("V ");
//Pomiar prądu odbywa się metodą pośrednią przez pomiar spadku napięcia na rezystorze 1MOhm:
Serial.print("Ib ");
Serial.print((ubwej-ubwyj),3); //Oblicz i wyświetl natęzenie prądu bazy z dokładnością do 3 miejsc po przecinku
Serial.print("μA ");
//Pomiar prądu odbywa się metodą pośrednią przez pomiar spadku napięcia na rezystorze 150hm:
Serial.print("Ic ");
Serial.print((ucwej-ucwyj)/0.00015,3); //Oblicz i wyświetl natezenie prądu kolektora z dokładnością do 3 miejsc po przecinku
Serial.println("μA ");
//Wyswietl na wyświetlaczu nastawy U1 i U2 oraz wyniki pomiarów: Ube, Uce
lcd.clear();
lcd.print("U1");
lcd.print(ubwyj);
lcd.print(" U2");
lcd.print(ucwyj);
lcd.setCursor(0, 1);
lcd.print("Ube");
lcd.print((ubwyj));
lcd.print(" Uce");
lcd.print((ucwyj));
delay(1000); // Opóźnienie między odczytami 1000 ms = 1s
}
To explain: Rb = 1M, Rc=150, Ri (to depress current) 2M, voltage divider R: 20k and 10k, R base supply (to decrease voltage) 3,3k and potentiometers are both 5k.
Thank you in advance! And sorry I didn't supply with proper circuit schematic but I don't know any free and intuitive app for it.
Regards