roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 07:10

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 12:11 
Не в сети
Аватара пользователя

Зарегистрирован: 11 окт 2009, 20:59
Сообщения: 62
Откуда: москва, королёв
Здравствуйте!
Есть необходимость иметь много датчиков контакта(фактически клавиши), но в ардуине их не так уж и много(мне нужно как минимум в 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 с вычисленным значением - попробовать виртуально за контачить разные кнопки и какое значение будет ближе, такие кнопки и нажаты. пока я думаю так реализовать определение нажатия кнопки.

_________________
пей саке пока горячо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 14:38 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 16:05 
Не в сети
Аватара пользователя

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

_________________
пей саке пока горячо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 16:16 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
бюджет какой?
на два пина можно повесить PS/2 клавиатуру (MISO MOSI)

Добавлено спустя 1 минуту 12 секунд:
если один пин - можно поставить МК-прокладку за 50 рублей, сделать там матрицу и в путь. На Ардуину передавать по уарту/спи/и2ц/итд

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 16:40 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
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, например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 26 май 2011, 17:59 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
А где-то проскакивала мысль про "отладка по одному проводу. Если как там, но наоборот?

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

Добавлено спустя 45 минут 54 секунды:
Прикинул в симуляторе - на регистр лучше две ноги выделять.

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 27 май 2011, 16:42 
Не в сети
Аватара пользователя

Зарегистрирован: 11 окт 2009, 20:59
Сообщения: 62
Откуда: москва, королёв
Добавлено спустя 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, контакт замкнулся... или не так?

_________________
пей саке пока горячо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 27 май 2011, 17:52 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
Тогда придется тоже считать. Если замкнуты две кнопки - то напряжение будет складываться. то есть, грубо, кнопка 1 дает на выходе АЦП .1 вольт
- 2 - .2 вольт
- 3 - .4 вольт
Одновременное нажатие 1 и 3 даст .5 вольт
Одновременное нажатие 2 и 3 даст .6 вольт

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

Добавлено спустя 1 минуту 40 секунд:
Считаем сопротивления нажатых кнопок как ппараллельный резистор, получаем значение коэффициента делителя.

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 28 май 2011, 09:34 
Не в сети
Аватара пользователя

Зарегистрирован: 11 окт 2009, 20:59
Сообщения: 62
Откуда: москва, королёв
в 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 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 28 май 2011, 10:42 
Не в сети

Зарегистрирован: 07 авг 2010, 21:29
Сообщения: 1725
Откуда: КМВ
прог. языки: C
ФИО: Андрей
ИМХО - извращение. Заводской ЦАП - те же сопротивления, переключаемые электронно. ;)
Тогда уж чем плоха шина 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

_________________
Дым, идущий из всех устройств в помещении предвещает появление электрика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 28 май 2011, 13:58 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 28 май 2011, 15:10 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Аналогавая клавиатура на 1 pin arduino
СообщениеДобавлено: 28 май 2011, 20:42 
Не в сети
Аватара пользователя

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

Тему наверное можно закрыть.

_________________
пей саке пока горячо


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 4 часа


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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO