Информационный портал по безопасности » Железо » Сделай Сам » USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega

 

USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega

Автор: admin от 9-06-2015, 15:33, посмотрело: 1 487

USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega


Наша лаборатория занимается, в числе прочего, измерением электросопротивления различных образцов. Основные рабочие лошадки нашей измерительной установки — цифровые мультиметры американской компании Agilent, такие как 34401A.

Кроме этого, долгое время лежали неиспользуемыми несколько стареньких, но рабочих вольтметров В7-28 (один из них на фото). Данный вольтметр, правда, уступает по точности и быстродействию «американцам», но всё равно достаточно хорош: точность до 5 десятичных цифр, приемлемая шумность, экранированные входы, а главное — возможность дистанционного управления с ПЭВМ (которые теперь зовутся ПК).

Использовать их не получалось по следующим причинам:


  • Нестандартный аппаратный интерфейс: на задней панели имеются два разъёма с 56 и 22 контактами, по которым В7-28 принимает команды и возвращает результаты измерений. Непосредственно подключить вольтметр к ПК невозможно;

  • Отсутствие программного интерфейса, то есть какой-нибудь системы управляющих команд. Нужно включить режим измерения постоянного напряжения — извольте подать соответствующую комбинацию цифровых уровней на управляющий разъём. Нужно прочитать показания — к вашим услугам 21 цифровой сигнал на разъёме ЦПУ, и так далее.
    При этом программное обеспечение измерительной установки, написанное и отлаженное, использует SCPI команды для управления вольтметрами, и вносить туда поддержку нестандартных интерфейсов было бы слишком сложной задачей.


Таким образом, задача свелась к двум пунктам:

  • Снабдить В7-28 каким-нибудь современным аппаратным интерфейсом, чтобы подключать его непосредственно к ПК;

  • «Научить» его понимать SCPI команды, чтобы не трогать высокоуровневое ПО.


  • Почему Arduino Mega?


    У нас нет штатных «электронщиков», которые могли бы разработать и спаять плату микроконтроллера, поэтому нужно было выбрать что-то готовое, и Arduino оказалась тем что нужно. Не буду перечислять её известные достоинства, но нам она подошла тем, что позволила минимизировать объём пайки и обойтись без специальных программаторов.

    Из всего «ардуинового» семейства нам подошла только Arduino Mega 2560: только у неё оказалось достаточное количество цифровых входов и выходов. Плата довольно дорогая, в российских интернет-магазинах итальянский оригинал стоит около 4 тыс. рублей (на момент написания статьи). К счастью, имеется множество китайских аналогов по цене $10 и даже ниже.
    Связь с ПК у Arduino осуществляется через USB интерфейс, и это решало задачу №1. Осталось разработать прошивку, которая бы реализовывала бы подмножество SCPI команд и их трансляцию в управляющие сигналы для В7-28.

    Реализация прошивки


    В качестве отправного пункта мы использовали замечательную библиотеку scpi-parser, любезно написанную коллегой из Чехии. Эта библиотека взяла на себя всю «грязную работу», связанную с синтаксическим разбором SCPI команд, что сэкономило нам до 6 человекомесяцев.

    Сердце прошивки — это библиотека scpi-multimeter, которая реализует логику SCPI команд и конечный автомат, занимающийся асинхронным считыванием и обработкой показаний вольтметра. Библиотека абстрагируется от аппаратной части, делегируя работу с портами ввода-вывода вовне, для чего использует некий абстрактный программный интерфейс. Это позволяет использовать библиотеку практически с любым типом как микропроцессора, так и вольтметра.

    И, наконец, сама прошивка — проект v7-28-arduino. Это небольшой по объёму кода проектик, который реализует абстрактный интерфейс библиотеки scpi-multimeter, то есть фактически пишет и читает в цифровые и последовательный порты на плате микроконтроллера.

    Дела паяльные


    USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega


    Полностью обойтись без пайки нам, конечно, не удалось, но объём работ оказался довольно небольшой:

    • взять монтажную плату, совместимую с Arduino Mega по расположению контактных отверстий;

    • распаять на монтажной плате штырьковые соединители для установки на плате микроконтроллера;

    • двумя 30-проводными шлейфами связать монтажную плату с разъёмами В7-28;

    • наконец, воткнуть монтажную плату в микроконтроллер: из-за большого числа штырьковых контактов это не так уж просто.


    USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega


    Результат виден на фотографиях. Чтобы уберечь пайку от механических повреждений и «разбалтывания», мы поместили микроконтроллеры с установленными монтажными платами в «фирменные» коробочки. В результате наш адаптер приобрёл пусть не заводской, но довольно приличный вид.

    Проверка адаптера


    Опустим описание долгого процесса тестирования и отладки прошивки. Когда, наконец, всё было закончено, мы решили подключить В7-28 вместе с Agilent 34401A в одну измерительную установку. Как говорилось выше, ПО высокого уровня управляет вольтметрами посредством SCPI команд. В настройках программы мы указали виртуальный COM-порт, соответствующий микроконтроллеру, и:

    USB-адаптер для цифрового вольтметра В7-28 на базе Arduino Mega


    Программа заработала! Теперь у нас стало больше вольметров и мы можем одновременно измерять больше образцов. PROFIT!

    Заключение


    Кому, кроме нас, может быть интересна эта работа?

    Во-первых, это, конечно, гордые обладатели В7-28, получившие возможность за умеренные средства снабдить свои вольтметры адаптером, который позволяет их использовать так же просто, как и современные аналоги. Интерфейсом USB сейчас оборудован любой ПК, а язык команд SCPI «из коробки» понимает LabVIEW и аналогичные средства разработки.
    Во-вторых, как говорилось выше, основная часть библиотеки не зависит от конкретной марки вольтметра или микроконтроллера. Например, достаточно просто модифицировать прошивку для поддержки других типов вольтметров, например В7-34А.

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

    Спасибо за внимание!

    Источник: Хабрахабр

    Категория: Железо / Сделай Сам

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent