Несколько датчиков на один вход
- Войдите на сайт для отправки комментариев
Привет.
Есть идея сделать педальную MIDI-клавиатуру на ардуине (как у органа). В качестве кнопок хочу использовать датчики Холла, т.к. простые контактные кнопки с такой механикой не прокатят. Нот на клавиатуре будет около 30-40.
Конечно, можно взять Mega и прикрепить каждый из датчиков Холла к отдельному входу, но мне кажется это излишне. Нужно придумать, как навесить по несколько датчиков на один вход. (учитывая то, что могут быть нажаты несколько кнопок)
Т.е., на аналоговом входе у нас если не ошибаюсь есть 10 бит (0..1023), значит теоретически можно направлять на аналоговый вход сигнал с 10 датчиков.
Хотелось бы для начала собрать простую схему, без АЦП, мультиплексоров и I2C, и понять хотя бы ее.
p.s. В электронике я чайник - я всего лишь программист) прошу не пинать за наивные вопросы. Гуглинг не дал особых результатов.
Т.е., на аналоговом входе у нас если не ошибаюсь есть 10 бит (0..1023), значит теоретически можно направлять на аналоговый вход сигнал с 10 датчиков.
Датчик бинарный?
Ну тогда собирайте схему R2R, а потом ловите шумы и глюки ардуиновского АЦП.
В в реальной жизни прицепить 10 бинарных датчиков на 10-пиновый ардуиновский АЦП невозможно, если не использовать таких схемотехнических решений, после которых Вам отдельная мега на каждый датчик покажет простым и дешёвым решением.
Ок, насчет 10 я загнул - там младший бит будет 0.002В. Ну 4-6 наверное можно.
Датчик не бинарный, нужно обрезать его сигнал с определенным порогом до бинарного.
R2R - я так понимаю, это вот такая схема? Единственное - на этой схеме кнопки, а у меня датчик с высоким импедансом на выходе. Не очень понятно, как привести к такой схеме. Использовать транзисторные ключи, наверное...
Погуглите "R-2R" цепочку.
Нет. R2R - не такая схема. Чего не погуглили-то? Вот пример на Electronics Workbench.
Резисторы там любые от 1К до 100К, но как можно точнее (1% или ещё лучше) и "одни строго вдвое больше других". Я обычно беру одного номинала и там, где надо удвоенный - ставлю по 2 штуки.
Кстати, вход ардуины высокоимпедансный, так что усилитель можно выбросить. И без него всё нормально будет.
А что будет если 2 ноты нажать?
Где, в R2R? там любые комбинации кнопок уникальны. Каждая кнопка отвечает за свой бит в результате. Сколько нажмёте, столько единичных битов и получите. Только с учётом шума АЦП лучше на все 10 бит не забиваться. А Вы скачайте мою схему, запустите в EWB и понажимайте.
Евгений, благодарю, только я не могу запустить EWB - сижу на линуксе. Вы не могли бы скинуть картинку?
Здесь на пять разрядов. Т.е. любое сочетание кнопок (а всего их 32) даст на выходе уникальное напряжение. Причём шаг напряжений будет равномерным.
Только знаете чего я не понимаю. Вот Вы говорите, что не хотите использовать ЦАП. Почему непонятно, но в итоге вместо готовой микросхемы ЦАП будете самодельный ЦАП колхозить. В чём выгода-то?
Разве тут нужен ЦАП?
Я имел в виду, что хочу построить схему, используя только резисторы/транзисторы и подать это все на встроенный ардуиновский АЦП.
Разве тут нужен ЦАП?
Я имел в виду, что хочу построить схему, используя только резисторы/транзисторы и подать это все на встроенный ардуиновский АЦП.
Если у Вас есть несколько битовых сигналов (0 и 1) и Вы хотите сделать из них аналоговый сигнал, то Вам разумеется, нужен ЦАП. А уж сделаете Вы его из резисторов, транзисторов или там ещё из чего, какая разница?
Кстати, на схеме в предыдущем посте изображён классический ЦАП из резисторов. Это именно ЦАП - эта схема рассматривается у Хилла и Хоровица в главе о ЦАПах.
Потому мне и кажется странной Ваш подход:
1. Имеем N-битный цифровой сигнал
2. Преобразовываем его в аналоговый при помощи ЦАП
3. Подаём на ардуиновский АЦП и преобразовываем обратно в цифровой
4. Используем цифровой сигнал.
Вам не кажется. что пункты 2 и 3 лишние?
Я понимаю, у Вас нет столько пинов, но почему не взять дополнительную ATMega328 (80 рублей), или ардуино Нано, завести на неё все N датчиков через цифровые пины, а она уже результат может передать основному контроллеру через SPI, I2C, да хоть OneWire, если пины экономить надо.
Реализацию любого музыкального инструмента наверняка проще всего организовать на таймерах, (собственно иначе и не представляю как) соответственно от шумов по АЦП избавляться придется обязательно, оверсэмплинг и децимация конечно существенно поможет, но срежет всё быстродействие, ИМХО.
40 клавиш можно организовать как матрицу 5х8 например, т.е. например можно сканировать 8 линий данных, подачей питания выбираем 1 из 5 столбцов датчиков (строб).
Так не проще?