Главная » Музыкантам
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Похожие статьи:


Динамическая MIDI клавиатура на PIC16F84

Клавиатура предназначена для подключения к внешнему саунд-модулю или компьютеру (при наличии соответствующего интерфейса) с использованием MIDI протокола – для записи музыки в секвенсерную программу или живого исполнения. Количество клавиш в предложенном варианте 48, может быть увеличено без переделки схемы до 64. Отличительной особенностью предлагаемой клавиатуры является чувствительность к силе удара по клавише.

История создания устройства

Некоторое время назад в связи с покупкой квартиры я вынужденно лишился шикарного инструмента, выполнявшего у меня роль MIDI клавиатуры – это была легендарная YAMAHA DX-7. Когда печаль поутихла, во всей остроте и неприглядности встал вопрос: а на чем же работать? Именно в этот момент стараниями моего приятеля в мои загребущие ручонки попала полусобранная схема на КР1816ВЕ39 (по супостатски этот процессор зовется 8048). Схема проста и в сборке, и в наладке, и, главное, подвернулась под руку в нужное время. Клавиатуру я  собрал в виде матрицы 8x6, применив КР1533ИД7 и КР1533КП7. Не обошлось и без ложки дегтя – два недостатка этой схемы насмерть убивают все ее достоинства: отсутствие чувствительности к скорости нажатия клавиши (динамики) и колеса PITCH WEEL. Ну, я когда-то программировал на Z-80 (и даже сделал работающий секвенсор) и решил тряхнуть стариной. Z-80 как CPU я решительно отмел, как морально устаревший. Кроме того, не хотелось много паять, и я решил взять за основу этот самый девайс на КР1816ВЕ39, оснастив его еще одним мультиплексором для размыкающих (верхних) контактов клавиш. Я отыскал документацию (вы не поверите – в библиотеке, книга «Проектирование цифровых устройств на однокристальных микропроцессорах») на ассемблер КР1816ВЕ39 и накарябал программу…  И тут выяснилось, что у приятеля сдох программатор ПЗУ, и зашить программу просто нечем... От горя я совсем потерял разум и решил переписать тот же алгоритм под PIC. За полдня был спаян программатор (LUDIPIPO), затем макет из панельки, КР1533ИД7 и пары КР1533КП7, а весь монтаж сделан МГТФом без всякой печатки. И процесс пошел…

Сначала был запущен нединамический вариант программы (его я тоже привожу для тех, у кого клавиатура имеет один контакт на клавишу). Потом запустилась динамическая версия. И тут созрела мысль добавить кнопки и индикатор. Дело в том, что у меня без дела давно валялась платка WAVEBLASTER (дочерний wavetable синтезатор для очень старых звуковух). Подключивши ее к моему творению, я получил нечто, на чем можно играть (в меру сил и таланта) без компьютера, что иногда довольно удобно. Это и определило набор функций на кнопках – он может пригодиться при подключении к звуковым модулям при  “живой” игре. Функции кнопок легко изменить, написав свои обработчики и используя мои процедуры опроса и индикации. Кое-как собранная в железном корпусе клавиатура оказалась удобнее, чем YAMAHA PSS (все же полноразмерные клавиши, педаль и, главное, динамика!). В разгаре творческого процесса возникло труднопреодолимое желание сделать версию MIDI клавиатуры чисто для компьютера – индикатор и кнопки необязательны, но нужны колеса PITCH WEEL и MODULATION. Некоторое время я с ним боролся, но, в конце концов, сдался и снова включил паяльник. Электронику собрать несложно, с механикой – несколько сложнее, и я начал морщить лоб над устройством колеса. Поразмыслив, я решил отказаться от второго колеса - все равно я никогда не кручу их сразу оба, обычно сначала пишу ноты и  pitch, затем дописываю modulation. Не последним соображением было и уменьшение в два раза объема столь любимых мною механических работ. Для менее ленивых я ниже объясню, как почти не усложняя схему сделать два колеса. Чтобы все-таки иметь возможность писать modulation, я решил организовать три режима работы колеса: pitch на 2 полутона, pitch на 1 полутон (удобно), и modulation. Переключать это все можно одной кнопкой, а индицировать режим – парой светодиодов. Чтобы упростить схему, остальные кнопки и индикаторы я ликвидировал, для работы с современными программами-секвенсорами это все не нужно.

Колесо, конечно же, должно быть надето на ось потенциометра, это-то понятно, а вот к чему его подключить? Первой мыслью было использовать одновибратор на таймере 555. Но расчет показал, что будет трудно добиться точности и стабильности измерения длительности импульса при попытке обеспечить приемлемую частоту опроса колеса, ведь процессор в основном занят измерением времени переключения клавиатурных контактов. Остался путь использования аналого-цифрового преобразователя (АЦП). Поскольку у меня использовался Pic16F84 без встроенного АЦП, я вспомнил инженерное прошлое (и родной завод) и сделал АЦП из нескольких резисторов с компаратором (и куска программы). Получилось просто, дешево и довольно точно.

Я привожу обе схемы – и с кнопками, и с колесом, а также программы для них. При желании обе схемы можно легко совместить, слегка изменив адреса внешних устройств, нужно только помнить, что режим CHORUS (STEREO) использует pitch для получения расстройки и его нужно или убрать, или озаботится передачей pitch с расстройкой по каналам.

Итак – собственно клавиатура

Схема устройства

Первым появился нединамический вариант, нечувствительный к силе удара по клавише – для проверки работоспособности макета.

Схема нединамического варианта

