hm4_c.gif (6237 bytes)

build by GO!

(устройство управлением обзором в авиасимуляторах

при помощи поворота головы)

4й вариант

Со времени предыдущей публикации прошел уже год. За это время сменилось три варианта железа HeadMouse и более десятка вариантов программы. Сильно изменился принцип работы, фактически, это уже совершенно другой девайс. Что достигнуто:

надежное и плавное управление обзором на расстоянии от 20 сантиметров до 2 метров от передатчика до приемника, полностью отпала необходимость центровки.

в отличие от Cam2Pan (популярного устройства обзора на основе вебкамеры), HeadMouse очень мало загружает процессор - доли процента (процессор Athlon XP 1600+). В результате не снижается FPS в игре.

отсутствие влияния посторонних источников света (ламп, люстр и т.д.)

высокая частота обновления координат обзора (FPS) - от 50 до 170 Гц (в зависимости от положения головы).

несложная и надежная конструкция.

Принцип работы.

Устройство состоит из излучателя, укрепленного на оголовье наушников, и приемника, укрепленного над монитором. Приемник осуществляет измерение уровней сигналов, приходящих с четырех участков излучателя.

hm4_01s.jpg (3443 bytes) hm4_11.jpg (5236 bytes)

 

Конструкция излучателя.

Излучатель состоит из четырех линеек инфракрасных (ИК) светодиодов, освещающих полупрозрачный рассеивающий экран, на котором образуются четыре светящихся пятна вытянутой формы. Это сегменты – левый(L), верхний(U), правый(R) и нижний(D). Перед экраном установлена непрозрачная шторка прямоугольной формы.

hm4_02.jpg (1936 bytes) hm4_04.jpg (4477 bytes)

Благодаря шторке, при повороте или смещении излучателя (TX) относительно оси ИК приемника (RX) изменяется соотношение площадей противоположных сегментов, с которых ИК излучение попадает в RX.

hm4_move.gif (57342 bytes)

 

hm4_opt.gif (4489 bytes)

 

Соотношение этих площадей почти не зависит от расстояния от TX до RXпочти» – из-за непараллельности лучей от сегментов до RX), а зависит только от угла и смещения между осями TX и RX. На выходе приемника образуются сигналы Ul, Uu, Ur и Ud, амплитуда которых прямо пропорциональна «видимой» площади сегмента и обратно пропорциональна квадрату расстояния от TX до RX. Выходные координаты X и Y связаны с Ul, Uu, Ur и Ud простыми выражениями:

X:=Mx*(Ul-Ur)/(Ul+Ur)

Y:=My*(Uu-Ud)/(Uu+Ud)

-где Mx и My – масштабные коэффициенты.

Электроника.

Блок схема HeadMouse4 показана на рисунке:

hm4_block.gif (6424 bytes)

Всеми узлами устройства управляет микроконтроллер (CPU) AT89C2051.

CPU поочередно включает сегменты излучателя на время около 600 мкс. Излучаемые ИК импульсы поступают на фотодиод приемника. Сюда же приходит излучение посторонних источников света - ламп, люстр, окна итд. Чтобы отделить импульсы от помех, сигнал с фотодиода проходит трехкаскадный фильтр:

Первый каскад - ФНЧ с резонансной частотой F=3300Гц и добротностью Q=5.

Второй каскад - ФВЧ с F=3000Гц и Q=1.

