Guide to Experiment 3b: Transistor-based AC amplifier¶
Métodos da Físcia Experimental I: (F540 2s2020)
JupyterBook: Gustavo Wiederhecker, Varlei Rodrigues
Contributions: Daniel Ugarte, Antônio Riul Junior, Varlei Rodrigues
#-----------------------------
#Pacote para manipular vetores e matrizes
import numpy as np
import os
import pandas as pd
#-----------------------------
#Pacotes para lidar com unidades
from astropy import units as un
from astropy import constants as cte
#-----------------------------
#pacote para gráficos
import matplotlib.pyplot as plt
import matplotlib
#Comandos opcionais para formatar gráfico
font = {'family' : 'Arial',
'weight' : 'normal',
'size' : 12}
lines = {'linewidth' : 3.0}
figure = {'figsize' : [6.0, 6/1.6]}
matplotlib.rc('font', **font)
matplotlib.rc('lines', **lines)
matplotlib.rc('figure', **figure)
#-----------------------------
from myst_nb import glue
#pacote para desenhar circuitos
import SchemDraw as schem
import SchemDraw.elements as e
d = schem.Drawing(unit=2.5) # unit=2.5 determina o tamanho dos componentes
# %config InlineBackend.figure_format = 'svg'
In this experiment, the usage of a transistor as an amplifier for AC signals will be explored.
Amplifying voltage signals is one of the most common operations in electronics. Signal amplification is a fundamenntal feature in all sorts of devices and test equipment. In many frontiers of experimental science, amplifications of very small voltages are also of uttermost importance. A simple diagram of a voltage amplifier can be seen in the figure The name transistor (a combination of transfer + resistor)originates from this device capabiblity of transferring electric signals. It is an active device that amplifies the voltage or current of an input signal, therefore, it is necessary to use a power supply. The transistor is a sandwich of two pn junctions, facing each other, forming a sequence of \( npn \) or \( pnp \) junctions. Each of these parts is called the collector, base and emitter, and the information to be transferred and / or used as a control signal is applied to the base of the transistor.
To fully appreciate this device, it is desirable that you read an introductory text on the semiconductors properties and circuit treatment of transistors (Sections 4.1 to 4.3 in [1]).
Goals
Measure the voltage gain of a BJT-based AC amplifier.
Items to include in your lab report
From the experimental data, reconstruct the transistor collector curves (\(I_C(V_{CE})\)). You must generate the graphs, based on the data provided in Downloadable dataset.
Try to add the different traces to a single figure, instead of adding multiple repetitive plots to your report. Consider distinct line colors for each trace.
Be carefull to properly convert the voltage measurements into currents using the appropriate values for the resistors.
Include a graph of \(I_C(I_B)\) and determine the transistor gain.
Make sure to include the linear fitting you used to determine \(\beta\)
Provide hyperlinks to your TinkerCAD simulation and upload your QUCS file.
Characteristic curves (I-V curve)¶
presents characteristic curves for the bipolar junction transistor BD 135, being similar for other junction transistors. For each current value of the base there is a current in the collector, for which the equation below is satisfied:
In general, for (22) to be valid, if (\(V_{CE}\)) is higher than the \(V_{BE}\) , which is required to polarize the transistor into the active region. Play around with the background theory notebook ( aula_transistor_interativo) to get an insight into the the transistor behavior. An example of the IV curves generated at this notebook are shown in fig:transistor_gif
:
Characteristics curves are often presented in transistor datasheets, such as the example in Fig. 29
Transistor gain \(\beta\)¶
The gain of a transistor depends on its construction, current range and the frequency of operation of the circuit assembly. For the transistor BD 135, the characteristic curves as a function of the current \( I_B \) are illustrated in Fig. 31
An approximate value of the \( (\beta) \) gain can be obtained on a linear graph of \( I_C \) as a function of \( I_B \), the gain being given by the slope of the line, as in the example of Fig. 31.
Measuring characterisitic curves¶
The characteristic curve of a transistor is the graph of \( I_C \) for \( V_ {CE} \). The proposed assembly for this measure is illustrated in the figure below. Note that the assembly is formed by a voltage divider (resistors \( R2 \) and \( R3 \)) that feeds the base of the transistor through the resistor \( R1 \), imposing a fixed \( (approximately) \) current of \( I_B \) at the base. After the transistor is polarized, the current in the collector will be given by the golden rule: \( I_ {collector} = \beta \times I_ {base} \).
To obtain the value of \( I_B \), it is necessary to measure the potential drop in the resistance of the base \( (R1) \). The potential on the transistor, between the collector and the emitter \( (V_{CE}) \), is measured directly with a voltmeter or with the oscilloscope.
Only the \( I_C \) measure is missing. Since the power supply is fixed at \( 15 V \), from the measurement of \( V_ {CE} \) and the resistance value of decades it is possible to calculate the current in the collector, \( I_C \). Therefore, it is enough to vary the resistance of decades to obtain each curve. Try to obtain a larger number of points in the region where the variation of \( V_ {CE} \) is more abrupt (lower values of voltage \( V_ {CE} \)). 3 \( I_C \) curves must be measured by \( V_ {CE} \), with \( R_1 \) = 10 k \( \Omega \), 15 k \( \Omega \) and 18 k \( \Omega \).
Measuring transistor Gain¶
The gain of the \( (\beta) \) transistor can be obtained simply by the ratio between the current in the collector and the current in the emitter, as previously shown. In a variation of the previous assembly, we can measure the gain of the transistor. We will use the a linear voltage ramp to vary the base voltage and, consequently, the current at the base of the transistor.
The current \( I_C \) is measured through the resistance \( RC \), while \( I_B \) is measured against the resistance \(R_B\). By controlling either the base voltage (\(V_{BB}\)), or the base resistace \(R_B\), it is possible to control \( I_B \).
Videos of the experiments¶
You must login with you @m.unicamp.br account to view these videos!
AC gain¶
This video illustrate the experimental procedure and data acquisition associated with the characteristic curves.
#Loading dataset with "tab" as separator
path='dados'
filename = 'dados_Vce_Vcc_15p5.csv'
filepath = os.path.join(path,filename)
df1 = pd.read_csv(filepath) #DataFrame
glue("df_pandas_ic_vce", df1.head())
#---
filename = 'dados_Ic_vs_Ib_Vbb_Vcc_15p5V.csv'
filepath = os.path.join(path,filename)
df2 = pd.read_csv(filepath) #DataFrame
glue("df_pandas_beta", df2.head())
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-2-0da4b2aea033> in <module>
3 filename = 'dados_Vce_Vcc_15p5.csv'
4 filepath = os.path.join(path,filename)
----> 5 df1 = pd.read_csv(filepath) #DataFrame
6 glue("df_pandas_ic_vce", df1.head())
7 #---
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/parsers.py in read_csv(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision)
684 )
685
--> 686 return _read(filepath_or_buffer, kwds)
687
688
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds)
450
451 # Create the parser.
--> 452 parser = TextFileReader(fp_or_buf, **kwds)
453
454 if chunksize or iterator:
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds)
944 self.options["has_index_names"] = kwds["has_index_names"]
945
--> 946 self._make_engine(self.engine)
947
948 def close(self):
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/parsers.py in _make_engine(self, engine)
1176 def _make_engine(self, engine="c"):
1177 if engine == "c":
-> 1178 self._engine = CParserWrapper(self.f, **self.options)
1179 else:
1180 if engine == "python":
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pandas/io/parsers.py in __init__(self, src, **kwds)
2006 kwds["usecols"] = self.usecols
2007
-> 2008 self._reader = parsers.TextReader(src, **kwds)
2009 self.unnamed_cols = self._reader.unnamed_cols
2010
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__()
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source()
FileNotFoundError: [Errno 2] No such file or directory: 'dados/dados_Vce_Vcc_15p5.csv'
Downloadable dataset¶
One (.zip) file: Transistor characterization
Rc(Ohm) | Vce_rb_10k(V) | Vce_rb_12k(V)k | Vce_rb_15k(V) | Vce_rb_20k(V) | |
---|---|---|---|---|---|
0 | 100 | 13.86 | 14.10 | 14.29 | 14.43 |
1 | 200 | 12.82 | 13.22 | 13.61 | 13.89 |
2 | 300 | 11.75 | 12.40 | 12.87 | 13.32 |
3 | 400 | 10.71 | 11.57 | 12.20 | 12.81 |
4 | 500 | 9.70 | 10.70 | 11.54 | 12.28 |
tempo(s) | Vbb(V) | Vbe(V) | Vce(V) | |
---|---|---|---|---|
0 | 0.0004 | 8.08 | 0.72 | 0.24 |
1 | 0.0008 | 8.00 | 0.72 | 0.24 |
2 | 0.0012 | 8.00 | 0.72 | 0.24 |
3 | 0.0016 | 8.00 | 0.72 | 0.24 |
4 | 0.0020 | 8.00 | 0.72 | 0.24 |