ВОЗМОЖНОСТИ ПРИМЕНЕНИЯ ИГРОВОГО АДАПТЕРА ПК В ШКОЛЬНОМ ФИЗИЧЕСКОМ ЭКСПЕРИМЕНТЕ

Раздел: ИТ в образовании

Журнал: Педагогические инновации в современной системе образования

3 сентября 2009 г.

Авторы: Читайло Артем Иванович

А. И. Читайло

ВОЗМОЖНОСТИ ПРИМЕНЕНИЯ ИГРОВОГО АДАПТЕРА ПК В ШКОЛЬНОМ ФИЗИЧЕСКОМ ЭКСПЕРИМЕНТЕ

На сегодняшний день появилось немало серийно выпускаемых комплексов для компьютеризации школьного физического эксперимента, состоящих из ПК, блока сбора данных и набора датчиков различных физических величин. Как правило, эти наборы комплектуются специальным программным обеспечением и методическими указаниями, а их применение позволяет вывести школьный эксперимент на новый уровень документальности и точности. Единственным объективным препятствием распространению таких комплексов видится их сравнительно немалая стоимость. В то же время, для некоторого круга экспериментов можно обойтись уже имеющимися компьютерами и простейшей периферией, которую можно изготовить в школьной лаборатории.

Одним из стандартных портов ПК, все еще встречающимся на сравнительно новых компьютерах, является порт игрового адаптера - джойстика. Для подключения джойстика в IBM PC-совместимых компьютерах традиционно используется 15-ти контактный разъем типа DB-15S.

Особенностью игрового интерфейса является то, что кроме ввода цифровых (дискретных) сигналов, он способен обеспечить ввод аналоговых (непрерывных) сигналов, так как стандартные джойстики для IBM PC конструируются на основе переменных резисторов.

         В современной версии порт содержит 4 линии для ввода сигналов от кнопок джойстика (цифровые сигналы) 4 линии для определения сопротивления потенциометров. Метод определения сопротивления основан на программном измерении длительности импульса, пропорциональной сопротивлению. По сути, игровой адаптер представляет собой многоканальный аналогово-цифровой преобразователь.

Рис. 1

Подробно процесс преобразования описан в [1]. Точность и линейность преобразования не высока, преобразование выполняется не быстро и заметно загружает процессор. Однако простота электрических соединений, присутствие в разъеме специальных линий питания для логических схем, все еще широкое распространение данного интерфейса и хорошая поддержка на уровне операционных систем (специальная функция прерывания BIOS, функции API в MS Windows) открывают широкие перспективы использования его для сопряжения компьютера с физическими датчиками.

                На рисунке 1 показан внешний вид разъема со стороны розетки. В таблице 1 приведено назначение контактов и соответствие их битам регистра.

Таблица 1

Контакты 12 и 15 (указаны в скобках) на игровых адаптерах, встроенных в звуковые карты, обычно являются цифровыми сигналами MIDI-интерфейса. В таблице названия сигналов приводятся с использованием принятой для игрового адаптера «джойстиковой» терминологии и отражают логическое распределение сигналов между двумя двухосевыми двухкнопочными джойстиками. В общем случае порт имеет (рис. 2) четыре входа для кнопочных ключей, замыкающих эти входы на общий провод (GND), и четыре входа для переменных резисторов по 100 кОм, включенных вторым отводом и скользящим контактом в шину питания +5В.

Рис. 2

В пространстве адресов ввода-вывода игровой адаптер занимает один 8-ми битный регистр, который может располагаться в диапазоне адресов 200h-207h (обычно 201h). Как следует из таблицы, состояние кнопок отражают биты 7-4 регистра, причем разомкнутому состоянию кнопки соответствует единичное значение бита (инверсная логика). Четыре младших бита (3-0) используются для измерения сопротивления методом, описанным в [1].

