Как подключить ацп к компьютеру
Эта статья ориентирована в основном для новичков. Для тех, кто решил сам попробовать себя в создании системы сбора данных, ввод на компьютер аналоговых сигналов, обработка их и т.д. Об этом и пойдет речь в данной статье, причем, все постараемся сделать самостоятельно.
Вообще в интернете и в литературе информации по данной теме достаточно мало… Особенно если использовать язык 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.
Во время единичного состояния на выводе 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
В процедуру загрузки формы поместите следующий код:
В процедуру Timer1 поместите код:
Код в Timer1 представляет собой собственно драйвер. Который периодически повторяясь, формирует тактовые импульсы и принимает биты данных. Ud – напряжение на входе АЦП, если применить 10, 12 разрядные АЦП число 255 заменится соответственно на 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.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]. Для работы с сетевым напряжением или с устройствами гальванически не развязанными с сетью следует обязательно сделать опторазвязку схемы от компьютера.
Компьютер работает с дискретными величинами, поэтому основной частью любого виртуального измерительного прибора с аналоговым датчиком на базе компьютера является устройство сопряжения, преобразующее аналоговый сигнал в цифровой, — аналого-цифровой преобразователь (АЦП). Фактически он представляет собой цифровой вольтметр. Ясно, что любой аналоговый датчик, на выходе которого получается электрическое напряжение, пропорциональное измеряемой этим датчиком физической величине, может быть согласован с этим вольтметром-АЦП, если напряжение на выходе датчика не превышает максимальное входное напряжение АЦП.
Рис. 1.2.1. Принципиальная схема аналого-цифрового преобразователя на базе микросхемы TLC1549Прибор может быть подключен к COM -порту компьютера (последовательному порту RS 232) или к USB -шине компьютера с помощью адаптера USB - COM (USB to Serial Adapter). Это позволяет подключать его и к достаточно давно выпущенным компьютерам, еще имеющим COM -порт, и к современным, у которых COM -порт уже отсутствует.
В случае подключения устройства к USB -шине необходимо будет установить специальную программу-драйвер для создания виртуального COM -порта, которая обычно поставляется производителем адаптера вместе с ним. При этом надо обратить внимание на то, что увеличится погрешность при измерении интервалов времени. Связано это со спецификой работы контроллера USB и с тем, что адаптеру необходимо некоторое время для преобразования сигнала, поступающего от устройства к компьютеру.
Почему в качестве интерфейса для подключения к компьютеру лучше выбрать последовательный интерфейс, будет рассказано в параграфе 1.4.
Данилов О. Е. Аналого-цифровой преобразователь как базовый элемент учебного компьютерного измерительного комплекса с аналоговыми датчиками физических величин [Текст] / О. Е. Данилов // Молодой ученый. — 2013. — № 4. — С. 114-119.
Разработанная для работы с приставкой программа обеспечивает наблюдение осциллограмм сигналов на экране монитора при скорости временной развертки 0.3. 100 мс/дел. В режиме регистратора программа ведет запись отсчетов сигнала с максимальным периодом повторения 100 с в текстовый файл (кодировка ASCII), пригодный для анализа с помощью других программ.
Схема приставки-АЦП изображена на рис. 1. Исследуемый сигнал поступает на разъем XW1 На ОУ DA1.2 выполнен повторитель, а на DA1.1 — узел сдвига уровня, необходимый для превращения биполярных (-1,25. +1,25 В) сигналов в однополярные (0. +2.5), которые способен обрабатывать АЦП DA2 Образцовое напряжение +2,5 В подано на узел сдвига с соответствующего выхода АЦП через повторитель на ОУ DA1.3.
Использован 12-разрядный АЦП AD7495 [1] с последовательным интерфейсом Сигналом начала цикла преобразования служит смена высокого уровня на входе CS АЦП низким при высоком уровне на входе SCLK. Затем на вход SCLK подают 16 импульсов низкого уровня. На выходе SDAT в ответ на четыре первых импульса будет установлен низкий уровень, а на каждый из 12 последующих — уровень соответствующий значению очередного разряда результата преобразования, начиная со старшего. Завершают цикл установкой высокого уровня на входе CS.
Для передачи результата преобразования в компьютер применен интерфейс USB, реализуемый с помощью микросхемы FT232BM — преобразователя USB—RS-232 [2] Эта микросхема способна работать в режиме Bit Bang [3] в котором линии ее порта RS-232 образуют восьмиразрядную параллельную шину данных с индивидуальной настройкой разрядов на ввод или вывод. Программную поддержку режима Bit Bang в компьютере обеспечивает драйвер D2XX |4|. бесплатно распространяемый разработчиками микросхемы
Чтобы сформировать нужную временную диаграмму сигналов управления АЦП. компьютерная программа заполняет выходной буфер USB байтами, несущими в соответствующих разрядах значения этих сигналов в каждом такте. Для одною цикла работы АЦП требуется сформировать и передать 34 байта (по два на каждый тактовый импульс и еще два для управления сит -налом CS). Темп выдачи значении из этих байтов на выходы DTR и RTS преобразователя интерфейса, с которыми соединены входы CS и SCLK АЦП. зависит от настройки внутреннего синтезатора тактовой частоты преобразователя. Настройку изменяют командами от компьютера, регулируя таким образом скорость работы АЦП. а вместе с ней и частоту дискретизации входного сигнала.
Последовательный выход АЦП соединен с входом CTS преобразователя интерфейса, благодаря чему результаты работы АЦП поступают в буфер преобразователя интерфейса, а из него по USB — в компьютер В связи с особенностями протокола обмена по USB передача информации в компьютер происходит с довольно большой, а главное, непредсказуемой задержкой Чтобы решить проблему на вход DSR преобразователя интерфейса подан тот же сигнал, что и на вход CS АЦП Получая информацию об уровнях на входе CS и на выходе SDAT АЦП одновременно, ком-пьютерная программа имеет возможность найти в полученной последовательности начало и конец каждого цик-ла преобразования и правильно декодировать его результат.
В приставке реализовано важное преимущество интерфейса USB — как уже сказано, ей не требуется отдельный источник питания Напряжение +5 В поступает на микросхемы с контакта I розетки XS1 через развязывающие LC-и PC- филыры Напряжение 5 В, необходимое для питания ОУ DA1. получено с помощью преобразователя напряжения DC-101 фирмы YCL. Аналогичный можно наити на плате неисправного компьютерного адаптера сети Ethernet, предназначенного для связи по коаксиальному кабелю Пригодны и друг ие модули преобразователей постоянного напряжения 5 В в 5. 9 В с гальванической развязкой
Приставка смонтирована на макетной плате, на которой расположены все элементы, за исключением разъема XW1 Мон I аж выполнен проводом МГТФ Выводы малогабаритных микросхем соединены с контактными площадками макетной платы отрезками луженого провода диаметром 0.2 мм.
Коаксиальный разъём XW1 — СР-50-73ФВ (BNC Jack) XS1 — розетка USB-В для печатного монтажа, ее стандартным кабелем соединяют с одной из розеток USB-А компьютера. Приставка (ее внешнии вид вместе с USB кабелем и щупом-делителем показан на рис. 2) собрана в пластмассовом корпусе от телефонной розетки RJ-11
Подключенную к разъему USB приставку операционная система компьютера автоматически опознает как новое USB-устроиство. Прочитав его идентификаторы (микросхеме FT232BM по умолчанию присвоены VID=0x0403 и PID: 0x6001), она пытается наити в памяти компьютера и установить подходящий программный драйвер устройства. Если самостоятельно ей не удалось сделать это, то система попросит пользователя указать путь к папке, в которой находятся необходимые файлы. Последние версии требующегося для работы приставки драйвера D2XX для различных операционных систем находятся на интернет-странице.
Разработанная для работы с приставкой программа USCOPE, основное окно которой показано на рис. 3, позволяет измерить среднее значение входного напряжения АЦП и наблюдать осциллограмму поданного на его вход сигнала.
Кнопками на панели TIME/DIV — Scope изменяют скорость "развертки", а на панели INPUT DIVIDER устанавливают соответствие показаний вольтметра измеряемому напряжению при использовании щупа-делителя.
Органами управления, расположенными на панели Syncro, выбирают вид синхронизации развертки и управляют условиями ее запуска. Синхронизация реализована программно и основана на поиске отсчета, удовлетворяющего заданным условиям, в буфере принятых от АЦП данных. Выбрав в меню "File" пункт "Save Image. ", можно записать наблюдаемую осциллограмму в графический файл.
В режиме регистратора, в который входят, нажав на панели TIME/DIV — Recorder одну из кнопок, задающих период повторения отсчетов в секундах, программа записывает принятую от АЦП информацию в текстовый файл практически неограниченного размера. По умолчанию будет создан файл data.txt, но это имя можно изменить, выбрав в меню "File" пункт "Save Data As. ".
В окне Options, открывающемся при выборе одноименного пункта главного меню, можно задать Device ID — имя, по которому программа ищет приставку-АЦП в списке подключенных к компьютеру устройств. Оно должно совпасть с заданным при установке драйвера, по умолчанию — "USB Serial".
В том же окне можно ввести число, корректирующее ноль шкалы напряжения Обычно его подбирают таким, чтобы при замкнутом входе приставки показания цифрового табло в правой верхней части главного окна стали нулевыми.
Кнопки Power ON/OFF служат для логического включения и выключения АЦП. При отключении приставки от компьютера программа автоматически переходит в режим OFF.
Разработанная для работы с приставкой программа обеспечивает наблюдение осциллограмм сигналов на экране монитора при скорости временной развертки 0.3. 100 мс/дел. В режиме регистратора программа ведет запись отсчетов сигнала с максимальным периодом повторения 100 с в текстовый файл (кодировка ASCII), пригодный для анализа с помощью других программ.
Схема приставки-АЦП изображена на рис. 1. Исследуемый сигнал поступает на разъем XW1 На ОУ DA1.2 выполнен повторитель, а на DA1.1 — узел сдвига уровня, необходимый для превращения биполярных (-1,25. +1,25 В) сигналов в однополярные (0. +2.5), которые способен обрабатывать АЦП DA2 Образцовое напряжение +2,5 В подано на узел сдвига с соответствующего выхода АЦП через повторитель на ОУ DA1.3.
Использован 12-разрядный АЦП AD7495 [1] с последовательным интерфейсом Сигналом начала цикла преобразования служит смена высокого уровня на входе CS АЦП низким при высоком уровне на входе SCLK. Затем на вход SCLK подают 16 импульсов низкого уровня. На выходе SDAT в ответ на четыре первых импульса будет установлен низкий уровень, а на каждый из 12 последующих — уровень соответствующий значению очередного разряда результата преобразования, начиная со старшего. Завершают цикл установкой высокого уровня на входе CS.
Для передачи результата преобразования в компьютер применен интерфейс USB, реализуемый с помощью микросхемы FT232BM — преобразователя USB—RS-232 [2] Эта микросхема способна работать в режиме Bit Bang [3] в котором линии ее порта RS-232 образуют восьмиразрядную параллельную шину данных с индивидуальной настройкой разрядов на ввод или вывод. Программную поддержку режима Bit Bang в компьютере обеспечивает драйвер D2XX |4|. бесплатно распространяемый разработчиками микросхемы
Чтобы сформировать нужную временную диаграмму сигналов управления АЦП. компьютерная программа заполняет выходной буфер USB байтами, несущими в соответствующих разрядах значения этих сигналов в каждом такте. Для одною цикла работы АЦП требуется сформировать и передать 34 байта (по два на каждый тактовый импульс и еще два для управления сит -налом CS). Темп выдачи значении из этих байтов на выходы DTR и RTS преобразователя интерфейса, с которыми соединены входы CS и SCLK АЦП. зависит от настройки внутреннего синтезатора тактовой частоты преобразователя. Настройку изменяют командами от компьютера, регулируя таким образом скорость работы АЦП. а вместе с ней и частоту дискретизации входного сигнала.
Последовательный выход АЦП соединен с входом CTS преобразователя интерфейса, благодаря чему результаты работы АЦП поступают в буфер преобразователя интерфейса, а из него по USB — в компьютер В связи с особенностями протокола обмена по USB передача информации в компьютер происходит с довольно большой, а главное, непредсказуемой задержкой Чтобы решить проблему на вход DSR преобразователя интерфейса подан тот же сигнал, что и на вход CS АЦП Получая информацию об уровнях на входе CS и на выходе SDAT АЦП одновременно, ком-пьютерная программа имеет возможность найти в полученной последовательности начало и конец каждого цик-ла преобразования и правильно декодировать его результат.
В приставке реализовано важное преимущество интерфейса USB — как уже сказано, ей не требуется отдельный источник питания Напряжение +5 В поступает на микросхемы с контакта I розетки XS1 через развязывающие LC-и PC- филыры Напряжение 5 В, необходимое для питания ОУ DA1. получено с помощью преобразователя напряжения DC-101 фирмы YCL. Аналогичный можно наити на плате неисправного компьютерного адаптера сети Ethernet, предназначенного для связи по коаксиальному кабелю Пригодны и друг ие модули преобразователей постоянного напряжения 5 В в 5. 9 В с гальванической развязкой
Приставка смонтирована на макетной плате, на которой расположены все элементы, за исключением разъема XW1 Мон I аж выполнен проводом МГТФ Выводы малогабаритных микросхем соединены с контактными площадками макетной платы отрезками луженого провода диаметром 0.2 мм.
Коаксиальный разъём XW1 — СР-50-73ФВ (BNC Jack) XS1 — розетка USB-В для печатного монтажа, ее стандартным кабелем соединяют с одной из розеток USB-А компьютера. Приставка (ее внешнии вид вместе с USB кабелем и щупом-делителем показан на рис. 2) собрана в пластмассовом корпусе от телефонной розетки RJ-11
Подключенную к разъему USB приставку операционная система компьютера автоматически опознает как новое USB-устроиство. Прочитав его идентификаторы (микросхеме FT232BM по умолчанию присвоены VID=0x0403 и PID: 0x6001), она пытается наити в памяти компьютера и установить подходящий программный драйвер устройства. Если самостоятельно ей не удалось сделать это, то система попросит пользователя указать путь к папке, в которой находятся необходимые файлы. Последние версии требующегося для работы приставки драйвера D2XX для различных операционных систем находятся на интернет-странице.
Разработанная для работы с приставкой программа USCOPE, основное окно которой показано на рис. 3, позволяет измерить среднее значение входного напряжения АЦП и наблюдать осциллограмму поданного на его вход сигнала.
Кнопками на панели TIME/DIV — Scope изменяют скорость "развертки", а на панели INPUT DIVIDER устанавливают соответствие показаний вольтметра измеряемому напряжению при использовании щупа-делителя.
Органами управления, расположенными на панели Syncro, выбирают вид синхронизации развертки и управляют условиями ее запуска. Синхронизация реализована программно и основана на поиске отсчета, удовлетворяющего заданным условиям, в буфере принятых от АЦП данных. Выбрав в меню "File" пункт "Save Image. ", можно записать наблюдаемую осциллограмму в графический файл.
В режиме регистратора, в который входят, нажав на панели TIME/DIV — Recorder одну из кнопок, задающих период повторения отсчетов в секундах, программа записывает принятую от АЦП информацию в текстовый файл практически неограниченного размера. По умолчанию будет создан файл data.txt, но это имя можно изменить, выбрав в меню "File" пункт "Save Data As. ".
В окне Options, открывающемся при выборе одноименного пункта главного меню, можно задать Device ID — имя, по которому программа ищет приставку-АЦП в списке подключенных к компьютеру устройств. Оно должно совпасть с заданным при установке драйвера, по умолчанию — "USB Serial".
В том же окне можно ввести число, корректирующее ноль шкалы напряжения Обычно его подбирают таким, чтобы при замкнутом входе приставки показания цифрового табло в правой верхней части главного окна стали нулевыми.
Кнопки Power ON/OFF служат для логического включения и выключения АЦП. При отключении приставки от компьютера программа автоматически переходит в режим OFF.
Читайте также: