SKUAl5 cw8 blesinski guzdraj


SPRAWOZDANIE

Symulacja Komputerowa Układów Automatyki

Ćwiczenie 6

Badanie modeli tranzystorów bipolarnych

Automatyka i Robotyka

Semestr 6

Grupa 6c5

Czwartek 12:15

Nazwisko i Imię

Numer Albumu

Blesiński Patryk

171320

Guzdraj Paweł

171339


0x01 graphic

(rys. 1) Schemat ideowy układu elektronicznego do analizy

charakterystyki wyjściowej tranzystora.

0x01 graphic

(rys. 2) Schemat ideowy układu elektronicznego do analizy

charakterystyki wejściowej tranzystora.


Cel ćwiczenia:

Celem ćwiczenia było przeanalizowanie układu pomiarowego z rys.3 oraz porównanie symulacyjnych wyników badań z rzeczywistymi, które znajdowały się w odrębnym katalogu.

0x01 graphic

(rys. 3) Schemat układu testowego do badania charakterystyk tranzystorów bipolarnych.

0x01 graphic

(rys. 4) Przykładowe, rzeczywiste charakterystyki (wejściowa oraz wyjściowa) tranzystora BC178A.

W programie OrCAD/PSpice zrealizowano układ z rys. 3 dla wszystkich tranzystorów posiadających modele symulacyjne oraz wykonano dla nich charakterystyki prądowo-napięciowe: wejściową
i wyjściową. Następnie na wspólnych wykresach porównano otrzymane wyniki z rzeczywistymi oraz wykreślono dla nich charakterystyki błędu rozumiane jako różnica charakterystyk prądowo-napięciowych elementu rzeczywistego i symulacyjnego.

Wykonanie ćwiczenia:

Dane z rzeczywistych analiz tranzystorów, które zostały umieszczone w plikach *.csv należało wykorzystać do wygenerowania charakterystyk. Obrabianie ich przy pomocy programu Excel okazało się zbyt czasochłonne, dlatego napisaliśmy zestaw skryptów dla programu Matlab, które w sposób automatyczny generują wymagane zestawy wykresów zapisując je do plików graficznych *.jpg.

Z plików *.csv należało odczytać ustawienia symulacji. Dla charakterystyk wyjściowych z poniższych fragmentów pliku BC107.csv odczytaliśmy następujące parametry:

Step/Sweep Start Level,0.0 A,0.0 V

Step/Sweep Stop Level,100.0 uA,10.0 V

Step/Sweep Style,LIN,LIN

# of steps / sweep points,11,100

[...]

,Timestamp,Source Value,Reading,Timestamp,Source Value,Reading

,(seconds),(Amps),(Volts),(seconds),(Volts),(Amps)

1,0.0,0.0,-0.09141564,0.0,0.0,-2.336502E-6

2,5.000005,1.0E-5,0.4710991,0.049997,0.1010101,-1.239777E-6

0x01 graphic

0x01 graphic

(rys. 5) Ustawienia parametrów symulacji dla charakterystyk wyjściowych.

Dla charakterystyk wejściowych - plik Ube_vs_Ibe_BC107.csv:

Step/Sweep Start Level,0.0 A

Step/Sweep Stop Level,1.0 mA

Step/Sweep Style,LIN

# of steps / sweep points,50

[...]

,Timestamp,Source Value,Reading

,(seconds),(Amps),(Volts)

1,0.0,0.0,0.4061754

2,0.049997,2.040816E-5,0.5896792

3,0.099997,4.081633E-5,0.6122446

0x01 graphic

(rys. 6) Ustawienia parametrów symulacji dla charakterystyk wejściowych.

Powyższe wartości w polach inkrementacji opcji Primary Sweep pozwoliły na uzyskanie dokładnie 1100 pomiarów dla charakterystyk wyjściowych i 50 dla wejściowych. W przypadku ustawienia wartości 0.1V (rys. 5) otrzymywaliśmy zawsze 1 pomiar więcej na każdą charakterystykę, co utrudniało późniejsze ich porównywanie z charakterystykami rzeczywistymi.

Listingi *.m skryptów dla programu Matlab:

Skrypt skua_real_ub.m generujący rzeczywiste charakterystyki wyjściowe z plików *.csv:

n = 0;

DATABASE_REAL_UB = [];

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

DATA = [];

if isempty(findstr(FILENAME, 'sim')) == 1

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

FILE = fopen(FILENAME);

while 1

LINE = fgetl(FILE);

if ~ischar(LINE)

break;

end

% zczytanie 50 pomiarów:

SCAN = sscanf(LINE, '%f,%f,%f,%f')';

if isempty(DATA) == 1

DATA = SCAN(:,3:end);

else

DATA = [DATA; SCAN(:,3:end)];

end

end

fclose(FILE);

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

l = 1;

r = 50;

