Коновалов Дмитрий Александрович

USB-HID магнитометр на HMC5883L

USB-HID магнитометр на HMC5883L

В составе компьютерного самописца используется для круглосуточного мониторинга магнитной обстановки в помещении лаборатории.

Во время проведения исследований изменения физико-химических свойств высоко разбавленных водных растворов. (А.И. Коновалов "Наноассоциаты - территория непознанного" Наука в России. 1/2014) необходимо круглосуточно контролировать магнитную обстановку в помещении лаборатории.

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

Проект базируется на портированной в среду программирования Algorithm Builder программной реализации USB-HID джойстика MJoy. Процедуры опроса каналов  АЦП заменены процедурой считывания регистров HMC5883L по интерфейсу I2C. Добавлен вывод результатов на ЖК индикатор. Подключенное к компьютеру устройство определяется операционной системой как USB джойстик с тремя осями.

Принципиальная электрическая схема устройства приведена на рис. 1.


Рис. 1 Принципиальная электрическая схема USB-HID магнитометра.

Для достижения максимально возможной скорости опроса (120 Гц) в конструкции задействован выход готовности данных DRDY HMC5883L.

Микроконтроллер (МК) DD1 под управлением программы периодически считывает значения магнитной индукции из выходных регистров HMC5883L, передаёт их в компьютер по интерфейсу USB и отображает на жидкокристаллическом индикаторе.

Архив с файлами прошивки AB USB-HID магнитометра

Программа для компьютера. Получать данные от магнитометра можно двумя основными способами: обращаться к магнитометру как к устройству ввода по VID/PID или как к джойстику.

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

В архиве лежат скомпилированное приложение и исходный текст простейшей программы, осуществляющей приём и отображение значений магнитной индукции для осей X, Y и Z в окне Windows. Основой послужила программа usbtherm Дениса Нечитайлова (UU9JDR). Она написана для компилятора Visual C++ 6 с использованием HID-библиотек Windows DDK. Оригинал её исходного текста можно найти на сайте cqham.ru.


Рис. 2 Окно простейшей программы для считывания и отображения текущих значений магнитной индукции.

Второй способ - обращение к магнитометру как к джойстику - удобно применять в среде LabView. Для этого там есть все необходимые виртуальные приборы:

Рис. 3 Код LabView для считывания данных с USB-HID магнитометра.

Программа компьютерного самописца создана в среде LabView. На рис. 4 и рис. 5 показаны вкладки панели приборов. На вкладке "Монитор" отображаются значения и диаграммы мгновенных значений магнитной индукции. На вкладке "Самописец" отображаются значения и диаграммы значений магнитной индукции, усреднённые за 1 секунду. Усреднённые значения для осей X, Y и Z, а также значение магнитной индукции по модулю и её переменная составляющая записываются в текстовый табличный файл.


Рис. 4 Вкладка панели приборов "Монитор".


Рис. 5 Вкладка панели приборов "Самописец".

Формат текстового табличного файла соответствует формату файлов результата .dtu программной оболочки ZETLab


Рис. 6 Окно программы просмотра результатов ZETLab.



Возврат к списку