Третий каскад - резонатор с F=3300Гц и Q=1 ... 5. (Добротность можно регулировать подстроечным резистором. При этом меняется коэффициент усиления фильтра и чувствительность приемника.

Сквозная АЧХ всего фильтра показана на рисунке:

hm4_filter.gif (10455 bytes)

На рабочей частоте 3300 Гц усиление фильра достигает 68дБ (усиление 2500 раз по напряжению). На частотах менее 100 Гц, где сосредоточена основная часть мощности помех от бытовых источников света, ослабление фильтра не менее 55дБ (ослабление 560 раз по напряжению). Постоянная составляющая сигнала полностью подавляется благодаря тому, что во втором каскаде использован ФВЧ.

В результате обеспечивается полное подавление влияния на работу устройства бытовых источников света при отличной чувствительности. Например, HeadMouse4 устойчиво работает при расстоянии от TX до RX более 2 метров и расстоянии от RX до 100Вт лампы накаливаня 1 метр, которая направлена прямо на фотодиод! А фотодиод даже не оснащен никаким ИК светофильтром!

С выхода фильтра сигнал поступает на пиковый детектор на транзисторе, который выполняет функцию устройства выборки-хранения (УВХ) (запоминает уровень сигнала на время измерения). С УВХ выпрямленный и запомненный сигнал поступает на вход компаратора (COMP), встроенный в CPU. На другой вход COMP поступает линейно нарастающий сигнал с генератора пилообразного напряжения (ГПН), выполненного на основе токового зеркала. ГПН и УВХ управляется сигналами с CPU, который включает ГПН и УВХ на время измерения, все остальное время ГПН и УВХ находятся в режиме разрядки. Во время измерения CPU сравнивает сигналы с УВХ и ГПН с помощью СОМР. и формирует код, пропорциональный времени ожидания. Этот код передается на COM порт и поступает в компъютер.

После цикла измерений сигналов от четырех сегментов (L, U, R, D) CPU выполняет калибровочное измерение, в процессе которого все сегменты выключены, а значит, измеряется сигнал с нулевым уровнем. Результат измерения также передается в компъютер. Это позволяет управляющей программе в компъютере сделать поправку кода измеренных сигналов на изменение параметров фильра и ГПН при изменении температуры. В результате отпадает необходимость в использовании термостабильных и точных элементов в фильтре, что удешевляет конструкцию и обеспечивает хорошую повторяемость устройства.

Принципиальную электрическую схему HeadMouse4 можно посмотреть здесь:

Нажмите, чтобы загрузить схему HeadMouse4 (hm4_sch.gif 38558 bytes)

Конструкция приемника.

Приемник собран на куске макетницы размером 80 х 55 мм:

hm4_06.jpg (41474 bytes) hm4_07.jpg (25793 bytes)

В качестве корпуса использован корпус от блока питания:

hm4_08.jpg (8116 bytes) hm4_09.jpg (3529 bytes)

На переднюю панель выведены:

индикатор питания

фотодиод приемника.

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

На заднюю панель выведены:

разъем для подключения блока питания

отрезок кабеля с разъемом DIN5 для подключения ИК излучателя

кабель для подключения к COM порту, в качестве которого использован "хвост" от старой мышки.

Блок питания

Как видно из принципиальной электрической схемы, для нормальной работы HeadMouse4 нужен источник переменнного напряжения 12в с выходным током не менее 200мА. Поэтому в качестве блока питания использован ширпотребовский китайский блок питания, который доработан перепайкой выходного кабеля непосредственно к выводам вторичной обмотки трансформатора.

Программа

Программа для HeadMouse4 состоит из двух частей.

Первая часть записана непосредственно в CPU AT89C2051. Она производит управление железом, измерение сигналов со всех четырех каналов, калибровочное измерение и передачу полученных данных через COM порт.

Вторая часть запускается на компъютере. Она производит прием и индикацию входных данных, и вычисление и индикацию выходных координат X и Y. Выходные координаты X и Y передаются затем в программу NewView, написанную Alezz и Hruks. Это стало возможным, потому что Alezz и Hruks открыли интерфейс NewView для всех несколько месяцев назад (хотя исходники NewView по-прежнему закрыты). Подробнее о NewView можно прочитать в АвиаФоруме. NewView эмулирует TrackIR и обеспечивает эффективное сглаживание, поддерживает изменение кривых отклика, мертвых зон и т.д. и т.п. Это позволило сделать управляющую программу для HeadMouse4 необычайно простой. Из органов управления в ней присутствует только радиобуттон выбора COM порта, все остальные настройки делаются в NewView:

hm4_screen.jpg (11681 bytes)

Благодаря высокому FPS, в NewView можно применить высокий "Уровень сглаживания" - до 30 и более:

hm4_NVconfig.jpg (20046 bytes)

Это увеличивает плавность и уменьшение влияния непроизвольных колебаний головы на качество обзора.

Качество обзора.

Качество обзора с помощью HeadMouse4 можно оценить, просмотрев несколько треков к игре "ИЛ2. Асы В Небе. ver2.04" или видеоролик:

HM4_p-51vsV-1.ntrk (232239 bytes) Трек "P51 против ФАУ2" из оригинальной поставки игры "ИЛ2 АВН", переписанный с использованием HeadMouse4 (232239 байт)
HM4_La7vs3B17g.ntrk  (688669 bytes) Трек "Ла7 против трех B17" (688669 байт)
hm4_winter.ntrk (482701 bytes) Трек "Ла5ФН против двух B25" (482701 байт)
hm4.avi (1159168 bytes) Видеоролик, демонстрирующий действие HeadMouse4. Длительность 39 секунд. Кодек MS MPEG-4 3688 V3. (1159168 байт)

 Для просмотра треков следует скачанные файлы '*.ntrk' скопировать в папку '%IL2%\RECORDS'. Затем запустить игру, выбрать в "Архиве записей полетов" один из скачанных треков и не забыть перед запуском отключить тумблер "Управление видами":

hm4_switchoff.gif (3015 bytes)
 Дополнения

Дополнения к статье написаны по некоторым вопросам, задававшимся в процессе обсуждения HeadMouse4 в АвиаФоруме.

Процесс измерения

Процесс измерения поясняют следующие графики:

hm4_graph.gif (11108 bytes)

Графики сгенерированы в программе MICROCAP и показывают реакцию смоделированного фильтра и УВХ HeadMouse на смесь полезного сигнала и синусоидальной помехи, одинаковых по амплитуде.

На первом графике показаны входные сигналы фотоприемника: полезный - импульсы с амплитудой 10мВ, длительностью 600мкс и частотой повторения 200 Гц, поступившие из излучателя и синусоидальная помеха такой же амплитуды и с частотой 500 Гц. Это - очень тяжелый режим для работы устройства, в реальности частота посторонних сигналов не превышает 100 Гц и амплитуда их в несколько раз меньше амплитуды полезного сигнала.

Эти сигналы поступают на вход полосового фильтра. Если на вход полосового фильтра подать прямоугольный импульс, то на выходе получим сигнал в виде затухающей синусоиды с частотой, близкой к частоте, на которой у фильтра максимальный коэффициент передачи, а время нарастания и затухания синусоиды обратно пропорционально полосе пропускания фильтра. Коэффициент передачи для синусоидального входного сигнала равен коэффициенту передачи фильтра на частоте синусоидального входного сигнала. Выходной сигнал фильтра показан на втором графике (синяя кривая). Как видим, от входной синусоидальной помехи не осталось и следа, т.к. коэффициент передачи фильтра на частоте 500Гц равен -15дБ , а входной полезный импульсный сигнал вызвал отклик в виде затухающей синусоиды с частотой 3.3кГц и амплитудой, достигающей 2.2в. Таким образом осуществляется практически полное подавление помех при высокой чувствительности устройства.

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

Через время 150мкс после начала работы УВХ запускается ГПН (зеленая кривая). Выходной сигнал УВХ (красная кривая) и ГПН (зеленая пила) поступают на вход компаратора, встроенного в CPU. В момент включения ГПН в CPU начинает работать счетчик тактовых импульсов CPU, который останавливается при равенстве выходных напряжений УВХ и ГПН. Значение выходного кода счетчика пропорционально амплитуде входного импульсного сигнала фильтра. После этого УВХ и ГПН устанавливаются в режим разряда и через время менее 100мкс устройство готово к новому измерению.

Качество обзора при разных настройках NewView.

Качество обзора с помощью HeadMouse4 зависит от некоторых настроек в программе NewView на закладке "Шлем". Это демонстрируют следующие треки, которые представляют собой запись начала трека "P51 против ФАУ2" из оригинальной поставки игры "ИЛ2 АВН", переписанный с использованием HeadMouse4 с различными настрйками в NewView. Все треки записаны в режиме "плавающей мертвой зоны":

Треки: Настройки NewView
Уровень сглаживания: Мертвая зона по X и Y:
HM4_smooth00_deadzone00.ntrk 64933 bytes 0 0
HM4_smooth00_deadzone10.ntrk 66273 bytes 0 10
HM4_smooth10_deadzone00.ntrk 110644 bytes 10 0
HM4_smooth10_deadzone10.ntrk 84417 bytes 10 10

Как видно из треков, при отсутствии сглаживания и мертвой зоны обзор немного дрожит. Это связано с непроизвольными движениями головы и с дрожанием выходного кода АЦП. При введении небольшого сглаживания (10) обзор становится совершенно плавным, но трудно удержать взгляд неподвижно, особенно это мешает в режиме узкого угла обзора "прильнуть к прицелу". При введении мертвой зоны (10%) и обзор плавный и взгляд легко удержать на одном месте.

Следует заметить, что с увеличением уровня сглаживания увеличивается инерционность обзора, обзор запаздывает за движениями головы, хотя на треках это не видно. Запаздывание пропорционально уровню сглаживания и обратно пропорционально частоте обновления координат, которая у HeadMouse4 составляет от 50 до 170Гц, в центре - меньше, по краям - больше.

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

Таким образом, опытным путем были выяснены оптимальные настройки NewView (по крайней мере, для меня smile.gif (372 bytes) ) - уровень сглаживания 10, мертвые зоны по X и Y - тоже 10.

(last update 02.02.2005)
(written by "GO!" 08.11.2004)
HeadMouse (first version) Main HeadMouse Zoom
Хостинг от uCoz