figure();

hold on;

y = DATA(l:r,1);

x = DATA(l:r,2);

plot(x,y,'.-b'); grid;

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n+1;

DATABASE_REAL_UB(:,:,n) = DATA;

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_sim_ub.m generujący symulacyjne charakterystyki wyjściowe z plików *.sim.csv:

n = 0;

DATABASE_SIM_UB = [];

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

DATA = [];

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

FILE = fopen(FILENAME);

while 1

LINE = fgetl(FILE);

if ~ischar(LINE)

break;

end

% zczytanie 1100 pomiarów:

SCAN = sscanf(LINE, '%f ,%f')';

if isempty(DATA) == 1

DATA = SCAN(:,1:end);

else

DATA = [DATA; SCAN(:,1:end)];

end

end

fclose(FILE);

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

if DATA(50,2) < 0

DATA = [-DATA(end:-1:1,1), DATA(end:-1:1,2)];

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

figure();

l = 1;

r = 50;

hold on;

y = DATA(l:r,1);

x = DATA(l:r,2);

plot(x,y,'.-r'); grid;

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n+1;

DATABASE_SIM_UB(:,:,n) = DATA;

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_cmp_ub.m porównujący charakterystyki wyjściowe:

n = 0;

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n + 1;

figure();

hold on;

l = 1;

r = 50;

y = DATABASE_SIM_UB(l:r,1,n);

x = DATABASE_SIM_UB(l:r,2,n);

plot(x,y,'.-r');

y = DATABASE_REAL_UB(l:r,1,n);

x = DATABASE_REAL_UB(l:r,2,n);

plot(x,y,'.-b'); grid;

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_error_ub.m generujący charakterystyki błędu:

n = 0;

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n + 1;

figure();

hold on;

l = 1;

r = 50;

x = DATABASE_SIM_UB(l:r,1,n);

y = DATABASE_REAL_UB(l:r,2,n)-DATABASE_SIM_UB(l:r,2,n);

plot(x,y,'.-b');

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

W celu wykorzystania powyższych *.m skryptów należy je umieścić w jednym folderze z plikami *.csv zawierającymi dane dla charakterystyk wejściowych, tj. Ube_vs_Ibe_BC107.csv (charakterystyki rzeczywiste) i odpowiadającym im wyjściowym charakterystykom symulacyjnym Ube_vs_Ibe_BC107.sim.csv.

Skrypt skua_real.m generujący rzeczywiste charakterystyki wyjściowe z plików *.csv:

n = 0;

DATABASE_REAL = [];

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

DATA = [];

if isempty(findstr(FILENAME, 'sim')) == 1

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

FILE = fopen(FILENAME);

while 1

LINE = fgetl(FILE);

if ~ischar(LINE)

break;

end

% zczytanie pierwszych 11 pomiarów:

SCAN = sscanf(LINE, '%f,%f,%f,%f,%f,%f,%f')';

if isempty(SCAN(:,1:end-3)) == 0

if isempty(DATA) == 1

DATA = SCAN(:,6:end);

else

DATA = [DATA; SCAN(:,6:end)];

end

else

% zczytanie 12-1100 pomiarów:

SCAN = sscanf(LINE, '%f,,,,%f,%f,%f')';

DATA = [DATA; SCAN(:,3:end)];

end

end

fclose(FILE);

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

l = 1;

r = 100;

figure();

hold on;

for p = 1:11

x = DATA(l:r,1);

y = DATA(l:r,2);

plot(x,y,'.-b'); grid;

l = r + 1;

r = r + 100;

end

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n+1;

DATABASE_REAL(:,:,n) = DATA;

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_sim.m generujący symulacyjne charakterystyki wyjściowe z plików *.sim.csv:

n = 0;

DATABASE_SIM = [];

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

DATA = [];

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

FILE = fopen(FILENAME);

while 1

LINE = fgetl(FILE);

if ~ischar(LINE)

break;

end

% zczytanie 1100 pomiarów:

SCAN = sscanf(LINE, '%f ,%f')';

if isempty(DATA) == 1

DATA = SCAN(:,1:end);

else

DATA = [DATA; SCAN(:,1:end)];

end

end

fclose(FILE);

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

l = 1;

r = 100;

figure();

hold on;

for p = 1:11

x = DATA(l:r,1);

y = DATA(l:r,2);

plot(x,y,'.-r'); grid;

l = r + 1;

r = r + 100;

end

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n+1;

DATABASE_SIM(:,:,n) = DATA;

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_cmp.m porównujący charakterystyki wyjściowe:

n = 0;

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n + 1;

figure();

hold on;

l = 1;

r = 100;

for p = 1:11

x = DATABASE_SIM(l:r,1,n);

y = DATABASE_SIM(l:r,2,n);

plot(x,y,'.-r');

x = DATABASE_REAL(l:r,1,n);

y = DATABASE_REAL(l:r,2,n);

plot(x,y,'.-b'); grid;

l = r + 1;

r = r + 100;

end

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

Skrypt skua_error.m generujący charakterystyki błędu:

n = 0;

CSV = dir('*.csv');

for i = 1:numel(CSV)

FILENAME = CSV(i).name;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

if isempty(findstr(FILENAME, 'sim')) == 0

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

n = n + 1;

figure();

hold on;

l = 1;

r = 100;

for p = 1:11

x = DATABASE_SIM(l:r,1,n);

y = DATABASE_REAL(l:r,2,n)-DATABASE_SIM(l:r,2,n);

plot(x,y,'.-b');

l = r + 1;

r = r + 100;

end

hold off;

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

end

W celu wykorzystania powyższych *.m skryptów należy je umieścić w jednym folderze z plikami *.csv zawierającymi dane dla charakterystyk wyjściowych, tj. BC107.csv (charakterystyki rzeczywiste)
i odpowiadającym im wyjściowym charakterystykom symulacyjnym BC107.sim.csv.

Tranzystor NPN BC107.

0x01 graphic

(rys. 7) Rzeczywiste charakterystyki wejściowe tranzystora BC107.

0x01 graphic

(rys. 8) Symulacyjne charakterystyki wejściowe tranzystora BC107.

0x01 graphic

(rys. 9) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC107.

0x01 graphic

(rys. 10) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC107.

0x01 graphic

(rys. 11) Rzeczywiste charakterystyki wyjściowe tranzystora BC107.

0x01 graphic

(rys. 12) Symulacyjne charakterystyki wyjściowe tranzystora BC107.

0x01 graphic

(rys. 13) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC107.

0x01 graphic

(rys. 14) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC107.

Tranzystor NPN BC108A.

0x01 graphic

(rys. 15) Rzeczywiste charakterystyki wejściowe tranzystora BC108A.

0x01 graphic

(rys. 16) Symulacyjne charakterystyki wejściowe tranzystora BC108A.

0x01 graphic

(rys. 17) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC108A.

0x01 graphic

(rys. 18) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC108A.

0x01 graphic

(rys. 19) Rzeczywiste charakterystyki wyjściowe tranzystora BC108A.

0x01 graphic

(rys. 20) Symulacyjne charakterystyki wyjściowe tranzystora BC108A.

0x01 graphic

(rys. 21) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC108A.

0x01 graphic

(rys. 22) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC108A.

Tranzystor NPN BC108B.

0x01 graphic

(rys. 23) Rzeczywiste charakterystyki wejściowe tranzystora BC108B.

0x01 graphic

(rys. 24) Symulacyjne charakterystyki wejściowe tranzystora BC108B.

0x01 graphic

(rys. 25) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC108B.

0x01 graphic

(rys. 26) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC108B.

0x01 graphic

(rys. 27) Rzeczywiste charakterystyki wyjściowe tranzystora BC108B.

0x01 graphic

(rys. 28) Symulacyjne charakterystyki wyjściowe tranzystora BC108B.

0x01 graphic

(rys. 29) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC108B.

0x01 graphic

(rys. 30) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC108B.

Tranzystor PNP BC178A.

0x01 graphic

(rys. 31) Rzeczywiste charakterystyki wejściowe tranzystora BC178A.

0x01 graphic

(rys. 32) Symulacyjne charakterystyki wejściowe tranzystora BC178A.

0x01 graphic

(rys. 33) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC178A.

0x01 graphic

(rys. 34) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC178A.

0x01 graphic

(rys. 35) Rzeczywiste charakterystyki wyjściowe tranzystora BC178A.

0x01 graphic

(rys. 36) Symulacyjne charakterystyki wyjściowe tranzystora BC178A.

0x01 graphic

(rys. 37) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC178A.

0x01 graphic

(rys. 38) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC178A.

Tranzystor PNP BC308.

0x01 graphic

(rys. 38) Rzeczywiste charakterystyki wejściowe tranzystora BC308.

0x01 graphic

(rys. 40) Symulacyjne charakterystyki wejściowe tranzystora BC308.

0x01 graphic

(rys. 41) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC308.

0x01 graphic

(rys. 42) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC308.

0x01 graphic

(rys. 43) Rzeczywiste charakterystyki wyjściowe tranzystora BC308.

0x01 graphic

(rys. 44) Symulacyjne charakterystyki wyjściowe tranzystora BC308.

0x01 graphic

(rys. 45) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC308.

0x01 graphic

(rys. 46) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC308.

Tranzystor NPN BC337.

0x01 graphic

(rys. 47) Rzeczywiste charakterystyki wejściowe tranzystora BC337.

0x01 graphic

(rys. 48) Symulacyjne charakterystyki wejściowe tranzystora BC337.

0x01 graphic

