![]() |
|
![]() |
#51 | |
Senior Member
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
к некому проводящему обьекту(супер заковыристой формы) - это конечно здорово. Только непрактично и нереально. 1) Присоединенная емкость зависит не только и не столько от места и силы прикосновения а от: влажности воздуха, температуры, типа кожи человека. Разберем по пунктам. Влажность, понятно, меняется - калибровка Температура - опять калибровка. На самом деле это 2 стороны одной медали. Тип кожи - это очень важно. У одного моего знакомого очень толстая кожа на пальцах. И сухая. Это какая то индивидуальная особенность. Он может брать в руки провода под напряжением 220В, крепко их сжимать и ничего при этом не чувствует. Я измерял ток при этом - сотни микроампер максимум. Такая кожа - не редкость. 2) Помехи. Они непредсказуемы. Попробуйте включить рядом с девайсом любой рекламный неон. Будете удивлены. Там 1000В. И по мере износа катодов зажигание смещается к максимуму. На излете жизни трубки имеем импульсы размахом все 1000В, и не только при зажигании. Уровень шума - неимоверный. 50Гц 1/10000 от него. 3) Всякая мелочь. Типа окисление поверхности от пота (он очень ядовит в этом плане) Рекордные уровни статики (защита не выдержит) и т.п. Все эти факторы сведут на нет все хитрые подсчеты. Лично я считаю, что этот принцип вытягивает только информацию нажато/нет и не более. И на грани возможностей. Сенсоры хороши для кнопок ЖКИ монитора. Там их немного, можно влепить свой контроллер, добавляет некую "прикольность" девайсу. Но не более. Что касается "струны" - на мой взгляд нет лучше аналогового сигнала, чем цифровой сигнал. Можно расположить в линейку несколько сотен сенсоров и регистрировать прикосновение к каждому. Конечно придется оставить емкостной принцип. Допустим по своему контроллеру на каждую "струну" Тогда можно выявить и рисунок нажатий и силу (по числу смежных срабатываний) и т.п. А хитрость лучше проявить в синтезе звука "струны" Это будет реально интересно. |
|
![]() |
![]() |
![]() |
#52 |
Senior Member
Регистрация: 10.06.2008
Возраст: 58
Сообщений: 2,837
Вес репутации: 3992/110 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#53 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Как и упоминалось выше, для генерации плавноизменяющегося тона всё сильно усложняется. Значит нужно изменить начальные условия. Генерация звука с плавным изменением тона проще получится, если на входе будет плавно изменяющийся аналоговый сигнал. Если забыть про ёмкость, то это может быть резистивная дорожка, источник света со шторкой, и т.д.
Например, две параллельных дорожки, одна резистивная, другая - общий провод. В зависимости от места замыкания пальцем будет изменяться падение напряжения на резистивной дорожке. Для многоканального звука дорожки чередуются - "струна", общий, "струна", общий... и т.д. Среди пиков 16 серии есть чипы с 13 аналоговыми входами. Можно представить себе такой инструмент с 13ю струнами... Это скорее арфа получается... И математика и программа сильно упрощаются. Только надо продумать, как увязать строй "струн" с разметкой ладов на таком "грифе"...
__________________
ну и что? |
![]() |
![]() |
![]() |
#54 | |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]() Цитата:
![]() Стал разбираться, как ввести в программу конфигурацию этого МК... Оказалось, что параметры конфигурации - в самых разных местах, и уверенности что всё обнаружил, нет. Попробовал найти HI-TECH PICC STD, по самым популярным местам - казус, сахара, - облом. Короче, нужна помощь автора. Прошу хекс, пригодный для прошивки в PIC16F877. Ещё есть по схеме вопросы - в программе действительно, есть выбор инструмента, но связать с конкретным пином непонятно как... Прошу пояснить. Попытался эмулировать пианино в Протеусе, чтобы понять, что к чему... Из доступных там только PIC16F88. Загрузил в него прошивку и прицепил 12 цепей raw - col с ёмкостью 10 пф, и подключаемой параллельно с помощью кнопки емкостью 200 пф. Короче - на осциллограмме ШИМ независимо от нажатия кнопки, в динамике - треск, щелчки... А перебор raw идёт...
__________________
ну и что? |
|
![]() |
![]() |
![]() |
#55 | |||
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Код:
__CONFIG (UNPROTECT & BORDIS & WDTDIS & LVPDIS & HS & DEBUGDIS); Что нужно изменить: В Init(): - настройку ADC-модуля; - отключение компаратора (если используется 877A) В const.h: добавить секцию: Код:
#ifdef _16F877 __CONFIG (UNPROTECT & BORDIS & WDTDIS & LVPDIS & HS & DEBUGDIS); #define PORTA_CONST 0x... #define TRISA_CONST 0x... #define PORTB_CONST 0x... #define TRISB_CONST 0x... #define PORTC_CONST 0x... #define TRISC_CONST 0x... #define PORTD_CONST 0x... #define TRISD_CONST 0x... #define PORTE_CONST 0x... #define TRISE_CONST 0x... #define pin_BUTTON RB0 // Сюда цепляется кнопка #define CCP_bit1 CCP1X #define CCP_bit0 CCP1Y const TColumn COLUMNS[KBD_COLUMNS] = { /* определение аналоговых входов */ }; const TRow ROWS[KBD_ROWS] = { /* определение управляющих выходов */ }; #endif Цитата:
Цитата:
|
|||
![]() |
![]() |
![]() |
#56 | |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]() Цитата:
Не сочтите за бестактность (просто такты сбоят...:-) ), но м.б возможно сделать скомпилированный проект в MPLAB (содержащий файл прошивки piano_f877.hex) без отладки на PicKit2? В настройках MPLAB легко можно выбрать такой режим.
__________________
ну и что? |
|
![]() |
![]() |
![]() |
#57 | |
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
У тебя на схеме ошибка: col4 подключен к RA4, которая не является аналоговым входом. Я переделал: col4->RA5, col5->RE0. Кнопку смены инструмента повесил на RB0. А вообще, поставить Си стоит: сейчас один проект, потом другой понадобится. Переходить на него полностью не обязательно, но иметь под рукой - желательно. |
|
![]() |
![]() |
![]() |
#58 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Спасибо! Завтра в Протеусе посмотрю, и буду шить!
Насчёт Си согласен, сам себя ругаю за консерватизм и отсталость, но не хватает духа... Ошибка дурацкая и непростительная, ведь проверял именно выбор аналоговых входов, но просмотрел... Кусаю локти... Да и вот вечер просидел в поисках на сонсиври версии STD. 45 дневную ставить не хочется, а везде только ПРО лежит...
__________________
ну и что? Последний раз редактировалось michipic; 16.04.2009 в 23:00. Причина: дополнение |
![]() |
![]() |
![]() |
#59 | |
Senior Member
Регистрация: 10.06.2008
Возраст: 58
Сообщений: 2,837
Вес репутации: 3992/110 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#60 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Загнал прошивку в Протеус. Понятно, что скорость эмуляции низкая, и на выходе звука не будет, но посмотреть кое-что можно.
Например, работу узла клавиатуры. Вот скрин осциллограммы - жёлтый это выход ССР1; следующая - col0 - аналоговый вход АЦП; две нижние - row0 и row1 цифровые выходы МК, подключенные через развязывающие диоды к col0. На row0 и row1 последовательно устанавливается лог 1 опроса монеток, а вот на принимающем аналоговом входе АЦП col0 почему-то при этом от каждого из них короткий импульс. Хотя должен быть такой же длительности , как и row0 и row1... ![]()
__________________
ну и что? |
![]() |
![]() |
![]() |
#61 | |
Senior Member
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#62 | |
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
(За то время, которое было потрачено на рисование схемы, наверное, все спаять можно было...) |
|
![]() |
![]() |
![]() |
#63 | |
Senior Member
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
В следующей версии схемы новый модуль. Квадратный, с ручками, которые тянуться к ряду кнопочек внизу. И надписью - "tester" ![]() Явно не хватает на схеме..... Матрица наступает. |
|
![]() |
![]() |
![]() |
#64 |
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
![]() |
#65 |
Senior Member
Регистрация: 11.10.2007
Возраст: 57
Сообщений: 462
Вес репутации: 228/51 ![]() ![]() ![]() |
![]()
Хм... Я сдуру показал видео жене (она - учитель в музшколе) - и она пристала - надо ей 6 штук.. каждый пик баксов 5...
![]() Такая востребованность... Может, есть смысл в серию ? Последний раз редактировалось urry; 17.04.2009 в 21:08. Причина: ну вот... |
![]() |
![]() |
![]() |
#66 | |
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
![]() Представляю картину: лет через 10 приду в филармонию на концерт великого пианиста, а на сцене персонал судорожно приклеивает перед концертом монетки на клавиши рояля, т.к. маэстро играть иначе не могёт. |
|
![]() |
![]() |
![]() |
#67 | |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
tester:
Цитата:
Но прошивку для 877 зашил, собираю макетку на 1 октаву...
__________________
ну и что? |
|
![]() |
![]() |
![]() |
#68 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Интересно, как крепить монеты? Паять? Или сверлить и притягивать винтом? А может клеить токопроводящим клеем? Как-то все эти варианты не очень радуют...
И ещё - если не все выводы row задействованы (пины висят в воздухе) - тогда при подаче лог 1 на такой вывод на всех аналоговых входах будет 0. Соответственно, программа будет считать, что на этих входах есть касание...На выходе будет поли-како-фония... Похоже, что я её и слышу на своём макете с 1 октавой...
__________________
ну и что? |
![]() |
![]() |
![]() |
#69 | ||
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#70 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Несколько непонятная вещь получилась...При включении питания в наушниках непрерывный тон. При нажатиях на кнопку изменения инструмента тембр тона меняется. При нажатии на клавиатуру - тон не изменяется.
На выходах row импульсы есть, на входы col они приходят, но емкости тела недостаточно для изменения высоты импульса. При просмотре осциллографом на всех входах col импульсы полной высоты, значит клавиатура подключена правильно и имеющаяся ёмкость не приводит к срабатыванию входа. Если к входу col подключать емкость, то начиная с 33н амплитуда импульса на входе снижается на 50%. При 100н от импульса остается около 10%. Но звуковой тон при этом не изменяется. Получается, что программа не воспринимает управляющий сигнал по входу col... Чтобы высота импульса уменьшалась от ёмкости тела нужно увеличить сопротивление резисторов на выходах row - это понятно. Но как заставить контроллер реагировать на нажатие?
__________________
ну и что? |
![]() |
![]() |
![]() |
#71 | |
Senior Member
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Или канал АЦП выбирается неправильно. tester же вслепую код смастерил. Слепить прогу из того, что в его статье - 10 мин. делов Кстати 877/877A как раз там вроде есть отличия. |
|
![]() |
![]() |
![]() |
#72 | |
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Еще: при подаче питания ПИК автоматически устанавливает пороги срабытывания для каждого аналогового входа. В момент подачи питания нельзя прикасаться к клавишам (и к аналоговым входам), т.к. пороги окажутся установленными неправильно из-за вносимой пальцами емкости. Насчет измерения осциллографом: сам осциллограф имеет свою емкость, которая будет скашивать фронты. Измерять можно только с включенным делителем 1:10. Проверь еще раз: на аналоговых входан не должно ничего висеть, кроме самой матрицы. |
|
![]() |
![]() |
![]() |
#73 |
Senior Member
Регистрация: 26.02.2007
Адрес: Москва
Сообщений: 182
Вес репутации: 151/49 ![]() ![]() |
![]()
Поправьте, если я неправ. ИМХО, смысл касания пальцем клавиатуры состоит в уменьшении амплитуды импульса опроса на аналоговом входе. АЦП определяет это уменьщение, и формируется флаг касания клавиатуры.
Тогда можно отвлечься от сложных ёмкостных эффектов, установив обычную кнопку на замыкание аналогового входа на общий провод (через резистор, офкоз... ). Так вот, в моём случае изменение тона даже с такой кнопкой так и не происходит. Вот бы на свободный вывод вывести какую-нибудь лог. 1 при установке флага нажатия кнопки. Кстати, внесение в пианино нескольких светодиодов, управляемых в сответствии с музыкой, добавило бы привлекательности этому устройству. Для детей.
__________________
ну и что? |
![]() |
![]() |
![]() |
#74 | |
Senior Member
|
![]() Цитата:
А то уже светодиоды какие то если даже 1 кнопка не пашет. Попорядку надо, от простого к сложному. ![]() |
|
![]() |
![]() |
![]() |
#75 | |||
Super Moderator
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
1. Насколько я понял, в твою схему нужно внести 30н, чтобы кривая сигнала скосилась. Еще раз повторю, что это очень много. Сам посчитай, при 100К и 30н Тау будет равна 1*10^5 * 30*10^-9 = 30* 10^-4 = 3 мс (миллисекунды), а время определения угла наклона в программе порядка 6-7 мкс (микросекунд) (+50 мкс на АЦП измерение; в течение этого времени емкость будет продолжать заряжаться, но уже не повлияет на результат). Что-то не так. По симптомам похоже, что не те резисторы стоят. Какие номиналы ты поставил? 2. Еще раз проверь, что все аналоговые входы, участвующие в измерении подключены, а не болтаются в воздухе. То же самое проверь с управляющими выходами. 3. Перепроверь содержимое массивов COLS и ROWS с фактическими подключениями. 4. Когда все это будет проверено, переходи к настройки АЦП. По настройке АЦП воспользуйся советом IgorV: убери все лишнее, оставь только измерения. Измеренные данные через UART - в комп и смотри, как изменяются показания АЦП при прикосновении пальцем. Добейся, чтобы это работало. Проще было бы достать F88, запустить на нем, а потом уже переносить программу на F877(a). Цитата:
P.S. Я хоть искренне желаю, чтобы у всех, кто попытается повторить устройство, оно бы заработало, но я физически не смогу каждому переписать программу под ПИК, который у него имеется, и тем более не смогу помочь отладить ее на расстоянии. Результат даст кропотливая программистская работа и усидчивость. |
|||
![]() |
![]() |
![]() |
Метки |
osa, rtos, полифония, сенсорная кнопка |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
Опции просмотра | |
|
|