Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Своими руками

Своими руками Завершенные и текущие проекты, хард & софт

Ответ
 
Опции темы Опции просмотра
Старый 22.04.2009, 22:22   #76
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Цитата:
2. Еще раз проверь, что все аналоговые входы, участвующие в измерении подключены, а не болтаются в воздухе. То же самое проверь с управляющими выходами.
Вот здесь и был глюк. Обнаружилось, что несколько из них всё же болтаются, но не в воздухе. У меня в макетке на каждый аналоговый вход col приходили импульсы опроса только с двух цифровых выходов row, а не с 6, как в оригинале. Прграмма считала, что одновременно нажато 24 кнопки и тихо гудела... Выбросил эту макетку клавиатуры на 1 октаву, сделал новую макетку с 36 контактами (3 октавы) и увеличил резисторы до 100 кОм и всё завелось.
Даже сыграл песенку "Чижик-пыжик, ты паял это пианино?!"
Огромная благодарность tester за помощь и проявленное терпение, а также всем, кто поддерживал интерес к этой теме.
Остался вопрос из любопытства: - в программе заложено 8 каналов звука, а по факту используется 6 и в этой конфигурации больше не может выводиться. Зачем 2 лишних?
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 22.04.2009, 22:29   #77
Avtofaer
Junior Member
 
Регистрация: 06.11.2008
Адрес: Москва
Сообщений: 18
Вес репутации: 100/42
Avtofaer will become famous soon enoughAvtofaer will become famous soon enough
По умолчанию Re: Пианино

Остался вопрос из любопытства: - в программе заложено 8 каналов звука, а по факту используется 6 и в этой конфигурации больше не может выводиться. Зачем 2 лишних?

Для того чтобы сделать 64 клавиши. я делаю 48(пока), хочу басовые ноты.
Avtofaer вне форума   Ответить с цитированием
Старый 22.04.2009, 22:32   #78
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от michipic Посмотреть сообщение
Вот здесь и был глюк.
...
Огромная благодарность tester за помощь и проявленное терпение, а также всем, кто поддерживал интерес к этой теме.

Остался вопрос из любопытства: - в программе заложено 8 каналов звука, а по факту используется 6 и в этой конфигурации больше не может выводиться. Зачем 2 лишних?
Поздравляю! "Ларчик просто открывался".
В программе используются 8 каналов, и по факту тоже 8. На видео есть два места, где играются все 8 каналов (оба во фрагментах токкаты Баха). Так что ничего лишнего нет.

Никакой связи между количеством звуковых каналов и количеством октав нет.
tester вне форума   Ответить с цитированием
Старый 22.04.2009, 22:36   #79
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от Avtofaer Посмотреть сообщение
Остался вопрос из любопытства: - в программе заложено 8 каналов звука, а по факту используется 6 и в этой конфигурации больше не может выводиться. Зачем 2 лишних?

Для того чтобы сделать 64 клавиши. я делаю 48(пока), хочу басовые ноты.
Обрати внимание, что массив частот (в файле freqs.c) содержит только 45 констант. Т.е. для 48 клавиш не хватает еще 3-х, и если их не добавить, то программа будет виснуть. Раз ты хочешь бассовые ноты, то добавь в начало таблицы еще 12 элементов (нижнюю октаву); получить их очень просто: частота одной и той же ноты в соседних октавах отличается ровно в 2 раза.
tester вне форума   Ответить с цитированием
Старый 26.04.2009, 20:55   #80
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Небольшой опыт юзания этого инструмента показал, что было бы очень удобно расположить кнопку выбора инструмента на клавиатуру. И там же установить ещё и регулятор громкости - ползунковый переменный резистор. Тогда во время исполнения музыки можно оперативно менять установки.

Ещё хотелось бы улучшить качество звука. На мой слух в нём много гармоник, лишних тонов. Какие можно порекомендовать способы "очистки" ШИМ-звука без сильного усложнения схемы?

Обнаружился такой эффект - при касании монетки тон получался прерывистый с непериодическими паузами около 0,5 с. Экспериментами было установлено, что если взяться за общий провод инструмента - паузы не появляются. Возможная причина такого эффекта - сетевая наводка (этот момент обсуждался в статье). Как с этим бороться, чтобы не пришлось подключаться к общему проводу?

ИМХО, этот забавный инструмент заслуживает собственного названия.
Хочу предложить варианты:
1 Монетино
2 Манипьяно (Moneypiano)
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 26.04.2009, 22:31   #81
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от michipic
Ещё хотелось бы улучшить качество звука. На мой слух в нём много гармоник, лишних тонов. Какие можно порекомендовать способы "очистки" ШИМ-звука без сильного усложнения схемы?
Смотря о каких гармониках идет речь. Программно улучшить качество звука можно:
- увеличив частоту ШИМ;
- повысив разрешение ШИМ;
- увеличив частоту семплирования;
- увеличив количество выборок в массивах оцифрованных периодов SAMPLE (сейчас их 64, а этого маловато).
Цитата:
Обнаружился такой эффект - при касании монетки тон получался прерывистый с непериодическими паузами около 0,5 с. Экспериментами было установлено, что если взяться за общий провод инструмента - паузы не появляются. Возможная причина такого эффекта - сетевая наводка (этот момент обсуждался в статье). Как с этим бороться, чтобы не пришлось подключаться к общему проводу?
Резисторы какого номинала стоят в матрице? (Кстати, в третий раз уже спрашиваю). Попробуй повысить порог страбатывания (в функции ReadRow). Там есть место, где формируется порог:
Код:
        if (!m)                         // Если значение порога еще не установлено,
        {                               // то формируем его как 88% от ADRESH
            m = a >> 3;
            KBD.Porogs[col] = a - m;
        }
Здесь a (текущее значение ADC) делится на 8. Попробуй поделить на 16.
tester вне форума   Ответить с цитированием
Старый 26.04.2009, 23:04   #82
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Цитата:
Резисторы какого номинала стоят в матрице? (Кстати, в третий раз уже спрашиваю).
R = 91 кОм
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 02.05.2009, 09:59   #83
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Для опробывания предложений по изменению прошивки нужно пересобрать проект. Но проект не собирается - MPLAB 8.30 выдаёт сообщение, что она не знает, почему проект не собирается...
Менял плагин, версию STD PICC, проверял настройки путей.... Подскажите, кто может!
"...Clean: Deleting intermediary and output files.
Clean: Deleted file "D:\OSA\osa.cce".

Clean: Deleted file "D:\PIC\pian877a\pian877a.mcs".
Clean: Done.
Executing: "D:\Program Files\HI-TECH Software\PICC\std\9.60\bin\picc.exe" -C -E"osa.cce" "osa.c" -O"osa.obj" -I"D:\OSA" -I"D:\PIC\pian877a" -Zg9 -O -ASMLIST -Q -MPLAB -16F877A

Error[141] : An error, warning or message was generated, but no description is available
Halting build on first failure as requested.
BUILD FAILED: Sat May 02 09:45:15 2009...."
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 02.05.2009, 10:09   #84
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от michipic Посмотреть сообщение
Error[141] : An error, warning or message was generated, but no description is available
Halting build on first failure as requested.
BUILD FAILED: Sat May 02 09:45:15 2009...."
1. Попробуй удали из папки проекта и папки C:\OSA все файлы, созданные при копиляции (всякие объектники, p1, pre и пр.), в общем все, что не относится к исходникам и файлам проекта.

2. Попробуй пересоздать проект.

3. Если п.2 не поможет, см. п1... (шутка ) Прикрепи тогда проект -посмотрим, проблема в проекте или в компьютере.
tester вне форума   Ответить с цитированием
Старый 02.05.2009, 11:17   #85
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

А нет там таких файлов. Есть только с расширением *.cce - это
откатные, их удаление естественно, ничего не даёт. Проект взял чисто PIANO, без изменений, так что выкладывать его нет смысла, он указан в топике.
Попробовал из папки OSA\TEST запустить проект - те же сообщения. Скачал с Казуса проект без OSA, опять та же ошибка при компиляции.
Всё это приводит к заключению, что почему-то Си-компайлер PICC не работает.
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 02.05.2009, 16:26   #86
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Получилось скомпилировать проект. Оказалось, что в рег-файле тоже путь прописан. Нашёл, поправил, поехало...
Ушёл менять константы в прошивке...
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 03.05.2009, 11:05   #87
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Цитата:
Здесь a (текущее значение ADC) делится на 8. Попробуй поделить на 16.
Разделил, паузы исчезли. Спасибо за простой и эффективный совет.
Измерил ток питания - всего 8 мА. Перевёл на батарейное питание, так получается компактнее и меньше наводок. Плюс вариантом добавил питание от USB.
Теперь попытался по статье разобраться как можно увеличить частоту выборок и/или параметры ШИМ для улучшения звука. Но постоянные напоминания "...нужно вместиться в 50 мкс (250 тактов)..." дают понять, что перспектив в этом направлении нет. И что делать? Переходить на МК с более высокой тактовой частотой?
А ещё хотелось бы запустить процесс управления тремя (RGB) светодиодами. Там ведь не требуется много времени: включить/выключить светодиод записью бита в порт надо 3-5 тактов, только нужно привязать этот процесс к событию в основной программе. Например, к коду нажатой кнопки клавиатуры.
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 03.05.2009, 13:18   #88
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от michipic Посмотреть сообщение
Теперь попытался по статье разобраться как можно увеличить частоту выборок и/или параметры ШИМ для улучшения звука. Но постоянные напоминания "...нужно вместиться в 50 мкс (250 тактов)..." дают понять, что перспектив в этом направлении нет. И что делать? Переходить на МК с более высокой тактовой частотой?
Смотря какой цели ты добиваешься. У меня были две цели: поупражняться в возможностях 16-го ПИКа и продемонстрировать RTOS. Если твоя цель - сделать музыкальный инструмент, то переходи на другой ПИК (dsPIC), это самый толковый путь:
- добавляй огибающую сигналу;
- делай стерео;
- увеличивай частоту и разрядность ШИМ;
- увеличивай частоту семплирования;
- увеличивай количество точек в оцифрованном периоде (64 - мало, звук получается глуховато-металлический);
- и пр.

Оставаясь на 16-м с 5 MIPS, можно увеличить частоту семплирования, только уменьшив количество каналов или переписав все на ассемблере (но и тут тоже нужно будет попотеть с оптимизацией).
tester вне форума   Ответить с цитированием
Старый 14.06.2009, 10:33   #89
michipic
Senior Member
 
Аватар для michipic
 
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49
michipic has a spectacular aura aboutmichipic has a spectacular aura about
По умолчанию Re: Пианино

Цитата:
Ещё хотелось бы улучшить качество звука. На мой слух в нём много гармоник, лишних тонов.
Просто заменил кварц. Убрал "спичку" и поставил стеклянный, советских времён, с военной приёмкой. Звук улучшился значительно. Наверное, подбором емкости конденсаторов можно получить желаемое качество...
Значит, всё же гармоники присутствовали...
Кто-нибудь ещё достроил свою версию этого инструмента? Есть ли варианты его модернизации?
__________________
ну и что?
michipic вне форума   Ответить с цитированием
Старый 16.12.2009, 07:58   #90
TarAP
Junior Member
 
Регистрация: 06.02.2008
Адрес: Саянск
Возраст: 46
Сообщений: 5
Вес репутации: 102/0
TarAP will become famous soon enoughTarAP will become famous soon enough
По умолчанию Re: Пианино

Хочу увеличить количество "клавиш" до 48.
Цитата:
Сообщение от tester Посмотреть сообщение
если меняем количество выводов (row или col), то, соответственно, меняем значение констант KBD_ROWS или KBD_COLUMNS и правим массивы ROWS или COLUMNS в файле const.h
При увеличении KBD_ROWS даже на единицу линкер выдает ошибку: Error [593] ; . can't find 0x1 words (0x1 withtotal) for psect "intsave" in segment "BANK0".
В Си совсем новичек. И как вынести часть кода из "переполненого" сегмента памяти не знаю.
Контроллер: PIC16F690.
Компилятор: HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3
Исходный проект скомпилировал нормально.
Что и где нужно подправить?

Последний раз редактировалось TarAP; 16.12.2009 в 08:04. Причина: Дополнил
TarAP вне форума   Ответить с цитированием
Старый 16.12.2009, 08:08   #91
SSH
Banned
 
Регистрация: 27.02.2007
Адрес: Красноярск
Возраст: 49
Сообщений: 2,387
Вес репутации: 950/0
SSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to behold
По умолчанию Re: Пианино

Цитата:
Сообщение от TarAP Посмотреть сообщение
Хочу увеличить количество "клавиш" до 48.

При увеличении KBD_ROWS даже на единицу линкер выдает ошибку: Error [593] ; . can't find 0x1 words (0x1 withtotal) for psect "intsave" in segment "BANK0".
В Си совсем новичек. И как вынести часть кода из "переполненого" сегмента памяти не знаю.
Контроллер: PIC16F690.
Компилятор: HI-TECH PICC STD COMPILER (Microchip PICmicro) V9.60PL3
Исходный проект скомпилировал нормально.
Что и где нужно подправить?
Используя OSAcfg_Tool.exe, или ручками в OSAcfg.h, перенести переменные OS в другие банки.
SSH вне форума   Ответить с цитированием
Старый 16.12.2009, 11:45   #92
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от TarAP Посмотреть сообщение
Хочу увеличить количество "клавиш" до 48.

