diff --git a/Automation/ChartWindow.py b/Automation/ChartWindow.py index 4d3e245..85cefb1 100644 --- a/Automation/ChartWindow.py +++ b/Automation/ChartWindow.py @@ -35,7 +35,9 @@ class ChartWindow(AbstractWindow): self.parent = parent (a, eps) = self.make_grad() + print(*a) self.make_main(a, eps) + self.setWindowTitle('Основной эксперимент. Обработка данных') self.resize(1400, 800) @@ -54,9 +56,10 @@ class ChartWindow(AbstractWindow): self.text = QTextBrowser() text = self.make_text() self.parent.text_name = 'Results.txt' - with open(os.path.join(self.parent.folder, self.parent.text_name), 'w') as file: - file.write(text) - self.text.setText(text) + # with open(os.path.join(self.parent.folder, self.parent.text_name), 'w') as file: + # file.write(text) + # self.text.setText(text) + print(text) self.hbox_layout = QGridLayout(self.centralwidget) self.hbox_layout.addWidget(self.label, 0, 0) @@ -82,12 +85,12 @@ class ChartWindow(AbstractWindow): self.parent.data_grad.make_point_grafic() 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) eps = (np.min(sigma)**2+(0.0035/100)**2+0.02**2)**0.5 x_range = np.arange(min(self.parent.data_grad.x), 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.savefig(os.path.join( self.parent.folder, @@ -104,7 +107,7 @@ class ChartWindow(AbstractWindow): e = np.array((self.parent.data_main.data['U_34,mV'] - self.parent.data_main.data['U_0,mV'])/10**3) 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) self.parent.data_main.x = np.array( 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 + (sigma[0]/k)**2)**0.5 + print(sigma[0]/ k) def make_text(self): s0 = 'Вычисленные постоянные равны:'+'\n' +\ 'R_X - постоянная Холла, '+'\n'+' n - концентрация носителей заряда,'+'\n' +\ 'sigma - удельная проводимость, '+'\n'+' b - подвижность'+'\n'+'\n' - s1 = 'R_X = ' + str(round(self.parent.R_H*10**10)) + ' +- ' + \ - str(round(self.parent.sigma_R_H*10**10)) + \ + s1 = 'R_X = ' + str(int(round(self.parent.R_H*10**10, -1))) + ' +- ' + \ + str(int(round(self.parent.sigma_R_H*10**10, -1))) + \ ' , 10^-10 м^3/Кл'+'\n'+'\n' - s2 = 'n = ' + str(round(self.parent.n)) + ' +- ' + \ - str(round(self.parent.sigma_n)) + ' , 1/м^3'+'\n'+'\n' + s2 = 'n = ' + str(int(round(self.parent.n, -1))) + ' +- ' + \ + str(int(round(self.parent.sigma_n, -1))) + ' , 10^21 1/м^3'+'\n'+'\n' s3 = 'sigma = ' + str(round(self.parent.sigma)) + ' +- ' + \ str(round(self.parent.sigma_sigma)) + ', 1/(Ом*м)'+'\n'+'\n' - s4 = 'b = ' + str(round(self.parent.b*10**4)) + ' +- ' + \ - str(round(self.parent.sigma_b*10**4)) + ', см^3/(В*с)'+'\n'+'\n' + s4 = 'b = ' + str(round(self.parent.b*10**4), 2) + ' +- ' + \ + str(round(self.parent.sigma_b*10**4), 2) + ', см^2/(В*с)'+'\n'+'\n' + return s0+s1+s2+s3+s4 diff --git a/Automation/GraduationWindow.py b/Automation/GraduationWindow.py index 93b50f7..6c335e8 100644 --- a/Automation/GraduationWindow.py +++ b/Automation/GraduationWindow.py @@ -78,7 +78,7 @@ class GraduationWindow(AbstractWindow): def enter_value(self): self.lineEdit.setReadOnly(True) - self.take_data() + self.no_data() self.lineEdit.clear() self.lineEdit.setReadOnly(False) @@ -98,6 +98,7 @@ class GraduationWindow(AbstractWindow): for i in range(len(data)): self.table.setItem(self.table.rowCount()-1, i, QTableWidgetItem(str(data[i]))) + self.table.scrollToBottom() def take_data(self): t = (round(time.time()*1000)-self.start_time) diff --git a/Automation/Induction_data.csv b/Automation/Induction_data.csv new file mode 100644 index 0000000..27450bb --- /dev/null +++ b/Automation/Induction_data.csv @@ -0,0 +1 @@ +"B,mTl","E,mV","I_M,mA","t,ms" diff --git a/Automation/Main.py b/Automation/Main.py index ee649c8..dc7f67e 100644 --- a/Automation/Main.py +++ b/Automation/Main.py @@ -32,7 +32,7 @@ class Start: self.app = QApplication.instance() self.current=0 self.window = StartWindow(self) - self.add_equip() + # self.add_equip() self.draw() self.app.exec() @@ -147,7 +147,7 @@ class StartWindow(AbstractWindow): self.chart.setEnabled(False) self.chart_text = QLabel('Выполняется расчет всех констант образца и построение графиков', self) - self.main = QPushButton('Основной эксперимент') + self.main = QPushButton('Определение ЭДС Холла') self.main.clicked.connect(self.main_click) if not self.parent.current==1: self.main.setEnabled(False) @@ -203,6 +203,17 @@ class StartWindow(AbstractWindow): self.flow.setEnabled(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 diff --git a/Automation/Main_experiment_window.py b/Automation/Main_experiment_window.py index 8ca2dac..12ace81 100644 --- a/Automation/Main_experiment_window.py +++ b/Automation/Main_experiment_window.py @@ -20,13 +20,17 @@ from PyQt6.QtWidgets import (QLabel, QGridLayout, QTableWidgetItem, QHeaderView, - QTextBrowser) + QTextBrowser, + QDialog, + QDialogButtonBox, + QVBoxLayout + ) +from PyQt5.QtWidgets import QMessageBox from Analisis_data import Data from Abstract_window import AbstractWindow class ThreadData(QtCore.QThread): - def __init__(self, parent): QtCore.QThread.__init__(self) self.running = False @@ -38,18 +42,35 @@ class ThreadData(QtCore.QThread): self.parent.take_data() 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): def __init__(self, parent): super().__init__() - self.setWindowTitle('Основной эксперимент. Получение данных') + self.setWindowTitle('Определение ЭДС Холла') self.parent = parent + self.data_thread = ThreadData(self) + # self.thread = ThreadWarning(self) self.resize(1400, 800) self.number_iteration = 1 self.start_time = 0 self.volt = 0.05 + self.U_0={} # make masthead self.parent.dataname = 'data.csv' @@ -85,22 +106,25 @@ class MainWindow(AbstractWindow): self.table = QTableWidget(self) self.table.setColumnCount(len(heads)) self.table.setRowCount(0) + + rowPosition = self.table.rowCount() + it = QTableWidgetItem(str(rowPosition)) self.table.setHorizontalHeaderLabels(heads) header = self.table.horizontalHeader() for i in range(len(heads)): header.setSectionResizeMode(i, QHeaderView.ResizeMode.Stretch) self.table.resizeColumnsToContents() + self.table.scrollToItem(it) # Adding the table to the grid - self.grid_layout.addWidget(self.table, 0, 0, -1, 1) - self.grid_layout.addWidget(self.lineEdit, 0, 2, 1, -1) - self.grid_layout.addWidget(self.start, 1, 2) - self.grid_layout.addWidget(self.stop, 1, 3) - self.grid_layout.addWidget(self.new, 2, 2, 1, -1) - self.grid_layout.addWidget(self.menu, 3, 2, 1, -1) + self.grid_layout.addWidget(self.table, 1, 0, -1, 1) + self.grid_layout.addWidget(self.lineEdit, 1, 2, 1, -1) + self.grid_layout.addWidget(self.start, 2, 2) + self.grid_layout.addWidget(self.stop, 2, 3) + self.grid_layout.addWidget(self.new, 3, 2, 1, -1) + self.grid_layout.addWidget(self.menu, 4, 2, 1, -1) def enter_a(self): - # TODO self.parent.a = float(self.lineEdit.text())/10**3 self.start.setEnabled(True) self.lineEdit.setReadOnly(True) @@ -139,14 +163,15 @@ class MainWindow(AbstractWindow): current_time = round(time.time()*1000) v = str((current_time-self.start_time)/60) t = str(current_time-self.start_time) - if self.number_iteration == 0: - self.u_0 = v - a = str(float(v)/100) + self.u_0 = v + a = str(float(v)/10) 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]) if float(a) > 1: self.stop_clicked() + + def save_data(self, data): with open(os.path.join(self.parent.folder, self.parent.dataname), 'a') as file: @@ -156,6 +181,7 @@ class MainWindow(AbstractWindow): for i in range(len(data)): self.table.setItem(self.table.rowCount()-1, i, QTableWidgetItem(str(data[i]))) + self.table.scrollToBottom() def take_data(self): @@ -172,9 +198,6 @@ class MainWindow(AbstractWindow): f_amp = open(self.parent.I_M_name, 'w') f_amp.write('Measure:Current:DC?\n') 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.write('Measure:Voltage:DC?\n') @@ -182,24 +205,32 @@ class MainWindow(AbstractWindow): f_amp = open(self.parent.amp_name, 'w') f_amp.write('Measure:Current:DC?\n') 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') v = '{:.9f}'.format(float(f_volt.read(15))*10**3) - if float(current_time-self.this_time) <= 100: - self.u_0 = v + try: + 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') a = '{:.9f}'.format(float(f_amp.read(15))*10**3) print((current_time-self.this_time) ) # protect of errors: - if float(a) > 1: + if float(a) > 1 or self.table.rowCount()>=15*self.number_iteration: self.stop_clicked() f_volt.close() f_amp.close() - self.volt += 0.05 - self.save_data([v, I_M, self.u_0, a, self.volt, self.number_iteration, t]) + self.volt += 0.05 + def closeEvent(self, event): self.data_thread.running = False diff --git a/Automation/Manual.aux b/Automation/Manual.aux index a1bcaed..1732494 100644 --- a/Automation/Manual.aux +++ b/Automation/Manual.aux @@ -20,6 +20,6 @@ \@nameuse{bbl@beforestart} \catcode `"\active \babel@aux{russian}{} -\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Схема установки для исследования эффекта Холла в полупроводниках}}{1}{figure.1}\protected@file@percent } -\newlabel{установка}{{1}{1}{Схема установки для исследования эффекта Холла в полупроводниках}{figure.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Схема установки для исследования эффекта Холла в полупроводниках}}{2}{figure.1}\protected@file@percent } +\newlabel{установка}{{1}{2}{Схема установки для исследования эффекта Холла в полупроводниках}{figure.1}{}} \gdef \@abspage@last{4} diff --git a/Automation/Manual.log b/Automation/Manual.log index b5b3853..8dfc3f9 100644 --- a/Automation/Manual.log +++ b/Automation/Manual.log @@ -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 restricted \write18 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 ) LaTeX Font Info: Trying to load font information for PD1+cmr on input line 5 -2. -LaTeX Font Info: No file PD1cmr.fd. on input line 52. +4. +LaTeX Font Info: No file PD1cmr.fd. on input line 54. 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 -(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 -(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 -2. +4. (/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd File: omlcmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions ) 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 -(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 -(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 -(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 -2. +4. (/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd File: omscmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions ) 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 -(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 -(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 -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 52. -LaTeX Font Info: Trying to load font information for U+msa 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 54. (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd 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 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 @@ -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> File: Установка.png Graphic file (type 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. - [1 -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} <./Установка.png>] - [2] [3] [4] -(./Manual.aux) + +LaTeX Warning: `!h' float specifier changed to `!ht'. + +[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. @@ -806,13 +809,13 @@ Package rerunfilecheck Info: File `Manual.out' has not changed. (rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0. ) Here is how much of TeX's memory you used: - 13708 strings out of 478287 - 209314 string characters out of 5849288 - 523209 words of memory out of 5000000 - 31674 multiletter control sequences out of 15000+600000 - 480337 words of font info for 58 fonts, out of 8000000 for 9000 + 13726 strings out of 478287 + 209473 string characters out of 5849288 + 528209 words of memory out of 5000000 + 31679 multiletter control sequences out of 15000+600000 + 481207 words of font info for 59 fonts, out of 8000000 for 9000 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} -Output written on Manual.pdf (4 pages, 173871 bytes). +onts/type1/public/cm-super/sfsx1200.pfb> +Output written on Manual.pdf (4 pages, 207082 bytes). PDF statistics: - 101 PDF objects out of 1000 (max. 8388607) - 74 compressed objects within 1 object stream - 23 named destinations out of 1000 (max. 500000) + 120 PDF objects out of 1000 (max. 8388607) + 91 compressed objects within 1 object stream + 35 named destinations out of 1000 (max. 500000) 6 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Automation/Manual.pdf b/Automation/Manual.pdf index 0ad2be6..2639673 100644 Binary files a/Automation/Manual.pdf and b/Automation/Manual.pdf differ diff --git a/Automation/Manual.synctex.gz b/Automation/Manual.synctex.gz index 305f725..4f9d3d2 100644 Binary files a/Automation/Manual.synctex.gz and b/Automation/Manual.synctex.gz differ diff --git a/Automation/Manual.tex b/Automation/Manual.tex index cce4746..47289f1 100644 --- a/Automation/Manual.tex +++ b/Automation/Manual.tex @@ -35,16 +35,18 @@ \begin{document} \begin{center} -\textsf{\textbf{3.3.4 ЭФФЕКТ ХОЛЛА В ПОЛУПРОВОДНИКАХ}} +\textsf{\textbf{3.3.4A ЭФФЕКТ ХОЛЛА В ПОЛУПРОВОДНИКАХ}} \end{center} \textbf{Цель работы:} измерение подвижности и концентрации носителей заряда в полупроводниках. -\textbf{В работе используются:} электромагнит с регулируемым источником питания; вольтметр; амперметр; миллиамперметр; миллитесламетр; источник питания, образцы легированного германия. +\textbf{В работе используются:} электромагнит с регулируемым источником питания; вольтметр; амперметр; миллиамперметр; миллитесламетр; источник питания, образцы легированного германия, программное обеспечение. Перед выполнением работы необходимо ознакомиться с основами элементарной теории движения носителей заряда в металлах и полупроводниках (п. 4 введения к разделу). +Работа выполняется при помощи программного обеспечения, связь с приборами осуществляется через цифровой интерфейс RS-232 при помощи USB-портов. + В работе изучаются особенности проводимости полупроводников в геометрии мостика Холла. Ток пропускается по плоской полупроводниковой пластинке, помещённой в перпендикулярное пластинке магнитное поле. Измеряется разность потенциалов между краями пластинки в поперечном к току направлении. По измерениям определяется константа @@ -107,10 +109,14 @@ U_\perp = U_{34} - U_0 \begin{enumerate} \item Работа будет состоять из 4 частей: градуировка электромагнита, основной эксперимент (эфект холла), определение знака носителей, измерение удельной проводимости. - \item Соберите установку согласно схеме на рис. \ref{установка}, подключите к вольтметру контакты 3 и 4. - \item Запустите программу <<Эффект Холла>> + \item Соберите установку согласно схеме на рис. \ref{установка}, подключите к вольтметру контакты 3 и 4. Убедитесь, что источник питания электромагнита выключен, включите амперметры и вольтметры. + \item Запустите программу <<Эффект Холла>>. \item Введите фамилие в поле <<Введите фамилию>>, нажмите клавишу ENTER. +\begin{center} +\textit{I. Градуировка электромагнита.} +\end{center} + \item Для проведения градуировки электромагнита ознакомьтесь с устройством и принципом работы измерителя магнитной индукции ATE-8702. Техническое описание (ТО) расположено на установке. Включите измеритель индукции кнопкой <>; через 2-3 секунды последовательным нажатием кнопки <> установите режим измерения в постоянном поле <<$a_1$>> (см. рис. 2 ТО). @@ -120,10 +126,24 @@ U_\perp = U_{34} - U_0 \item Установите ручки регулировки источника питания электромагнита в минимальное положение и нажмите на кнопку <<Градуировка электромагнита>>. Для начала эксперимента нажмите кнопку <<Старт>>. - Получите калибровочную кривую электромагнита: измерьте магнитную индукцию миллитесламетром, полученное значение введите в поле <<Индукция>>, нажмите клавишу ENTER, плавно измените ток питания электромагнита. Повторите для 15-20 значений тока питания электромагнита. - \item После окончания калибровки выйдите в меню программы с помощью клавиши <<Меню>>. Перейдите к выполнению основного эксперимента кнопкой <<Основной эксперимент>>. - \item Введите $a$ в поле <<Введите a>>, нажмите клавишу ENTER. Установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Старт>>. Снимите 15 точек, затем, остановив процесс кнопкой <<Стоп>>, измените ток на источнике питания электромагнита. Запустите получение данных кнопкой <<Новое напряжение>>. Повторите для 10-12 значений тока на источнике питания электромагнита. - \item После окончания основного эксперимента выйдете в основное меню программы кнопкой <<Меню>>. Перейдите к определению знаку носителей заряда кнопкой <<Основной эксперимент>>. + Получите калибровочную кривую электромагнита: измерьте магнитную индукцию миллитесламетром, полученное значение введите в поле <<Индукция>>, нажмите клавишу ENTER, измените ток питания электромагнита (на $5-7$ B). Повторите для 15-20 значений тока питания электромагнита. + \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 Определите знак носителей заряда в образце. Для этого необходимо знать направление тока через образец, направление магнитного поля и знак ЭДС Холла. @@ -131,12 +151,48 @@ U_\perp = U_{34} - U_0 Направление тока в образце показано знаками <<+>> и <<->> на рис. \ref{установка}. Направление тока в обмотках электромагнита при установке разъёма $K_1$ в положение 1 показано стрелкой на торце магнита. -Измерьте разность потенциалов без магнитного поля (установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Без поля>>). Подайте небольшое напряжение на электромагнит, нажмите кнопку <<С полем>>. Определите характер проводимости образца (дырочный или электронный). +Измерьте разность потенциалов без магнитного поля (установите ручки регулировки источника питания электромагнита в минимальное положение, нажмите кнопку <<Без поля>>). Подайте небольшое напряжение на электромагнит ($~10$ B), нажмите кнопку <<С полем>>. Зафиксируйте результаты. + +\begin{center} +\textit{IV. Измерение удельной проводимости.} +\end{center} \item Выключите источник питания электромагнита, перейдите в основное меню программы кнопкой <<Меню>>. Перейдите к измерению удельной проводимости соответствующей кнопкой. \item Удалите держатель с образцом из зазора электромагнита; подключите к клемма <> и <<0>> вольтметра провода 3 и 5; введите параметры образца в соответствующие поля (после ввода обязательно нажать клавишу <>). Введите $L$ в поле <<Введите L>> и $l$ в поле <<Введите l>>, нажмите кнопку <<Старт>>. + +\begin{center} +\textit{V. Обработка результатов.} +\end{center} + \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} diff --git a/Automation/ResistanceWindow.py b/Automation/ResistanceWindow.py index 6498eae..3540bf3 100644 --- a/Automation/ResistanceWindow.py +++ b/Automation/ResistanceWindow.py @@ -77,8 +77,8 @@ class ResistanceWindow(AbstractWindow): print(voltage*self.parent.l*self.parent.a) print(current*self.parent.L) - self.parent.sigma = 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 = abs(current*self.parent.L/(voltage*self.parent.l*self.parent.a)) + 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.voltage_value.setText(str(voltage)+', mV') self.menu.setEnabled(True) diff --git a/Automation/__pycache__/Abstract_window.cpython-39.pyc b/Automation/__pycache__/Abstract_window.cpython-39.pyc deleted file mode 100644 index ae91601..0000000 Binary files a/Automation/__pycache__/Abstract_window.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/Analisis_data.cpython-39.pyc b/Automation/__pycache__/Analisis_data.cpython-39.pyc deleted file mode 100644 index 771feea..0000000 Binary files a/Automation/__pycache__/Analisis_data.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/ChartWindow.cpython-39.pyc b/Automation/__pycache__/ChartWindow.cpython-39.pyc deleted file mode 100644 index 9d601ec..0000000 Binary files a/Automation/__pycache__/ChartWindow.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/GraduationWindow.cpython-39.pyc b/Automation/__pycache__/GraduationWindow.cpython-39.pyc deleted file mode 100644 index e6401eb..0000000 Binary files a/Automation/__pycache__/GraduationWindow.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/Main_experiment_window.cpython-39.pyc b/Automation/__pycache__/Main_experiment_window.cpython-39.pyc deleted file mode 100644 index 43321f0..0000000 Binary files a/Automation/__pycache__/Main_experiment_window.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/ResistanceWindow.cpython-39.pyc b/Automation/__pycache__/ResistanceWindow.cpython-39.pyc deleted file mode 100644 index 615a6c1..0000000 Binary files a/Automation/__pycache__/ResistanceWindow.cpython-39.pyc and /dev/null differ diff --git a/Automation/__pycache__/SignWindow.cpython-39.pyc b/Automation/__pycache__/SignWindow.cpython-39.pyc deleted file mode 100644 index 82b752b..0000000 Binary files a/Automation/__pycache__/SignWindow.cpython-39.pyc and /dev/null differ diff --git a/Automation/data.csv b/Automation/data.csv new file mode 100644 index 0000000..3fe2adc --- /dev/null +++ b/Automation/data.csv @@ -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 diff --git a/Automation/Перерптлв/Chart.png b/Automation/Перерптлв/Chart.png index ef9dd3d..599d6b7 100644 Binary files a/Automation/Перерптлв/Chart.png and b/Automation/Перерптлв/Chart.png differ diff --git a/Automation/Перерптлв/Graduation_chart.png b/Automation/Перерптлв/Graduation_chart.png index c6172c8..3b47211 100644 Binary files a/Automation/Перерптлв/Graduation_chart.png and b/Automation/Перерптлв/Graduation_chart.png differ