НАШ МАГАЗИН - SHOP.MUSBENCH.COM
Карта Сайта

Самодельный USB MIDI адаптер для компьютера на микроконтроллере PIC18F2550


 
Зачем нужен MIDI порт в 2019 году?

Описываемый MIDI адаптер предназначен для подключения к компьютеру MIDI оборудования, не имеющего собственного USB порта. В основном это MIDI клавиатуры, "железные" синтезаторы и звуковые модули, выпущенные несколько лет назад. Поскольку музыкальная индустрия это отрасль довольно консервативная, огромное количество таких (нужно сказать прекрасных) инструментов до сих пор успешно используется в профессиональных и домашних студиях, и я уверен, будут  использоваться не одну пятилетку в будущем. Например я в своей студии использую отличную полноразмерную MIDI - клавиатуру Roland A33 более чем десятилетнего возраста, и она прекрасно работает, но конечно же на ней нет никаких USB портов, а только MIDI вход и 2 MIDI выхода.
 
MIDI клавиатура Roland A33

    Сейчас музыканты все чаще уходят от "железных" синтезаторов в сторону использования  в своем творчестве исключительно виртуальных VST инструментов, так как мощность современных процессоров это позволяет, но даже в этом случае для ввода в компьютер музыкальной информации нужна внешняя клавиатура - контроллер, которую можно подключить к компьютеру с помощью описываемого MIDI адаптера. Иногда такое классическое MIDI - подключение даже довольно современных инструментов предпочтительнее с точки зрения надежности работы. Например у меня есть отличный синтезатор Roland Juno G, который уже оборудован USB, но я нашел что надежнее работать не через его USB порта а через его обычный классический MIDI - порт.

Синтезатор Roland Juno G

    Кроме того, такой MIDI адаптер может стать основой для подключения к компьютеру самодельных музыкальных и экспериментальных устройств, работающих по протоколу MIDI  - синтезаторов, устройств управления сценическим светом, я  даже встречал конструкции "умный дом", которые управлялись по MIDI. Дело в том, что MIDI соединение - это старый, надежный, отработанный до мелочей стандарт. С программной точки зрения это обычный UART (последовательный интерфейс) который на аппаратном уровне поддерживают даже самые "древние" микроконтроллеры. Поэтому он очень прост в программировании. Единственное отличие MIDI от обычного UART - это нестандартная скорость передачи данных. Если в стандартном UART мы имеем сетку вроде 2400, 4800, 9600, 19200, 38400, 57600 и 115 200 бит/с, то для превращения его в совместимый с MIDI оборудованием достаточно настроить порт на частоту 31250 бит/с. Именно с такой фиксированной скоростью работает МИДИ интерфейс. нужно сказать, что в 80-х годах прошлого века, когда вместе с цифровыми синтезаторами появился MIDI, это была довольно высокая скорость. С аппаратной точки зрения MIDI порт это соединение по двум проводам типа "токовая петля".

Зачем делать MIDI порт, если можно купить  китайский на Алиэкспресс за 300 рублей?

Действительно, можно заказать в китае миди адаптер по минимальной цене примерно за 5 долларов. Например вот такой:

 

и он может даже будет работать. Однако последний вариант адаптера, который описывается в этой статье, я сделал для моего знакомого музыканта как раз на замену вот такого китайского, который он купил за 300 рублей. Китайский более-менее работал под Windows 7 но наотрез отказался корректно работать под Win 10. То есть он определялся системой но работал некорректно, программы - секвенсоры работали с ним некорректно, некоторые просто зависали при нажатии на клавишу миди клавиатуры, а некоторые выдавали двойные ноты, не передавалось событие окончания ноты и возникали другие ошибки. Работать было невозможно. В конце концов я сделал человеку описываемый адаптер, взяв из его китайского варианта только кабели с разъемами MIDI. Теперь у человека все работает отлично под десятой виндой. Не факт, что любой купленный на Али подобный адаптер будет глючить, но я с этим сталкивался уже раза три. То есть это - лотерея. Я разобрал китайский адаптер и как оказалось на его плате не была установлена стандартная для MIDI - портов оптронная развязка, MIDI вход был реализован на паре транзисторов. Это не есть хорошо.

Качественные (не китайский ноу-нэйм) адаптеры стоят уже не 5 долларов а намного дороже. Например M-Audio MidisPort будет работать без проблем, но стоит он уже около 45 долларов:
 

Самой дорогой деталью описываемого в статье миди адаптера является микроконтроллер 18F2550. Стоит он около 5 долларов с Алиэкспресс. Заказать   микроконтроллер можно по этой ссылке

 
    
Принципиальная схема MIDI адаптера


Основой устройства является микроконтроллер Microchip PIC18F2550. Данный микроконтроллер имеет аппаратную поддержку USB.
 
Принципиальная схема адаптера MIDI To USB (кликните на картинке чтобы увеличить)
MIDI IN и MIDI OUT - пятиконтактные разъемы стандарта DIN (нем. Deutsches Institut für Normung, DIN). такие использовались раньше в советских магнитофонах и назывались "ОНЦ-ВГ"
 