(rys. 49) Porównanie rzeczywistych i symulacyjnych charakterystyk wejściowych tranzystora BC337.

0x01 graphic

(rys. 50) Charakterystyka błędu (charakterystyki wejściowej) tranzystora BC337.

0x01 graphic

(rys. 51) Rzeczywiste charakterystyki wyjściowe tranzystora BC337.

0x01 graphic

(rys. 52) Symulacyjne charakterystyki wyjściowe tranzystora BC337.

0x01 graphic

(rys. 53) Porównanie rzeczywistych i symulacyjnych charakterystyk wyjściowych tranzystora BC337.

0x01 graphic

(rys. 54) Charakterystyka błędu (charakterystyk wyjściowych) tranzystora BC337.

Wyznaczanie wartości wzmocnienia prądowego:

Wyznaczanie współczynników wzmocnienia prądowego dla ustalonego punktu pracy tranzystora przeprowadziliśmy na podstawie rzeczywistej rodziny charakterystyk IC=f(UCE) przy IB = const. Jako punkt pracy dla poszczególnych charakterystyk przyjmowaliśmy punkt dla którego UCE wynosiło: 5,05V - dla tranzystorów NPN i -5,05V dla tranzystorów PNP.

Przykład wyznaczania wzmocnienia prądowego na podstawie rodziny charakterystyk IC=f(UCE) przy IB = const tranzystora BC108A:

0x01 graphic

(rys. 55) Rzeczywiste charakterystyki wyjściowe tranzystora BC108A.

0x08 graphic
wartość w punkcie A: 2,77 mA

wartość w punkcie B: 5,05 V

prąd bazy: 20 uA

IB [uA]

10,00

20,00

30,00

40,00

50,00

60,00

70,00

80,00

90,00

100,00

IC [mA]

1,37

3,26

5,25

7,31

9,42

11,58

13,80

16,07

18,41

20,81

hFE

136,66

162,75

174,92

182,77

188,47

192,96

197,10

200,91

204,54

208,08

Tabela 1. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC107.

IB [uA]

10,00

20,00

30,00

40,00

50,00

60,00

70,00

80,00

90,00

100,00

IC [mA]

1,06

2,77

4,70

6,73

8,82

10,96

13,14

15,35

17,59

19,87

hFE

105,94

138,68

156,74

168,19

176,40

182,62

187,74

191,91

195,47

198,66

Tabela 2. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC108A.

IB [uA]

10,00

20,00

30,00

40,00

50,00

60,00

70,00

80,00

90,00

100,00

IC [mA]

2,72

5,77

8,94

12,21

15,58

19,07

22,65

26,35

30,15

34,02

IC/IB

271,64

288,71

298,10

305,36

311,66

317,81

323,62

329,35

335,01

340,22

Tabela 3. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC109B.

IB [uA]

100,00

90,00

80,00

70,00

60,00

50,00

40,00

30,00

20,00

10,00

IC [mA]

20,46

18,74

16,90

14,98

12,97

10,91

8,79

6,63

4,44

2,22

hFE

204,60

208,20

211,24

213,95

216,23

218,20

219,72

221,00

221,79

222,27

Tabela 4. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC178A.

IB [uA]

100,00

90,00

80,00

70,00

60,00

50,00

40,00

30,00

20,00

10,00

IC [mA]

13,81

12,57

11,21

9,80

8,35

6,88

5,40

3,94

2,49

1,11

hFE

138,11

139,70

140,13

139,95

139,13

137,60

135,10

131,20

124,73

111,19

Tabela 5. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC308.

IB [uA]

10,00

20,00

30,00

40,00

50,00

60,00

70,00

80,00

90,00

100,00

IC [mA]

2,36

4,80

7,28

9,79

12,33

14,92

17,55

20,20

22,90

25,63

hFE

235,83

240,16

242,78

244,68

246,68

248,72

250,64

252,54

254,45

256,30

Tabela 6. Wartości współczynników wzmocnienia prądowego uzyskane dla tranzystora BC337.

0x01 graphic



Wyszukiwarka

Podobne podstrony:
Spr7, Gepdezja nst KPSW - Bydgoszcz, Semestr 5, GW, gw, GW, wyższa, geodezja wyższa, cw8
gleba sprawko cw8
cw8 sprawozdanie
cw8?danie właściwości optycznych półprzewodników
Sprawozdanie ćw8 (2)
cw8
Matematyka cw8 Badanie funkci Wykres funkcji
cw8 grzalka
fpr cw8
cw8 wyniki, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, laborki, labo
lgoczek mgo cw8
cw8 rysunek
cw8
PSE Cw8
CW8 (4)
cw8 wzamcniacz operacyjny
cw8, content62
cw8 Model linii dlugiej
cw8, elektrotechnika, elektronika, szpytma

więcej podobnych podstron