Я использовал PIC16F84 в качестве процессора из нескольких соображений: эта микросхема доступна, дешева и удобно программируется, кроме того – именно она оказалась у меня под руками. Внимание: PIC16C84 не годится - у него ОЗУ всего 36 ячеек и программа не будет работать. Впрочем, схема с колесом использует меньше ячеек ОЗУ и ее программу можно втиснуть и в PIC16C84, сократив еще пару ячеек, например MIDCH (присвоив постоянный MIDI канал всем передаваемым данным).

Схема динамической клавиатуры с индикацией приведена ниже:

Схема динамической клавиатуры с индикацией

Схема во многом традиционна - трудно изобрести велосипед без педалей и колес.J Порт B работает на передачу - младшие 7 бит выводят адрес клавиши в матрице или данные для внешних устройств (индикатор и ЦАП колеса). Старший бит используется для вывода MIDI данных последовательным кодом - преобразование и вывод сделаны программными. Поэтому кварц должен быть на 4 MHz, если вы не хотите переписывать процедуру вывода байта по MIDI. Два младших бита порта A работают на прием - на них поступают сигналы с мультиплексоров “отпущенных” и “нажатых” контактов клавиш, а три старших бита определяют адрес внешнего устройства (через еще один дешифратор КР1533ИД7). В схеме с колесом от дешифратора адреса внешнего устройства я отказался для упрощения схемы и освобождения старшего бита порта PA4 для ввода данных с компаратора, поэтому адреса клавиатуры и кнопок другие. При совмещении схем эту микросхему придется вернуть, для дешифрации адреса использовать биты порта PA2 и PA3,и адресовать 4 устройства: клавиатуру, кнопки, регистр данных динамической индикации и регистр знакоместа динамической индикации. Индикацию режимов колеса придется переписать.

Схема с колесом PITCH WEEL / MODULATION выглядит так:

Схема с колесом PITCH WEEL / MODULATION

На каждую клавишу ставится один диод для развязки. Резисторы на входах мультиплексоров не должны быть более 8k, иначе возможны глюки из-за емкости монтажа. Индикатор - любой с общим анодом на 3 разряда, если выводы сегментов каждого разряда выведены отдельно, выводы одноименных сегментов нужно объединить - индикация динамическая и разряды зажигаются последовательно. Кнопки любые, без фиксации, дребезг контактов давится программно. Светодиоды установлены возле одноименных кнопок и индицируют включение соответствующих режимов, кнопки «+» и «- » светодиодов не имеют. Транзисторы на индикаторе любые маломощные высокочастотные обратной проводимости. Два регистра КР1533ИР23 использованы для  поочередного защелкивания адреса и кода  текущего разряда индикатора (светодиоды тоже сгруппированы в два квазиразряда). У меня использована стандартная клавиатура от еще советских электроорганов на 48 клавиш (она выпускалась и отдельно как радиоконструктор «СТАРТ», и довольно широко распространена). Чтобы уменьшить высоту клавиатуры и толщину инструмента, из шести контактных групп под каждой клавишей оставлено две, и все это обрезано и переклеено. Вообще достаточно одной переключающей группы на клавишу, но так было удобней клеить. Сборные шины “отпущенных” и “нажатых” контактов имеют длину 8 клавиш. При желании можно использовать и клавиатуру, где вместо переключающей группы контактов используется две пары замыкающих контактов – одна пара замыкается в начале движения клавиши, другая в конце (как на инструментах YAMAHA). В этом случае сигнал на PA0 нужно подавать с инверсного выхода мультиплексора (вывод 6). Без изменений в схеме можно использовать клавиатуру на 64 клавиши (стандарт – 61, т.е. 5 октав). При необходимости число клавиш может быть увеличено хоть до 127, для этого в схему нужно ввести еще один дешифратор КР1533ИД7.

Очень важно хорошо отстроить механику - верхние контакты ОБЯЗАТЕЛЬНО должны замыкаться при отпускании клавиш. Если этого не сделать, программа считает такие клавиши нажатыми и пытается их обрабатывать, поэтому повторное нажатие этих клавиш звука не дает. Кроме того, максимальное количество одновременно звучащих нот – 10 (если у кого-нибудь на руках выросло больше пальцев, это количество легко изменить), и не отпущенные клавиши уменьшают это количество. Из этих же соображений число клавиш, указанное в процедуре опроса клавиатуры, должно ОБЯЗАТЕЛЬНО совпадать с количеством реальных клавиш. Дребезг контактов давится программно.

Для резистивной матрицы R-2R АЦП желательно подобрать резисторы с точностью 1–2%, причем абсолютные значения могут быть и другие, важно отношение. Впрочем, сильно увеличивать номинал не стоит, это увеличит время преобразования из-за входной емкости компаратора. Я использовал SMD резисторы без подбора, хотя измерения показали, что в одной монтажной полоске резисторы обычно согласованы с точностью выше 1%. Я уверен, что схема будет работать и с неточными резисторами, но линейность характеристики ухудшится. Само колесо сделано из ручки от старого телевизора и имеет пружинку на оси потенциометра, возвращающую его в среднее положение. Для удобства настройки механики, при включении питания с нажатой кнопкой режима, включается отладочная программа, зажигающая светодиод, когда колесо находится в среднем положении, это позволяет точно настроить нулевой положение колеса на оси потенциометра. Если есть потребность и желание сделать отдельное колесо MODULATION, его нужно подключить к свободному элементу компаратора (их там четыре), причем матрица R-2R у обоих колес общая. Для коммутации выходов компараторов лучше применить дополнительную микросхему, а в качестве управляющего сигнала использовать PA2.

При желании можно собрать динамический вариант клавиатуры и без индикации, кнопок и колеса PITCH WEEL / MODULATION – просто не собирая неиспользуемую часть схемы. Все изменяемые параметры будут установлены по умолчанию при включении питания…

Питать это все можно от чего угодно, ток потребления зависит от конкретного индикатора и не превышает 100 mA. У меня прямо на плате стоит стабилизатор 7805 без радиатора (его хорошо видно на фотографии). Небольшой радиатор нужен, если на него подавать более 9v. Компаратор питается напряжением 9 – 12 v, желательно стабилизированным. Да, я использовал микросхемы советского производства из старых запасов – существует большое количество их современных аналогов, замена возможна и даже желательна – современные аналоги имеют меньшее потребление.

Программа

Алгоритм обработки нажатых клавиш происходит от предложенного в журнале «Микропроцессорные средства и системы» №5 за 1986г. Именно эта публикация (а точнее, ошибка в предложенной программе) и побудила меня к изучению ассемблера. Собственно, оттуда взята лишь идея записывать номер каждой нажатой клавиши в специально выделенную область ОЗУ (CHAN), чтобы при повторном опросе клавиатуры не обрабатывать снова уже обработанную клавишу. У меня под каждую из нажатых клавиш (всего не более 10) отведено две ячейки ОЗУ: в первой записывается номер нажатой клавиши, во второй – ее VELOCITY (скорость нажатия). Повторюсь – этих ячеек всего 20 и начальный адрес задан именем CHAN. Признаком свободной пары является установленный старший бит первой ячейки. Установленный старший бит второй ячейки означает, что NOTE ON для этой клавиши уже передано и в дальнейшей обработке она не нуждается.

Подробно описывать всю программу я не буду, исходник изобилует комментариями и для подготовленного человека вполне доступен. Для остальных я даю сразу готовые прошивки в файле Dinamic.hex и Pitchmod.hex. Поясню только некоторые неочевидные моменты. Ну, прежде всего о динамике: в момент размыкания верхних контактов клавиши ее номер записывается в первую ячейку первой же свободной пары из области CHAN, одновременно сбрасывая признак свободной пары. Во вторую ячейку записывается начальное значение VELOCITY = 127. Чувствительность клавиатуры определяется частотой следования прерываний, так как обработка прерывания уменьшает значения VELOCITY для всех клавиш, NOTE ON которых еще не передано. Прерывания вызываются встроенным таймером. В момент замыкания нижних контактов клавиши в соответствующей ячейке CHAN  устанавливается признак «переданности» и передается NOTE ON с текущей VELOCITY. Для улучшения кривой чувствительности уменьшение значений VELOCITY идет по логарифмическому закону: из текущего значения VELOCITY вычитается 1/16 его часть, уменьшенная на 1. Таким образом, во время движения клавиши от верхнего контакта к нижнему значение VELOCITY в соответствующей ячейке CHAN уменьшается по логарифмическому закону, и чем быстрее движется клавиша, тем больше VELOCITY в момент замыкания нижних контактов клавиши и передачи NOTE ON. Прерывания также управляют динамической индикацией, это сделано для устранения мерцания индикатора.
Функции кнопок: TRANSPOSE - все тональности приводятся к любимому ля-минору: диапазон +/- 15 полутонов. PRG назначает тембр (инструмент) для заданного пресета (UP1-UP5), а VOL – его громкость. Текущий параметр выводится на индикатор и может изменяться кнопками «+» и «-».TWIN выводит «двойной» тембр – звучат одновременно один из пресетов (UP1-UP5) и, одновременно пресет LOWER. STEREO выводит звук текущего пресета в правый и левый стереоканалы с небольшой «расстройкой» (эффект «хорус»). Кнопка SPLIT не задействована. Педаль SUSTAIN схемотехнически выполнена, как одна из кнопок, емкость ее провода не должна быть очень большой. Адреса обработчиков кнопок собраны в таблицу в начале программы, при изменении функций кнопок можно подставить свои.

АЦП колеса наполовину программный, работает по алгоритму последовательных приближений, матрица R-2R выполняет преобразование “цифра - аналог”. Вначале на матрицу R-2R подается 1 в старшем разряде, и компаратор определяет, много это или мало. Если мало, в старшем разряде остается 1, если много – 0.Далее то же самое происходит с каждым следующим младшим разрядом (всего 6 шагов) и мы получаем шестибитное число, соответствующее углу поворота колеса. Такая точность мне представляется достаточной, но можно добавить еще один бит, увеличив матрицу и программу преобразования.

Конструкция

В качестве собственно клавиатуры я использовал конструктор «Старт» советского производства, сейчас, пожалуй, легче найти старую неработоспособную Ямаху или Касио, это решит и проблему изготовления корпуса – если он конечно у старого инструмента относительно цел…

Печатная плата не разрабатывалась – я посчитал нецелесообразным для изготовления единичного экземпляра устройства тратить время на разводку и изготовление платы, а макет был изготовлен на монтажной плате с помощью перемычек из МГТФа. В качестве разъема  и шлейфа к клавиатуре был использован шлейф от флоппи-дисководов из компьютера с соответствующим разъемом с каждой стороны – это облегчает сборку/разборку готового устройства.

Плата

В моем случае корпус был выгнут из тонкой листовой стали (что было под руками) – с деревянными боковинами (как у старых советских инструментов).

Ну вот, вкратце, и все. Творческих успехов!

MIDI-клавиатура

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Схема №1.
МикроконтроллерPIC16F841 Поиск в FivelВ блокнот
МикросхемаКР1533ИД71 Поиск в FivelВ блокнот
МикросхемаКР1533КП71 Поиск в FivelВ блокнот
Линейный регулятор
LM7805
1 Поиск в FivelВ блокнот
Диод
КД522А
64 Поиск в FivelВ блокнот
Конденсатор22 пФ2 Поиск в FivelВ блокнот
Конденсатор0.1 мкФ2 Поиск в FivelВ блокнот
Электролитический конденсатор100 мкФ2 Поиск в FivelВ блокнот
Резистор
220 Ом
2 Поиск в FivelВ блокнот
Резистор
6.8 кОм
8 Поиск в FivelВ блокнот
Кварцевый резонатор4 МГц1 Поиск в FivelВ блокнот
Клавишная кнопка64 Поиск в FivelВ блокнот
Схема №2.
МикроконтроллерPIC16F841 Поиск в FivelВ блокнот
МикросхемаКР1533ИД72 Поиск в FivelВ блокнот
МикросхемаКР1533КП72 Поиск в FivelВ блокнот
МикросхемаКР1533ИР232 Поиск в FivelВ блокнот
Линейный регулятор
LM7805
1 Поиск в FivelВ блокнот
Биполярный транзистор
КТ315А
5 Поиск в FivelВ блокнот
Диод
КД522А
80 Поиск в FivelВ блокнот
Конденсатор22 пФ2 Поиск в FivelВ блокнот
Конденсатор0.1 мкФ2 Поиск в FivelВ блокнот
Электролитический конденсатор100 мкФ2 Поиск в FivelВ блокнот
Резистор
180 Ом
7 Поиск в FivelВ блокнот
Резистор
220 Ом
2 Поиск в FivelВ блокнот
Резистор
6.8 кОм
16 Поиск в FivelВ блокнот
Резистор
8 кОм
1 Поиск в FivelВ блокнот
Кварцевый резонатор4 МГц1 Поиск в FivelВ блокнот
3-х разрядный светодиодный цифровой индикатор, с общими анодами.1 Поиск в FivelВ блокнот
СветодиодКрасный12 Поиск в FivelВ блокнот
Клавишный переключатель64 Поиск в FivelВ блокнот
Кнопка16 Поиск в FivelВ блокнот
Схема №3.
МикроконтроллерPIC16F841 Поиск в FivelВ блокнот
МикросхемаКР1533ИД71 Поиск в FivelВ блокнот
МикросхемаКР1533КП72 Поиск в FivelВ блокнот
Компаратор
LM339
1 Поиск в FivelВ блокнот
Линейный регулятор
LM7805
1 Поиск в FivelВ блокнот
Диод
КД522А
80 Поиск в FivelВ блокнот
Конденсатор22 пФ2 Поиск в FivelВ блокнот
Конденсатор0.1 мкФ4 Поиск в FivelВ блокнот
Электролитический конденсатор100 мкФ3 Поиск в FivelВ блокнот
Резистор
220 Ом
2 Поиск в FivelВ блокнот
Резистор
680 Ом
2 Поиск в FivelВ блокнот
Резистор
1 кОм
5 Поиск в FivelВ блокнот
Резистор
2 кОм
7 Поиск в FivelВ блокнот
Резистор
6.8 кОм
17 Поиск в FivelВ блокнот
Резистор
10 кОм
1 Поиск в FivelВ блокнот
Переменный резистор10 кОм1 Поиск в FivelВ блокнот
Кварцевый резонатор4 МГц1 Поиск в FivelВ блокнот
СветодиодКрасный1 Поиск в FivelВ блокнот
СветодиодЗеленый1 Поиск в FivelВ блокнот
Клавишный переключатель64 Поиск в FivelВ блокнот
Кнопка16 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Семенов Михаил Валентинович Опубликована: 2012 г. 0 2
Я собрал 1 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Midi-клавиатуры в Самаре недорого, магазин https://siriusmusic.ru/.

Комментарии (128) | Я собрал (0) | Подписаться

