МИКРОПРОЦЕССОРНАЯ ТЕХНИКА
Манипулятор с датчиком ускорения
С. КУЛЕШОВ, г. Курган
Предлагаемый манипулятор (его принципиальная схема изображена на рис. 1) выполнен на микроконтроллере (МК) PIC16F84A и интегральном измерителе ускорения (акселерометре) ADXL202E фирмы Analog Devices. Эти приборы представляют собой датчики линейного ускорения и широко используются для измерения углов наклона тел, сил инерции, ударных нагрузок и вибрации. Акселерометр ADXL202E является двухосным на максимальное ускорение по обеим осям ±2g [1 ]. Для удобства сопряжения с МК выходные сигналы этой микросхемы представляют собой прямоугольные импульсы с постоянной частотой повторения. Информация об ускорении передается их относительной длительностью (отношением длительности импульса к периоду колебаний) [2]. Длительность, равная 0,5, соответствует нулевому ускорению.

В настоящее время для устройств типа "мышь" существуют три типа интерфейса: последовательный, PS/2 и USB. Наиболее прост в реализации как с аппаратной, так и с программной точек зрения последовательный интерфейс. Для последовательного интерфейса наиболее распространен протокол "microsoft mouse", представляющий собой последовательную передачу трех байтов в формате 7N1 (семь информационных бит, бита четности нет, один стоп-бит) на скорости 1200 бит/с. Описание информационных байтов дано в табл. 1.

Следует отметить, что лог. 1 в интерфейсе RS-232 соответствует уровню -12, а лог. О — +12 В. Диаграмма передачи первого байта, соответствующая нулевому перемещению по осям и нажатой правой кнопке (SB2), показана на рис. 2. Абсолютное большинство современных системных плат имеют интегрированный адаптер последовательного интерфейса, устойчиво работающий при подаче на вход уровней TTL

Драйвер операционной системы может распознать мышь, установив сигнал RTS, при этом мышь должна вернуть значение 0x4D (символ "М"). Относительное движение мыши посылается как dx (положительное значение означает движение вправо) и dy (положительное значение — движение вниз).
Напряжение питания манипулятора формируется из сигнала RTS с помощью стабилитрона VD1. В процессе работы драйвер мыши поддерживает на этом выходе постоянный уровень+12 В.
Выходные импульсы микросхемы DD1 обрабатываются МК DD2 и преобразуются в сигналы последовательного интерфейса, которые через разъем ХР1 подаются в СОМ порт компьютера. Кнопки SB1, SB2 манипулятора соответствуют левой и правой кнопкам стандартном мыши. Выключателем SA1 можно выбирать характеристику манипулятора — линейную или квадратичную зависимость перемещения указателя от угла наклона манипулятора.
Кратко рассмотрим основные моменты работы управляющей программы МК. После включения питания он настраивает порты ввода/вывода, источники прерываний и выдает в СОМ порт последовательность байт для идентификации себя как устройства типа "мышь". Далее МК ожидает прерывания от микросхемы DD1 и производит замер длительности импульсов, используя встроенный таймер. Одновременно с этим он циклически опрашивает кнопки SB1 и SB2. При изменении состояния любой из них или наличии ненулевого ускорения происходит передача последовательности из трех байт согласно табл. 1. Состояние переключателя SA1 проверяется перед каждой отправкой последовательности байт, что позволяет изменять режим работы манипулятора непосредственно в процессе его использования.
Резистор R1 задает частоту следования импульсов на выходе DD1, R3 защищает порт МК от перегрузки при случайном замыкании проводов в кабеле и разъеме.
Все детали манипулятора, кроме вилки ХР1, смонтированы на печатной плате. Микросхема DD1 расположена на нижней стороне платы (выводами вверх) и ориентирована так, чтобы ее ось X давала перемещения курсора в горизонтальной плоскости, а ось Y — в вертикальной. Нумерация выводов DD1 на рис. 1 соответствует микросхеме в корпусе LCC-8 (в скобках указаны номера выводов при использовании микросхемы в корпусе QC-14). Конденсаторы С1, С2 и резистор R1 должны располагаться в непосредственной близости от микросхемы DD1. В устройстве допустимо применение МК PIC16F84A в любом исполнении. Вилка ХР1 — компьютерная DB-9F. Длина соединительного кабеля — не более 2 м.
Коды управляющей программы МК приведены в табл. 2. При его программировании нужно установить следующие значения бит в конфигурационном слове: тип генератора (OSC) — HS, сторожевой таймер (WDT) выключен, задержка после включения питания (PWRTE) выключена.
Собранное из исправных деталей и без ошибок в монтаже (и, естественно, в программе МК) устройство налаживания не требует. Единственное, что, возможно, придется сделать (при использовании некоторых экземпляров кварцевых резонаторов), это подобрать константу pause в программе МК, отвечающую за формирование скорости обмена. Несоответствие значения зтой константы проявляется в хаотическом перемещении указателя по экрану при неизменном положении манипулятора. Чувствительность в небольших пределах можно изменять подбором резистора R1.
Большинством существующих операционных систем описанный манипулятор определяется как стандартная мышь для последовательного порта и специального драйвера не требует. Следует учесть, что через переходник COM->PS/2 устройство не работает, так как поддерживает только последовательный интерфейс.
ЛИТЕРАТУРА
- ADXL202E, Low-Cost ±2 g Dual-Axis Accelerometer with Duty Cycle Output. — <http://www.analog.com>.
- Воловий А., Врлович Г. Интегральные акселерометры. — Компоненты и технологии, 2002, ╧ 1, с. 66.
графика — В. Фролов
От редакции. Исходный текст программы для МК размещен на FTP-сервере редакции по адресу:
Вернуться к содержанию журнала "Радио" 5 номер 2004 год
Ваш комментарий к статье | ||||