Какой линейный сенсор для клавиатуры? [закрыто]

8

Я пытаюсь сделать чувствительную к скорости клавиатуру для воспроизведения музыки.

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

Громкость звука зависит от скорости нажатия клавиш в конце спуска. Я знаю, что положение может быть восстановлено от скорости, интегрируя это.

Какой самый дешевый и простой, но все же достаточно точный способ сделать это?

Я не знаю точно, что означает «достаточно точное» в контексте. Я должен проверить это.

Длина максимального смещения составляет около 2 см.

РЕДАКТИРОВАТЬ: не так, как некоторые ответы, кажется, предполагает, что громкость НЕ является функцией средней скорости клавиши.

РЕДАКТИРОВАТЬ 2: Громкость является функцией скорости молотка в момент, когда он ударяет по струне, но ключ не толкает молоток до конца своего пути. Это действительно похоже на бросание мяча в стену: мяч покидает руку в одно мгновение, прежде чем ударить по стене.

Джонас Даверио
источник
4
Вы можете использовать ИК-диод и фотодиод рядом друг с другом под клавишей, фотодиод измеряет отраженный свет. Чем ниже положение клавиши, тем больше отраженного света достигает фотодиода. Затем преобразуйте фототок в напряжение с помощью трансимпедансного усилителя. Вам придется поиграть, чтобы увидеть, какое изменение напряжения или напряжения соответствует какому объему.
Юсака
Вы думали надеть акселерометр на каждую клавишу? Интегрирование ускорения дает вам скорость, а интегрирование скорости дает вам положение. Поскольку вы имеете дело с короткими расстояниями и периодами времени, вы, вероятно, можете игнорировать небольшие ошибки смещения акселерометров.
Brhans
1
@cat Я знаком с Launchpads и до сих пор не понимаю, о чем ты говоришь. Можете ли вы быть немного более полезным?
Эллиот Олдерсон
1
Да, я считаю, что вы не правы. Сравните акселерометр за 1 доллар с отдельным механическим датчиком на каждой клавише. Подумайте о надежности с нуля движущихся частей (при условии, что вы делаете соединения правильно). Вам понадобится достаточно работоспособный микроконтроллер и небольшой опыт написания прошивки, чтобы его реализовать.
Brhans
1
@jusaca выглядит так, как будто это уже продукт на рынке: deskthority.net/wiki/Adomax_Flaretech :)
user60561

Ответы:

2

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

Этот метод может быть сделан почти произвольно точным, если ваш процессор достаточно быстр, чтобы различить изменение емкости.

Я не очень хорошо объяснил схему. Вы подключаете цифровой выход к ключу через резистор высокого значения, устанавливаете его низким, чтобы разрядить любой случайный заряд, а затем устанавливаете его высоким. Вы также подключаете цифровой вход непосредственно к клавише. Емкость будет медленно заряжаться через резистор, и вы определите время, необходимое для включения цифрового входа. Это время равно постоянной времени RC цепи.

0xDBFB7
источник
Итак, я должен был бы передать AC в этом, не так ли?
Джонас
1
@JonasDaverio Я не уверен, к чему вы подключаете ключи, но достаточно одного GPIO на ключ.
0xDBFB7
Я не уверен, как я должен измерить емкость. Одна пластина подключена к земле, а другая - к чему? Источник постоянного напряжения?
Джонас
1
Микроконтроллер Teensy LC [1] имеет 11 емкостных сенсорных входов и библиотеку C ++, что делает его таким же простым, как вызов analogReadв Arduino. [1]: pjrc.com/teensy/teensyLC.html
hoosierEE
1
@JonasDaverio извините, я не очень хорошо объяснил схему. Вы подключаете цифровой выход к ключу через резистор высокого значения, устанавливаете его низким, чтобы разрядить любой случайный заряд, а затем устанавливаете его высоким. Вы также подключаете цифровой вход непосредственно к клавише. Емкость будет медленно заряжаться через резистор, и вы определите время, необходимое для включения цифрового входа. Это время равно постоянной времени RC цепи.
0xDBFB7
16

Большинство клавиатур просто используют два контакта на клавишу, настроенные таким образом, чтобы они закрывались (или открывались) в разных положениях хода клавиши. Они оценивают скорость по времени, которое проходит между двумя событиями. Даже причудливые утяжеленные «пианистические» клавиатуры используют этот базовый метод восприятия.

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