0
jpatay #
Vinchence, так проще сделать как у автора. Вот,что он пишет: " При необходимости число клавиш может быть увеличено хоть до 127, для этого в схему нужно ввести еще один дешифратор КР1533ИД7".
По схеме вроде всё понятно, но прошивку нужно редактировать. Нужно освободить ногу РА3 ПИКа и направить её на дополнительную КР1533ИД7. Индикацию на светодиодах удалить. Но в прошивках я не разбираюсь, а мой друг тоже не очень... К155КП1 на 16 входов, оно конечно хорошо,но фирменные матрицы в основном 8х8, а в пианино 8х11. Тогда придётся "резать" заводскую матрицу. А у автора как раз то, что надо. Правда на 88 клав. тоже придётся один раз отрезать 24 клавиши.
Не плохо бы задействовать ещё одну педаль СОФТ, как у пианино. Пиши, как у тебя продвигаются дела. Желаю удачи. Вот схемка на 88 клавиш, может что подскажешь:
Прикрепленный файл: MIDI_Pic16F84_88.JPG
Ответить
+1
Vinchence #
Адресный вход КП1 выв.15 подключается к порту B6 picF84, для его опроса достаточно в строке (186 MOVLW D'48' ;кол-во клавиш- длина опроса !!!) указать более 64 клавиш. Так как выход КП1 выв.10 только инверсный, его нужно инвертировать логическим элементом либо во всех строках BTFSC меняем на BTFSS и наоборот BTFSS на BTFSC при опросе PORTA.T0 и PORTA.T1. В строке(156 MOVLW 24h ;тональность) указывается что клавиатура начинается с 36й ноты - "ДО" контроктавы, шаг сетки ноты "ДО" 12, от 0 до 120 (всего 11 октав).
Ответить
0
Ю.Соколовский #
Vinchence, я тоже присоединяюсь к просьбе!
Есть интерес к Вашей работе, но нет квалификации...
Ответить
0
jpatay #
Vinchence, спасибо что ответил, но я не понял, КП1 в схеме нет. Может имеется ввиду дополнительная ИД7? Буду благодарен, если поможешь. Если получится, я всё выложу здесь.
Ответить
0
Vinchence #
Автором скорей всего имелось ввиду дополнительная ИД7 для организации параллельного опроса двух матриц 8x8 с целью экономии время опроса всех клавиш, что влечёт за собой не мелкое изменение кода.
Ответить
0
jpatay #
Если я правильно понял, две м/с КП7 меняются на КП1,а КР1533ИД7 так и остаётся одна согласно схемы. Тогда всё хорошо получается. Матрица будет 8х16х16 (128 клавиш), причём импортные матрицы не надо будет переделывать. Vinchence - это просто гениально.
Если КВ6 подключить к 15-ой ноге КП7,тогда КВ3 к 14-ой,КВ4 - к 13-ой, а КВ5 - к 11-ой ножке? Сейчас буду пробовать рисовать схему с матрицей, чтобы наглядней было.
Ответить
0
Vinchence #
Вот пример соединения двух КП7
Прикрепленный файл: КП7х2.jpg
Ответить
0
jpatay #
Нарисовал схему. Vinchence проверьте.
А может КВ6 нужно подключить на 11 вывод(data select) КП1, а
КВ3 на 15 ножку(select inputs),
КВ4 на 14 (select inputs),
КВ5 на 13 (select inputs)?
Прикрепленный файл: MIDI_16F84_88.JPG
Ответить
0
jpatay #
Выкладываю ещё в SPL:
Прикрепленный файл: MIDI_16F84_88.spl7
Ответить
0
jpatay #
Исправил ошибку в схеме, изменил РА0 на РА1, который идёт на инвертор.
Прикрепленный файл: MIDI_16F84_88.JPG
Ответить
0
Vinchence #
В имс. IC3 выв.10 подключай через инвертор, выв.15 - KB3, выв.14 - KB4, выв.13 - KB5, выв.11 KB6.
Диоды в матрице подключать как у автора статьи (на каждую клавишу 1 диод).
В твоей матрице отсутствуют нормально замкнутые контакты необходимые для определения скорости нажатия клавиши.
Ответить
0
jpatay #
Я схему нарисовал для открытых контактов с последовательным включением.На 64 клавиши у меня уже работает. Автор писал:
. При желании можно использовать и клавиатуру, где вместо переключающей группы контактов используется две пары замыкающих контактов – одна пара замыкается в начале движения клавиши, другая в конце (как на инструментах YAMAHA). В этом случае сигнал на PA0 нужно подавать с инверсного выхода мультиплексора (вывод 6).
Вот у меня 10 вывод IC3 -инверсный.
Схему перерисую.
Vinchence, давай вместе попробуем разработать схему на 88 клав. Я готов тестировать. Смотрю ещё один человек заинтересован. Хором будет веселее. Мы будем черновую работу делать, а Вы прошивку усовершенствуете.
Ответить
0
jpatay #
Ю.Соколовский, у Вас какая клавиатура?
Исправил схему:
Прикрепленный файл: MIDI_16F84_88.JPG
Ответить
0
Vinchence #
Я взял в дар убитое напрочь пианино "Беларусь", срезал клавиатуру и поставил контакты от реле на каждую клавишу.
Саму клавиатуру смонтировал на китайской гладильной доске, точнее задействована только металлическая её часть.
Ход клавиши 10 мм., начало размыкания контакта 0.5 мм.
Ответить
0
jpatay #
Значит у Вас переключающие (перекидные) контакты.
Да,механической работы много сделали. У меня тоже есть убитое пианино "Смоленск". Не могу никак открутить один болт сбоку, чтобы снять клавиатуру. Придётся резать его пилкой по металлу. Тоже хочу замутить на нём МИДИ. Насчёт контактов ещё не определился, может оптроны поставлю. Надо как-то придумать, чтобы остался молоточковый эффект. Ну это уже механика.
Не могу никак найти импортные аналоги К155КП1 серии КМОП (SN74HCT150N), придётся К155КП1 ставить. И какую м/с поставить на инвертор, чтобы на 8 ног была? К155ЛА18-так она с открытым коллектором. На 14 ног не хочется ставить.
Уже заканчиваю рисовать печатку. Вот только осталось с инвертором разобраться.
Ответить
0
Vinchence #
Инвертор с минимальным количеством ног можно сделать на транзисторе, тем более, что инвертор нужен один.
Прикрепленный файл: Инвертор КТ315.gif
Ответить
0
jpatay #
Я в курсе насчёт КТ315, но вычитал, что это не есть хорошо. Пока воткнул К155ЛА3. Переделал свою печатку с 64 клавиш на 88.
Могут быть ошибки, но доработать никогда не поздно.
Печатку зеркалить надо. Ну привык рисовать со стороны проводников.
Прикрепленный файл: Печатка MIDI_88.JPG
Ответить
0
jpatay #
Это в SPL:
Отредактирован 01.03.2017 11:21
Прикрепленный файл: MIDI_16F84_88.lay6
Ответить
0
jpatay #
Vinchence, Вы ещё схему МИДИ на свою клавиатуру от пианино не спаяли?Я уже собираюсь травить плату.
Вы где проживаете, если не секрет?
Ответить
0
Vinchence #
Я схему собираю в железе только после того как она полноценна заработает в Proteus.
Я живу в соседней Республики. Если по прямой 677 км. от вас.
Ответить
0
jpatay #
Вот на таких оптопрерывателях можно попробовать сделать МИДИ, но надо две штуки на клавишу. Итого - 186 штук. Но тогда дребезга уже не будет.
ITR9608 ITR-9608 DIP-4 Opto Interrupter Optical Sensor DIP4.
Ответить
0
jpatay #
Vinchence,в Беларуси? Моя половина с Борисова.
Наверно надо переходить на две 74НСТ151N вместо одной К155КП1. Они КМОП, экономичные и пошустрее будут (по схеме выложенной Вами ранее).
Ответить
0
jpatay #
Vinchence, запустил схему на К155КП1. Поставил ПИК,который был прошит на 64 клавиши,все 64 клавиши работают, но нет динамики. Может что-то с выводом КВ6 связано? На КП7 работало хорошо. Надо будет отрезать ногу КВ6,посмотреть что будет. Теперь надо на 88 клавиш попробовать.
Сейчас попросил товарища, чтобы прошивку подшаманил по Вашей рекомендации. Если не сможет, буду просить слёзно Вас.
Ответить
0
Vinchence #
В битах конфигурации задействован сторожевой таймер, который никак не обрабатывается в программе. Если вовремя не дать команду CLRWDT контроллер сбросится и программа начнётся с самого начала.
В случае отключения сторожевого таймера, программа зацикливается на произвольном return посылая сама в себя.
Ответить
0
jpatay #
Поправил печатку, было несколько ошибок:
Прикрепленный файл: MIDI_16F84_88.lay6
Ответить
0
jpatay #
В битах конфигурации задействован сторожевой таймер, который никак не обрабатывается в программе. Если вовремя не дать команду CLRWDT контроллер сбросится и программа начнётся с самого начала.
В случае отключения сторожевого таймера, программа зацикливается на произвольном return посылая сама в себя.
Это для меня, как китайский язык. Всё равно в прошивку не смогу внести изменения.
Ответить
0
jpatay #
Vinchence,в общем прошивку мне отредактировали. Звучат все 88 клавиш и первая слева клавиша звучит с ноты "ЛЯ" субконтроктавы, но нет чувствительности к силе удара по клавише.
Как это можно сделать в прошивке практически?
Ответить
0
Vinchence #
Сила удара обрабатывается в прерывании TMR0, возможно у вас он отключен или настроен неправильно. Если клавишу медленно нажать, а в программе MIDI Monitor в третьем байте будет 7F - то обработки силы удара не происходит.
Ответить
0
jpatay #
У меня две рабочие платы. Одна на 64 клавиши, другая на - 88. На плате 64-динамика есть, вынимаю с неё ПИК и устанавливаю в плату 88 - динамики нет. А разница только в дополнительном выводе КВ6 и К155КП1. В чём же дело?
Ответить
0
jpatay #
Вот ASM с изменениями на 88 клавиш:
Прикрепленный файл: PitchMod(1).asm
Ответить
0
jpatay #
Может причина в том,что я не запаял часть схемы Pitch Weel? Но резистор 5,6 кОм на РА4 поставил. На все 16 входов КП1 я поставил 5,6 кОм (какие были в наличии). Проверил МидиОксом в столбце data2 присутствует 7F. Нажимал на клавишу с разным усилием. Оно и на ухо слышно, что нет динамики.
Прикрепленный файл: Безымянный.png
Ответить
0
Vinchence #
7F у вас присутствует при отключении ноты, оно так заложено в программе, а включение ноты (сила нажатия) у вас 1F, что означает неоднократный декремент переменной отвечающей за усилие нажатия (скорость перемещения клавиши).
Ответить
0
jpatay #
Vinchence, всё оказывается работает. Сам себе создал трудности. Поленился подключить клавиатуру и вместо неё спаял две кнопки с диодами и на них тестировал. Но этот метод не прошёл. Сейчас подключил контакты клавиши и всё стало ОК. Можно схему повторять.
Было бы хорошо прописать в прошивке ещё вторую педаль Soft, чтобы было полноценное пианино. Что думаете, это можно сделать?
Прикрепленный файл: 1.png
Ответить
0
Vinchence #
Чтобы прописать ещё одну педаль, на мой взгляд необходимо: схему делать на двух ИД7 и двух КП7.
вывод 6 одной из ИД7 подключаем через ЛА3. Управление прямой и инверсной ИД7 подключить на KB6 контроллера, тем самым освобождается вывод PA2 (обязательно ориентировать на вход) на который подключаем вторую педаль аналогично первой.
Опрос педали копируем из опроса первой педали меняя вывод опроса.
Опрос кнопок: на неиспользуемый код PORTB.
Ответить
0
Игорь #
Всем добра! Если не затруднит, выложите, пожалуйста, файлы прошивок обоих вариантов (64 и 88 клавиш) в *.hex формате. У меня знакомых программистов нету, чтобы их переформатировали, или как там это называется.
Ответить
0
jpatay #
Прошивка на 64 клавиши есть в сообщении от 29.06.2016.
Выкладываю на 88 клавиш:
Отредактирован 11.03.2017 17:55
Прикрепленный файл: PitchMod(1).HEX
Ответить
0
Игорь #
jpatay благодарствую за версию на 88 клавиш! Дай Вам Бог здоровья и долгих лет жизни. Выше указанная прошивка на 64 клавиши рабочая? А то я вижу в последующих сообщениях исправления, но только в *.asm. Собственно по конструкции: собрал схему по вашей печатке на 64 клавиши, а реакции никакой. Проверить наличие сигналов на выводах микросхем не могу - осцилографа нету. Пик нормальный, т.к. работает в этой схеме http://tutlay.ru/radioshemy/r1/26-midi-klaviatura-na-kontrollere-pic16f84-mkc64-v154.html без проблем, но хочется динамики. Остается 2 варианта: либо прошивка, либо исправность КП7. У нас КП7 вообще нет, заказывал из Китая. Еще думаю попробовать схему с менее дефицитными КП1. Мож заработает, правда не на 88 а на 64 клавиши.
Ответить
0
jpatay #
Игорь,какая у Вас клавиатура? И какие контакты?
Если Вы заметили, на печатке перемычка стоит между 15 выводом ПИКа и 6 выводом КР1533КП7. Это для импортных клавиатур,у которых открытые контакты на резинках.
Если контакты перекидные,тогда надо перемычку запаять на 5 вывод КП7.Из Китая какие м/с заказывали?Не советские же? Авторская прошивка тоже рабочая, просто будут звучать только 48 клавиш. Дело скорее всего не в прошивке. Пишите,общими усилиями заставим схему работать. И где же Вы проживаете,что нет советских микросхем? Вот прошивка на 64:
Прикрепленный файл: PitchMod.HEX
Ответить
0
jpatay #
Vinchence 13.03.2017 07:34 #
Чтобы прописать ещё одну педаль, на мой взгляд необходимо: схему делать на двух ИД7 и двух КП7.
вывод 6 одной из ИД7 подключаем через ЛА3. Управление прямой и инверсной ИД7 подключить на KB6 контроллера, тем самым освобождается вывод PA2 (обязательно ориентировать на вход) на который подключаем вторую педаль аналогично первой.
Опрос педали копируем из опроса первой педали меняя вывод опроса.
Опрос кнопок: на неиспользуемый код PORTB.
Сложно это. Да и надоело уже экспериментировать. Может придумаю как глушить звук по аналоговому выходу. Да и левая педаль редко используется, но для пианистов надо,чтобы она была.
Vinchence,когда закончите свой девайс,поделитесь впечатлениями, желательно с фотками и схемой. Интересно будет посмотреть.Только не пропадайте.
Ответить
0
Vinchence #
jpatay не могли бы вы поэкспериментировать: хватает ли частоты кварца 4МГц на одновременную обработку 10 клавиш 32-ми нотами? В варианте на 88 клавиш.
Успевает ли все опросить и передать?
Ответить
0
Игорь #
Все по-порядку.
1. Программатор PicKit2.
2. Пик - PIC16F84A (может буква критична) прошивается и работает без проблем с прошивкой из схемы http://tutlay.ru/radioshemy/r1/26-midi-klaviatura-na-kontrollere-pic16f84-mkc64-v154.html а с любой из этих прошивок выдает ошибку при верификации. Если в программе снять галку с Program memory Enabled (хотя вроде так не должно быть), шьется успешно.
3. Я не сказал что у нас советских микросхем нет. Нет именно КП7. Других навалом.
4. Заказывал SN74LS151N. Если гугл не врет, то это аналог КП7.
5. Контакты замыкаю микриком. Перемычка на 5-ю ногу.
В Midi-Ox никаких сигналов
Что не так?
Ответить
0
jpatay #
У меня тоже PIC16F84A и тоже выдаёт ошибку, но прошивается нормально. Микры у меня стоят PC74HCT151N-более экономичные. Микрик желательно заменить на контакты реле,потому что он переключается мгновенно и соединить вот как на схеме. Выход миди как у Вас организован? У меня всего выходят два провода. Корпус идёт на 4,5 ноги разъёма звуковухи, а выход МИДИ на 15 ногу. Сначала у меня тоже не работало,пока не снял резистор 1 кОм с 5-ти Вольт.
Прикрепленный файл: MIDI3.JPG
Ответить
0
Игорь #
Миди-кабель собирал по классической схеме на К155ЛА3 и подключен в Game-порт SB Live 5.1. Работает без проблем. Собственно по схеме: не наблюдаю резистор 1 кОм у 5-ти Вольт. Может имеется ввиду R1 6к8 на 4-й ноге пика? Миди-выход как на схеме: 5 контакт с 13 ноги через 220 Ом, 4 контакт через 220 Ом на +5 Вольт.
Ответить
0
jpatay #
Если в компе есть MIDI/GAME разъём, тогда сделайте как я. Корпус платы соедините с 5-ым пином звуковухи, а выход МИДИ через 220 Ом с 15 пином. И всё будет работать. Я это сделал телефонным двухжильным кабелем длиной 3 м.
На выходе МИДИ уже есть 5 Вольт. Попробуйте измерить тестером. И не надо никаких переходников.
Я имел ввиду 1 кОм. как на схеме:
Прикрепленный файл: 10313.gif
Ответить
0
jpatay #
Я так сделал, как на схеме:
Прикрепленный файл: 10313.gif
Ответить
0
jpatay #
хватает ли частоты кварца 4МГц на одновременную обработку 10 клавиш 32-ми нотами?
Проблема в том, что у меня совсем "убитая" клавиатура Ямахи. Половину клавиш уже продал. Наклеивал на резинки фольгу, потому что сопротивление резинок было большое,в результате получил дребезг. Я её даже не подключал, а подпаял одну клавишу. Но вот,что пишет автор: "Кроме того, максимальное количество одновременно звучащих нот – 10 (если у кого-нибудь на руках выросло больше пальцев, это количество легко изменить)".
Сейчас ищу импортную клавиатуру на 88.
Ответить
0
jpatay #
Игорь, на контактах одной клавиши (по схеме с перекидными контактами) схема может и не работать. Вот слова автора:"Очень важно хорошо отстроить механику - верхние контакты ОБЯЗАТЕЛЬНО должны замыкаться при отпускании клавиш. Если этого не сделать, программа считает такие клавиши нажатыми и пытается их обрабатывать, поэтому повторное нажатие этих клавиш звука не дает". Так что все 8 ног КП7 должны быть запаянные на н.з. контакты.
А вот на открытых контактах (как у меня) одну клавишу можно для теста подключить. Попробуйте спаять две кнопки и перемычку на 6 ногу перекинуть. Как на схеме:
Прикрепленный файл: MIDI2.JPG
Ответить
0
Игорь #
jpatay, спасибо за помощь! Заработало! Работает в варианте с двумя контактами (2 микрика на одну клавишу и перемычка на 6 выводе). С одним перекидным не работает. Шнур пришлось использовать миди-Usb. Со стандартным через game-порт не работает. Переделка шнура по вашему рецепту: корпус с 5-м пином, выход Миди через 220 Ом на 15 вывод, у меня не заработала.Пик-контролер действительно работает, несмотря на ошибку верификации в конце прошивки.
Ответить
0
jpatay #
Игорь,примите мои поздравления! Теперь можно и на 88 клавиш попробовать схемку спаять. Да, с выходом МИДИ что-то не всё ОК. Владимир тоже мучился с шнуром МИДИ-ЮСБи. Он даже прошивку подправил и выложил в ASM. Надо будет перевести в HEX и попробовать.
Меня эта схема заинтересовала потому, что она идеально подходит к импортным матрицам клавиатур. Ничего не надо там перепаивать. Раньше я уже спаял себе МИДИ на 88 клав.(PIC18F45k22),но там перекидные контакты и матрица 6x16. Клавиатуру использовал от Эстрадина-9. Я здесь уже раньше писал об этом. Даже на Ютуб выложил:
https://www.youtube.com/watch?v=sn28yHYkWes
Но клавиатура там не очень, так и лежит в гараже.
Вот думаю ещё попробовать вместо КП1 поставить две 74НСТ151 по такой схеме:
Прикрепленный файл: MIDI_16F84_151_88.JPG
Ответить
0
Игорь #
jpatay благодарю! Осталось дело за малым: подключить реальную клавиатуру. Раз Вы говорите, что у импортных матриц схема идентичная, попробую договориться с знакомыми за клавиатуру. У них есть нерабочая PSR-ка, из 1000-х или из 2000-х, точно не помню. Кстати, Вы не пробовали реализовать подключение Pitch Bend и Modulation одновременно? В описании говорится, что "для комутации выходов компараторов лучше применить дополнительную схему, а в качестве управляющего сигнала использовать РА2". Что это и куда это? Для меня это темный лес. Может кто дополнит схему?
Ответить
0
jpatay #
Кстати, Вы не пробовали реализовать подключение Pitch Bend и Modulation одновременно? В описании говорится, что "для комутации выходов компараторов лучше применить дополнительную схему, а в качестве управляющего сигнала использовать РА2"
Нет, не пробовал. Pitch Bend работает прекрасно, даже без подбора резисторов. Схема, наверно должна быть такой же как и на Pitch Bend. Только не знаю или в прошивке предусмотрено управление модуляцией по РА2.
Схему я набросал, но надо подумать какой чип использовать для коммутации выходов компараторов.
Может Vinchence прояснит ситуацию.
Прикрепленный файл: MIDI2.JPG
Ответить
0
Игорь #
Принцип подключения понял. Но, по умолчанию используется Pitch Bend, а как вместо него задействовать Modulation? Что-то в прошивке нужно менять? Или есть другой способ? Просто я модуляцию использую чаще чем бендер. И да: как подключить кнопки управления? Как в оригинальной схеме?
Ответить
0
jpatay #
В схеме №2 есть кнопки, но какая из них отвечает за Модуляцию непонятно. В прошивке работа Модуляции должна быть прописана. Ещё интересно, при нажатии кнопки, что появляется на выходе РА2, какой импульс?
Vinchence собирал схему №2. Он должен знать какие там есть кнопки. Их там много:up2,up3,up4,up5,upl,twin,lower и т.д.
Сейчас внимательно посмотрел на схему №3, там где находятся кнопки, есть только одна надпись "Weel". Вот это и есть кнопка для переключения колёс. Уже легче. Теперь надо подумать чем переключать выхода компараторов.
Ответить
0
jpatay #
Вот так будет наглядней на схеме смотреться кнопка Weel и педаль Sustain:
Отредактирован 15.03.2017 22:18
Прикрепленный файл: MIDI2.JPG
Ответить
0
Игорь #
Более-менее ясно. Главное, что схема работает, остальное в процессе. Клавиатуру пока не взял. По независящим от меня обстоятельствам сборка устройства задерживается на некоторое время.
Всем удачи!
Ответить
«12
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Конструктор - Гитарная педаль Remote Delay 2.5
Конструктор - Гитарная педаль Remote Delay 2.5
FM-модуль RDA5807M USB-реле (2 канала)
вверх