Несколько датчиков на один вход

agufranov
Offline
Зарегистрирован: 28.07.2017

Привет.

Есть идея сделать педальную MIDI-клавиатуру на ардуине (как у органа). В качестве кнопок хочу использовать датчики Холла, т.к. простые контактные кнопки с такой механикой не прокатят. Нот на клавиатуре будет около 30-40.

Конечно, можно взять Mega и прикрепить каждый из датчиков Холла к отдельному входу, но мне кажется это излишне. Нужно придумать, как навесить по несколько датчиков на один вход. (учитывая то, что могут быть нажаты несколько кнопок)

Т.е., на аналоговом входе у нас если не ошибаюсь есть 10 бит (0..1023), значит теоретически можно направлять на аналоговый вход сигнал с 10 датчиков.

Хотелось бы для начала собрать простую схему, без АЦП, мультиплексоров и I2C, и понять хотя бы ее.

p.s. В электронике я чайник - я всего лишь программист) прошу не пинать за наивные вопросы. Гуглинг не дал особых результатов.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

agufranov пишет:

Т.е., на аналоговом входе у нас если не ошибаюсь есть 10 бит (0..1023), значит теоретически можно направлять на аналоговый вход сигнал с 10 датчиков.

Датчик бинарный?

Ну тогда собирайте схему R2R, а потом ловите шумы и глюки ардуиновского АЦП.

В в реальной жизни прицепить 10 бинарных датчиков на 10-пиновый ардуиновский АЦП невозможно, если не использовать таких схемотехнических решений, после которых Вам отдельная мега на каждый датчик покажет простым и дешёвым решением.

agufranov
Offline
Зарегистрирован: 28.07.2017

Ок, насчет 10 я загнул - там младший бит будет 0.002В. Ну 4-6 наверное можно. 

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

R2R - я так понимаю, это вот такая схема? Единственное - на этой схеме кнопки, а у меня датчик с высоким импедансом на выходе. Не очень понятно, как привести к такой схеме. Использовать транзисторные ключи, наверное...

nevkon
Offline
Зарегистрирован: 20.01.2015

Погуглите "R-2R" цепочку.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Нет. R2R - не такая схема. Чего не погуглили-то? Вот пример на Electronics Workbench.

Резисторы там любые от 1К до 100К, но как можно точнее (1% или ещё лучше) и "одни строго вдвое больше других". Я обычно беру одного номинала и там, где надо удвоенный - ставлю по 2 штуки.

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

nik182
Offline
Зарегистрирован: 04.05.2015

А что будет если 2 ноты нажать?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Где, в R2R? там любые комбинации кнопок уникальны. Каждая кнопка отвечает за свой бит в результате. Сколько нажмёте, столько единичных битов и получите. Только с учётом шума АЦП лучше на все 10 бит не забиваться. А Вы скачайте мою схему, запустите в EWB и понажимайте.

agufranov
Offline
Зарегистрирован: 28.07.2017

Евгений, благодарю, только я не могу запустить EWB - сижу на линуксе. Вы не могли бы скинуть картинку?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Здесь на пять разрядов. Т.е. любое сочетание кнопок (а всего их 32) даст на выходе уникальное напряжение. Причём шаг напряжений будет равномерным.

Только знаете чего я не понимаю. Вот Вы говорите, что не хотите использовать ЦАП. Почему непонятно, но в итоге вместо готовой микросхемы ЦАП будете самодельный ЦАП колхозить. В чём выгода-то?

agufranov
Offline
Зарегистрирован: 28.07.2017

Разве тут нужен ЦАП?
Я имел в виду, что хочу построить схему, используя только резисторы/транзисторы и подать это все на встроенный ардуиновский АЦП.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

agufranov пишет:

Разве тут нужен ЦАП?
Я имел в виду, что хочу построить схему, используя только резисторы/транзисторы и подать это все на встроенный ардуиновский АЦП.

Если у Вас есть несколько битовых сигналов (0 и 1) и Вы хотите сделать из них аналоговый сигнал, то Вам разумеется, нужен ЦАП. А уж сделаете Вы его из резисторов, транзисторов или там ещё из чего, какая разница?

Кстати, на схеме в предыдущем посте изображён классический ЦАП из резисторов. Это именно ЦАП - эта схема рассматривается у Хилла и Хоровица  в главе о ЦАПах.

Потому мне и кажется странной Ваш подход:

1. Имеем N-битный цифровой сигнал
2. Преобразовываем его в аналоговый при помощи ЦАП
3. Подаём на ардуиновский АЦП и преобразовываем обратно в цифровой
4. Используем цифровой сигнал.

Вам не кажется. что пункты 2 и 3 лишние?

Я понимаю, у Вас нет столько пинов, но почему не взять дополнительную ATMega328 (80 рублей), или ардуино Нано, завести на неё все N датчиков через цифровые пины, а она уже результат может передать основному контроллеру через SPI, I2C, да хоть OneWire, если пины экономить надо.

AlexZZZ
Offline
Зарегистрирован: 22.07.2016

Реализацию любого музыкального инструмента наверняка проще всего организовать на таймерах, (собственно иначе и не представляю как) соответственно от шумов по АЦП избавляться придется обязательно, оверсэмплинг и децимация конечно существенно поможет, но срежет всё быстродействие, ИМХО.

40 клавиш можно организовать как матрицу 5х8 например, т.е. например можно сканировать 8 линий данных, подачей питания выбираем 1 из 5 столбцов датчиков (строб).

Так не проще?