Дэйв Твид
источник
3
Я думаю, что этот метод недостаточен. И вот почему: если я медленно нажму клавишу на половину пути, а затем быстро нажму ее до конца, звук будет громким на реальном пианино, и этот метод будет думать, что клавиша нажимается очень медленно, и, следовательно, выводить действительно тихий звук. Кроме того, если я хочу повторить ноту, мне придется полностью вернуть ключ к исходной позиции, а это совсем не то, что я бы делал на настоящем пианино.
Джонас
9
Если один контакт был в нижней части, а другой контакт был очень близко к нижней части, у вас не было бы этой проблемы.
Джордж Уайт
1
У каждого реального инструмента есть свои нюансы и ограничения. Музыканты разрабатывают методы, чтобы использовать их для музыкального эффекта. Игрок скоро научится переносить удар до конца, чтобы получить желаемый эффект.
Транзистор
1
@Transistor Да, действительно, но моя цель здесь - попытаться симулировать как можно ближе настоящее пианино. Уже есть много доступных клавиатур, но я так и не нашел такую. Хотя, возможно, есть действительно дорогой.
Джонас
1
Смысл в том, чтобы иметь миди-выход и возможность иметь больше клавиш (для микротональности), сохраняя при этом все ощущения настоящего пианино. Я знаю, что это никогда не будет достигнуто в любом случае. И я также хочу сохранить это относительно дешево, но если я не могу, я буду придерживаться обычного решения.
Джонас
9

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

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

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

Рис. 1. Клавиатурный контакт с разрывом перед замыканием обычно используется для измерения скорости.

Громкость звука зависит не только от скорости нажатия клавиш в конце спуска. ... Длина максимального смещения составляет около 2 см.

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

схематический

смоделировать эту схему

Рисунок 2. Механическое переключение.

Мне кажется, что лучше всего было бы изменить существующую педальную панель MIDI-баса в соответствии с вашими целями.


Комментарий ОП Дейву Твиду:

Я думаю, что этот метод недостаточен. И вот почему: если я медленно нажму клавишу на половину пути, а затем быстро нажму ее до конца, звук будет громким на реальном пианино, и этот метод будет думать, что клавиша нажимается очень медленно, и поэтому выводится действительно тихий звук. Кроме того, если я хочу повторить ноту, мне придется полностью вернуть ключ к исходной позиции, а это совсем не то, что я бы делал на настоящем пианино.

Вот почему я предложил активировать переключатель на последних нескольких миллиметрах хода.

транзистор
источник
Я ответил назад, почему я думаю, что этого все еще недостаточно.
Джонас
Я думаю, что вы неправильно прочитали то, что я написал. Я имел в виду «Громкость звука - это НЕ только функция скорости клавиш в конце спуска».
Джонас
Действительно, энергия зависит от скорости во время удара, который является функцией ускорения (и рывка, если вы не предполагаете постоянное ускорение). Однако уверены, что это имеет большое значение? Можете ли вы охарактеризовать особенности, которые у вас есть или вы ищете? Я не знаю, что это будет. Это может зависеть от того, какое влияние он должен оказать на алгоритм.
vect
@JonasDaverio Вы имеете в виду спуск? Цифровые пианино выполняют это с помощью третьего датчика, который срабатывает чуть выше того места, где клавиша выдвигается (и над датчиком, который издает ноту). Если клавиша не поднимается достаточно высоко, чтобы отпустить этот 3-й датчик, то при нажатии клавиши не прозвучит вторая нота, точно так же, как настоящее пианино не отпускает молот, если клавиша не поднята достаточно высоко.
DKNguyen
8

Вы должны взглянуть на аналоговые клавиатуры. Посмотрите на это видео . Это всего лишь пример концепции.

Изменить: Кроме того, если оптические переключатели не работают для вас, посмотрите на это:

введите описание изображения здесь

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

Источник:
Реддит
Имгур

Matt
источник
По-видимому, они используют пару ИК-светодиодов и фотодатчик: blog.wooting.nl/flaretech-the-optical-keyboard-switch Однако я не уверен, измеряют ли они задержку между излучением и обнаружением, или измеряют, измеряют ли они интенсивность света, который мог бы пройти через туннель.
Джонас
Я связал это только для примера аналоговой клавиатуры. Вы можете взглянуть на reddit.com/r/MechanicalKeyboards/comments/9ii6gw/… и imgur.com/gallery/ImrH7nO . Я не слишком знаком с предметом, просто пытаюсь помочь вам подтолкнуть вас в правильном направлении :)
Matt
1
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из обзора
Блэр
1
@BlairFonville Достаточно справедливо. Позвольте мне резюмировать это. Под каждой крышкой клавиатуры находится печатная катушка для печатной платы. Когда вы нажимаете кнопку, катушка измеряет изменение индуктивности, вызванное сжатием и декомпрессией пружины, поэтому вы можете получить довольно точное считывание положения переключателя.
Мэтт
7

