Программное обеспечение цифрового вольтметра на базе микросхемы TLC1549 | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 11 мая, печатный экземпляр отправим 15 мая.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №4 (63) апрель 2014 г.

Дата публикации: 23.03.2014

Статья просмотрена: 2445 раз

Библиографическое описание:

Данилов, О. Е. Программное обеспечение цифрового вольтметра на базе микросхемы TLC1549 / О. Е. Данилов. — Текст : непосредственный // Молодой ученый. — 2014. — № 4 (63). — С. 97-103. — URL: https://moluch.ru/archive/63/9914/ (дата обращения: 27.04.2024).

В статье представлена компьютерная программа для цифрового вольтметра на базе микросхемы TLC1549. Рассмотренный в статье виртуальный прибор может быть использован для проведения учебных измерений электрического напряжения на уроках физики.

Ключевые слова:аналого-цифровой преобразователь, цифровые измерения, цифровой вольтметр, виртуальный прибор, программирование, COM-порт, Lazarus.

В книге Патрика Гёлля [1, с. 17-22] приводится описание 10-разряднго аналого-цифрового преобразователя (АЦП), принципиальная схема которого с несущественными изменениями может выглядеть так, как это показано на рис. 1 [2; 6]. Предполагается, что АЦП подключается к COM-порту. Он фактически представляет собой цифровой вольтметр, способный измерять постоянные электрические напряжения в интервале от 0 до 5 В [2; 4]. Также в книге приводится описание программного обеспечения этого прибора на языке Паскаль, функционирование которого возможно лишь в операционной системе MS-DOS.

Для считывания данных с выхода этого АЦП, мы предлагаем простую компьютерную программу, написанную в среде программирования Lazarus и позволяющую использовать этот прибор, подключая его к современным компьютерам с операционными системами семейства Windows (Windows XP, Windows Vista, Windows 7) [7]. Если на компьютере отсутствует физический COM-порт, то этот АЦП также можно использовать с этим компьютером, подключая его через специальный адаптер USB-COM [2; 6]. Для этого на компьютере предварительно должен быть установлен драйвер виртуального COM-порта. Никаких изменений в предлагаемом программном обеспечении в этом случае производить не требуется. Программа представляет собой минимальный набор операторов, необходимых для проведения цифровых измерений напряжения [5], который может быть легко трансформирован опытным пользователем компьютерной техники в код, реализующий виртуальный цифровой осциллограф, с возможностью вывода визуальной информации в виде осциллограмм на экран в режиме реального времени [3].

Рис. 1. Принципиальная схема АЦП

Кратко опишем состав программы. В проект типа «Приложение», создаваемый с помощью Lazarus, должны быть включены следующие стандартные модули: Windows, Messages, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls. В тексте программы размещены описания констант Bit = 10 (разрядность АЦП) и Denominator = 1024 (разрешение АЦП или максимальное количество значений измеряемой величины) в блоке const, а также описания переменных hCom типа THandle, InitCOM типа PAnsiChar и Value типа Real (измеряемая величина) – в блоке public.

Приложение содержит элемент ComboBox1. В инспекторе событий ему сопоставлено событие OnChange, вызывающее процедуру TForm1.ComboBox1Change, текст которой приведен ниже:

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

  InitCom := PChar(ComboBox1.Text);

  OpenCOMPort;

end;

Кроме того, программа содержит процедуру TForm1.Beginning:

procedure TForm1.Beginning;

var i: Integer;

begin

  for i := 1 to 9 do

    begin

      hCOM := CreateFile(PChar('COM' + IntToStr(i)),  

      GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING,

      0, 0);

      if hCOM = INVALID_HANDLE_VALUE then Continue;

      ComboBox1.Items.Add('COM' + IntToStr(i));

      CloseHandle(hCOM);

    end;

end;

Также в программу добавлена процедура TForm1.OpenCOMPort:

procedure TForm1.OpenCOMPort;

begin

  if hCOM <> INVALID_HANDLE_VALUE then CloseHandle(hCOM);

  hCOM := INVALID_HANDLE_VALUE;

  hCOM := CreateFile(InitCOM, GENERIC_READ or

  GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);

  if ComboBox1.Text = '' then

    Application.MessageBox(PChar('Порт не

    подключен!'), 'Информация', MB_ICONWARNING)

  else

    Application.MessageBox(PChar('Порт ' + ComboBox1.Text +   

    ' подключен.'), 'Информация', MB_ICONINFORMATION);

  EscapeCommFunction(hCOM, SETBREAK);

end;

Ниже приводится текст процедуры TForm1.FormCreate, которой в инспекторе событий сопоставлено событие OnCreate.

procedure TForm1.FormCreate(Sender: TObject);

begin

  Beginning;

  ComboBox1.ItemIndex := 0;

  InitCom := PChar(ComboBox1.Text);

  OpenCOMPort;

end;

Процедуре TForm1.FormClose, текст которой идет ниже, сопоставлено событие OnClose.

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);

begin

  CloseHandle(hCom);

end;

Форма Form1 приложения содержит метку Label1, в которой будут выводиться значения измеряемой величины – электрического напряжения. Также на ней размещен элемент Timer1, свойство Interval которого равно 100. Программа содержит процедуру TForm1.Timer1Timer, которой сопоставлено событие OnTimer объекта Timer1 (текст размещен ниже).

procedure TForm1.Timer1Timer(Sender: TObject);

var ValueStr : string;

begin

  Value := 5 * ADC / Denominator;

  ValueStr := Format(' %1.2f В ', [Value]);

  Label1.Caption := ValueStr;

end;

Наиболее важной подпрограммой является функция, осуществляющая считывание сигнала на выходе АЦП. Это функция ADC типа Word. Вид этой функции приведен ниже:

function TForm1.ADC: Word;

var i : Byte;

    CommStatus: DWord;

begin

  EscapeCommFunction(hCom, CLRDTR);

  Result := 0;

  for i := Bit - 1 downto 0 do

    begin

      EscapeCommFunction(hCom, SETRTS);

      GetCommModemStatus(hCom, CommStatus);

      if (CommStatus and MS_CTS_ON) <> 0 then Result :=

      Result + (1 shl i);

      EscapeCommFunction(hCom, CLRRTS);

    end;

end;

Проверка работоспособности программы заключается в следующем. После компиляции запускают программу на выполнение. Если при наборе текста программы не допущено ошибок, то получится следующий результат. Программа найдет все существующие (физические и виртуальные) на компьютере COM-порты и активирует самый первый из них (с наименьшим номером). На экране появится окно с сообщением о том, что соответствующий порт подключен, а затем главное окно программы с элементом ComboBox1, с помощью которого можно будет переключать существующие на данном компьютере порты. В этом же окне выводится значение напряжения на входе АЦП. Меняя напряжение на входе с помощью обычной батарейки и потенциометра, можно убедиться в том, что значения напряжения на входе АЦП изменяются, и их можно наблюдать на экране (рис. 2).

Рис. 2. Главное окно приложения

Если использовать при написании программы среду программирования Lazarus версии 1.0, то в результате получится текст компьютерной программы следующего содержания.

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

  Windows, Messages, Classes, SysUtils, FileUtil, Forms,

  Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)

    ComboBox1: TComboBox;

    Label1: TLabel;

    Timer1: TTimer;

    procedure ComboBox1Change(Sender: TObject);

    procedure FormClose(Sender: TObject; var CloseAction:

    TCloseAction);

    procedure FormCreate(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { private declarations }

    procedure Beginning;

    procedure OpenCOMPort;

  public

    { public declarations }

    hCom : THandle;

    InitCOM : PAnsiChar;

    Value : Real;

    function ADC: Word;

  end;

var

  Form1: TForm1;

implementation

{$R *.lfm}

const

  Bit = 10;

  Denominator = 1024;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);

begin

  Begining;

  ComboBox1.ItemIndex := 0;

  InitCom := PChar(ComboBox1.Text);

  OpenCOMPort;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

var ValueStr : string;

begin

  Value := 5 * ADC / Denominator;

  ValueStr := Format(' %1.2f В ', [Value]);

  Label1.Caption := ValueStr;

end;

function TForm1.ADC: Word;

var i : Byte;

    CommStatus: DWord;

