small changes

This commit is contained in:
nazarchuk.as 2022-12-04 00:02:16 +03:00
parent 2e806a610e
commit 6296ae3122
21 changed files with 199 additions and 87 deletions

View File

@ -35,8 +35,10 @@ class ChartWindow(AbstractWindow):
self.parent = parent self.parent = parent
(a, eps) = self.make_grad() (a, eps) = self.make_grad()
print(*a)
self.make_main(a, eps) self.make_main(a, eps)
self.setWindowTitle('Основной эксперимент. Обработка данных') self.setWindowTitle('Основной эксперимент. Обработка данных')
self.resize(1400, 800) self.resize(1400, 800)
@ -54,9 +56,10 @@ class ChartWindow(AbstractWindow):
self.text = QTextBrowser() self.text = QTextBrowser()
text = self.make_text() text = self.make_text()
self.parent.text_name = 'Results.txt' self.parent.text_name = 'Results.txt'
with open(os.path.join(self.parent.folder, self.parent.text_name), 'w') as file: # with open(os.path.join(self.parent.folder, self.parent.text_name), 'w') as file:
file.write(text) # file.write(text)
self.text.setText(text) # self.text.setText(text)
print(text)
self.hbox_layout = QGridLayout(self.centralwidget) self.hbox_layout = QGridLayout(self.centralwidget)
self.hbox_layout.addWidget(self.label, 0, 0) self.hbox_layout.addWidget(self.label, 0, 0)
@ -82,12 +85,12 @@ class ChartWindow(AbstractWindow):
self.parent.data_grad.make_point_grafic() self.parent.data_grad.make_point_grafic()
a, sigma = curve_fit( a, sigma = curve_fit(
self.B, self.parent.data_grad.x, self.parent.data_grad.y) self.B, self.parent.data_grad.x/1000, self.parent.data_grad.y/10**3)
sigma = abs(np.sqrt(np.diag(sigma))/a) sigma = abs(np.sqrt(np.diag(sigma))/a)
eps = (np.min(sigma)**2+(0.0035/100)**2+0.02**2)**0.5 eps = (np.min(sigma)**2+(0.0035/100)**2+0.02**2)**0.5
x_range = np.arange(min(self.parent.data_grad.x), x_range = np.arange(min(self.parent.data_grad.x),
max(self.parent.data_grad.x), step=0.001) max(self.parent.data_grad.x), step=0.001)
y_fit = self.B(x_range, a[0], a[1], a[2]) y_fit = self.B(x_range/1000, a[0], a[1], a[2])*10**3
plt.plot(x_range, y_fit) plt.plot(x_range, y_fit)
plt.savefig(os.path.join( plt.savefig(os.path.join(
self.parent.folder, self.parent.folder,
@ -104,7 +107,7 @@ class ChartWindow(AbstractWindow):
e = np.array((self.parent.data_main.data['U_34,mV'] - e = np.array((self.parent.data_main.data['U_34,mV'] -
self.parent.data_main.data['U_0,mV'])/10**3) self.parent.data_main.data['U_0,mV'])/10**3)
b = np.array( b = np.array(
self.B(self.parent.data_main.data['I_M,mA'], a[0], a[1], a[2])) self.B(self.parent.data_main.data['I_M,mA']/10**3, a[0], a[1], a[2]))
eds = chr(949) eds = chr(949)
self.parent.data_main.x = np.array( self.parent.data_main.x = np.array(
self.parent.data_main.data['I_0,mA']*b) self.parent.data_main.data['I_0,mA']*b)
@ -128,22 +131,24 @@ class ChartWindow(AbstractWindow):
self.parent.sigma_b = self.parent.b*((self.parent.sigma_sigma/self.parent.sigma)**2 + self.parent.sigma_b = self.parent.b*((self.parent.sigma_sigma/self.parent.sigma)**2 +
(sigma[0]/k)**2)**0.5 (sigma[0]/k)**2)**0.5
print(sigma[0]/ k)
def make_text(self): def make_text(self):
s0 = 'Вычисленные постоянные равны:'+'\n' +\ s0 = 'Вычисленные постоянные равны:'+'\n' +\
'R_X - постоянная Холла, '+'\n'+' n - концентрация носителей заряда,'+'\n' +\ 'R_X - постоянная Холла, '+'\n'+' n - концентрация носителей заряда,'+'\n' +\
'sigma - удельная проводимость, '+'\n'+' b - подвижность'+'\n'+'\n' 'sigma - удельная проводимость, '+'\n'+' b - подвижность'+'\n'+'\n'
s1 = 'R_X = ' + str(round(self.parent.R_H*10**10)) + ' +- ' + \ s1 = 'R_X = ' + str(int(round(self.parent.R_H*10**10, -1))) + ' +- ' + \
str(round(self.parent.sigma_R_H*10**10)) + \ str(int(round(self.parent.sigma_R_H*10**10, -1))) + \
' , 10^-10 м^3/Кл'+'\n'+'\n' ' , 10^-10 м^3/Кл'+'\n'+'\n'
s2 = 'n = ' + str(round(self.parent.n)) + ' +- ' + \ s2 = 'n = ' + str(int(round(self.parent.n, -1))) + ' +- ' + \
str(round(self.parent.sigma_n)) + ' , 1/м^3'+'\n'+'\n' str(int(round(self.parent.sigma_n, -1))) + ' , 10^21 1/м^3'+'\n'+'\n'
s3 = 'sigma = ' + str(round(self.parent.sigma)) + ' +- ' + \ s3 = 'sigma = ' + str(round(self.parent.sigma)) + ' +- ' + \
str(round(self.parent.sigma_sigma)) + ', 1/(Ом*м)'+'\n'+'\n' str(round(self.parent.sigma_sigma)) + ', 1/(Ом*м)'+'\n'+'\n'
s4 = 'b = ' + str(round(self.parent.b*10**4)) + ' +- ' + \ s4 = 'b = ' + str(round(self.parent.b*10**4), 2) + ' +- ' + \
str(round(self.parent.sigma_b*10**4)) + ', см^3/(В*с)'+'\n'+'\n' str(round(self.parent.sigma_b*10**4), 2) + ', см^2/(В*с)'+'\n'+'\n'
return s0+s1+s2+s3+s4 return s0+s1+s2+s3+s4

View File

@ -78,7 +78,7 @@ class GraduationWindow(AbstractWindow):
def enter_value(self): def enter_value(self):
self.lineEdit.setReadOnly(True) self.lineEdit.setReadOnly(True)
self.take_data() self.no_data()
self.lineEdit.clear() self.lineEdit.clear()
self.lineEdit.setReadOnly(False) self.lineEdit.setReadOnly(False)
@ -98,6 +98,7 @@ class GraduationWindow(AbstractWindow):
for i in range(len(data)): for i in range(len(data)):
self.table.setItem(self.table.rowCount()-1, i, self.table.setItem(self.table.rowCount()-1, i,
QTableWidgetItem(str(data[i]))) QTableWidgetItem(str(data[i])))
self.table.scrollToBottom()
def take_data(self): def take_data(self):
t = (round(time.time()*1000)-self.start_time) t = (round(time.time()*1000)-self.start_time)

View File

@ -0,0 +1 @@
"B,mTl","E,mV","I_M,mA","t,ms"
1 B,mTl E,mV I_M,mA t,ms

View File

@ -32,7 +32,7 @@ class Start:
self.app = QApplication.instance() self.app = QApplication.instance()
self.current=0 self.current=0
self.window = StartWindow(self) self.window = StartWindow(self)
self.add_equip() # self.add_equip()
self.draw() self.draw()
self.app.exec() self.app.exec()
@ -147,7 +147,7 @@ class StartWindow(AbstractWindow):
self.chart.setEnabled(False) self.chart.setEnabled(False)
self.chart_text = QLabel('Выполняется расчет всех констант образца и построение графиков', self) self.chart_text = QLabel('Выполняется расчет всех констант образца и построение графиков', self)
self.main = QPushButton('Основной эксперимент') self.main = QPushButton('Определение ЭДС Холла')
self.main.clicked.connect(self.main_click) self.main.clicked.connect(self.main_click)
if not self.parent.current==1: if not self.parent.current==1:
self.main.setEnabled(False) self.main.setEnabled(False)
@ -203,6 +203,17 @@ class StartWindow(AbstractWindow):
self.flow.setEnabled(True) self.flow.setEnabled(True)
self.lineEdit.setReadOnly(True) self.lineEdit.setReadOnly(True)
def testing_analisis(self):
self.chart.setEnabled(True)
self.parent.foldername = 'Перерптлв'
self.parent.folder = os.path.join(os.getcwd(), self.parent.foldername)
if not os.path.exists(self.parent.folder):
os.mkdir(self.parent.folder)
self.parent.dataname = 'data.csv'
self.parent.flow_dataname = 'Induction_data.csv'
self.parent.a=2*10**-3
self.parent.sigma = -313
self.parent.sigma_sigma=0

View File

@ -20,13 +20,17 @@ from PyQt6.QtWidgets import (QLabel,
QGridLayout, QGridLayout,
QTableWidgetItem, QTableWidgetItem,
QHeaderView, QHeaderView,
QTextBrowser) QTextBrowser,
QDialog,
QDialogButtonBox,
QVBoxLayout
)
from PyQt5.QtWidgets import QMessageBox
from Analisis_data import Data from Analisis_data import Data
from Abstract_window import AbstractWindow from Abstract_window import AbstractWindow
class ThreadData(QtCore.QThread): class ThreadData(QtCore.QThread):
def __init__(self, parent): def __init__(self, parent):
QtCore.QThread.__init__(self) QtCore.QThread.__init__(self)
self.running = False self.running = False
@ -38,18 +42,35 @@ class ThreadData(QtCore.QThread):
self.parent.take_data() self.parent.take_data()
self.sleep(1) self.sleep(1)
class ThreadWarning(QtCore.QThread):
def __init__(self, parent):
QtCore.QThread.__init__(self)
self.running = False
self.parent = parent
def run(self):
self.running = True
while self.running:
self.sleep(1)
self.dlg.show()
class MainWindow(AbstractWindow): class MainWindow(AbstractWindow):
def __init__(self, parent): def __init__(self, parent):
super().__init__() super().__init__()
self.setWindowTitle('Основной эксперимент. Получение данных') self.setWindowTitle('Определение ЭДС Холла')
self.parent = parent self.parent = parent
self.data_thread = ThreadData(self) self.data_thread = ThreadData(self)
# self.thread = ThreadWarning(self)
self.resize(1400, 800) self.resize(1400, 800)
self.number_iteration = 1 self.number_iteration = 1
self.start_time = 0 self.start_time = 0
self.volt = 0.05 self.volt = 0.05
self.U_0={}
# make masthead # make masthead
self.parent.dataname = 'data.csv' self.parent.dataname = 'data.csv'
@ -85,22 +106,25 @@ class MainWindow(AbstractWindow):
self.table = QTableWidget(self) self.table = QTableWidget(self)
self.table.setColumnCount(len(heads)) self.table.setColumnCount(len(heads))
self.table.setRowCount(0) self.table.setRowCount(0)
rowPosition = self.table.rowCount()
it = QTableWidgetItem(str(rowPosition))
self.table.setHorizontalHeaderLabels(heads) self.table.setHorizontalHeaderLabels(heads)
header = self.table.horizontalHeader() header = self.table.horizontalHeader()
for i in range(len(heads)): for i in range(len(heads)):
header.setSectionResizeMode(i, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(i, QHeaderView.ResizeMode.Stretch)
self.table.resizeColumnsToContents() self.table.resizeColumnsToContents()
self.table.scrollToItem(it)
# Adding the table to the grid # Adding the table to the grid
self.grid_layout.addWidget(self.table, 0, 0, -1, 1) self.grid_layout.addWidget(self.table, 1, 0, -1, 1)
self.grid_layout.addWidget(self.lineEdit, 0, 2, 1, -1) self.grid_layout.addWidget(self.lineEdit, 1, 2, 1, -1)
self.grid_layout.addWidget(self.start, 1, 2) self.grid_layout.addWidget(self.start, 2, 2)
self.grid_layout.addWidget(self.stop, 1, 3) self.grid_layout.addWidget(self.stop, 2, 3)
self.grid_layout.addWidget(self.new, 2, 2, 1, -1) self.grid_layout.addWidget(self.new, 3, 2, 1, -1)
self.grid_layout.addWidget(self.menu, 3, 2, 1, -1) self.grid_layout.addWidget(self.menu, 4, 2, 1, -1)
def enter_a(self): def enter_a(self):
# TODO
self.parent.a = float(self.lineEdit.text())/10**3 self.parent.a = float(self.lineEdit.text())/10**3
self.start.setEnabled(True) self.start.setEnabled(True)
self.lineEdit.setReadOnly(True) self.lineEdit.setReadOnly(True)
@ -139,15 +163,16 @@ class MainWindow(AbstractWindow):
current_time = round(time.time()*1000) current_time = round(time.time()*1000)
v = str((current_time-self.start_time)/60) v = str((current_time-self.start_time)/60)
t = str(current_time-self.start_time) t = str(current_time-self.start_time)
if self.number_iteration == 0:
self.u_0 = v self.u_0 = v
a = str(float(v)/100) a = str(float(v)/10)
I_M = v I_M = v
self.save_data([v, I_M, self.u_0, a, self.save_data([v, I_M, self.u_0, a, self.volt,
self.number_iteration, t]) self.number_iteration, t])
if float(a) > 1: if float(a) > 1:
self.stop_clicked() self.stop_clicked()
def save_data(self, data): def save_data(self, data):
with open(os.path.join(self.parent.folder, self.parent.dataname), 'a') as file: with open(os.path.join(self.parent.folder, self.parent.dataname), 'a') as file:
wr = csv.writer(file) wr = csv.writer(file)
@ -156,6 +181,7 @@ class MainWindow(AbstractWindow):
for i in range(len(data)): for i in range(len(data)):
self.table.setItem(self.table.rowCount()-1, i, self.table.setItem(self.table.rowCount()-1, i,
QTableWidgetItem(str(data[i]))) QTableWidgetItem(str(data[i])))
self.table.scrollToBottom()
def take_data(self): def take_data(self):
@ -172,9 +198,6 @@ class MainWindow(AbstractWindow):
f_amp = open(self.parent.I_M_name, 'w') f_amp = open(self.parent.I_M_name, 'w')
f_amp.write('Measure:Current:DC?\n') f_amp.write('Measure:Current:DC?\n')
f_amp.close() f_amp.close()
f_amp = open(self.parent.I_M_name, 'r')
I_M = '{:.9f}'.format(float(f_amp.read(15))*10**3)
f_amp.close()
f_volt = open(self.parent.volt_name, 'w') f_volt = open(self.parent.volt_name, 'w')
f_volt.write('Measure:Voltage:DC?\n') f_volt.write('Measure:Voltage:DC?\n')
@ -183,23 +206,31 @@ class MainWindow(AbstractWindow):
f_amp.write('Measure:Current:DC?\n') f_amp.write('Measure:Current:DC?\n')
f_amp.close() f_amp.close()
f_amp = open(self.parent.I_M_name, 'r')
I_M = '{:.9f}'.format(float(f_amp.read(15))*10**3)
f_amp.close()
f_volt = open(self.parent.volt_name, 'r') f_volt = open(self.parent.volt_name, 'r')
v = '{:.9f}'.format(float(f_volt.read(15))*10**3) v = '{:.9f}'.format(float(f_volt.read(15))*10**3)
if float(current_time-self.this_time) <= 100: try:
self.u_0 = v self.u_0 = self.U_0[self.volt]
except KeyError:
self.U_0[self.volt] = v
self.u_0 = self.U_0[self.volt]
f_amp = open(self.parent.amp_name, 'r') f_amp = open(self.parent.amp_name, 'r')
a = '{:.9f}'.format(float(f_amp.read(15))*10**3) a = '{:.9f}'.format(float(f_amp.read(15))*10**3)
print((current_time-self.this_time) ) print((current_time-self.this_time) )
# protect of errors: # protect of errors:
if float(a) > 1: if float(a) > 1 or self.table.rowCount()>=15*self.number_iteration:
self.stop_clicked() self.stop_clicked()
f_volt.close() f_volt.close()
f_amp.close() f_amp.close()
self.volt += 0.05
self.save_data([v, I_M, self.u_0, a, self.volt, self.save_data([v, I_M, self.u_0, a, self.volt,
self.number_iteration, t]) self.number_iteration, t])
self.volt += 0.05
def closeEvent(self, event): def closeEvent(self, event):
self.data_thread.running = False self.data_thread.running = False

View File

@ -20,6 +20,6 @@
\@nameuse{bbl@beforestart} \@nameuse{bbl@beforestart}
\catcode `"\active \catcode `"\active
\babel@aux{russian}{} \babel@aux{russian}{}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Схема установки для исследования эффекта Холла в полупроводниках}}{1}{figure.1}\protected@file@percent } \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Схема установки для исследования эффекта Холла в полупроводниках}}{2}{figure.1}\protected@file@percent }
\newlabel{установка}{{1}{1}{Схема установки для исследования эффекта Холла в полупроводниках}{figure.1}{}} \newlabel{установка}{{1}{2}{Схема установки для исследования эффекта Холла в полупроводниках}{figure.1}{}}
\gdef \@abspage@last{4} \gdef \@abspage@last{4}