При увеличении KBD_ROWS даже на единицу линкер выдает ошибку: Error [593] ; . can't find 0x1 words (0x1 withtotal) for psect "intsave" in segment "BANK0". И как вынести часть кода из "переполненого" сегмента памяти не знаю.
Там не в коде дело, а в RAM (компилятор пишет про BANK0). Нужно перераспределить переменные по банкам. Вариантов немного, но они есть. Например, в функции ReadRow (из файла keyboard.c) перенести статический массив s_Changes в первый банк:

static bank1 char s_Changes[KBD_SIZE];


Цитата:
Сообщение от SSH
Используя OSAcfg_Tool.exe, или ручками в OSAcfg.h, перенести переменные OS в другие банки.
Этот вариант, к сожалению, уже не поможет, т.к. системные переменные уже размещены во втором банке. (В нулевом сидят только 4 неперемещаемых байта)
tester вне форума   Ответить с цитированием
Старый 16.12.2009, 15:14   #93
TarAP
Junior Member
 
Регистрация: 06.02.2008
Адрес: Саянск
Возраст: 46
Сообщений: 5
Вес репутации: 102/0
TarAP will become famous soon enoughTarAP will become famous soon enough
По умолчанию Re: Пианино

Спасибо. Получилось сделать в железе на PIC16F690: 8 цифровых на 6 аналоговых портов.
TarAP вне форума   Ответить с цитированием
Старый 21.05.2012, 22:54   #94
edunya
Junior Member
 
Регистрация: 24.12.2007
Сообщений: 15
Вес репутации: 100/45
edunya will become famous soon enoughedunya will become famous soon enough
По умолчанию Re: Пианино

Здравствуйте! Понимаю, что тема уже давняя, но, как мне кажется, насущная. Сделал я это устройство на монетках, но захотелось на клавишах. Есть старая одноголосная пианинка как раз на 3 октавы. Все кнопки сидят на "корпусе" и замыкают на него соответствующий канал. Я думаю сделать так: к месту соединения монеток припаять один вывод конденсатора (не знаю пока какого номинала), а другой замыкать при помощи клавиши на "корпус". Как думаете, будет система работать таким образом? Спасибо, Вам, уважаемый автор (не имею чести знать Вашего имени) за этот уникальны проект. Дочка с ним делает свои первые шаги в музицировании, но хотелось бы, что б она клавиши почувствовала.
edunya вне форума   Ответить с цитированием
Старый 22.05.2012, 11:22   #95
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Пианино

Цитата:
Сообщение от edunya Посмотреть сообщение
Как думаете, будет система работать таким образом?
Будет, только зачем так сложно? Просто замыкайте вывод на землю, без всяких кондеров.

ПС. Не за что. Зовут Виктор.
tester вне форума   Ответить с цитированием
Старый 22.05.2012, 21:13   #96
edunya
Junior Member
 
Регистрация: 24.12.2007
Сообщений: 15
Вес репутации: 100/45
edunya will become famous soon enoughedunya will become famous soon enough
По умолчанию Re: Пианино

Цитата:
Сообщение от tester Посмотреть сообщение
Будет, только зачем так сложно? Просто замыкайте вывод на землю, без всяких кондеров.

ПС. Не за что. Зовут Виктор.
Спасибо за ответ, Виктор. У Вас в описании где-то указано, что вход устройства срабатывает при емкости 15-100пФ относительно "земли". Вот я и решил сымитировать емкость прикосновения обычными кондерами относительно минуса схемы.
То есть Вы утверждаете, что достаточно просто замыкать место присоединения монетки к минусу схемы?
edunya вне форума   Ответить с цитированием
Старый 23.05.2012, 20:16   #97
b-612
Senior Member
 
Регистрация: 12.01.2009
Сообщений: 276
Вес репутации: 243/44
b-612 has a spectacular aura aboutb-612 has a spectacular aura aboutb-612 has a spectacular aura about
По умолчанию Re: Пианино

я собирал
срабатывает хоть отдельными нотами хоть аккордами отлично
Единственное, что аккорды прекращают звучание с небольшой задержкой, но это вполне приемлемо.
b-612 вне форума   Ответить с цитированием
Ответ

Метки
osa, rtos, полифония, сенсорная кнопка


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 19:27.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot