Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
631.docx
Скачиваний:
125
Добавлен:
26.01.2016
Размер:
2.57 Mб
Скачать

Практические указания для выполнения работы

  1. Дома изучить приведенные выше теоретические положения и настоящий раздел.

  2. В лаборатории ознакомиться с конструкцией АЦП, компьютерного измерительного комплекса и аналогового датчика.

  3. В работе предлагается экспериментально исследовать явления электромагнитной индукции.

Необходимое оборудование

Компьютерный измерительный комплекс, 2 кольцеобразных магнита, катушка (числом витков 6580 провода ПЭЛ диаметром 0,16 мм, от пускателя), гальванический элемент на 1,5 В или аккумулятор на 1,2 В, соединительные проводники.

Программное обеспечение

В опытах используется программа «Цифровой вольтметр» или «Осциллограф», приведенная в Приложении А. Частота измерений – 50 изм. в секунду.

Теория. Суть явления электромагнитной индукции состоит в том, что при всяком изменении магнитного потока Ф, пронизывающего какой-либо контур (проводник), вне зависимости от того, чем вызвано изменение потока, в контуре (проводнике) наводится электродвижущая сила, равная:

.

где w – количество витков катушки, штук;

dФ / dt – скорость изменения магнитного потока, Вб/с.

Эксперимент. 1) В первом опыте приведем пример обнаружения ЭДС электромагнитной индукции. Подключим последовательно соединенные аккумулятор и катушку к АЦП (минус аккумулятора к минусу вольтметра). Расположив катушку вертикально, расположим магнит неподвижно рядом с катушкой или положим на нее. Вольтметр покажет постоянное напряжение аккумулятора. Быстро перемещая магнит вблизи катушки, обнаружим изменение показания вольтметра, которое вызвано возникновением э.д.с. в катушке. Показания вольтметра могут увеличиваться или уменьшаться. Это зависит от направления э.д.с. по отношению к напряжению аккумулятора, которое определяется движением магнита «к» или «от» катушки. Изменим эксперимент, оставляя магнит неподвижным, перемещая вблизи него катушку. Результаты эксперимента занести в табл. 1.

Таблица 1

Условия эксперимента

Взаимная неподвижность

Движение магнита/катушки

к катушке/магниту

Движение магнита/катушки от катушки/магнита

Показания вольтметра, В

Установить влияние скорости движения магнита и наличие ферромагнитного сердечника в катушке на показание вольтметра.

Пояснения

Поверхность стола при эксперименте не должна быть ферромагнитной. Напряжение аккумулятора смещает ось отсчета наведенной э.д.с. вверх по оси координат. Это позволяет измерять отрицательные э.д.с., так как вольтметр предна-значен для измерения только положительных значений постоянных напряжений.

Контрольные вопросы для самопроверки

  1. Почему на компьютер нельзя подавать аналоговые сигналы?

  2. Какие сигналы воспринимает (понимает) компьютер?

  3. Что такое АЦП?

  4. Кроме АЦП и компьютера, что еще нужно, чтобы создать, компьютерный вольтметр?

  5. Что такое последовательный интерфейс?

  6. Преимущества и недостатки последовательного интерфейса.

  7. Преимущества компьютерных измерений.

  8. Явление электромагнитной индукции.

  9. От чего зависят знак и значение э.д.с. электромагнитной индукции?

ПРИЛОЖЕНИЕ А

Программа «ОСЦИЛЛОГРАФ»

для 10-разрядного АЦП на базе TLC1549 Program Osc10Bit.

В качестве операционной системы может выступить как MS-DOS, так и системы семейства Windows (95, 98, XP). Можно использовать и другие программы, приведенные на сервере www.dmk.ru, а также использовать собственные разработки.

{Подключение стандартных модулей подпрограмм}

Uses Crt,   // Модуль подпрограмм управления режимами работы дисплея

     Graph; // Модуль подпрограмм управления графическим выводом

{Описание переменных}

Var n,             // Разрядность АЦП

 e : Byte;    // Переменная для обработки данных

    j,             // Переменная цикла

    Driver,        // Тип графического видеоадаптера

    Mode,          // Режим работы видеоадаптера

    Base: Integer; // Базовая переменная для номера порта

    d   : Real;    // Напряжение на выходе АЦП

{Описание констант}

Const c=1; {Поправочный коэффициент}

{Процедура инициализации графического режима}

Procedure CreateGraphics;

Begin

  ClrScr;                            // Очистка экрана

  Driver:=Detect;             // Автоматическое определение типа адаптера

  InitGraph(Driver, Mode, 'c:\bp\bgi'); // Инициализация графического режима

End;

{Процедура инициализации COM-порта}

Procedure InitCOM;

Begin

  n:=10;            // Задание разрядности АЦП

  Base:=$3F8;       // Присвоение базовой переменной номера порта COM1

  Port[Base+4]:=1;  // Установка в DTR режима передачи

  Delay(100);       // Задержка в 100 мс

  Port[Base+3]:=64; // Настройка порта

  Delay(500);       // Задержка в 500 мс

End;

{Процедура устранения мерцания монитора}

Procedure RemoveFlicker;

Begin

  Repeat

  Until Port[$3DA] And 8 <> 0;

  Repeat

  Until Port[$3DA] And 8 = 0;

End;

{Процедура обработки данных на выходе АЦП}

Procedure CollectData;

Var i: Integer;                             // Переменная цикла

Begin

  d:=0;                                     // Обнуление переменной d

  Port[Base+4]:=0;                          // Сброс всех выходов порта

  For i:=0 To n-1 Do

    Begin

      Port[Base+4]:=2;                      // Установка +12 В на выходе RTS

