Автор Тема: Проект MiniMoog. Часть 3  (Прочитано 46080 раз)

0 Пользователей и 1 Гость просматривают эту тему.

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #40 : Октября 13, 2007, 12:57:06 pm »
>12 бит для управления VCO слишкм мало даже в диапазоне 4 октав.16 бит >уже не дешево да и не просто. ...

Почему? По миди предается то только 8бит на ноту да 14бит на питч-бенд. итого 15бит. у нас- 16, хоть и ШИМ.

Вот думаюд я - делать програмный ШИМ (частота его будет не больше 500кГц)
или еще как извращаться с теми тремя каналами, что есть?

Напомню, что на дешевеньком и распространеньеньком atmega8 2канала 16 бит и 1 - восемь.

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

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #41 : Октября 13, 2007, 05:17:23 pm »
Таксь, написал программный ШИМ, несушая около 200кГц получилась при 8Мгц процессоре, Процессор можно взять на 16МГц и тогда несущая 400кГц получится.

Человек начинает ощущать 10мс зажержки,  тоесть 100Гц, в принципе должно хватить.

Исходник в аттаче - может скажете чего путного

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #42 : Октября 13, 2007, 07:01:08 pm »
VARI-MU:
 При CV 0-5В и 12 битах получаем ступеньку 1.2 мВ. Не хватает ?

BSVi: Возьмем Atmega48/88 - стоит меньше Mega8 и имеет четыре 8-bit ШИМ
и два 16-bit.

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #43 : Октября 13, 2007, 07:38:12 pm »
Diz
Оно, то - да, но я так понимаю, нам нужны три 16битных ШИМа

В лдюбом случае уже написал програмный ШИМ :)
« Последнее редактирование: Октября 13, 2007, 07:38:39 pm от BSVi »

VARI-MU

  • Гость
Проект MiniMoog. Часть 3
« Ответ #44 : Октября 14, 2007, 12:45:41 am »
Цитировать
VARI-MU:
 При CV 0-5В и 12 битах получаем ступеньку 1.2 мВ. Не хватает?
 Практика показала, что не хватает.
 Считаем сверху вниз:
 5В - 2,5В        одна октава
 2.5В - 1.25В   вторая октава
 1.25 - 0.622   третья октава
 0.622 - 0.311 четвертая октава.
 Нижняя октава занимает диапазон 311 милливольт,
                    разделим   грубо  на    12  нот в октаве
                        получим примерно = 25 милливольт на на ноту
                                разделим   на  1.2  получим 5% частоты ноты
 На нижних нотах с учетом экспоненты дело еще хуже.
 Представьте ,что звучит нота ЛЯ = 220 Герц и ваш генератор с 5% ошибкой ,
 т.е. 220 разделить на 20 =   11 Герц.Представляете такой унисон  с биениями  в 11 Герц?    13 разрядов дадут 6.5 Герц ,
                    14 разрядов          3.5  Герц,
                    15 разрядов          1.7  Герц,
                    16 разрядов          0.85 Герц  , что уже вроде приемлемо.
                     Все  IMHO   :unsure:  

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #45 : Октября 14, 2007, 01:44:56 am »
>Считаем сверху вниз:
>5В - 2,5В одна октава
>2.5В - 1.25В вторая октава
>1.25 - 0.622 третья октава
>0.622 - 0.311 четвертая октава.

Дак ведь на октаву ведб вольт приходится, тоесть
одна октава - 10-9вольт, вторая 9-8, 7-6 итд... Это если логарифмический преобразователь не убирать, конечно...

Medved

  • Гость
Проект MiniMoog. Часть 3
« Ответ #46 : Октября 14, 2007, 02:23:17 am »
Так сделайте логарифическую зависимость. Будет постоянная относительная погрешность. Упс, Сергей уже ответил)))
« Последнее редактирование: Октября 14, 2007, 02:24:03 am от Medved »

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #47 : Октября 14, 2007, 03:38:30 am »
Тут получается делема - во первых, логарифматор - пойди-ка, настрой-ка, а во вторых если делать полностью цифру, то пожно потерять некоторые "вкусности", если делать цифра+аналог - все хорошо, но например другой синт может не иметь логарифматора.

Что я предлагаю - я уже написал программный ШИМ. На скока-хочешь каналов, все 16-битные. В контроллере есть два встроенных 16-битных ШИМа, Что имеем.

Встроенные шимы могут работать с частотой несущей 244Гц, что для нас классно и вопросов нет. Програмный шим может дать несущую в 7Гц всего, что явно недостаточно для быстро-изменяющихся сигналов. (это все, если точность будет 16битная, если понизить до 10 бит, то програмная станет 100Гц, что хорошо)

Всего как я понял нужно 4 канала ЦАП -
1) Нота, грубое значение (но нужно 16бит для возможности реализации логарифма)

2) Питч бенд, точное значение, в протоколе дается 14битами, тоесть нужен такой-же ЦАП (14битный программный выдает 30Гц)

3) Велосити - в протоколе передается 7бит, 16 бит нужно для вывода по таблице

4) Модуляция - передается 7 бит, вот их наверняка линейно можно и выводить, без никакой таблицы.

Варианты решения -
1) Сделать смесь программной и аппаратной ШИМ. Аппаратная понадобится только одна,  тогда
Нота и Велосити - аппаратно 16бит,  Модуляция - аппаратно 8 бит, Питч Бенд - програмно, 16 бит (задержка 33мс)

2) Програмно считать сумму нота+модуляция, тогда все шимы аппаратные

3) Выбрать более дорогой и/или более сложно программируемы проц.

4) Взять два проца, да и сделать сеть :) -чиста пой подход агррр :)))

5) Прифигацить внешние АЦП (16бит ацп - удовольствие нехилое)

6) Поствить демультиплексоры и цепочки r-2r (точность такого метода неизвестна :( )

Вроде и все. Между прочим в той статье, что обсуждалась с Пиком, бло всего два ЦАП'а и оба восьмибитные.

Еще - про 16бит точности с односторонней платой пожете забыть. Минимум 2 слоя, по нормальному - 4.

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #48 : Октября 14, 2007, 05:51:35 am »
BSVI, а чем не нравится подход с использованием двух 8-битных
ШИМ-выходов одного таймера и внешним суммированием (я писал выше) ? Получаем фактически два поддиапазона - грубый и хммм... нежный :-)

В той же mega48/88 можно будет сделать четыре 16-битных ШИМа:
два тормозных честно-аппаратных, и два вот таких быстрых и гибридных.

Питч бенд не особо критичен, на самом деле - у колеса питча
такая погрешность ... уууу. Если считать, что ход колеса 180 градусов,
то 14-битная точность составит 0.011 градуса - попробуй отлови :-)

И еще, давайте прикинем, фильтр какого порядка потребуется
для подавления остатков несущей ШИМа 244 Гц на 96 дБ (для
трубуемых честных 16 бит) :-) Частота среза, ну, скажем, 10 Гц :-)
« Последнее редактирование: Октября 14, 2007, 05:56:22 am от Diz »

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #49 : Октября 14, 2007, 11:52:27 am »
Diz
Во, тиы во всем прав!

Два 8 битных вывода - а попробуй-ка их так проссумировать - нехалява, однако... ООчень вероятно в точке соединения будет нелинейность.

В той же mega48/88...
Можно, ты пробовал соединять два шима?
Если да, то ноу проблемс....

>то 14-битная точность составит 0.011 градуса - попробуй отлови :-)
Тоже правильно. Но передается-то 14 битов, эффективных намерное первые 7-8 %)

>Частота среза, ну, скажем, 10 Гц :-)
И в этом ты прав... Фронт этого фильтра затянется е-мае, как...

Итого, форумчане!!! Выкладывайте реалистичные требования!

Кстате!! Есть еще широко-доступный ширпотребный TDA1543
можно на ней сделать 2канала, а два - на ШИМ. Можно поставить 2 таких и будет 4 канала. Но это ухе повышение цены (одна такая микруха стоит как 2 проца)

А с помошью ШИМ'а чесных 16бит не достичь при хорошей скорости, Diz прав.
« Последнее редактирование: Октября 14, 2007, 11:53:30 am от BSVi »

ilya

  • Гость
Проект MiniMoog. Часть 3
« Ответ #50 : Октября 14, 2007, 02:52:39 pm »
В Minimoog линейная зависимость. 1 вольт/окт.

VARI-MU

  • Гость
Проект MiniMoog. Часть 3
« Ответ #51 : Октября 15, 2007, 09:58:14 am »
Цитировать
В Minimoog линейная зависимость. 1 вольт/окт.
  Ну вот , с этого все встает на свои места  :D
 Теперь и шести разрядов хватит с запасом
 Начинаем обсуждать прецизионный экспоненциальный преобразователь.  :)
 Я традиционно предлагаю ламповое решение: на лампе  ЭМ-11 - " Тетрод электрометрический для логарифмирования и усиления тока ,изменяющегося в широких пределах"  :D / . Кстати , в каком-то из ранних синтезаторов так и было сделано.

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #52 : Октября 16, 2007, 12:39:02 am »
Соединять два ШИМа пробовал, но о точности ничего сказать не могу.
Использовал в речевом информаторе, там точность была не критична.

Аудио-ЦАП не вариант, они затачиваются под другое - точность хромает.

Что думаю: использовать один готовый хороший ЦАП, за ним мультиплексор
и сколько угодно каналов sample&hold (УВХ). Что-то вроде DAC7611,
это очень приятный 12-битный одноканальный ЦАП, интерфейс SPI,
встроенная опора, Vout = 0..4.095 В. Стоит порядка 150-180 р.

Возможно, что-то подобное 16-разрядное.


PS И на выходе экспоненциальный преобразователь на лампе :-)
И схему термокомпенсации на микроконтроллере - измеряем температуру
лампы и корректируем напряжение накала. По табличке. ШИМом :-)

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #53 : Октября 16, 2007, 10:44:36 pm »
Что-то вроде вот этого (см. небрежно-рукописный файл ниже):
 

VARI-MU

  • Гость
Проект MiniMoog. Часть 3
« Ответ #54 : Октября 17, 2007, 01:17:19 am »
Цитировать
Что-то вроде вот этого (см. небрежно-рукописный файл ниже):
 Вроде все разумно . Можно принять за основу. IMHO.

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #55 : Октября 17, 2007, 10:49:32 am »
Да, все ничего так, тока АЦП дорогой. ,У нас стоит 500рур Решение помойму классное и логичное.

А dac6711 вообще в украину не возят - вот крупнейший поставщик
http://imrad.com.ua/search.shtml?qs=dac6711&query=any

Другое дело TDA1543 - доступен всем  :) Правда -70дБ шума+искажений (0.018%)

Какие еще ЦАП предложите?
« Последнее редактирование: Октября 17, 2007, 11:01:30 am от BSVi »

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #56 : Октября 17, 2007, 11:50:04 am »
BSVi, я ошибся на бумажке - DAC7611, а не DAC6711. По твоей ссылке
он есть, стоит 48 грн. (сколько это в руб, интересно ?).
ЦАП реально хороший, пользовал.

DG408 очень неплохой и дешевый аналоговый мультиплексор.
По твоей ссылке он тоже есть, <10 грн.

Пара моментов по схеме: предполагается, что выходы обновляются
в цикле, с интервалом ~100 мкс (?). Тогда утечкой конденсаторов
можно пренебречь. Обновление вывода делается через промежуточный
выход, 'Dummy'. Переключились на него, загнали нужное значение
в ЦАП, подождали, переключились на нужный выход (напр. Velo).

Bend center - постоянно выводится среднее значение бенда, 2048 при
наших 12 битах. Тогда независимо от усиления ОУ после ЦАПа,
имеем биполярное значение бенда после диф. усилителя.

Glide - не знаю, можно сделать в аналоге, можно и в софте.

После ЦАПа нужен хороший операционник, способный работать  на
большую емкостную нагрузку. Есть кандидаты ?
 

BSVi

  • Гость
Проект MiniMoog. Часть 3
« Ответ #57 : Октября 17, 2007, 05:57:35 pm »
48 грн - 250руб - дороговато.

Можно цап заменить на две штуки 561ИР2 = CD4015A с R-2R цепочками, хоть и позвпрошлый век, но микруши эти найдут даже в новобобруйске. Можно организовать цап на второй меге, мега стоит 8грн (цап- 48грн) и мега есть на каждом углу. Недостаток - нужно прогать два контроллера, что не очень то и большой недостаток. Хотя пожди. У меги8 21юзабельная для нас ножка (кварц нужен обязательно) 12 ножек на ЦАП, одна на миди (отправлять сообщения нам не нужно) осталось 8 ног. 4 низ них - на мультиплексор, 4 осталось на выбор канала/индикацию. Еще можно на меге16, ATmega8535, ATmega8515 все три стоят меньше 15грн и на них ножно сделать полную фцнкциональность девайса.


DG408 - угу, юзали, тока в данном применении можно и
176КТ1 = CD4016, 561КТ3 = CD4066A, 1561КТ3 = CD4066B все они достаточно хороши.

Тут жеж главное не просто сделать, а сделать так, чтобы повторяемость была максимальная. Так-что цап можно сделать как-нибуть типа два двоич

Вот например меги 48/88 у нас есть, но обе в TQFP32, в дипе нету. Тут половина народа запаять их не сможет, а остальные испугаются и просто не станут и пытаться...
« Последнее редактирование: Октября 17, 2007, 06:08:13 pm от BSVi »

Diz

  • Гость
Проект MiniMoog. Часть 3
« Ответ #58 : Октября 17, 2007, 07:13:30 pm »
300р. и больше за какую-нибудь лампу не жалко, а за хороший ЦАП жалко ?
:-)

Мое мнение - устройство единичное, плюс-минус десять баксов погоды не
сделают. Зато получаем гарантированные параметры и минимум геморроя.

R2R ЦАП потребует хороших точных резисторов.
Логические мультиплексоры - тоже не вижу смысла экономить 20 рублей.
Характеристики хуже, нужно преобразование логических уровней (еще один
чип), CD4051, CD4066 склонны к защелкиванию при подаче питания.

Повторяемость - если воспринимать как 'собрать из того, что можно купить
в любой лавке', то да, согласен. А если как 'повторяемость от изделия
к изделию', то совсем наоборот.

Насчет проца - можно любой ставить, не принципиально.
Лично для меня TQFP с большим шагом большой плюс :-)

Впрочем, если общественность хочет low-fi вариант, то можно подумать в
эту сторону.

diyfactory

  • Гость
Проект MiniMoog. Часть 3
« Ответ #59 : Октября 17, 2007, 08:01:08 pm »
Лоуфай вариант поддерживаю, но также присоединяюсь что 250 руб за цап не жалко. Важнее действительно повторяемость в том смысле что человек без особых навыков (как то паяние смд и проч) смог сделать даже без понимания что он делает. То есть вытравил, запаял, прошил и готово.  :D