Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

MIDI контроллер

Сб фев 21, 2009 16:43:40

привет!
вот, недавно начал изучать музыкальные проги (в частности Ableton Live) и столкнулся с первой проблемой: без миди контроллера работать с прогой довольно проблематично. проанализировав рынок готовых контроллеров решил отказаться от буржуйских девайсов по причине их дороговизны при низкой функциональности.
решил замутить сам. был выбран МК ATMEGA8. принцип работы: МК периодически считывает с переменных резисторов напряжение (старшие 7 бит) и посылает через аппаратный UART три байта (ControllerChange, Controller number, value). собственно с этим проблем не испытываю. проблема с переменниками. в данном случае их пока шесть штуккаждый подключен в отдельному каналу АЦП. резюки по 100 КОм линейная зависимость.они немного фонят. тобиш иногра значение и АЦП колеблется в пределах +/- 2 единицы, иногда и больше. но бывает и без фона. походу проблема с резюками. схема включения МК из даташита: питание аналоговой части через указаный LC фильтр, параметры работы АЦП менял по разному (опорное напр., частота) и это на "фон" резисторов никак не влияло, как конили так и фонят. кстати резюки СП3-4аМ (кака, да?). вопрос собственно про резисторы. можно ли как нибудь эти подправить (типа их смазкой забить какойнибудь) или меньшего сопротивления поставить (50, 10, 5 КОм) или мож поставить буржуйские переменники (но какие? фирмы, модели). и как мне резюки в матрицу соединить . допустим 18 шт( 6 каналов АЦП - "строки", три пина контроллера - "столбцы", ну Вы поняли..)я пытался, но у мну был странный фон и глюки....помогите кто чем может ..ггггг.....

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

Сб фев 21, 2009 17:07:16

Конечно 100 кОм будут фонить. Попробуй их заэкранировать, хотя бы провода.
А лучше уменьшить до 10-20 кОм.

зы
Схемку можно посмотреть?

Сб фев 21, 2009 17:41:39

да схемы нет. все примитивно до немогу. попытаюсь на словах. контроллер питается от гейм порта зкувовухи (запитывал также от ЮСБ), на питании электролит 1000микр, аналог.притание МК через LC фильтр (из даташита) на PC0-PC6 подключены ползунки резисторов. крайние выводы резисторов на землю и питание. провода не экранированные, т.к. оч короткие. корпуса резисторов естественно на земле.
о работе АЦП. запускаю одиночное преобразование. жду прерывания от АЦП. выполняю рассчет, отправляю в ЮАРТ, вывожу на дисплей состояние (дисплей для отладки), выбираю другой канал АЦП, выхожу назад. ну еще коегде задержки добавлены. прога тоже примитивная до невероятия.
о резисторах. вот допустим он начинает фонить (видно по LED - индикатор активности миди и дисплее (он, как говорилось више временный)) стоит слегка коснуться ручки и все успокаивается. на крайних положениях ползунка фона нет.
что посоветуете с резюками делать? эти шесть то я выброшу. какие купить? десятиклоомные СП3 или мож буржуйские? просто разница в цене немаленикая 2-3 раза дороже. а мне их нада штук тридцать...

кстати в музыкальном магазине видел "такие же буржуйские" резюки как и на рынке но по цене 10-20 уе. за штуку, что это? мож они освящены в Ватикане??? или чем обусловлена такая цена?

Сб фев 21, 2009 17:49:48

вот проект на ПИК контроллере. нашел в инете.что вы скажете о подключении переменников? какой то странный делитель напряжения или я чегото неврубаюсь?
Вложения
MIDI Контроллер.zip
весь проект
(107.45 KiB) Скачиваний: 2986
sch.jpg
(58.11 KiB) Скачиваний: 3681

Сб фев 21, 2009 18:56:53

Обычное подключение. Матрица. По аналогии с клавиатурной матрицей. На RD0, RD1, RD4 (столбцы) поочерёдноо выводится "1". Через потенциометры (R4) и развязывающие диоды (D4) нарпяжение подаётся на строки и считывается АЦП.
Сам проект не смотрел, возможно там даже матрица смешанная из кнопок и потенциометров...

Насчёт фона. Не пробовал конденсаторы цеплять между массой и входами АЦП? 0.1мкф...1мкф.
Ещё возможно неудачная разводка земли на плате. Ну и если никаких програмных хитростей нету, то всегда обудут существовать "пороговые" положения потенциометров когда 1 разряд прыгает туда-сюда при малейшей помехе.
Последний раз редактировалось YurkaM Сб фев 21, 2009 19:05:08, всего редактировалось 1 раз.

Сб фев 21, 2009 19:01:50

khomych писал(а):кстати в музыкальном магазине видел "такие же буржуйские" резюки как и на рынке но по цене 10-20 уе. за штуку, что это? мож они освящены в Ватикане??? или чем обусловлена такая цена?

:)))
То они бабки так зарабатывают на музыкантах, переписывая цены друг у друга из прайсов.
Китайские за 50 центов, в большинстве своем не хуже.

Сб фев 21, 2009 21:32:37

