Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите разобраться
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
another_one
Здравствуйте.


Нужна помощь в в следующей ситуации:

Есть схема состоящая тз 3-х dip-переключателей(в приложении).

С их контактов считавется их состояния миркоконтроллером - ch1, ch2, ch3, ch4.

ctrl1, ctrl2, ctrl3 служат для активации переключателя микроконтроллером.

Входы микроконтроллера, считывающие сигнал с контактов внутренне не подтянуьы к питанию, подтяжка внешняя - R5. R6, R7, R8.

Продлема в том что при замыкании одновремнно какиз либо 2-х контактов одного из переключателя, такое состояние удерживается на ch1, ch2, ch3, ch4. вне щависимости какой из переключателей активирован.
Исключением являются переключатели с разоменутыми контактами.

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

Заранее благодарен
mempfis_
Алгоритм сканирования вы писали?
Может там накосячили?
или гдето в схеме контакты перепутали. На кз проверяли?

Я подобную клавиатуру сканировал-бы так:
1 CTRL1, CTRL2, CTRL3 - входы

2 CTRL1 - выход с лог 0, задержка на несколько сотен мкС (для установления уровней)
3 Считываем состояние кнопок S1

4 CTRL1 - вход, CTRL2 - выход с лог 0, задержка на несколько сотен мкС (для установления уровней)
5 Считываем состояние кнопок S2

6 CTRL2 - вход, CTRL3 - выход с лог 0, задержка на несколько сотен мкС (для установления уровней)
7 Считываем состояние кнопок S3

8 CTRL3 - вход. Далее по кругу начиная с п. 2
another_one
Цитата(mempfis_ @ Oct 22 2009, 10:56) *
Я подобную клавиатуру сканировал-бы так:


Спасибо большое за поддержку.

К сожалению алгоритм у меня точно такой же sad.gif
mempfis_
Тогда поясните вот это:
Цитата
Продлема в том что при замыкании одновремнно какиз либо 2-х контактов одного из переключателя, такое состояние удерживается на ch1, ch2, ch3, ch4. вне щависимости какой из переключателей активирован.

Какое состояние (всё в 0 или 1, или какая-то фиксированная комбинация)?

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

И это поясните.

Если железо полностью соответствует схеме и вы сканируете по приведённому выше алгоритму но ничего не получается тогда приведите код программы сканирования.
SSerge
Цитата(another_one @ Oct 22 2009, 11:35) *
Продлема в том что при замыкании одновремнно какиз либо 2-х контактов одного из переключателя, такое состояние удерживается на ch1, ch2, ch3, ch4. вне щависимости какой из переключателей активирован.

Ну, так и должно быть.
При этом соответствующие линии ch1 .. ch4 оказываются соединены друг с другом через контакты этих переключателей. Что бы Вы ни делали, они всё равно останутся соединёнными и на них будет одинаковое напряжение.
Подобные схемы можно применять для опроса клавиатуры, да и то, по той же самой причине возникает неопределённость когда невозможно отличить одновременное нажатие одной пары кнопок от нажатия другой пары.
Одно из решений - включить по одному диоду последовательно с каждым переключателем.
another_one
Цитата(SSerge @ Oct 22 2009, 14:09) *
Одно из решений - включить по одному диоду последовательно с каждым переключателем.


это вот так?
SSerge
Нет, каждому переключателю нужен свой диод.
Т.е. в этой схеме их должно быть 12 штук.
another_one
Цитата(SSerge @ Oct 22 2009, 14:54) *
Нет, каждому переключателю нужен свой диод.
Т.е. в этой схеме их должно быть 12 штук.

так?
SSerge
Так.
Другой, сравнительно экономичный вариант, грузить состояние всех переключателей в сдвиговый регистр и потом считывать его последовательно. Микросхемы нынче дешевле диодов. smile.gif
xemul
Цитата(another_one @ Oct 22 2009, 09:35) *
Вроде схема простая, в программе все очевидно, но никак не могу найти причину этой пробдемы.

Если линии CTRLx могут работать входами, и если добавите на них резисторы притяжки к +5 (R9-R11 не нужны), то можно обойтись и без диодов.
Запускаете бегущий 0 по всем CHx и CTRLx (одна линия - выход, остальные - входы), по получившейся матрице достаточно несложно вычисляется любое количество замкнутых переключателей.
another_one
Цитата(xemul @ Oct 22 2009, 20:10) *
Если линии CTRLx могут работать входами, и если добавите на них резисторы притяжки к +5 (R9-R11 не нужны), то можно обойтись и без диодов.
Запускаете бегущий 0 по всем CHx и CTRLx (одна линия - выход, остальные - входы), по получившейся матрице достаточно несложно вычисляется любое количество замкнутых переключателей.

Спасибо большое - наиболее подходящая схема, поскольку все изменения необходимо вносить в плату существующей, не совсем рабочей схемы.
XVR
Если возможно одновременное включение более 2х выключателей, то без диодов не обойтись при любом способе сканирования.
another_one
Цитата(xemul @ Oct 22 2009, 20:10) *
Если линии CTRLx могут работать входами, и если добавите на них резисторы притяжки к +5 (R9-R11 не нужны), то можно обойтись и без диодов.
Запускаете бегущий 0 по всем CHx и CTRLx (одна линия - выход, остальные - входы), по получившейся матрице достаточно несложно вычисляется любое количество замкнутых переключателей.

К сожалению эта схема не работает, поскольку присутствует перетекание тока с соседних замнкнутых контактов переключателей - в итоге один и тот же потенциал sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.