Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Работа АЦП с СОМ портом, простая система сбора данных. Энциклопедия радиоэлектроники и электротехники

Бесплатная техническая библиотека

Энциклопедия радиоэлектроники и электротехники / Компьютеры

Комментарии к статье Комментарии к статье

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

Вообще в интернете и в литературе информации по данной теме достаточно мало… Особенно если использовать язык Visual Basic. Поэтому постараюсь заполнить, хотя бы отчасти, этот пробел.

Итак, начнем…

Какова бы не была у вас цель, для начала необходимо приобрести собственно аналого-цифровой преобразователь (АЦП). А так же, установить на компьютер среду разработки Visual Basic 6.0. Так же вам надо элементарно уметь ориентироваться в этой среде разработки… т.к. статья рассчитана но то, что читатель имеет хотя бы начальные знания в программировании на языке Visual Basic. Так же рекомендую почитать литературу [1], [3].

В качестве АЦП рекомендую приобрести TLC549IP. Это 8 разрядный, последовательный АЦП с простым протоколом обмена. О нем и пойдет речь в статье. Разумеется, вы можете использовать и другие АЦП с соответствующими изменениями в схеме и коде. Подробно о нем можно почитать в [1].

После того как вы пробрели АЦП необходимо собрать аппаратную часть нашей системы сбора данных, а именно схему представленную на Рис. 1.

Работа АЦП с СОМ портом, простая система сбора данных. Аппаратная часть
(нажмите для увеличения)

Схема была заимствована из [1] с небольшими изменениями. Диоды VD1, VD2, VD6 - КД521, стабилитроны любые на напряжение стабилизации 3…5 В. Вместо 78L05 можно применить КРЕН5А. Резисторы R1, R2 с допуском 1%, или подбор из нескольких с максимально близким значением сопротивления. От них будет зависеть точность измерений. Резистор R3 желательно многооборотный.

Настройка: подав питание на плату, измеряем напряжение на выводе Out стабилизатора DA1. Записываем полученное значение напряжения с 3-мя знаками после запятой, оно нам потребуется в дальнейшем. На выводе 1 микросхемы DD1 с помощью резистора R3 устанавливаем напряжение равное точно половине измеренного на выводе Out стабилизатора.

Теперь займемся собственно программной частью. Вообще говоря, использовать на первых порах интерфейсы связи типа RS-232, I2C, Micro Ware и т.п. считаю нецелесообразным, т.к. при незначительном усложнении кода программы может серьезно усложнится аппаратная часть. Поэтому будем использовать простейший протокол обмена взятый из "даташита" на АЦП. А именно простую его реализацию. Конечно с подобным протоколом не достичь высокой скорости, ограничения в данном случае накладывает сам Visual Basic, но для получения первых результатов с минимумом затрат времени и сил, а также измерения относительно медленно меняющихся процессов он вполне подходит. Протокол связи АЦП TLC549IP показан на Рис. 2.

Работа АЦП с СОМ портом, простая система сбора данных. Протокол связи АЦП TLC549IP
(нажмите для увеличения)

Во время единичного состояния на выводе CS (выбор кристалла) аналого-цифрового преобразователя происходит собственно преобразование. Выдача данных начинается при низком уровне CS с появлением тактового импульса clock, по одному биту на каждый импульс. Чтобы выдать 8 битный код нужно соответственно 8 тактовых импульсов. После чего CS можно перевести в единичное состояние и произвести следующее преобразование. Более подробно о работе АЦП можно почитать в [1].

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

Запустите среду разработки Visual Basic и создайте стандартный EXE проект. Добавьте элемент управления MSComm Control. Добавить его в панель компонентов можно следующим образом Project-->Components-->выбрать в спискеMicrosoft Comm Control 6.0. Разместите его на форме, а также 2 метки label и 2 таймера Timer. Имена оставьте по умолчанию.

Теперь можно приступить к написанию кода простого вольтметра.

Зададим переменные: Dim b1, b2, b3, b4, b5, b6, b7, b8, sum, Ud As Single

В процедуру загрузки формы поместите следующий код:

Private Sub Form_Load()

MSComm1.DTREnable = True 'начальное значение - высокий уровень CS

Timer1.Interval = 100 ' интервал таймера 1мс

Timer2.Interval = 1 ' интервал таймера 100мс

MSComm1.Settings = "1200,N,8,1" ' установки передачи данных

MSComm1.CommPort = 1 ' номер COM порта

MSComm1.PortOpen = True ' открываем ком порт

End Sub

В процедуру Timer1 поместите код:

Private Sub Timer1_Timer()

MSComm1.DTREnable = False 'cоздаем низкий уровень CS

Label2.Caption = "" 'мусор для начальной задержки

MSComm1.RTSEnable = True '1й тактовый импульс clock высокий уровень

