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

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

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

Автор:

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

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

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

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

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

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

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

Программное обеспечение цифрового термометра

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

ЧПУ плоттер

В статье представлены результаты внедрения научного проекта, который демонстрирует разработку и внедрение технического прибора — ЧПУ плоттер в образовательный процесс для специальностей информационно-компьютерного профиля, а также с применением в про...

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

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

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

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

Моделирование и анализ производительности частотно-регулируемого привода в управлении скоростью асинхронного двигателя

Потребность в регулировании скорости асинхронного двигателя переменного тока возникает в определенных промышленных областях и этого часто трудно достичь, потому что асинхронные двигатели имеют фиксированную скорость. Доступные методы управления, таки...

Применение силового трансформатора на основе SIC для рельсовой тяги постоянного тока

Конструкция поезда должна обеспечивать высокую экономичность и качество услуг. Полупроводниковые силовые устройства, изготовленные из карбида кремния (SiC), достигли технологического уровня, позволяющего широко использовать их в преобразователях тяго...

Перспективы использования оптоволоконных измерительных трансформаторов тока в системах распределения электрической энергии АО «Узбекэнерго»

До последнего времени замеры электрических величин в распределительных устройствах промышленных предприятий, включая электрические станции, выполняются с помощью электромагнитных трансформаторов тока. Из-за нелинейности кривой намагничивания магнитоп...

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

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

Автоматизация и цифровизация ВЛ 6–10 кВ на базе вакуумных реклоузеров

стоит проблема защиты воздушных линий электропередачи 6–10 кВ от аварий. Зачастую сети построены таким образом, что авария на каком-либо участке грозит отключением всей линии, к которой одновременно может быть подключено множество потребителей. Для м...

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

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

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

Программное обеспечение цифрового термометра

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

ЧПУ плоттер

В статье представлены результаты внедрения научного проекта, который демонстрирует разработку и внедрение технического прибора — ЧПУ плоттер в образовательный процесс для специальностей информационно-компьютерного профиля, а также с применением в про...

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

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

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

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

Моделирование и анализ производительности частотно-регулируемого привода в управлении скоростью асинхронного двигателя

Потребность в регулировании скорости асинхронного двигателя переменного тока возникает в определенных промышленных областях и этого часто трудно достичь, потому что асинхронные двигатели имеют фиксированную скорость. Доступные методы управления, таки...

Применение силового трансформатора на основе SIC для рельсовой тяги постоянного тока

Конструкция поезда должна обеспечивать высокую экономичность и качество услуг. Полупроводниковые силовые устройства, изготовленные из карбида кремния (SiC), достигли технологического уровня, позволяющего широко использовать их в преобразователях тяго...

Перспективы использования оптоволоконных измерительных трансформаторов тока в системах распределения электрической энергии АО «Узбекэнерго»

До последнего времени замеры электрических величин в распределительных устройствах промышленных предприятий, включая электрические станции, выполняются с помощью электромагнитных трансформаторов тока. Из-за нелинейности кривой намагничивания магнитоп...

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

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

Автоматизация и цифровизация ВЛ 6–10 кВ на базе вакуумных реклоузеров

стоит проблема защиты воздушных линий электропередачи 6–10 кВ от аварий. Зачастую сети построены таким образом, что авария на каком-либо участке грозит отключением всей линии, к которой одновременно может быть подключено множество потребителей. Для м...

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

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

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