Сайт радиолюбителей Республики Коми.
MIDI- клавиатура на микроконтроллере PIC16F84.
На главную Главная

Многие приобретают для домашнего пользования MIDI- клавиатуру, но между тем ее можно изготовить самостоятельно. Автор разработал оригинальную конструкцию данной клавиатуры и предлагает вам 48-клавишную MIDI-клавиатуру, которая предназначена для работы совместно с персональным компьютером или синтезатором в бесклавиатурном исполнении. MIDI - клавиатура обслуживает 16 MIDI-каналов. При этом встроенный регулятор может использоваться либо для управления громкостью, либо для манипулирования одним из 31 контроллера. Схемное решение с использованием микроконтроллера PIC16F84 позволило не только упростить схему устройства, но и значительно снизить стоимость и сложность исполнения, отказавшись от традиционного в этой области МК 18051.

Принципиальная схема предлагаемой MIDI-клавиатуры изображена на рисунке 1. Ее основа - МК DD7, осуществляющий основные операции опроса всех манипуляторов и организации MIDI-интерфейса. Мультиплексоры DD1-DD6 предназначены для реализации динамического опроса клавиш. К каждому из них подключено по восемь подклавишных контактных групп, а сигнал с выхода подается на соответствующий вход порта В МК DD7 (на схеме полностью показан только DD1, остальные включены аналогично). Регулятор громкости - переменный резистор R10 - включен в RC-цепь одновибратора, собранного на таймере DA2.

Положение его движка определяется по длительности импульсов, поступающих на вход RB6 DD7. Одновибратор запускается импульсами, поступающими с выхода RA3, который одновременно управляет индикатором режима работы - светодиодом HL1. Программа, управляющая работой МК DD7, осуществляет опрос клавиатуры. Как только обнаруживается нажатие или отпускание клавиши, происходит вызов процедуры, отправляющей соответствующее MIDI-сообщение [1]. Так как МК PIC16F84 не имеет встроенного универсального асинхронного последовательного приемопередатчика (UART), программа осуществляет программную организацию MIDI-интерфейса с помощью простейших операций сдвига.

Рис.1.

При вычислении положения движка резистора R10 учитывается его конфигурация как манипулятора контроллера или как регулятора громкости. В первом случае считанное значение сравнивается с записанным в прошлый цикл опросом, и если пять раз подряд установлено различие, то отправляется соответствующее MIDI-сообщение. Положение движка резистора R10 оцифровывается контроллером в пятибитный код, и, таким образом, устройство чувствительно к 32 его различным положениям. Если R10 "настроен" как регулятор громкости, необходимая информация посылается вместе с событиями нажатия клавиш. Кнопкой SB49 устройство переводят в режим настройки, о чем сигнализирует светодиод HL1.

В этом случае сообщения о нажатиях клавиш не передаются на выход устройства. Нажатие любой из 16 первых клавиш (т. е. подключенных к мультиплексорам DD1 и DD2) приводит к переключению MIDI-канала, любой из 32 других - к выбору соответствующего номера контроллера, которым будет управлять резистор R10. Если нажата клавиша SB 17 (ее контакт подключен к входу ХО DD3), R10 конфигурируется как регулятор громкости, иначе (при нажатии SB18, SB19 и т. д.) - как манипулятор MIDI-koh-троллера, номер которого назначается нажатием клавиш SA18-SA48 (SA18 - контроллер 0, SA19 - контроллер 1 и т. д.).

Таблица 1.

Коды программы в виде hex-файла приведены в таблице 1. Первый байт строки 9 (число 29h) - константа, определяющая номер ноты, с которой начинается клавиатура. В авторском варианте начальной является нота F3 - фа третьей октавы (нота с номером 41, принятым в MIDI-сообщениях). При использовании другой клавиатуры следует откорректировать эту константу и пересчитать контрольную сумму строки 9.

Детали

Печатная плата для устройства не разрабатывалась. Большинство деталей (микросхемы DD7, DA1, DA2, резисторы, конденсаторы, кварцевый резонатор) смонтированы на макетной плате, все соединения выполнены проводом МГТФ. Для уменьшения длины жгута, идущего к контактам клавиш, мультиплексоры DD1-DD6 установлены непосредственно под клавиатурой. Источник питания, подключаемый к разъему ХР1, должен иметь выходное напряжение 6...12В при токе около 50 мА. С небольшими доработками К561КП2 (DD1-DD6) можно заменить мультиплексорами К561КП1. Кроме МК PIC16F84, в устройстве можно применить PIC16F84A или PIC16CR84. Прямая замена на PIC16C84 или PIC16F83 невозможна. В качестве R10 можно использовать любой переменный резистор указанного на схеме сопротивления с функциональной характеристикой А. Розетка XS1 - стандартная пятиконтактная ОНЦ-ВГ-4-5/16-Р (DIN-5).

Настройка

Клавиатура практически не нуждается в налаживании и при исправных деталях и отсутствии ошибок в монтаже начинает работать сразу после включения питания. Если положение движка резистора R10 определяется неверно, следует подобрать конденсатор СЗ и резистор R11. При наличии программы-секвенсора клавиатуру можно подключить к ПК и проверить правильность работы устройства в целом. Для подключения к ПК используют переходник, обеспечивающий оптоэлектронную развязку интерфейса, например, подобный описанному в [2]. При постоянном использовании клавиатуры с ПК для питания можно использовать импульсный преобразователь [3], подключив его к источнику +5В игрового порта. Для уменьшения потребляемого тока R12 в этом случае желательно заменить резистором большего сопротивления или вообще исключить светодиод HL1.

Скачать исходный текст программы и другие материалы.

А. Борисевич

Литература:

  1. Студнев А. MIDI-клавиатура. - Радио, 1993, № 11, с. 32-34.
  2. Оборотов Н. Простая MIDI-клавиаура для ПК. - Радио, 2000, № 3, с. 25, 26,
  3. Власов Ю. Простой преобразователь с независимым возбуждением. - Радио, 1996, № 7, с. 50.
На главную Главная
Rambler's Top100 Rambler's Top100 Рейтинг ресурсов УралWeb
Hosted by uCoz