If MSComm1.CDHolding = True Then b1 = 1 Else b1 = 0 'опрос единичное или нулевое значение на входе CD (выходе ацп)

MSComm1.RTSEnable = False '1й тактовый импульс clock низкий уровень

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b2 = 1 Else b2 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b3 = 1 Else b3 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b4 = 1 Else b4 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b5 = 1 Else b5 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b6 = 1 Else b6 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b7 = 1 Else b7 = 0

MSComm1.RTSEnable = False

MSComm1.RTSEnable = True

If MSComm1.CDHolding = True Then b8 = 1 Else b8 = 0

MSComm1.DTREnable = True 'cоздаем высокий уровень CS

MSComm1.RTSEnable = False '8й тактовый импульс clock низкий уровень

'переводим биты в десятичный формат по формуле разложения

sum = (b1 * 2 ^ 7) + (b2 * 2 ^ 6) + (b3 * 2 ^ 5) + (b4 * 2 ^ 4) + (b5 * 2 ^ 3) + (b6 * 2 ^ 2) + (b7 * 2 ^ 1) + (b8 * 2 ^ 0)

Ud = Format(sum * 5.083 / 255, "##0.000") 'считаем пропорциональное значение

Label1.Caption = CStr(Ud) & " Вольт" 'выводим на экран полученное значение

End Sub

Код в Timer1 представляет собой собственно драйвер. Который периодически повторяясь, формирует тактовые импульсы и принимает биты данных. Ud - напряжение на входе АЦП, если применить 10, 12 разрядные АЦП число 225 заменится соответственно на 1024, 4096. Для 10, 12 разрядных АЦП нужно добавить недостающие биты в код, руководствуясь их "даташитами". Значение 5.083 это значение напряжения, получившееся у меня на выходе Out стабилизатора. Забейте сюда ваше значение.

Для питания платы можно применить как отдельный источник так и питать непосредственно от COM порта. Для этого в процедуре Timer2 поместим следующий код:

Private Sub Timer2_Timer()

MSComm1.Output = Chr(0) & Chr(0) 'создаем импульсы на выводе TX (3) для питания платы АЦП

End Sub

Необходимо помнить, что сильно нагружать COM порт нельзя… максимум, на что можно рассчитывать это 20 мА. В рабочем режиме схема потребляет ток не более 5 мА.

Теперь подключите плату к COM порту и запустите проект. Измерьте напряжение на выводе IN стабилизатора DA1, оно должно быть не ниже 6.5 В. Если это не так следует применить отдельный источник питания.  Изменяя напряжение на входе АЦП, убедитесь, что программа работает и на экране показывает напряжение. Точность отсчета напряжения при применении 8 разрядного АЦП равна 20мВ, с 10 разрядным АЦП - 5мВ, 12-1.2 мВ

Немного о работе в Visual Basic и созданного приложения с ком портом

Как вы уже наверно поняли для работы с ком портом нужен компонентMicrosoft Comm Control а именно файл MSCOMM32.ocx который после установки Visual Basic находится в директории C:\Windows\system32. К чему я это, а к тому, что если вы вашу программу, не создавая инсталлятора, скопируете на другой компьютер, не имеющий Visual Basic она работать не будет. Необходимо этот файл также скопировать в ту же директорию что и на вашем компьютере, т.е. в system32. Или создать инсталлятор.

Теперь о некоторых командах:

Команда задающая скорость обмена данными:

MSComm1.Settings = "1200,N,8,1"

Команда указывающая номер ком порта

MSComm1.CommPort = 1

Команды открывающие и закрывающие ком порт

MSComm1.PortOpen = True

MSComm1.PortOpen = False

Команды выводящие +12В на соответствующую ножку ком разъема:

MSComm1.RTSEnable = True       RTS (7) -название вывода и номер ножки

MSComm1.DTREnable = True      DTR (4)

Команды выводящие -12В

MSComm1.RTSEnable = False         

MSComm1.DTREnable = False

Опросить на наличие единичного или нулевого состояния можно выводы CD (1), CTS (8), DSR (6).

If  MSComm1.CDHolding = True Then   (если единица то…)

If  MSComm1.CDHolding = False Then   (если ноль то…)

Передача на вывод Tx (3) ASCII кода символа или строки:

MSComm1.Output = "А"

Числа

MSComm1.Output = Chr(10)  число может меняться от 0…255

Записав такую команду в таймере и меняя число или символ можно создать ШИМ модуляцию. Более подробно о командах можно ознакомиться скачав описание контрола  Microsoft Comm Control.

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

Для работы с переменными напряжениями (переходящими через 0), а так же для расширения пределов измерений необходим входной усилитель, схему которого можно взять из [1]. Для работы с сетевым напряжением или с устройствами гальванически не развязанными с сетью следует обязательно сделать опторазвязку схемы от компьютера.

Работа АЦП с СОМ портом, простая система сбора данных