В BIOS предусмотрена специальная функция, избавляющая разработчика от необходимости программно измерять время возврата битов в нулевое состояние. Прямой доступ к портам ввода-вывода запрещен для пользовательских приложений в среде Windows 2000/XP, но для обработки джойстика предназначен ряд функций MultiMediaSystem API. Ниже приведена реализация простейшего случая для консольного приложения Borland Delphi 5.

program joy2;

{$APPTYPE CONSOLE}

uses SysUtils,mmsystem; {Подключение модуля MMSystem}

var ji:joyinfo;        {Объявление структуры ji типа joyinfo}

begin

joyGetPos(0,@ji);      {Получение текущего состояния джойстика}

write(ji.wXPos,' '); writeln(ji.wYPos,' '); writeln(ji.wButtons); {Вывод на экран}

readln;

end.

Функция joyGetPos заполняет структуру ji типа joyinfo. Функции передается два параметра: идентификатор джойстика (0 - для первого, 1- для второго) и указатель на структуру типа joyinfo. Членами данной структуры являются следующие переменные типа word: wXpos - значение X-координаты, wYpos - значение Y-координаты, wZpos - значение Z-координаты (для трехосевых джойстиков) и wButtons, отражающая состояние кнопок джойстика (четыре младших разряда, без инвертирования). Кроме рассмотренной функции API для джойстика включает  в себя еще несколько функций. С их помощью возможно программное определение числа подключенных джойстиков, выяснение их возможностей, реагирование на события джойстика и т.д. Для использования джойстика (либо другого устройства, подключенного к игровому адаптеру) в Windows, его необходимо сначала зарегистрировать и откалибровать. Для этого используется средство "Панели управления" Windows под названием «Игровые устройства». Если к игровому адаптеру подключено устройство, использующее только одну линию координат, то для его корректной регистрации необходимо ко второй линии подключить резистор-заглушку номиналом до 100 кОм. Необходимость калибровки объясняется программным масштабированием значений, нужным для компенсации неточности среднего положения и диапазона джойстиков.

Помимо очевидных возможностей по измерению сопротивления, с помощью игрового адаптера возможно получить простейший фотодетектор, подключив к одному из координатных сигналов игрового адаптера солнечную батарею от микрокалькулятора. Батарея, посредством кабеля нужной длины с 15-ти контактной вилкой, подключается отрицательным выводом к контакту 1 (+5B), а положительным - к контакту 3 («A»X) (Рис. 3).

Рис. 3

Таким образом, значение координаты X первого джойстика будет пропорционально освещенности батареи. Данный способ отличается исключительной простотой электрических соединений и, в то же время, широкими возможностями применения. Используя настольную лампу, демонстрируется зависимость э.д.с. от освещенности. Естественно, количество таких фотодетекторов увеличивается до четырех простым добавление солнечных батарей на другие координатные оси.

Применение таких фотодетекторов вместе с лазерными указками дает оптопары - датчики положения, которые можно использовать в опытах раздела «Механика». Например, при формировании понятия мгновенной скорости.

Измеряется средняя скорость тела (шарика) при различных расстояниях между датчиками (рис. 4). Демонстрируется, что при уменьшении расстояния между датчиками значение скорости стремится к постоянной величине, которая и принимается за мгновенную скорость тела.

Рис. 4

Программа, обслуживающая опыт по мгновенной скорости, опрашивает первый (по движению объекта) датчик. Когда он закрывается, программа получает системное время, которое сохраняется в некоторую переменную. Далее следует опрос второго датчика, и когда он закрывается, программа снова получает системное время, вычисляет разность моментов закрытия датчиков и, используя данные о расстоянии между ними, вычисляет среднюю скорость.

Какие-либо специальные требования к аппаратному обеспечению отсутствуют. Данный метод удовлетворительно работает даже на очень старых  машинах, как, например, IBM AT (286/12MHz), под управлением MS-DOS 5.0.

Любые подключения выполняются только при выключенном компьютере. Настоятельно рекомендуется подключение компьютера в сеть с отдельным заземляющим контуром.

Литература

1. Гук М. Интерфейсы ПК: справочник. - СПб.: Питер, 1999. - 416 с.

PDF