насчет кандеров неполучится. в моем случае (только шесть переменников, у каждого свой канал АЦП) еще можно. я ставил на 100 нф уже ощущалось смазывания, вялость ручки а в ллучае ,когда на каждом канале будут висеть несколько резюков, что будет "смешивание" значение, т.к. они поочередно будут активироваться. насчет матриц, принцип я понял, пока еще не паял.сначала надо бы резюков прикупить.

кстати, кто нибудь таки сделал переходник MIDI<>USB я видел такие темы на форуме, но так и не понял чем всё закончилось....

Сб фев 21, 2009 21:40:55

что посоветуете насчет программной фильтрации значений?

допустим

char old[6], num; //old[num] - предыдущее значение с num каналаАЦП

.......
.......


adc_data=ADCH; //загружаю старший байт значения
if(old[num]/2 != adc_data/2) //отослать токо при изменении положения
{
SendMidi(0,num,adc_data/2); мне надо токо 7 бит данных и обязательно чтоб старший бит был равен 0
ClrDisp();
ShowDigit(adc_data/2);
//delay_ms(20);
}
old[num]=adc_data;



даже если переписать SendMidi(0,num,adc_data/4*2); то все равно проскакивает "фон"

Вс фев 22, 2009 19:05:07

с фильтрацией пока подождем

подкиньте идеи как переменники в матрицу соединить (6 х 3)....
походу их придется "развязать" через диоды. как учитывать падение напруги на диодах? величина падения на разных диодах одинаковая или колеблется (плюс минус проценты).

чтото склоняюсь к теме что на каждые 6 резюков ставить свой контроллер и потом их синхронизировать..... идея конешн бредовая но я уже теряюсь...

Вс фев 22, 2009 21:24:11

khomych писал(а):подкиньте идеи как переменники в матрицу соединить (6 х 3)....

Ну сам же давал выше схему на PICе. Там и есть матрица. С диодами, естественно. Чтобы из за падения на диоде не терять верхний кусочек диапазона, делай опору АЦП (Vref) чуть меньше, чем выходные напряжения с портов.

Вс фев 22, 2009 23:00:22

меня в той схеме смущают резисторы 620К. не многовато ли. слишком уж сжимают диапазон изменения напруги на входах АЦП. а насчет Vref если на ножку Vref подать напряжение питания через такой же диод? должно компенсировать падение.... пока еще не пробывал

мож автор ошибся в обозначении и надо резисторы (постоянные) по 620 Ом ???????

Пн фев 23, 2009 09:40:49

Ничё они не сужают. Как раз, чем больше их номинал, тем меньше они влияют на напряжение, снимаемое с движка R4. Но вообще, конечно 620к - многовато, будет ловить помехи всякие. Эти резисторы должны быть где-то на порядок больше, чем R4. ИМХО нормально будет 47к при R4=4.7к.

ps: Может ты не так рассмотрел картинку - там левый вывод R4 идёт на землю.

Вт фев 24, 2009 04:19:51

еще раз по поводу схемы

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

Вт фев 24, 2009 09:39:10

khomych писал(а):по хоту все левые ноги на землю вешать надо...

Именно так. Левые ноги на землю, правые - на линии столбцов (Col), а движки через диоды - на линии строк (Row). И кроме того все строки подтянуты к земле резисторами.

Вт фев 24, 2009 11:07:47

а, ну да. я сразу и не признал землю. сливается с row8 смахивает на опечатку.

разживусь нормальными резюками. буду юзать

Ср фев 25, 2009 14:48:18

добавил нехитрую программную фильтрацию и стокилоомные резюки "перестали фонить". но их пока шесть штук. в матрицу буду завязывать 5-10 кОм-ные

Ср фев 25, 2009 21:57:41

делать было нечего.... собрал матрице из 100 КОм, подчистил прогу и на удивление нормально работает. матрица 6х3. фона почти нет. иногдапоявляется на проблемых резисторах, по ходу из за хренового контакта.

сначала поставил нагрузочные постоянники по 1МОм но толку от них небыло. решил прикольнуться и поставил вместо них по 51 КОм (в два раза меньше чем переменники). получил интересную зависимость угол поворота/напряжение: почти на всем диапазоне что то вроде линейной а в самом конце резко прыгает вверх. мне так удобней в виде специфики той проги, в которой работаю.

проблему падения напруги на диодах решил вводом в прогу коэффициента (1.124). продывал на вход Vref через диод давать напряжение питания, но все равно чуть не хватило, а с более "сложным" делителем извращаться не стал.

паны на будущее:
сменить переменники на нормальные по 5-10 КОм
добавить также фейдеры (позунковые)
понатыкать кнопок
вернуть устройству дисплей
и всунуть все в другой (побольше) корпус
выпить коньяка

Чт фев 26, 2009 06:20:25

Кстати вот тут интересный ресурс по миди, довольно известный
http://www.ucapps.de/

Чт фев 26, 2009 08:47:59

спасибо. я там уже был. как я понял, там все проекты на PIC ах..

Вс мар 01, 2009 16:22:53

заэкранировал входные линии. ситуация улучшилась, но все же переменники в 100 КОм это многовато..
Ответить