Projekt z OSP.pdf

(49 KB) Pobierz
3154816 UNPDF
Michał Kowalewski
28.01.2008
Łukasz Sawicki
Projekt OSP
Temat projektu:
Pomiar charakterystyki statycznej tranzystora.
Dostępne przyrządy:
Zasilacz programowany 3-wyjściowy E3631A.
Woltomierz cyfrowy E1410A.
Zadanie:
Napisać program w języku SCPI, umożliwiający pomiar
charakterystyki wyjściowej elementu badanego (tranzystora) przy
zadanych warunkach ograniczających zakres napięć, prądów i mocy.
Wykorzystać C/SICL.
Miejsce wykonywania:
Laboratorium PSP p.230 (tel. 5585).
Opiekun:
dr Antoni Leśniewski (p. 234, tel. 7410)
Charakterystyka wyjściowa tranzystora bipolarnego
w układzie ze wspólnym emiterem I C = f(U CE ) przy stałej wartości I B .
Charakterystyki mierzymy wykorzystując zasilacz programowalny (wyjścia +25V i +6V) z
funkcjami pomiaru poboru prądu(wyjście +25V) i woltomierz cyfrowy. Układ pomiarowy
przedstawiono na poniższym rysunku.
V – woltomierz cyfrowy
Z1,Z2- odp wyjścia +25 i +6 zasilacza programowalnego
+
ma x (6V / 5 A)
V
Z 2
ma x (25V / 1A)
Z 1
10 kΩ
Rys.1. Schemat układu pomiarowego badanego tranzystora n-p-n.
3154816.001.png 3154816.002.png
Dokumentacja programu
1.Opis działania programu
Program zaczyna od pobrania od użytkownika danych parametrów pomiaru. Odbywa się to
w trybie tekstowym poprzez podanie wartości początkowej, kroku oraz ilości pomiarów dla
napięcia kolektor-emiter i prądu baz. Od tego momentu program działa automatycznie- resetuje
urządzenia pomiarowe i zaczyna pomiary. Pomiary są wykonywane dla całego zakresu napięć
kolektor emiter dla ustalonej wartości prądu bazy. Pomiar składa się z 2 etapów – procedury
ustalania prądu bazy i uśrednianego pomiaru prądu kolektora (10 próbek).
Prąd bazy ustalany napięciem na rezystorze szeregowo umieszczonym w bazie i dlatego
potrzebna jest kontrola uzyskanego prądu bazy, wstępnie napięcie ustala się ze wzoru
U=(Ib*Rb)+Ube , gdzie Ib to zaprogramowany prąd bazy, Rb – rezystor bazy (w układzie 10k
Ohmów), Ube to napięcie baza emiter podane w danych katalogowych tranzystora(tutaj 0.9). Prąd
bazy ustalany jest z dokładnością do 0.005 mA. Przed każdą serią pomiarów prądu kolektora (przy
zmianach napięcia kolektor-emiter) dokonywana jest procedura kontroli i korekcji prądu bazy. W
celu przyśpieszenia tej części procedury między kolejnymi krokami przekazywana jest informacja o
ostatnio użytym napięciu przyłożonym do rezystora bazy.
W celu zabezpieczenia tranzystora przed przegrzaniem wprowadzono ograniczenie mocy
wydzielanej w tranzystorze do 6 W. Dla każdego punktu pomiarowego szacowana jest moc
wydzielana przy podanych warunkach pracy tranzystora( wzór i w przypadku przekroczenia limitu
punkt pomiarowy jest pomijany. Użytkownik dostaje informację z oszacowaną mocą oraz
podanych warunkach.
Z powodu dużych zakłóceń pomiar prądu kolektora jest dokonywany 10-krotnie następnie
wyliczana jest średnia tych pomiarów. Wyniki pomiarów są zapisywane do pliku wraz z
komendami programu gnuplot za pomocą którego wykonywana jest wizualizacja wyników w
postaci wykresu.
2.Opis funkcji i zmiennych użytych w kodzie
float getfloat()
Opis:
Funkcja do odbioru od użytkownika liczby zmiennoprzecinkowej większej lub równej 0. Funkcja
zawiera kontrolę błędnego wpisania wartości.
Zmienne:
float f – zmienna pomocnicza przechowująca liczbę podaną przez użytkownika
int n- zmienna pomocnicza przechowująca ilość przekonwertowanych znaków
char s[8]- zmienna tymczasowa służąca do przechowywania danych tekstowych odczytanych z
wejścia stdin.
int getint()
Opis:
Funkcja do odbioru od użytkownika liczby stałoprzecinkowej większej od 0. Funkcja zawiera
kontrolę błędnego wpisania wartości.
Zmienne:
int f – zmienna pomocnicza przechowująca liczbę podaną przez użytkownika
int n- zmienna pomocnicza przechowująca ilość przekonwertowanych znaków
char s[8]- zmienna tymczasowa służąca do przechowywania danych tekstowych odczytanych z
wejścia stdin.
float fabs(float x)
Opis:
Funkcja zwraca wartość bezwzględną liczby x.
int init_zas()
Opis:
Otwiera połączenie poprzez magistralę IEEE488 oraz RS232 z zasilaczem.
int init_miernik()
Opis:
Otwiera połączenie poprzez magistralę VXI z przetwornikiem a/c używanym do pomiaru prądu
kolektora
float maly_pomiar(float Ib, float Uce, float *U25_start)
Opis:
Wykonuje pomiar prądu kolektora, dla zadanych wartości prądu bazy i napięcia kolektor-emiter
zgodnie z opisem programu- tj najpierw ustala prąd bazy (jako wartość początkową przyjmuje
wartość spod wskaźnika *U25_start) a następnie mierzy 10-krotnie i uśrednia prąd kolektora.
Funkcja zwraca uśredniony wynik pomiaru oraz wpisuje pod wskaźnik U25_start wartość użytego
napięcia U25
Zmienne:
float suma – zmienna do sumowania pomiarów prądu kolektora
float wynik- zmienna do przetrzymywania wyniku jednego pomiaru z urządzeń
float U25 – napięcie na wyjściu +25V zasilacza podłączone do rezystora w bazie tranzystora
float U10k – napięcie na rezystorze bazy
float blad – zmienna do przechowywania błędu prądu bazy
float krok- zmienna do przechowywania wartości kolejnych kroków w procesie korekcji prądu bazy
int i – zmienna pomocnicza
int main()
Opis:
Główna funkcja programu – obejmuje wypisywanie komunikatów do użytkownika oraz generuje
kod dla programu gnuplot.
Stałe wbudowane w program :
Pmax - Maksymalna dopuszczalna moc na tranzystorze
Hfe - Wzmocnienie prądowe tranzystora
Ube - Napięcie Ube tranzystora
Zmienne:
char s[12] – zmienna tymczasowa służąca do przechowywania danych tekstowych odczytanych z
wejścia stdin.
Int n,i – zmienne używane do sterowania pętlami.
Int ib_npom, uce_npom – liczba punktów pomiarowych
float ib_start, uce_start – wartości początkowe
float Ib_krok, uce_krok – wartość pojedynczego kroku pomiaru
FILE * plik- wskaźnik do pliku wyjściowego z danymi dla gnuplota
float U25_temp – zmienna przechowująca napięcie na wyjściu +25V zasilacza ustalone w
poprzednim pomiarze
Zgłoś jeśli naruszono regulamin