AVARGESNANO.NAROD.RU


MIDI DJ CJ CONTROLLER 3.0 USB

Недавно собрал уже третью версию MIDI контроллера, о которой и пойдёт речь. Так он выглядит:
MIDI DJ CJ CONTROLLER 2.0 USB

а так выглядела вторая версия:
MIDI DJ CJ CONTROLLER 2.0 USB

Как видите, различий не очень много, оба контроллера небольшие. Основных отличия два: многооборотный (без ограничений) JogWheel, который позволяет скрэтчить и делает контроллер более диджейским. А ещё в этот раз вместо светодиодов решил поставить LCD экранчик. С момента изготовления второй версии прошло полтора года, ещё при его создание отметил для себя несколько моментов, позволяющих улучшить схему контроллера. И поскольку я наконец продал вторую версию, появилась хорошая возможность собрать третью версию - улучшенный вариант.

За эти полтора года мне писали люди, многие собрали MIDI DJ CJ CONTROLLER 2.0 USB, присылали фотографии работающего устройства. Некоторые ребята просили исходники или просили доработать контроллер, чтобы в нём было 50, 60 а то и 100 кнопок и крутилок. Мне же на практике вполне хватало 8 крутилок и 5 кнопок. Но всё равно, в этот раз я решил добавить к статье еще и исходники. К сожалению, для второй версии контроллера исходников не сохранилось и для MIDI DJ CJ CONTROLLER 3.0 USB были написаны свои исходники, зато сразу в нормальном, читаемом виде. Как раз исходники и дают возможность радиолюбителям с опытом развивать схему контроллера и наращивать число кнопок и крутилок, так что теперь всё в ваших руках. Сразу браться за большой контроллер не советую - дело трудоемкое, если делать красиво и с корпусом, то вот такой как у меня как минимум неделю нужно. А если будет 50 крутилок, то чтобы их все подпаять только представьте сколько надо времени. Лучше всего начать с MIDI DJ CJ CONTROLLER 3.0 USB, который потом можно попробовать, попользовать и по необходимости уже доработать позже.

Второй важный вопрос, возникающий у многих при сборке контроллера - как его по-быстрому протестировать на работоспособность, как подключить только один переменный резистор и проверить. По ходу отвечу и на этот важный вопрос.

Ссылки на скачивание прошивки и исходников - в конце статьи.

Принцип работы MIDI DJ CJ CONTROLLER 3.0 USB

Устройство подключается по USB к компьютеру. Операционная системе Windows автоматически! устанавливает драйвер устройства (HID драйвер), устройство определяется в списке "диспетчер устройств" как "DJ CJ MIDI" в разделе "Звуковые, видео и игровые устройства". В итоге, MIDI DJ CJ CONTROLLER 3.0 USB отображается в списках Midi-устройств во всех популярных музыкальных программах: FL Studio, Cubase, Virtual DJ, Ableton и других. И в этих программах мы можем назначить крутилки и кнопки устройства на элементы управления, как нравится. Всё это очень помогает при сведение, ведь мышкой можно крутить только один элемент, а контроллером сразу руками можно изменять более оперативно сразу несколько эффектов: громкость, баланс, эквалайзер, частоту среза фильтров, темп и очень очень много всего другого.

Схема

Сердцем устройства на этот раз является atmega8 (позже выяснилось, что также atmega48 в DIP-корпусе полностью подходит тоже), этот микроконтроллер и дешевле и компактнее, чем atmega16, которую я применил в прошлом устройстве.
MIDI DJ CJ CONTROLLER 3.0 USB - Схема электрическая принципиальная
Все детали на схеме, расположенные слева от микроконтроллера и не обведенные цветными рамками отвечают за USB подключение нашего контроллера. D1,D2 - стабилитроны на 3.6 вольта (можно брать на 3.3 вольта), они поддерживают в USB линиях требуемый уровень логической единицы (от 3.0 до 3.6 вольт по спецификации). Резисторы R1, R2 действуют в сочетание со стабилитронами. Резистор R3 сообщает компьютеру, что к данному USB разъему подключено устройство. C1 электролитический конденсатор, номинал может быть от 1 до 20 мкФ, он поддерживает напряжение на схеме в момент подключения USB разъема (шуршание контактов друг о друга может создавать микромоменты отсутствия контакта по линии питания). SB1 - выключатель устройства, я его поставил, чтобы не выдергивать USB шнур из устройства каждый раз.

Теперь о деталях справа от атмеги - Q1 кварц на 12 МГц, можно брать кварц и на 16 МГц и на 15, но тогда надо будет поправить исходники и перекомпилировать прошивку. С2, С3 конденсаторы поддерживающие уверенный старт кварц, часто бывает, что и без них всё работает, номинал их может быть в пределах 16..32 пикофарада. C4 фильтрует высокочастотные помехи по линии питания, 100 нанофарад, 0.1 мкФ керамический конденсатор, его желательно ставить как можно ближе к микроконтроллеру на плате.

Подробнее рассмотрим схематично обозначенные элементы на схеме: синим обведено подключение аналогового мультиплексора, позволяющего нарастить количество входов аналогово-цифрового преобразователя (АЦП) атмеги. У atmega8 в DIP корпусе (ATMEGA8-16PU и ATMEGA8-16PA) 6 входов АЦП, а поставив на одну из линий аналоговый мультиплексор мы превратим один вход в восемь. [Для желающих впоследствие наростить количество крутилок и кнопок в схеме - можно поставить на все 6 линий АЦП по мультиплексору и тогда получится 6 на 8 = 48 входов АЦП, если взять атмегу8 в SMD корпусе (паять её сложнее!), там 8 линий АЦП, то есть потенциал наростить до 64 входов АЦП]
MIDI DJ CJ CONTROLLER 3.0 USB - Аналоговый мультиплексор, подключение
Ещё раз подчеркну, что я использовал только один мультиплексор в MIDI DJ CJ CONTROLLER 3.0 USB - микросхема CD4051BCN в DIP корпусе с 16 ножками, у неё много аналогов: русская 1561КП2 и зарубежные: 74HC4051, MC4051, HEF4051. Микросхема простая и недорогая - не более 10 рублей (треть доллара) в нормальном магазине.
Рядом с мультиплексором на линию питания нужно ставить обозначенный конденсатор C1 (100 пФ) - он фильтрует высокочастотные помехи на линии питания, поддерживая нормальное функционирование мультиплексора.
К восьми входам мультиплексора я подключил 5 крутилок (KNOB) и 3 обычные кнопки (KEY). Прошивка для микроконтроллера написана таким образом, что атмега8 сначала выставляет на мультиплексор по линиям A,B,C адрес одного из восьми входов мультиплексора и потом с него читает значение. На один опрос всех ручек прибора уходит не более 8 милисекунд, для сравнения клик мышкой человек делает не быстрее, чем за 50 милисекунд. Поэтому любое вращение ручки моментально без задержки уходит по миди прямо в музыкальную программу.

Оранжевым цветом на основной схеме обведено подключение энкодера
MIDI DJ CJ CONTROLLER 3.0 USB - подключение энкодера
Энкодер внешне выглядит, как переменный резистор, но только без ограничений вращающийся в обе стороны, к тому же, он не является резистором, там внутри два контакта (как две кнопки), которые щелкают 24 раза на 1 оборот энкодера. С энкодера можно снять такую информацию: в какую сторону его вращают и как быстро, поэтому он является отличной штукой для имитации диджейской вертушки и им можно создавать скрэтчи во многих музыкальных программах, сам я пробовал в Virtual DJ и FL Studio.
У энкодера может быть 3 или 5 ножек, 3 ножки отвечают за сам энкодер, а ещё 2 ножки это обычная кнопка - если сверху нажать на ось энкодера - кнопка замыкается. Если у вашего энкодера только 3 ножки, то вы можете вход PB5 микроконтроллера либо подключить на землю (не использовать), либо подключить туда отдельную кнопку.
Для MIDI DJ CJ CONTROLLER 3.0 USB можно использовать абсолютно любой энкодер - не только PEC16, я видел в интернете их продают от 35 рублей до 250 за штуку. Свой я купил за 170, потом купил пару каких-то китайских за 35 - у них оказался более жесткий ход. Если вам жалко денег или вы ещё не купили энкодер, то можно собрать схему и без него, а выводы PD0, PD1 подключить на землю.

Следующая часть схемы обведена зеленым цветом, это часть отвечает за подключение дисплея. Взял распространенные дисплеи 16 символов и 2 строки Winstar с подсветкой, 300 рублей обошелся он. В исходнике я предусмотрел возможность сборки схемы без подключения дисплея, то есть имеется версия прошивки, не задействующая дисплей, поэтому его можно просто не подключать, а соответственные выводы микроконтроллера оставить "в воздухе".
MIDI DJ CJ CONTROLLER 3.0 USB - подключение дисплея
R1 резистор отвечает за яркость подсветки, подбирайте по вкусу, но резистор обязательно должен быть иначе подсветка быстро сгорит, обычно не более 20мА должен быть ток в цепи подсветки, точное значение есть в даташите на дисплей. Дисплей 16на2 символов существует огромное множество, все они совместимы - можете покупать любой: большой, маленький, зеленый или синий - любой.
R2 подстроечный резистор контастности, после первого включения устройства его надо обязательно покрутить и настроить контрастность символов, отображаемых на дисплее (из-за неправильной настройки контрастности, символов на дисплее вообще может быть не видно - пустой экран, либо наоборот - черные квадраты вместо символов).
MIDI DJ CJ CONTROLLER 3.0 USB - информация на дисплее
Информация на дисплее:
1 - номер контрола на устройстве 0..9,A..C
2 - значение контрола от 0 до 127
3 - направление движения энкодера (2-влево, 1-вправо)
4 - значение от кнопки энкодера (00-отпущена или 7F-нажата)
5,6,7 - значение 13 основных контроллов высотой столбика
5,7 - переменники
6 - 3 кнопки


Исходники и прошивка, фьюзы

Исходники написаны на си в среде WinAVR (ссылки на скачивание прошивки и исходников - в конце статьи). Выбирать я не мог - в этой среде написаны исходники программного USB - называется библиотека V-USB . Если вы задумаете что-то поменять в моих исходниках и перекомпилировать прошивку, первым делом нужно будет скачать с сайта obdev.at как раз библотеку V-USB, я использовал версию 22-08-2009, на форумах видел на последнюю версию V-USB (2010 года) жалуются - возможно плохо работает, сам не проверял.

Прошивал контроллер atmega8 я снова воспользовавшись опасным программатором, который представляет из себя 5 проводков, подключаемых к LPT порту компьютера и 5 вольт можно брать с USB разъема, с блока питания, у меня ещё есть гэйм-порт на звуковой карте, на нём тоже можно взять 5 вольт. Риск пожечь LPT порт, программируя атмеги так - есть, лучше всего собрать хороший программатор на будущее, подключаемый к COM или USB порту. Программа для прошивания - uniprof, вот скриншот расстановки фьюзов для atmega8. Если вы используете другую программу-прошивалку, то добавлю что галочка на этом скриншоте означает, что фьюз равен единице (по даташиту это состояние называется unprogrammed "незапрограммирован"), без галочки - ноль (programed "запрограмирован").
MIDI DJ CJ CONTROLLER 3.0 USB - Uniprof фьюзы для Atmega8
Если вы собираете устройство на атмеге48, то фьюзы, присущие только ей: CKOUT, CKDIV8, все BODLEVEL, DWEN, SELFPRGEN - на всех них поставить по галочке
Uniprof фьюзы для Atmega48
В любом случае помните важное правило прошивки микроконтроллеров: сначала заливается прошивка (HEX файл), проверяется, что прошивка удачно зашилась и только после этого устанавливаются фьюзы. Иногда еще прошивают EEPROM, но для данного устройства это не понадобилось.

Печатная плата и корпус

Вспоминая о том как нелегко было с корпусом, собирая вторую версию MIDI DJ CJ CONTROLLER, на этот раз я поступил иначе - поискал по интернету продающиеся сломанные микшеры, сломанных не нашёл, но такой вот мне продали с рук за 400 рублей и это не только за сам корпус, а за все переменные резисторы и за клювики на них сверху, в общем, очень выгодно :) MIDI DJ CJ CONTROLLER 3.0 USB корпус
Всё что я делал дальше в плане конструирования устройство уже диктовал мне корпус, местами было сложно (выпилить дыру под дисплей), но в основном очень удобно. Корпус перекрасил в серебристый баллончиком, надписи на клейкой прозрачной пленке распечатаны на лазерном принтере и переведены на липкую сторону (подробнее об этой операции было в статье о второй версии контроллера).
MIDI DJ CJ CONTROLLER 3.0 USB подготовка деталей
Отпилил часть платы микшера, на которой закреплены переменные резисторы, не стал переделывать - подпаялся к ним проводками, свой кусок печатной платы прикрепил винтами к плате микшера (справа на фото, в свободное место). Энкодер как раз устанавливается на мою плату. RGB светодиод так и не использовал.

Поэтому не могу вам предложить очень красивую и правильную печатную плату, вот такая у меня внутри корпуса (по надписи на плате можно определить "зеркальность", она у меня уже перевернута под распечатку для изготовления платы по лазерно-утюжной технологии):
ПЕЧАТНАЯ ПЛАТА MIDI DJ CJ CONTROLLER 3.0 USB

Микроконтроллер, как видите, паял без сверления отверстий, разогнув у него ножки просто в стороны. Вообще-то лучше всего было бы поставить панельку, чтобы микроконтроллер можно было втыкать-вытыкать, но во-первых я был уверен что у меня он прошит правильно, во-вторых корпус диктовал доступное пространство по высоте и, наконец, в-третьих, как ни странно вот так распаянную DIP микросхему потом легче отпаивать, чем впаянную правильно.
Ещё в моей печатке такая есть заковырка - я использовал SMD резисторы и стабилитроны.

Всё же, если кто нарисует пристойную печатную плату в Sprint Layout со слоем наименования деталей и пришлёт мне - буду благодарен, добавлю в эту статью с упоминанием кто плату сделал - дерзайте.



Тестирование MIDI DJ CJ CONTROLLER 3.0 USB при сборке

Чем быстрее устройство, которое собираешь покажет признаки жизни, тем приятнее. Поэтому напишу как проверить устройство, подключив всего одну крутилку. Посмотрим ещё раз на схему устройства:
MIDI DJ CJ CONTROLLER 3.0 USB - Схема электрическая принципиальная
Первое дело - это собрать USB часть и прошить атмегу. Сначала можно не подключать дисплей, энкодер, мультиплексор. Чтобы подключить только одну крутилку, надо все неиспользуемые ножки АЦП заземлить, например PC1-PC5 все подключить на землю, а на PC0 вместо мультиплексора подключить "среднюю точку" с переменного резистора, противоположные контакты переменного резистора подключить к 5 вольт и к земле соответственно как показано в рамке "KNOB" на этом рисунке:
MIDI DJ CJ CONTROLLER 3.0 USB - Аналоговый мультиплексор, подключение
Пару раз мне люди писали, что миди контроллер завелся не сразу - Windows при подключение писала, что "USB устройство неопознано". Основные причины две: либо вы не прошили атмегу8 или прошили неправильно. Проверьте, что фьюзы и прошивка прошиты правильно. Вторая причина: некоторые компьютеры и ноутбуки не чувствуют USB сигнала, подключенного так как у нас. Такое подключение как у нас - не аппаратная реализация USB, а программная, поэтому все же это не по стандарту, но для дешевой атмеги8 это единственный вариант. Некоторым помогало уменьшение номинала резисторов R1,R2 с 68 Ом до 32 Ом. Проверьте правильно ли подключены стабилитроны: в отличие от диодов они всегда подключаются наоборот - анодом к земле (работают на обратной ветви вольт-амперной характеристики).

А я собрал MIDI DJ CJ CONTROLLER 3.0 USB!!!

Пускай в статье будет такая глава, а вы присылайте фотографии собранного вами MIDI DJ CJ CONTROLLER 3.0 USB. Для затравки вот первый вариант (не мой): тестовая версия MIDI DJ CJ CONTROLLER 3.0 USB на макетной плате от djmansys с форума radiokot.ru
MIDI DJ CJ CONTROLLER 3.0 USB на макетной плате


Как увеличить число кнопок и крутилок

Уже упомянул выше, что можно подключить мультиплексор ни на один канал АЦП атмеги, а на все. кирилл555 с форума radiokot.ru как раз стал дорабатывать под себя мою схему, он исключил правда дисплей, но зато разрисовал вариант подключения мультиплексоров, вот такая вышла схема:
Схема на 48 крутилок/кнопок
Кстати, сколько из этих 48 элементов будут кнопки, а сколько крутилки - решать вам, потому что это обрабатывается уже на программном уровне, как исходники допишите - так и будет.

Сам я всё-таки советовал бы сначала собрать по моей схеме (с одним мультиплексором), под неё уже есть скомпилированная прошивка, а вот печатную плату вы можете сразу развести так, чтобы на ней были зарезервированы места для подпайки дополнительных мультиплексоров на будущее.

Вопрос: А можно ли к одному из выходов мультиплексора, подключить ещё один мультиплексор, увеличив тем самым число кнопок\крутилок? заранее спасибо за помощь!

Ответ: Попробовать можно, но нет гарантий что не будет шума со второго уровня мультиплексоров (это будет выглядеть как самопроизвольные миди-сообщения с ручек, которые никто не трогал), можно на второй уровень мультиплексоров посадить не крутилки, а кнопки и тогда программно легко будет весь шум отчистить. И мультиплексоры второго уровня придётся адресовать по трем отдельным каналам, то есть 3 ножки атмеги надо свободных. Ещё надо экспериментировать, хватит ли контроллеру времени, чтоб обработать такую кучу данных плюс программный USB.

Архивы

djcj3-atmega8-with_lcd.zip (прошивка для схемы с установленным LCD дисплеем) поддерживает ATMEGA8 и ATMEGA48

djcj3-atmega8-no_lcd.zip (прошивка для схемы без подключенного LCD дисплея) поддерживает ATMEGA8 и ATMEGA48

14102011-sources-djcjmidi3.zip (исходники проекта) для компиляции нужен установленный си компилятор WinAVR (winavr.sourceforge.net) и библиотека V-USB(www.obdev.at/vusb/), доступные бесплатно на авторских сайтах.

Вместо завершения

Если вы соберете такое устройство или внесете какие-то изменения - присылайте, мне будет любопытно посмотреть на фотки устройства внутри и снаружи. Также я могу ответить на какие-нибудь вопросы, только пожалуйста имейте совесть и по общим вопросам используйте поисковики, например google.com.

Мой email:


AVARGESNANO.NAROD.RU

Hosted by uCoz