roboforum.ru

Технический форум по робототехнике.

 

Аналогавая клавиатура на 1 pin arduino

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

Аналогавая клавиатура на 1 pin arduino

Сообщение FantasyOR » 26 май 2011, 12:11

Здравствуйте!
Есть необходимость иметь много датчиков контакта(фактически клавиши), но в ардуине их не так уж и много(мне нужно как минимум в 2 раза больше) поэтому возник вопрос: сделать схему типа этойИзображение
идею я увидел тут http://pic-avr.narod.ru/opisanie.htm и немного подкорректировал под себя(4 кнопки это пример).
Вот у меня смутные сомнения по поводу одновременного нажатия нескольких кнопок в этой схеме. помогите пожалуйста, я программист, а не электронщик. Физику конечно учил, и даже в институте была электроника...
При нажатии 1 кнопки понятно: напряжение в точке А0 должно меняться пропорционально R1, R1+R2, R1+R2+R3, R1+R2+R3+R4.
Но при одновременном нажатии 2х: например K2 и К3, то в А0 все равно будет R1+R2(R3 шунтируется), а при замыкании К1 - отследить нажатие остальных нельзя? из закона Ома я понимаю, что ток (Амперы) увеличится, но напряжение в точке А0 останется как при замыкании одной только К1.
вероятней всего можно, я понимаю, что лучший ответ будет учебник по физике(вероятней всего даже школьный класс так 7-8) но лучше вкратце напишите где я ошибся в схеме или в рассуждениях. Зачем тут конденсатор? защита от дребезга контактов?
Спасибо.

Добавлено спустя 7 минут 34 секунды:
так же знаю, что при последовательном соединении резисторов увеличивается (R1+R2), а при параллельном уменьшается (R1+R2)/(R1*R2). в программе я так полагаю нужно будет сравнивать значение с pin'a с вычисленным значением - попробовать виртуально за контачить разные кнопки и какое значение будет ближе, такие кнопки и нажаты. пока я думаю так реализовать определение нажатия кнопки.
пей саке пока горячо
Аватара пользователя
FantasyOR
 
Сообщения: 62
Зарегистрирован: 11 окт 2009, 20:59
Откуда: москва, королёв

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение HarryStar » 26 май 2011, 14:38

Можно сделать просто матрицу например 8 х 8, получится 64 кнопки на 16-ти входах мк.
Аватара пользователя
HarryStar
 
Сообщения: 973
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение FantasyOR » 26 май 2011, 16:05

все же это не то 16 входов, считайте это все что есть на ардуине, а мне еще туда надо кучу серв прилепить. мне нужно около 20 кнопок даже 4*5 это 9 пинов, очень много более чем уверен, что можно справиться 1, но вот как тут уже нужна Ваша помощь
пей саке пока горячо
Аватара пользователя
FantasyOR
 
Сообщения: 62
Зарегистрирован: 11 окт 2009, 20:59
Откуда: москва, королёв

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение dccharacter » 26 май 2011, 16:16

бюджет какой?
на два пина можно повесить PS/2 клавиатуру (MISO MOSI)

Добавлено спустя 1 минуту 12 секунд:
если один пин - можно поставить МК-прокладку за 50 рублей, сделать там матрицу и в путь. На Ардуину передавать по уарту/спи/и2ц/итд
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4862
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение Michael_K » 26 май 2011, 16:40

FantasyOR писал(а):где я ошибся в схеме или в рассуждениях.

Вот здесь:
FantasyOR писал(а):но напряжение в точке А0 останется как при замыкании одной только К1.

Если вы замыкаете:
K1 то напряжение на входе АЦП будет = V*(R5+R4+R3+R2)/(R1+R2+R3+R4+R5) = 4 вольта
K2 - V*(R5+R4+R3)/(R1+R2+R3+R4+R5) = 3 вольта
K3 - V*(R5+R4)/(R1+R2+R3+R4+R5) = 2 вольта
K1 и К2 одновременно - V*(R5+R4+R3)/(R1+R3+R4+R5) = 3.75 вольта
K1 и К3 одновременно - V*(R5+R4)/(R1+R4+R5) = 3.33 вольта (состояние К2 при этом ни на что не влияет)


Но вообще, решение не слишком красивое. Тогда уж смотрите в сторону R2R, например.
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение RootAdmin » 26 май 2011, 17:59

А где-то проскакивала мысль про "отладка по одному проводу. Если как там, но наоборот?

Добавлено спустя 3 минуты 27 секунд:
В смысле - сдвиговый регистр, длительным низким (высоким) уровнем на ноге его сбраcывать через RC цепочку, короткими низкими (высокими) импульсами тактировать, после такта читать его выход, подключенный через резистор этой же ногой?

Добавлено спустя 45 минут 54 секунды:
Прикинул в симуляторе - на регистр лучше две ноги выделять.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1674
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение FantasyOR » 27 май 2011, 16:42

Добавлено спустя 1 час 52 минуты 52 секунды:[/color][/size]
нашел вот такую компоненту, ЦАП называется вот ее даташит http://www.google.ru/url?sa=t&source=web&cd=1&ved=0CBgQFjAA&url=http%3A%2F%2Fwww.alfarzpp.lv%2Frus%2Fsc%2F572pa2.pdf&rct=j&q=%D0%9A%D0%A0572%D0%9F%D0%902%D0%90&ei=kZrfTdi5GMuWOsP4lPsJ&usg=AFQjCNFh-U61bQNWFEcJ790aNfmlaVJ9VA&cad=rjt

интересно,можно ли на его цифровые входы повесить мои контакты: нажали кнопку, пошел ток - на цифровом входе считай 1, контакт замкнулся... или не так?
пей саке пока горячо
Аватара пользователя
FantasyOR
 
Сообщения: 62
Зарегистрирован: 11 окт 2009, 20:59
Откуда: москва, королёв

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение RootAdmin » 27 май 2011, 17:52

Тогда придется тоже считать. Если замкнуты две кнопки - то напряжение будет складываться. то есть, грубо, кнопка 1 дает на выходе АЦП .1 вольт
- 2 - .2 вольт
- 3 - .4 вольт
Одновременное нажатие 1 и 3 даст .5 вольт
Одновременное нажатие 2 и 3 даст .6 вольт

Добавлено спустя 3 минуты 47 секунд:
Но! Проще все кнопки, через разные (в 2 раза) резисторы подключить к питанию, как правильно говорил Michael_K.
То есть
питание - 1ком - кнопка - вход.
питание - 2 ком - кнопка - вход
питание - 4 ком - кнопка - вход
питание - 8 ком - кнопка - вход
Вход на землю через 500 ом. Например.
Тот же самый ЦАП и однозначно определяется несколько нажатых кнопок.

Добавлено спустя 1 минуту 40 секунд:
Считаем сопротивления нажатых кнопок как ппараллельный резистор, получаем значение коэффициента делителя.
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1674
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение FantasyOR » 28 май 2011, 09:34

в 2 раза резисторы повышать... это если вешать 10 контактов на 1 пин, то будет 2^10 = 1024/ не сильно ли большая разница между самым маленьком и самым большим, считайте на 3 порядка. поэтому я и решил использовать заводской ЦАП, там сопротивления подобраны с достаточной точностью.

"Считаем сопротивления нажатых кнопок как параллельный резистор" это сложно, нет конечно я знаю формулу, но для МК много действий: сложения, умножения, деление. А ведь чтоб узнать комбинацию, нужно посчитать все возможные комбинации(их просто куча - сумма С(из n по k ), где n=10, а k=0..10. это 1024 сочетания, многовато правда) и сравнить с входным напряжением. тут более подойдет схема шунтирования сопротивлений, сопротивления изменяются как веса в битовой маске:
Изображение
R1 = 1 kOm
R2 = 2*R1 = 2 kOm
R3 = 2*R2 = 4 kOm
...
R10= 1024 kOm
по этой схеме общее сопротивление должно считаться гораздо проще: только сумма.
хотя остаётся та же проблема с огромной разницей в сопротивлениях... наверное все же нужен заводской ЦАП.
Последний раз редактировалось FantasyOR 28 май 2011, 10:32, всего редактировалось 1 раз.
пей саке пока горячо
Аватара пользователя
FantasyOR
 
Сообщения: 62
Зарегистрирован: 11 окт 2009, 20:59
Откуда: москва, королёв

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение RootAdmin » 28 май 2011, 10:42

ИМХО - извращение. Заводской ЦАП - те же сопротивления, переключаемые электронно. ;)
Тогда уж чем плоха шина 1-wire? Одна нога - и сколько угодно кнопок-реле-светодиодов.
http://www.ibutton.ru/news/8/
Заказать: http://www.terraelectronica.ru/catalog.php?ID=725
Выглядит куда логичней и не надо использовать ненадежные аналоговые сигналы.

Добавлено спустя 56 секунд:
ЗЫ. Поправить бы название темы, а то аналогАвый как-то не звучит.

Добавлено спустя 1 минуту 26 секунд:
И если использовать ЦАП-АЦП на 10 разрядов, то тогда малейшая помеха-пичок - и все, младший разряд неверен.

Добавлено спустя 16 минут 21 секунду:
Сложение и деление в случае с резисторами зачем?
Массив значений напряжений для каждого разряда - храним.
x = измеренное значение
цикл для кнопок b, от старшего разряда к младшему.
If x>(уровень напряжения ТЕКУЩЕГО разряда) then
b(ТЕКУЩИЙ) = 1
x-=(уровень напряжения ТЕКУЩЕГО разряда)
end if
next
Дым, идущий из всех устройств в помещении предвещает появление электрика.
RootAdmin
 
Сообщения: 1674
Зарегистрирован: 07 авг 2010, 21:29
Откуда: КМВ
прог. языки: C
ФИО: Андрей

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение boez » 28 май 2011, 13:58

Первая ссылка с гугля про расширитель клавиатурный на сдвиговом регистре. http://easyelectronics.ru/podklyuchenie ... strax.html. Если опрашивать быстро не надо, то можно хоть сто кнопок повесить, и нет проблем с аналоговыми сигналами. И все сто кнопок могут нажиматься в разных комбинациях.
Вообще дихальт молодец, хорошие у него на сайте статьи, много сам пишет, и статьи других авторов помещает.
boez
 
Сообщения: 1974
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение HarryStar » 28 май 2011, 15:10

Супер ссылка. Большое спасибо. Как раз мне подходит решение со сдвиговыми регистрами. Мне кажется лучше решения на 1м МК не придумать. Правда не 1 провод, а 3(4 с землей) - но мне подойдет.
Аватара пользователя
HarryStar
 
Сообщения: 973
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Аналогавая клавиатура на 1 pin arduino

Сообщение FantasyOR » 28 май 2011, 20:42

Да согласен ссылка отличная, большое спасибо, время опроса у меня не критично.

Тему наверное можно закрыть.
пей саке пока горячо
Аватара пользователя
FantasyOR
 
Сообщения: 62
Зарегистрирован: 11 окт 2009, 20:59
Откуда: москва, королёв


Вернуться в Идеи

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Mail.ru counter