Работа АЦП с СОМ портом, простая система сбора данных

Скачать исходники примеров программ (8 кБ)

Литература

  1. Гелль П. Как превратить персональный компьютер в измерительный комплекс: Пер. с фр. - 2-е изд., испр. - М.: ДМК Пресс, 2001. - 144 с.: ил.
  2. Ан П. Сопряжение ПК с внешними устройствами: Пер. с англ. - М.: ДМК Пресс, 2001 - 320 с.: ил.
  3. Visual Basic 6.0: Пер. с англ. - СПб.: БХВ - Санкт-Петербург, 2000. - 992 с.: ил.

Автор: =ShooRooP=, evei [собака] mail.ru; Публикация: cxem.net

Смотрите другие статьи раздела Компьютеры.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Расставание действительно может причинять физическую боль 16.09.2026

Разрыв отношений с близким человеком способно вызывать настолько сильные переживания, что привычное выражение "разбитое сердце" иногда воспринимается почти буквально. Человек может испытывать тревогу, тоску и эмоциональное напряжение, сопровождающиеся вполне реальными телесными ощущениями. Исследования работы мозга показывают, что такая связь между эмоциональными и физическими страданиями может иметь вполне определенную нейробиологическую основу. Эксперимент, позволивший изучить этот вопрос, провела команда психолога Итана Кросса из Мичиганского университета. В исследовании участвовали 40 человек, недавно переживших расставание по инициативе партнера. Все добровольцы продолжали остро реагировать на произошедшее, что позволило исследователям изучить мозговую активность в период наиболее сильных переживаний. Во время эксперимента участников помещали в аппарат магнитно-резонансной томографии. Испытуемым поочередно показывали фотографию бывшего партнера и подвергали предплечье воздей ...>>

Научно доказана невозможность создания нейтринного лазера 16.09.2026

Лазер давно перестал быть исключительно лабораторной технологией: сегодня он используется в связи, медицине, промышленности и научных исследованиях. Поэтому физики периодически предлагают необычные варианты устройств, способных работать по аналогичным принципам, но с другими типами частиц. В 2025 году появилась идея создать лазер, формирующий направленный поток нейтрино. Однако последующий теоретический анализ показал, что привлекательная на первый взгляд концепция сталкивается не просто с техническими трудностями, а с фундаментальными законами квантовой физики. Первоначальную концепцию предложили профессор Массачусетского технологического института (MIT) Джо Формаджио (Joe Formaggio) и Бен Джонс (Ben Jones) из Техасского университета в Арлингтоне. Согласно их замыслу, облако радиоактивных атомов следовало охладить до сверхнизких температур порядка нанокельвинов - миллиардных долей кельвина. В таких условиях атомы могли бы сформировать Бозе - Эйнштейновский конденсат, особое квантов ...>>

Индекс нижнего белья раскрыл состояние швейцарских почв 15.09.2026

Почва кажется обычной частью окружающего нас ландшафта, однако под ее поверхностью существует сложная экосистема, от состояния которой напрямую зависит жизнь человека. Миллиарды микроорганизмов, черви, грибы и другие обитатели почвы перерабатывают органические вещества и участвуют в круговороте питательных элементов. Чтобы привлечь внимание общества к этой мало заметной проблеме, исследователи из Цюрихского университета придумали весьма необычный эксперимент: они закопали более 2000 пар хлопкового нижнего белья в садах, на лугах, полях и газонах по всей Швейцарии. Проект получил название "Доказательство в виде нижнего белья" и представлял собой не массовую шутку, а научный эксперимент, позволяющий наглядно оценить биологическую активность почвы. Исследователи помещали хлопковые изделия в землю, а примерно через два месяца извлекали их и сравнивали степень разрушения ткани. Некоторые образцы за это время практически исчезали, оставляя лишь отдельные фрагменты швов, тогда как на други ...>>

Случайная новость из Архива

Аттосекундные импульсы света - с помощью обычного промышленного лазера 11.09.2020

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

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

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

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

Другие интересные новости:

▪ Одиночество сокращает продолжительность жизни

▪ Стадион вырабатывает электроэнергию

▪ Мониторы ViewSonic VX2462-2K-MHDU, VX2762-2K-MHDU и VX2762-4K-MHDU

▪ Искусственный глаз размером с мушиный

▪ Микропипетка для принтера

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Инструкции по эксплуатации. Подборка статей

▪ статья Аппараты и системы очистки выбросов. Основы безопасной жизнедеятельности

▪ статья В каких странах некоторых девочек воспитывают как мальчиков? Подробный ответ

▪ статья Электромеханик телефонно-телеграфной связи (измерение, линейно-технический участок). Типовая инструкция по охране труда

▪ статья Простой генератор сигналов. Энциклопедия радиоэлектроники и электротехники

▪ статья Источники тока из подручных средств. Химический опыт

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2026