Если важной переменной является воздействие «молотка», который вы пытаетесь эмулировать, рассмотрите пьезодатчики, которые позволяют вам измерять это напрямую. Они генерируют импульс, амплитуда которого зависит от ударного импульса.

pjc50
источник
3

Одним из вариантов могут быть датчики Холла, которые измеряют силу магнитного поля. Существуют различные типы датчиков Холла для цифрового и аналогового зондирования, вам нужен аналог, который имеет аналоговые. Например, SI7211 стоит около 0,80 долларов США.

Вам также нужен маленький магнит под каждым ключом. Когда магнит приближается к датчику, магнитное поле увеличивается, что увеличивает выходное напряжение датчика.

JPA
источник
1
Видимо, они используют его на некоторых музыкальных клавиатурах. Я думаю, что это действительно простое и хорошее решение. Я сравню затраты с решением 0xDBFB7.
Джонас
2

Вы можете рассматривать это как гибридный цифровой / аналоговый инструмент, поместив микрофоны [1] внутри клавиатуры, настроенные на звук нажатия клавиш. Сигналы от микрофонов дополняют традиционный ввод на основе переключателя, поэтому переключатель сообщает вам, какая клавиша нажата, а микрофоны - насколько громким было последнее нажатие.

2 или более микрофона по всей длине клавиатуры позволят декодировать аккорд с громкими / низкими нотами и мягкими / высокими нотами и наоборот.

[1]: я продолжаю говорить «микрофон», но я имею в виду «универсальное устройство восприятия вибрации».

hoosierEE
источник
Я полагаю, именно так работает электронная гитара. Однако в этом вопросе не упоминались какие-либо акустические части, только клавиши.
vect
0

Вы можете исследовать переменные резисторы с пружинным возвратом, потенциометры с пружинным возвратом или линейные датчики положения. Вот один пример: http://ecatalog.beisensors.com/item/linear-position-sensors/linear-position-sensor-9600-series-compact-spri/9610r3-4kl2-0

Другой возможностью может быть использование небольшого поворотного энкодера (и механическое преобразование движения линейного нажатия клавиши во вращательное движение). Датчик вращает один или несколько наборов импульсов при вращении вала. Более высокая частота пульса будет указывать на более высокую скорость прессования. Положение датчика можно отслеживать напрямую, если группы импульсов отправляются на дополнительную цифровую логику. Вот пример часть: https://www.mouser.com/ProductDetail/Bourns/PEC16-4220F-S0024?qs=6FD5PBp7ZtQte%252Bg7b%2FiMUw%3D%3D&gclid=EAIaIQobChMIrKbIjOSa4QIVCEsNCh3JAAKuEAQYAyABEgKM_fD_BwE

Nedd
источник
0

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

Предостережение: когда я был подростком (давным-давно), я долго думал, могу ли я сделать реалистичную клавиатуру дешевле, чем покупать ее. Тогда это казалось невероятным, а сейчас - еще менее вероятным. Поэтому экономически эффективным методом, вероятно, является «покупка чувствительной к скорости клавиатуры и ее разборка», что неинтересно.

abligh
источник
1
Да, я не притворяюсь, что это окажется дешевле, чем коммерческое, но я пытаюсь создать специальное расположение ключей, которых нет на рынке. Для вашего ответа, я не совсем уверен, что вы имеете в виду. Вы имеете в виду создание линейного энкодера с нуля? Я не понимаю, в чем смысл прозрачной полосы. И 3 бита кажутся немного низкими, чтобы точно кодировать позицию и определять из нее скорость.
Джонас
Линейный кодер даст вам скорость только с 2 битами (см. Ссылки) с большим разрешением (вы можете очень легко получить положение до 256-х от расстояния перемещения). Временной интервал между переходами битов серого кода позволяет получить очень точную картину скорости на разных этапах перемещения клавиши. 3-й бит дает вам точный сигнал «ударяет по струнам молотка». Я предлагал вам использовать оптический считыватель с линейным кодировщиком с собственной «лентой» - прозрачной полосой.
abligh