View File

@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2022.11.26) 28 NOV 2022 12:31 This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2022.11.26) 3 DEC 2022 23:50
entering extended mode entering extended mode
restricted \write18 enabled. restricted \write18 enabled.
%&-line parsing enabled. %&-line parsing enabled.
@ -724,66 +724,66 @@ LaTeX Font Info: Trying to load font information for T2A+cmss on input line
File: t2acmss.fd 2001/08/11 v1.0a Computer Modern Cyrillic font definitions File: t2acmss.fd 2001/08/11 v1.0a Computer Modern Cyrillic font definitions
) )
LaTeX Font Info: Trying to load font information for PD1+cmr on input line 5 LaTeX Font Info: Trying to load font information for PD1+cmr on input line 5
2. 4.
LaTeX Font Info: No file PD1cmr.fd. on input line 52. LaTeX Font Info: No file PD1cmr.fd. on input line 54.
LaTeX Font Warning: Font shape `PD1/cmr/m/up' undefined LaTeX Font Warning: Font shape `PD1/cmr/m/up' undefined
(Font) using `PD1/pdf/m/n' instead on input line 52. (Font) using `PD1/pdf/m/n' instead on input line 54.
LaTeX Font Info: Trying to load font information for PU+cmr on input line 52 LaTeX Font Info: Trying to load font information for PU+cmr on input line 54
. .
LaTeX Font Info: No file PUcmr.fd. on input line 52. LaTeX Font Info: No file PUcmr.fd. on input line 54.
LaTeX Font Warning: Font shape `PU/cmr/m/up' undefined LaTeX Font Warning: Font shape `PU/cmr/m/up' undefined
(Font) using `PU/pdf/m/n' instead on input line 52. (Font) using `PU/pdf/m/n' instead on input line 54.
LaTeX Font Warning: Font shape `T2A/cmr/m/up' undefined LaTeX Font Warning: Font shape `T2A/cmr/m/up' undefined
(Font) using `T2A/cmr/m/n' instead on input line 52. (Font) using `T2A/cmr/m/n' instead on input line 54.
LaTeX Font Info: Trying to load font information for OML+cmr on input line 5 LaTeX Font Info: Trying to load font information for OML+cmr on input line 5
2. 4.
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd (/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd
File: omlcmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions File: omlcmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
) )
LaTeX Font Warning: Font shape `OML/cmr/m/up' undefined LaTeX Font Warning: Font shape `OML/cmr/m/up' undefined
(Font) using `OML/cmr/m/it' instead on input line 52. (Font) using `OML/cmr/m/it' instead on input line 54.
LaTeX Font Info: Font shape `OML/cmr/m/it' in size <12> not available LaTeX Font Info: Font shape `OML/cmr/m/it' in size <12> not available
(Font) Font shape `OML/cmm/m/it' tried instead on input line 52. (Font) Font shape `OML/cmm/m/it' tried instead on input line 54.
LaTeX Font Info: Font shape `OML/cmr/m/up' in size <8> not available LaTeX Font Info: Font shape `OML/cmr/m/up' in size <8> not available
(Font) Font shape `OML/cmm/m/it' tried instead on input line 52. (Font) Font shape `OML/cmm/m/it' tried instead on input line 54.
LaTeX Font Info: Font shape `OML/cmr/m/up' in size <6> not available LaTeX Font Info: Font shape `OML/cmr/m/up' in size <6> not available
(Font) Font shape `OML/cmm/m/it' tried instead on input line 52. (Font) Font shape `OML/cmm/m/it' tried instead on input line 54.
LaTeX Font Info: Trying to load font information for OMS+cmr on input line 5 LaTeX Font Info: Trying to load font information for OMS+cmr on input line 5
2. 4.
(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
File: omscmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions File: omscmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
) )
LaTeX Font Warning: Font shape `OMS/cmr/m/up' undefined LaTeX Font Warning: Font shape `OMS/cmr/m/up' undefined
(Font) using `OMS/cmr/m/n' instead on input line 52. (Font) using `OMS/cmr/m/n' instead on input line 54.
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 52. (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 54.
LaTeX Font Info: Font shape `OMS/cmr/m/up' in size <8> not available LaTeX Font Info: Font shape `OMS/cmr/m/up' in size <8> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 52. (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 54.
LaTeX Font Info: Font shape `OMS/cmr/m/up' in size <6> not available LaTeX Font Info: Font shape `OMS/cmr/m/up' in size <6> not available
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 52. (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 54.
LaTeX Font Info: Trying to load font information for U+msa on input line 52. LaTeX Font Info: Trying to load font information for U+msa on input line 54.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A File: umsa.fd 2013/01/14 v3.01 AMS symbols A
) )
LaTeX Font Info: Trying to load font information for U+msb on input line 52. LaTeX Font Info: Trying to load font information for U+msb on input line 54.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B File: umsb.fd 2013/01/14 v3.01 AMS symbols B
) )
LaTeX Font Info: Trying to load font information for U+wasy on input line 52 LaTeX Font Info: Trying to load font information for U+wasy on input line 54
. .
(/usr/share/texlive/texmf-dist/tex/latex/wasysym/uwasy.fd (/usr/share/texlive/texmf-dist/tex/latex/wasysym/uwasy.fd
@ -792,13 +792,16 @@ File: uwasy.fd 2020/01/19 v2.4 Wasy-2 symbol font definitions
<Установка.png, id=4, 781.92125pt x 747.79375pt> <Установка.png, id=4, 781.92125pt x 747.79375pt>
File: Установка.png Graphic file (type png) File: Установка.png Graphic file (type png)
<use Установка.png> <use Установка.png>
Package pdftex.def Info: Установка.png used on input line 60. Package pdftex.def Info: Установка.png used on input line 62.
(pdftex.def) Requested size: 367.60695pt x 351.5658pt. (pdftex.def) Requested size: 367.60695pt x 351.5658pt.
[1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./Установка.png>]
[2] [3] [4] LaTeX Warning: `!h' float specifier changed to `!ht'.
(./Manual.aux)
[1
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2 <./Установка.p
ng>] [3] [4] (./Manual.aux)
LaTeX Font Warning: Some font shapes were not available, defaults substituted. LaTeX Font Warning: Some font shapes were not available, defaults substituted.
@ -806,13 +809,13 @@ Package rerunfilecheck Info: File `Manual.out' has not changed.
(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. (rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
) )
Here is how much of TeX's memory you used: Here is how much of TeX's memory you used:
13708 strings out of 478287 13726 strings out of 478287
209314 string characters out of 5849288 209473 string characters out of 5849288
523209 words of memory out of 5000000 528209 words of memory out of 5000000
31674 multiletter control sequences out of 15000+600000 31679 multiletter control sequences out of 15000+600000
480337 words of font info for 58 fonts, out of 8000000 for 9000 481207 words of font info for 59 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191 1141 hyphenation exceptions out of 8191
60i,7n,63p,767b,440s stack positions out of 5000i,500n,10000p,200000b,80000s 60i,7n,63p,555b,494s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t2a.enc}</usr/share/texli {/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-t2a.enc}</usr/share/texli
ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/tex ve/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb></usr/share/texlive/tex
mf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist mf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist
@ -821,11 +824,12 @@ type1/public/amsfonts/cm/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/pu
blic/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/a blic/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmsy8.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx1200.pfb msfonts/cm/cmsy8.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfbx1200.pfb
></usr/share/texmf/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf/f ></usr/share/texmf/fonts/type1/public/cm-super/sfrm1200.pfb></usr/share/texmf/f
onts/type1/public/cm-super/sfsx1200.pfb> onts/type1/public/cm-super/sfsx1200.pfb></usr/share/texmf/fonts/type1/public/cm
Output written on Manual.pdf (4 pages, 173871 bytes). -super/sfti1200.pfb>
Output written on Manual.pdf (4 pages, 207082 bytes).
PDF statistics: PDF statistics:
101 PDF objects out of 1000 (max. 8388607) 120 PDF objects out of 1000 (max. 8388607)
74 compressed objects within 1 object stream 91 compressed objects within 1 object stream
23 named destinations out of 1000 (max. 500000) 35 named destinations out of 1000 (max. 500000)
6 words of extra memory for PDF output out of 10000 (max. 10000000) 6 words of extra memory for PDF output out of 10000 (max. 10000000)

Binary file not shown.

Binary file not shown.

View File

@ -35,16 +35,18 @@
\begin{document} \begin{document}
\begin{center} \begin{center}
\textsf{\textbf{3.3.4 ЭФФЕКТ ХОЛЛА В ПОЛУПРОВОДНИКАХ}} \textsf{\textbf{3.3.4A ЭФФЕКТ ХОЛЛА В ПОЛУПРОВОДНИКАХ}}
\end{center} \end{center}
\textbf{Цель работы:} измерение подвижности и концентрации носителей заряда \textbf{Цель работы:} измерение подвижности и концентрации носителей заряда
в полупроводниках. в полупроводниках.
\textbf{В работе используются:} электромагнит с регулируемым источником питания; вольтметр; амперметр; миллиамперметр; миллитесламетр; источник питания, образцы легированного германия. \textbf{В работе используются:} электромагнит с регулируемым источником питания; вольтметр; амперметр; миллиамперметр; миллитесламетр; источник питания, образцы легированного германия, программное обеспечение.
Перед выполнением работы необходимо ознакомиться с основами элементарной теории движения носителей заряда в металлах и полупроводниках (п. 4 введения к разделу). Перед выполнением работы необходимо ознакомиться с основами элементарной теории движения носителей заряда в металлах и полупроводниках (п. 4 введения к разделу).
Работа выполняется при помощи программного обеспечения, связь с приборами осуществляется через цифровой интерфейс RS-232 при помощи USB-портов.
В работе изучаются особенности проводимости полупроводников в В работе изучаются особенности проводимости полупроводников в
геометрии мостика Холла. Ток пропускается по плоской полупроводниковой пластинке, помещённой в перпендикулярное пластинке магнитное геометрии мостика Холла. Ток пропускается по плоской полупроводниковой пластинке, помещённой в перпендикулярное пластинке магнитное
поле. Измеряется разность потенциалов между краями пластинки в поперечном к току направлении. По измерениям определяется константа поле. Измеряется разность потенциалов между краями пластинки в поперечном к току направлении. По измерениям определяется константа
@ -107,10 +109,14 @@ U_\perp = U_{34} - U_0
\begin{enumerate} \begin{enumerate}
\item Работа будет состоять из 4 частей: градуировка электромагнита, основной эксперимент (эфект холла), определение знака носителей, измерение удельной проводимости. \item Работа будет состоять из 4 частей: градуировка электромагнита, основной эксперимент (эфект холла), определение знака носителей, измерение удельной проводимости.
\item Соберите установку согласно схеме на рис. \ref{установка}, подключите к вольтметру контакты 3 и 4. \item Соберите установку согласно схеме на рис. \ref{установка}, подключите к вольтметру контакты 3 и 4. Убедитесь, что источник питания электромагнита выключен, включите амперметры и вольтметры.
\item Запустите программу <<Эффект Холла>> \item Запустите программу <<Эффект Холла>>.
\item Введите фамилие в поле <<Введите фамилию>>, нажмите клавишу ENTER. \item Введите фамилие в поле <<Введите фамилию>>, нажмите клавишу ENTER.
\begin{center}
\textit{I. Градуировка электромагнита.}
\end{center}
\item Для проведения градуировки электромагнита ознакомьтесь с устройством и принципом работы измерителя магнитной индукции ATE-8702. Техническое описание (ТО) расположено на установке. \item Для проведения градуировки электромагнита ознакомьтесь с устройством и принципом работы измерителя магнитной индукции ATE-8702. Техническое описание (ТО) расположено на установке.
Включите измеритель индукции кнопкой <<POWER>>; через 2-3 секунды последовательным нажатием кнопки <<MODE>> установите режим измерения в постоянном поле <<$a_1$>> (см. рис. 2 ТО). Включите измеритель индукции кнопкой <<POWER>>; через 2-3 секунды последовательным нажатием кнопки <<MODE>> установите режим измерения в постоянном поле <<$a_1$>> (см. рис. 2 ТО).
@ -120,10 +126,24 @@ U_\perp = U_{34} - U_0
\item Установите ручки регулировки источника питания электромагнита в минимальное положение и нажмите на кнопку <<Градуировка электромагнита>>. Для начала эксперимента нажмите кнопку <<Старт>>. \item Установите ручки регулировки источника питания электромагнита в минимальное положение и нажмите на кнопку <<Градуировка электромагнита>>. Для начала эксперимента нажмите кнопку <<Старт>>.
Получите калибровочную кривую электромагнита: измерьте магнитную индукцию миллитесламетром, полученное значение введите в поле <<Индукция>>, нажмите клавишу ENTER, плавно измените ток питания электромагнита. Повторите для 15-20 значений тока питания электромагнита. Получите калибровочную кривую электромагнита: измерьте магнитную индукцию миллитесламетром, полученное значение введите в поле <<Индукция>>, нажмите клавишу ENTER, измените ток питания электромагнита (на $5-7$ B). Повторите для 15-20 значений тока питания электромагнита.
\item После окончания калибровки выйдите в меню программы с помощью клавиши <<Меню>>. Перейдите к выполнению основного эксперимента кнопкой <<Основной эксперимент>>. \item После окончания калибровки уберите миллитесламетр в коробку, выйдите в меню программы с помощью клавиши <<Меню>>.
\item Введите $a$ в поле <<Введите a>>, нажмите клавишу ENTER. Установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Старт>>. Снимите 15 точек, затем, остановив процесс кнопкой <<Стоп>>, измените ток на источнике питания электромагнита. Запустите получение данных кнопкой <<Новое напряжение>>. Повторите для 10-12 значений тока на источнике питания электромагнита.
\item После окончания основного эксперимента выйдете в основное меню программы кнопкой <<Меню>>. Перейдите к определению знаку носителей заряда кнопкой <<Основной эксперимент>>. \begin{center}
\textit{II. Определение ЭДС Холла.}
\end{center}
\item Вставьте образец в зазор электромагнита. Перейдите к определению ЭДС Холла кнопкой <<Определение ЭДС Холла>>.
\item Введите $a$ в поле <<Введите a>>, нажмите клавишу ENTER. Установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Старт>>. Подождите, пока с приборов будет получено 15 значений.
\item Необходимо следить за ходом программы: получение данных может остановлено при слишком больших значения тока или после получения 15 точек.
\item Остановите процесс кнопкой <<Стоп>>, измените ток на источнике питания электромагнита (на $8-12$ B). Запустите получение данных кнопкой <<Новое напряжение>>. Повторите для 10-12 значений тока на источнике питания электромагнита.
\begin{center}
\textit{III. Определение знака носителей.}
\end{center}
\item После окончания основного эксперимента выйдете в основное меню программы кнопкой <<Меню>>. Перейдите к определению знаку носителей заряда кнопкой <<Знак носителей>>.
\item Определите знак носителей заряда в образце. Для этого необходимо \item Определите знак носителей заряда в образце. Для этого необходимо
знать направление тока через образец, направление магнитного поля знать направление тока через образец, направление магнитного поля
и знак ЭДС Холла. и знак ЭДС Холла.
@ -131,13 +151,49 @@ U_\perp = U_{34} - U_0
Направление тока в образце показано знаками <<+>> и <<->> на рис. \ref{установка}. Направление тока в образце показано знаками <<+>> и <<->> на рис. \ref{установка}.
Направление тока в обмотках электромагнита при установке разъёма $K_1$ в положение 1 показано стрелкой на торце магнита. Направление тока в обмотках электромагнита при установке разъёма $K_1$ в положение 1 показано стрелкой на торце магнита.
Измерьте разность потенциалов без магнитного поля (установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Без поля>>). Подайте небольшое напряжение на электромагнит, нажмите кнопку <<С полем>>. Определите характер проводимости образца (дырочный или электронный). Измерьте разность потенциалов без магнитного поля (установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Без поля>>). Подайте небольшое напряжение на электромагнит ($~10$ B), нажмите кнопку <<С полем>>. Зафиксируйте результаты.
\begin{center}
\textit{IV. Измерение удельной проводимости.}
\end{center}
\item Выключите источник питания электромагнита, перейдите в основное меню программы кнопкой <<Меню>>. Перейдите к измерению удельной проводимости соответствующей кнопкой. \item Выключите источник питания электромагнита, перейдите в основное меню программы кнопкой <<Меню>>. Перейдите к измерению удельной проводимости соответствующей кнопкой.
\item Удалите держатель с образцом из зазора электромагнита; подключите к клемма <<U>> и <<0>> вольтметра провода 3 и 5; введите параметры образца в соответствующие поля (после ввода обязательно нажать клавишу <<ENTER>>). Введите $L$ в поле <<Введите L>> и $l$ в поле <<Введите l>>, нажмите кнопку <<Старт>>. \item Удалите держатель с образцом из зазора электромагнита; подключите к клемма <<U>> и <<0>> вольтметра провода 3 и 5; введите параметры образца в соответствующие поля (после ввода обязательно нажать клавишу <<ENTER>>). Введите $L$ в поле <<Введите L>> и $l$ в поле <<Введите l>>, нажмите кнопку <<Старт>>.
\begin{center}
\textit{V. Обработка результатов.}
\end{center}
\item Перейдите в основное меню программы. Для получения графиков и постоянных из эксперимента нажмите на кнопку <<Обработка данных>>. \item Перейдите в основное меню программы. Для получения графиков и постоянных из эксперимента нажмите на кнопку <<Обработка данных>>.
\item Разберите установку, все полученные данные и графики хранятся в папке с вашей фамилией, сохраните их себе, например, на флешку. \item Разберите установку, все полученные данные и графики хранятся в папке с вашей фамилией, сохраните их себе, например, на флешку.
\begin{center}
\textit{VI. Выводы.}
\end{center}
\item Определите характер проводимости образца (дырочный или электронный) по направлению тока и по знаку постоянной Холла.
\item Сделайте вывод об адекватности полученных констант. При необходимости обработайте данные самостоятельно.
\end{enumerate}
\begin{center}
\textsf{\textbf{Контрольные вопросы.}}
\end{center}
\begin{enumerate}
\item Какие вещества называют диэлектриками, проводниками, полупроводниками? Чем объясняется различие их электрических свойств? Как зависит
от температуры проводимость металлов и полупроводников?
\item Дайте определение константы Холла. Как зависит константа Холла от температуры у металлов и полупроводников?
\item Зависит ли результат измерения константы Холла от геометрии образца?
\item Зависит ли сопротивление образца от магнитного поля в условиях опыта?
\item Как устроен милливеберметр? Зависят ли его показания от сопротивления измерительной катушки? Каким должно быть это сопротивление по
сравнению с сопротивлением катушки прибора?
\item По результатам измерений оцените частоту столкновений, длину пробега
и коэффициент диффузии носителей тока в образце.
\item Получите выражение константы Холла для материалов с двумя типами носителей. Указание: воспользуйтесь условием равенства нулю поперечного
тока.
\end{enumerate} \end{enumerate}
\end{document} \end{document}

View File

@ -77,8 +77,8 @@ class ResistanceWindow(AbstractWindow):
print(voltage*self.parent.l*self.parent.a) print(voltage*self.parent.l*self.parent.a)
print(current*self.parent.L) print(current*self.parent.L)
self.parent.sigma = current*self.parent.L/(voltage*self.parent.l*self.parent.a) self.parent.sigma = abs(current*self.parent.L/(voltage*self.parent.l*self.parent.a))
self.parent.sigma_sigma = self.parent.sigma*((5*10**-5)**2+(0.0035/100)**2)**0.5 self.parent.sigma_sigma = abs(self.parent.sigma*((5*10**-5)**2+(0.0035/100)**2)**0.5)
self.current_value.setText(str(current)+', mA') self.current_value.setText(str(current)+', mA')
self.voltage_value.setText(str(voltage)+', mV') self.voltage_value.setText(str(voltage)+', mV')
self.menu.setEnabled(True) self.menu.setEnabled(True)

3
Automation/data.csv Normal file
View File

@ -0,0 +1,3 @@
"U_34,mV","I_M,mA","U_0,mV","I_0,mA","E,mV",N,"t,ms"
0.016666666666666666,0.016666666666666666,0.016666666666666666,0.0016666666666666666,0.05,1,1
16.7,16.7,16.7,1.67,0.05,1,1002
1 U_34,mV I_M,mA U_0,mV I_0,mA E,mV N t,ms
2 0.016666666666666666 0.016666666666666666 0.016666666666666666 0.0016666666666666666 0.05 1 1
3 16.7 16.7 16.7 1.67 0.05 1 1002

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 156 KiB

After

Width:  |  Height:  |  Size: 156 KiB