e:=Port[Base+6] And 16;            // Присвоение переменной e состояния CTS

      Port[Base+4]:=0;                      // Сброс всех выходов порта

      If e=16 Then d:=d+exp((n-1-i)*ln(2)); // Расчет d при условию, что e=16

    End;

  d:=5*c*d/(exp((n)*ln(2))-1);              // Окончательный расчет d

End;

{Процедура построения масштабной сетки}

Procedure DrawScale;

Var i,                            // Переменная первого цикла

    j : Integer;                  // Переменная второго цикла

Begin

  SetFillStyle(SolidFill, Black); // Установка черного цвета в палитру

  Bar(30, 40, 630, 420);          // Прорисовка прямоугольника

  SetColor(LightGray);            // Установка светлого серого цвета в палитру

  Line(28, 421, 632, 421);        // Прорисовка нижней окантовки

  Line(28, 39, 632, 39);          // Прорисовка верхней окантовки

  SetColor(DarkGray);             // Установка темного серого цвета линий масштабной сетки

  {Горизонтальные линии}

  For i:=0 to 12 Do

    For j:=0 To 10 Do

      Begin

        If (j=0) Or (j=10) Then SetLineStyle(SolidLn, 0, NormWidth)

        Else SetLineStyle(DottedLn, 0, NormWidth);

        Line(30, 420-38*j, 630, 420-38*j);

      End;

  {Вертикальные линии}

  For i:=0 to 12 Do

    For j:=0 To 10 Do

      Begin

        If (i=0) Or (i=12) Then SetLineStyle(SolidLn, 0, NormWidth)

        Else SetLineStyle(DottedLn, 0, NormWidth);

        Line(30+50*i, 40, 30+50*i, 420);

      End;

  MoveTo(30+j, 420-Round(76*d));  // Перемещение графического курсора}

End;

{Процедура построения графика}

Procedure ConstructSchedule;

Var s: String;                               // Переменная для вывода на экран

Begin

  CollectData;                           // Вызов процедуры определения напряжения

  Delay(100);                                // Задержка 100 мс

  j:=j+1;                                    // Увеличение переменной цикла

  If j=1 Then MoveTo(30+j, 420-Round(76*d)); // Перемещение графического курсора

  SetColor(LightGreen);                      // Установка светлого зеленого цвета линии графика

  LineTo(30+j, 420-Round(76*d));             // Прорисовка верхней линии графика

  SetColor(Green);                           // Установка зеленого цвета линии графика

  LineTo(30+j, 421-Round(76*d));             // Прорисовка нижней линии графика

  If j=600 Then                              // Очистка экрана от линии графика

    Begin

      j:=0;                                  // Обнуление переменной цикла

      DrawScale;                             // Вызов процедуры вывода масштабной сетки

    End;

  RemoveFlicker;                             // Устранение мерцания

  SetFillStyle(SolidFill, Black);            // Установка черного цвета в палитру

  Bar(36, 440, 105, 461);                    // Прорисовка прямоугольника

  Str(d:1:2, s);                             // Перевод числа в строку

  SetColor(LightGreen);                      // Установка светлого зеленого цвета линии графика

  OutTextXY(36, 429, s+' V');                // Вывод текущего значения на экран

  MoveTo(30+j, 420-Round(76*d));             // Перемещение графического курсора

End;

{Процедура вывода надписей}

Procedure WriteWords;

Begin

  SetFillStyle(SolidFill, LightGray); // Установка светлого серого цвета в палитру

  Bar(28, 38, 632, 422);              // Прорисовка прямоугольника

  Bar(28, 434, 152, 466);             // Прорисовка прямоугольника

  SetFillStyle(SolidFill, DarkGray);  // Установка темного серого цвета в палитру

  Bar(30, 436, 150, 464);             // Прорисовка прямоугольника

  SetFillStyle(SolidFill, Black);     // Установка черного цвета в палитру

  Bar(31, 437, 149, 463);             // Прорисовка прямоугольника

  {Вывод надписей на экран}

  OutTextXY(1,  37, '5,0');

  OutTextXY(1,  75, '4,5');

  OutTextXY(1, 113, '4,0');

  OutTextXY(1, 151, '3,5');

  OutTextXY(1, 189, '3,0');

  OutTextXY(1, 227, '2,5');

  OutTextXY(1, 265, '2,0');

  OutTextXY(1, 303, '1,5');

  OutTextXY(1, 341, '1,0');

  OutTextXY(1, 379, '0,5');

  OutTextXY(1, 417, '0,0');

  SetTextStyle(SansSerifFont, HorizDir, 0);

  SetColor(DarkGray);

  OutTextXY(291, 0, 'DIGITAL OSCILLOSCOPE');

  SetColor(LightGray);

  OutTextXY(290, 0, 'DIGITAL OSCILLOSCOPE');

  SetTextStyle(DefaultFont, HorizDir, 0);

  SetColor(White);

  OutTextXY(536, 428, 'O.E.Danilov');

  SetTextStyle(SansSerifFont, HorizDir, 0);

  SetColor(DarkGray);

  OutTextXY(383, 429, 'COM-VOLTMETER');

  SetColor(LightGray);

  OutTextXY(382, 429, 'COM-VOLTMETER');

End;

{Основная часть программы}

Begin

  InitCOM;             // Инициализация порта

  CreateGraphics;      // Инициализация графического режима

  WriteWords;          // Вывод надписей на экран

  DrawScale;           // Построение масштабной сетки

  Repeat

    ConstructSchedule; // Построение графика

  Until KeyPressed;    // Ожидание нажатия клавиши

  CloseGraph;          // Закрытие графического режима

End.

Лабораторная работа 59

Соседние файлы в предмете Метрология