begin

  EscapeCommFunction(hCom, CLRDTR);

  Result := 0;

  for i := Bit - 1 downto 0 do

    begin

      EscapeCommFunction(hCom, SETRTS);

      GetCommModemStatus(hCom, CommStatus);

      if (CommStatus and MS_CTS_ON) <> 0 then Result :=

      Result + (1 shl i);

      EscapeCommFunction(hCom, CLRRTS);

    end;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

  InitCom := PChar(ComboBox1.Text);

  OpenCOMPort;

end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction:

TCloseAction);

begin

  CloseHandle(hCom);

end;

procedure TForm1.Beginning;

var i: Integer;

begin

  for i := 1 to 9 do

    begin

      hCOM := CreateFile(PChar('COM' + IntToStr(i)),

      GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING,  

      0, 0);

      if hCOM = INVALID_HANDLE_VALUE then Continue;

      ComboBox1.Items.Add('COM' + IntToStr(i));

      CloseHandle(hCOM);

    end;

end;

procedure TForm1.OpenCOMPort;

begin

  if hCOM <> INVALID_HANDLE_VALUE then CloseHandle(hCOM);

  hCOM := INVALID_HANDLE_VALUE;

  hCOM := CreateFile(InitCOM, GENERIC_READ or GENERIC_WRITE,

  0, nil, OPEN_EXISTING, 0, 0);

  if ComboBox1.Text = '' then

    Application.MessageBox(PChar('Порт не подключен!'),

    'Информация', MB_ICONWARNING)

  else

    Application.MessageBox(PChar('Порт ' + ComboBox1.Text +

    ' подключен.'), 'Информация', MB_ICONINFORMATION);

  EscapeCommFunction(hCOM, SETBREAK);

end;

end.

Литература:

1.                  Гёлль П. Как превратить персональный компьютер в измерительный комплекс: Пер. с фр. – М.: ДМК Пресс, 2005. – 144 с.

2.                  Данилов О. Е. Аналого-цифровой преобразователь как базовый элемент учебного компьютерного измерительного комплекса с аналоговыми датчиками физических величин / О. Е. Данилов // Молодой ученый. – 2013. – № 4. – С. 114-119.

3.                  Данилов О. Е. Виртуальный прибор "Цифровой вольтметр" / О. Е. Данилов // Свидетельство о государственной регистрации программы для ЭВМ № 2011617600. – Заявка № 2011613163; зарегистр. в Реестре программ для ЭВМ 29.09.2011.

4.                  Данилов О. Е. Компьютерный вольтметр на базе микросхемы TLC1549 / О. Е. Данилов // Учебный физический эксперимент: Актуальные проблемы. Современные решения: Программа и материалы шестнадцатой Всероссийской научно-практической конференции. – Глазов: ГГПИ, 2011. – С. 49.

5.                  Данилов О. Е. Применение компьютерных технологий в учебном физическом эксперименте / О. Е. Данилов // Молодой ученый. – 2013. – № 1. – С. 330-333.

6.                  Данилов О. Е. Создание компьютерного измерительного комплекса с аналоговыми датчиками для школьного кабинета физики / О. Е. Данилов // Дистанционное и виртуальное обучение. – 2013. - № 3. – С. 93-102.

7.                  Данилов О. Е. Цифровой вольтметр для учебных измерений / О. Е. Данилов // Потенциал. – 2013. – № 12. – С. 37-44.

Основные термины (генерируются автоматически): ADC, COM, CLRDTR, CLRRTS, SETBREAK, SETRTS, измеряемая величина, цифровой вольтметр, виртуальный прибор, компьютерная программа.


Ключевые слова

аналого-цифровой преобразователь, цифровые измерения, цифровой вольтметр, виртуальный прибор, программирование, COM-порт, Lazarus., Lazarus

Похожие статьи

Аналого-цифровой преобразователь как базовый элемент...

Для измерений физических величин в компьютерных измерительных комплексах используют датчики.

Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов. — Заявка № 2011613163; зарегистр. в Реестре программ для ЭВМ 29.09.2011.

Регулирование скважности сигнала при помощи аналогового...

ADC – для работы с аналогово-цифровым преобразователем.

