4й вариантСо времени предыдущей публикации прошел уже год. За это время сменилось три варианта железа HeadMouse и более десятка вариантов программы. Сильно изменился принцип работы, фактически, это уже совершенно другой девайс. Что достигнуто:
Принцип работы.Устройство состоит из излучателя, укрепленного на оголовье наушников, и приемника, укрепленного над монитором. Приемник осуществляет измерение уровней сигналов, приходящих с четырех участков излучателя.
Конструкция излучателя.Излучатель состоит из четырех линеек инфракрасных (ИК) светодиодов, освещающих полупрозрачный рассеивающий экран, на котором образуются четыре светящихся пятна вытянутой формы. Это сегменты – левый(L), верхний(U), правый(R) и нижний(D). Перед экраном установлена непрозрачная шторка прямоугольной формы.
Соотношение этих площадей почти не зависит от расстояния от 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 показана на рисунке: Всеми узлами устройства управляет микроконтроллер (CPU) AT89C2051. CPU поочередно включает сегменты излучателя на время около 600 мкс. Излучаемые ИК импульсы поступают на фотодиод приемника. Сюда же приходит излучение посторонних источников света - ламп, люстр, окна итд. Чтобы отделить импульсы от помех, сигнал с фотодиода проходит трехкаскадный фильтр:
Сквозная АЧХ всего фильтра показана на рисунке: На рабочей частоте 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 можно посмотреть здесь: Конструкция приемника.Приемник собран на куске макетницы размером 80 х 55 мм: В качестве корпуса использован корпус от блока питания: На переднюю панель выведены:
На фотодиод надет параболический отражатель от карманного фонарика. Отражатель немного увеличивает чувствительность фотоприемника, но в основном выполняет роль украшения, приемник и без него прекрасно работает. На заднюю панель выведены:
Блок питанияКак видно из принципиальной электрической схемы, для нормальной работы HeadMouse4 нужен источник переменнного напряжения 12в с выходным током не менее 200мА. Поэтому в качестве блока питания использован ширпотребовский китайский блок питания, который доработан перепайкой выходного кабеля непосредственно к выводам вторичной обмотки трансформатора. ПрограммаПрограмма для HeadMouse4 состоит из двух частей. Первая часть записана непосредственно в CPU AT89C2051. Она производит управление железом, измерение сигналов со всех четырех каналов, калибровочное измерение и передачу полученных данных через COM порт. Вторая часть запускается на компъютере. Она производит прием и индикацию входных данных, и вычисление и индикацию выходных координат X и Y. Выходные координаты X и Y передаются затем в программу NewView, написанную Alezz и Hruks. Это стало возможным, потому что Alezz и Hruks открыли интерфейс NewView для всех несколько месяцев назад (хотя исходники NewView по-прежнему закрыты). Подробнее о NewView можно прочитать в АвиаФоруме. NewView эмулирует TrackIR и обеспечивает эффективное сглаживание, поддерживает изменение кривых отклика, мертвых зон и т.д. и т.п. Это позволило сделать управляющую программу для HeadMouse4 необычайно простой. Из органов управления в ней присутствует только радиобуттон выбора COM порта, все остальные настройки делаются в NewView: Благодаря высокому FPS, в NewView можно применить высокий "Уровень сглаживания" - до 30 и более: Это увеличивает плавность и уменьшение влияния непроизвольных колебаний головы на качество обзора. Качество обзора.Качество обзора с помощью HeadMouse4 можно оценить, просмотрев несколько треков к игре "ИЛ2. Асы В Небе. ver2.04" или видеоролик: Для просмотра треков следует скачанные файлы '*.ntrk' скопировать в папку '%IL2%\RECORDS'. Затем запустить игру, выбрать в "Архиве записей полетов" один из скачанных треков и не забыть перед запуском отключить тумблер "Управление видами": ДополненияДополнения к статье написаны по некоторым вопросам, задававшимся в процессе обсуждения HeadMouse4 в АвиаФоруме. Процесс измеренияПроцесс измерения поясняют следующие графики: Графики сгенерированы в программе 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. Все треки записаны в режиме "плавающей мертвой зоны":
Как видно из треков, при отсутствии сглаживания и мертвой зоны обзор немного дрожит. Это связано с непроизвольными движениями головы и с дрожанием выходного кода АЦП. При введении небольшого сглаживания (10) обзор становится совершенно плавным, но трудно удержать взгляд неподвижно, особенно это мешает в режиме узкого угла обзора "прильнуть к прицелу". При введении мертвой зоны (10%) и обзор плавный и взгляд легко удержать на одном месте. Следует заметить, что с увеличением уровня сглаживания увеличивается инерционность обзора, обзор запаздывает за движениями головы, хотя на треках это не видно. Запаздывание пропорционально уровню сглаживания и обратно пропорционально частоте обновления координат, которая у HeadMouse4 составляет от 50 до 170Гц, в центре - меньше, по краям - больше. При уровне сглаживания 10 инерционность еще незаметна. Заметна она становится только при уровне сглаживания 30 и более, и то при быстрых перемещениях обзора. Это видно на показанном выше видеоролике, который снимался при уровне сглаживания 30. Таким образом, опытным путем были выяснены оптимальные настройки NewView (по крайней мере, для меня ) - уровень сглаживания 10, мертвые зоны по X и Y - тоже 10. (last update 02.02.2005)(written by "GO!" 08.11.2004) |