MIDI - порт синтезатора на разъемах DIN
Конструктивно миди адаптер может быть выполнен в двух вариантах - коробочка с двумя гнездами DIN  (MIDI IN и MIDI OUT), либо с гнездами "мама" на коробочке (как на фото выше) так и в варианте китайского или M-audio, о которых я рассказывал ранее, то есть в виде маленькой коробочки с выходящими из нее кабелями и  штеккерами DIN - "папа" на этих кабелях. USB гнездо можно также  установить в коробке - корпусе, либо использовать кусок USB провода с разъемом от старой мышки или от чего-то другого. Я сделал именно второй вариант, так как были в наличии все кабеля от того самого негодного китайского миди-адаптера.

В качестве коробочки для корпуса адаптера вы можете приспособить любую небольшую унифицированную пластиковую коробочку из радиомагазина, мыльницу или в крайнем случае, оставить его в виде "просто платы" (крайне не рекомендуется). Если у вас есть 3D принтер, то ы можете поступить так, как сделал я - напечатать корпус на 3D принтере. Ссылку на скачивание моделек я поместил в конце этой статьи.

При сборке адаптера важно правильно распаять миди - гнезда и/или кабеля. MIDI порт - это интерфейс типа "токовая петля" и он чувствителен к полярности соединения проводов. То есть если вы перепутаете провода в кабеле то порт работать не будет. На принципиальной схеме показано правильное соединение выходных пинов платы контроллера с гнездами DIN типа "мама" (с дырочками)). На схеме показана правильная распайка для гнезда при условии если вы смотрите на это гнездо сзади, то есть со стороны лепестков для пайки:
  
    
Имейте в виду, что на принципиальной схеме указана распайка именно для разъема "мама".
    
В случае со штеккером "папа", который припаивается на кабель, получится наоборот, нужно смотреть на этот штеккер спереди:
    
   
Вообще контакты разъема DIN пронумерованы и можно просто следовать правильной нумерации (На рисунке изображена нумерация контактов если смотреть на разъемы спереди:
    
    
Оптрон U2 использован типа 4N36 d 6-пиновом корпусе. Можно применить любой совместимый по распиновке оптрон этой серии. Для стабильной работы MIDI входа,  возможно, придется подобрать сопротивление резистора R6. В случае с 4N36 у меня получилось оптимальное сопротивление в районе 1...1,2кОм. Дополнительные пины, обозначенные на схеме как THHG_5 и THHG_4 я применял для установки дополнительного гнезда MIDI THROUG. Это гнездо служит для непосредственной передачи MIDI сигнала с MIDI IN на этот самый MIDI THROUGH, и по моему мнению в случае с компьютерным интерфейсом особого смысла не имеет, поэтому можно его не устанавливать. На плате он не предусмотрен, и для его реализации я устанавливал дополнительную микросхему 561ЛА7 навесным монтажом на проводах, так как не хотелось разводить под этот вариант печатную плату. наличие такого выхода являлось желанием заказчика, не понятно зачем оно ему может пригодиться, обычно гнезда THROUG устанавливают на MIDI инструментах чтобы соединять их в цепочки. Дополнительная микросхема просто играла роль буфера, так свойства соединения "токовая петля"  таковы, что просто подключить дополнительное гнездо MIDI TROUG к контактам THHG_5 и THHG_4 нельзя, дополнительное соединение "посадит сигнал" и вход перестанет работать.  Повторю еще раз, я считаю MIDI TROUG в таком адаптере бессмысленным, поэтому не привожу схему его соединения, а дополнительные контакты удалять из проекта просто лень. Каких - либо других особенностей схема адаптера не имеет, это обычное простое микроконтроллерное устройство. Микроконтроллер очень желательно устанавливать на панельке. перед установкой микроконтроллера в схему его необходимо запрограммировать (прошить) с помощью любого программатора PIC контроллеров, например вот этого или этого. Ссылку на файлы прошивки вы найдете в конце этой статьи. Если все сделано правильно и без ошибок из исправных компонентов, то схема не нуждается в настройке и начинает работать сразу.
   
Печатная плата

Печатная плата разведена в программе DipTrace. несколько таких миди адаптеров в свое время я сделал просто навесным монтажом на унифицированных макетных печатных платах. особого значения это не имеет.


 

  
  
Интерактивный 3D просмотр
.
Кликните в центре изображения, дождитесь загрузки 3D модели.
Крутить: левая кнопка мыши; Размер: колесо мыши.
  
 
Корпус


В моей версии корпус адаптера напечатан на 3D принтере. Он состоит из 2 частей - коробки и крышки. Модели разработаны в SolidWorks. В качестве корпуса можно использовать любую пластмассовую коробочку, например мыльницу.
   
   
  
 
  
 
Файлы


СКАЧАТЬ архив со всеми файлами проекта (прошивка, схема, печатная плата и модели для печати корпуса)