MIDI-клавиатура на PIC16F84.
Каталог принципиальных схем - Антенны MIDI-клавиатура на PIC16F84. (Автор Борисевич А. В. xmastal@mail.ru)
Предлагаемая MIDI-клавиатура предназначена для применения совместно с ПК или с синтезаторами в бесклавиатурном исполнении. Клавиатура обслуживает 16 MIDI-каналов. Встроенный регулятор может использоваться либо для управления громкостью, либо для манипулирования одним из 31 контроллеров. Клавиатура рассчитана на подключение 48 клавиш. Применение МК PIC16F84 позволило не только упростить схемотехнику устройства, но значительно сократить стоимость и сложность исполнения, отказавшись от традиционного в этой области МК i8051. К недостаткам следует отнести, в первую очередь, отсутствие датчика силы нажатия клавиш.
Основа клавиатуры (рис. 1) - микроконтроллер DD7, осуществляющий основные операции опроса всех манипуляторов и организации MIDI-интерфейса.
Мультиплексоры DD1 - DD6 предназначены для реализации динамического опроса клавиш. К каждому из них подключено по 8 контактных групп, а сигнал с входа подается на соответствующий вход порта B DD7 (на схеме полностью показан только DD1 - остальные включены аналогично).
Регулятор громкости R1 включен в RC цепь одновибратора, собранного на таймере DA1. Положение его движка определяется подсчитыванием длительности импульсов, поступающих на вход RB6 DD7. DA1 запускается импульсами, поступающими с выхода RB3, который одновременно управляет индикатором режима работы HL1.
Программа, управляющая работой DD7, осуществляет опрос клавиатуры. Как только будет обнаружено нажатие или отпускание клавиши, то происходит вызов процедуры, отправляющей соответствующее MIDI-сообщение [1]. Так как PIC16F84 не имеет встроенного аппаратного UART, программа осуществляет программную организацию MIDI-интерфейса с помощью простейших операций сдвига.
При вычислении положения R1 учитывается его конфигурация как манипулятора контроллера или как регулятора громкости. В первом случае считанное значение сравнивается с записанным в прошлый цикл опроса и, если 5 раз подряд установлено различие, то отправляется соответствующее MIDI-сообщение.
Положение R1 при каждом опросе умножается на 4, т. о. оно может принимать 32 дискретных значений. Если R1 настроен как регулятор громкости, то необходимая информация посылается вместе с событиями нажатия клавиш.
Кнопка SA49 предназначена для перевода устройства в режим настройки, о чем сигнализирует HL1. В этом случае сообщения о нажатиях клавиш не передаются на выход устройства. Нажатие любой из 16 первых клавиш (т. е. подключенных к DD1 и DD2) приводит к переключению MIDI-канала. Нажатие любой из 32 других клавиш приводит к выбору соответствующего номера контроллера, которым будет управлять R1. Если будет нажата клавиша SA18 (подключена к входу X0 DD3), то R1 конфигурируется как регулятор громкости, иначе (при нажатии SA19, SA20 и т. д.) - как манипулятор соответствующего MIDI-контроллера.
Коды программы приведены в табл. 1 (файл MidiKbd.hex).
Первый байт строки 9 (число 29) - константа, изменение которой влияет на номер ноты, с которой начинается клавиатура. В приведенном варианте стартовой нотой считается F 3 (41). В случае применения другой клавиатуры следует откорректировать эту константу и пересчитать контрольную сумму строки 9.
Печатная плата для устройства не разрабатывалась. Мультиплексоры DD1 - DD6 смонтированы непосредственно под клавиатурой. Источник питания, подключаемый к разъему XS2, может иметь выходное напряжение в пределах 6 - 12 В и ток около 50 мА.
С небольшими доработками DD1 - DD6 можно заменить на К561КП1. В качестве DD7 можно применить PIC16F84A или PIC16CR84. Прямая замена на PIC16C84 или PIC16F83 невозможна. В качестве R1 можно использовать любой соответствующий резистор с линейной характеристикой. Разъем XS1 - стандартный пятиконтактный DIN-5.
Клавиатура практически не нуждается в налаживании и начинает работать сразу после включения питания. Если положение R1 определяется неверно, следует подобрать номиналы С1 и R2. Для полного тестирования клавиатуру можно подключить к ПК и с помощью программы-секвенсора проверить правильность работы устройства.При подключении устройства к ПК необходимо использовать переходник, обеспечивающий оптоэлектронную развязку интерфейса. Он может быть собран по любой из общеизвестных схем (например [2]). В таком случае, питать устройство можно от импульсного преобразователя, описанного в [3], подключив его к источнику +5В на игровом порту. При этом следует для уменьшения потребляемого тока увеличить номинал R12 или вообще исключить HL1.
Литература.
1. Студнев А. MIDI-клавиатура - Радио, 1993, № 11, с. 32-34.
2. Оборотов Н. Простая MIDI-клавиатура для ПК - Радио, 2000, №3, с. 25, 26, 44.
3. Власов Ю. Простой преобразователь с независимым возбуждением - Радио, 1996, № 7, с. 50.