В случае успешной компиляции в консоли появится надпись «BUILD SUCCESSFUL», а также будет указан размер программы.

Разработка устройства для диагностики стабилитрона

Прямое напряжение измеряется при пропускании через стабилитрон тока величиной 50 мА.

Для измерения напряжения используется аналогово-цифровой преобразователь. Измерения проводятся с точностью до 0,2 В. Для отображения измеряемых прямого и обратного падений...

Виртуальный манометр для учебных физических опытов

Прибор может быть подключен непосредственно к COM-порту компьютера

Программное обеспечение виртуального компьютерного прибора должно иметь графический интерфейс.

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов...

Виртуальный люксметр для учебных физических опытов

Компьютер работает с дискретными величинами, поэтому основной частью любого виртуального

Программное обеспечение учебного виртуального компьютерного прибора должно иметь

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е...

Виртуальный термометр для учебных физических опытов

Такой комплекс, как правило, включает датчики измеряемых физических величин, компьютер, устройство сопряжения датчиков с компьютером и программное обеспечение [2; 5; 6; 7].

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов...

Применение LabView при реализации виртуальных...

По тому компьютерное моделирование физических явлений и средств измерений физических величин стало неотъемлемой частью современного

Батоврин В.К. Опыт разработки открытых образовательных ресурсов на основе технологии виртуальных приборов / В.К. Батоврин, А.С...

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

Представлен комплект компьютерных моделирующих программ для исследования колебательных процессов при изучении курса физики. Обоснованы преимущества виртуального лабораторного практикума.

Разработка системы измерения сопротивления | Молодой ученый

ADC –аналого-цифровой преобразователь К1107ПВ2.

При попытке измерения сопротивления больше 2000 Ом, программа отключает напряжение от измеряемого резистора, так как напряжение на входе АЦП станет больше по модулю -2В, а длительное превышение...

Похожие статьи

Аналого-цифровой преобразователь как базовый элемент...

Для измерений физических величин в компьютерных измерительных комплексах используют датчики.

Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов. — Заявка № 2011613163; зарегистр. в Реестре программ для ЭВМ 29.09.2011.

Регулирование скважности сигнала при помощи аналогового...

ADC – для работы с аналогово-цифровым преобразователем.

В случае успешной компиляции в консоли появится надпись «BUILD SUCCESSFUL», а также будет указан размер программы.

Разработка устройства для диагностики стабилитрона

Прямое напряжение измеряется при пропускании через стабилитрон тока величиной 50 мА.

Для измерения напряжения используется аналогово-цифровой преобразователь. Измерения проводятся с точностью до 0,2 В. Для отображения измеряемых прямого и обратного падений...

Виртуальный манометр для учебных физических опытов

Прибор может быть подключен непосредственно к COM-порту компьютера

Программное обеспечение виртуального компьютерного прибора должно иметь графический интерфейс.

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов...

Виртуальный люксметр для учебных физических опытов

Компьютер работает с дискретными величинами, поэтому основной частью любого виртуального

Программное обеспечение учебного виртуального компьютерного прибора должно иметь

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е...

Виртуальный термометр для учебных физических опытов

Такой комплекс, как правило, включает датчики измеряемых физических величин, компьютер, устройство сопряжения датчиков с компьютером и программное обеспечение [2; 5; 6; 7].

3. Данилов О. Е. Виртуальный прибор «Цифровой вольтметр» / О. Е. Данилов...

Применение LabView при реализации виртуальных...

По тому компьютерное моделирование физических явлений и средств измерений физических величин стало неотъемлемой частью современного

Батоврин В.К. Опыт разработки открытых образовательных ресурсов на основе технологии виртуальных приборов / В.К. Батоврин, А.С...

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

Представлен комплект компьютерных моделирующих программ для исследования колебательных процессов при изучении курса физики. Обоснованы преимущества виртуального лабораторного практикума.

Разработка системы измерения сопротивления | Молодой ученый

ADC –аналого-цифровой преобразователь К1107ПВ2.

При попытке измерения сопротивления больше 2000 Ом, программа отключает напряжение от измеряемого резистора, так как напряжение на входе АЦП станет больше по модулю -2В, а длительное превышение...

Задать вопрос