|
Организация входов МК с возможностью программной подтяжки к обоим лог. уровням |
|
|
|
Jan 2 2012, 08:37
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Alt.F4 @ Jan 2 2012, 09:50)  P.S. Пример: к входу сиги можно подключать датчик багажника, на котором при открытии появляется GND, когда он закрыт - провод болтается в воздухе. И на этот же вход можно подключать такой же датчик, но с активным уровнем +12В, перед этим сохранив в сиге соответсвующие настройки. Вот такая постановка вопроса уже понятна. А на первое сообщение Слесарь ответил верно, каков вопрос - таков и ответ. По этому вопросу: я бы от всех входов свел резисторы подтяжки в одну точку, которую бы коммутировал парой транисторов то к земле, то к питанию. Контроллером считывал бы состояние входа при обоих вариантах подтяжки и по двум значениям принимал бы решение - висит в воздухе/замкнуто на землю/замкнуто на плюс. А дальше уже, как написано выше, по сохраненной установке принимал бы решение - какой из этих результатов должен вызывать срабатывание.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jan 2 2012, 11:23
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
В бытность работы в автосервисе - способов схемной реализации таких вещей - вагон и две-три маленьких тележки. Цитата Если юзать делитель а потом на АЦП, то он все равно физически подтянут к земле. Не существует в природе проводов ни к чему не привязанных. Как класс. Особенно в автосигнализациях. В вашем предполагаемом случае с АЦП - просто ставят одинаковую подтяжку сверху и снизу. Тогда легко отличить состояние Земля, Напряжение Аккумулятора, Обрыв. (Это чисто модель для объяснения. Реализация чуть сложнее из-за того, что АЦП имеют рабочее напряжение существенно меньше 12 вольт).
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jan 2 2012, 12:08
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Цитата AVR Т.е. абстрактный, но AVR. Ибо авров - как фашистов под Сталинградом. Тогда текст выше. Ничуть не сомневаюсь, что кто-то опишет более лучшее решение. Но мое решение - как иллюстрация, повод к размышлениям и пр. -- Типа и в том тексте есть определенное количество неточностей. Но смысл должен быть понятен. Если выбрать первые два резистора на порядок большие, чем третий - то все вообще становится более ясно и прозрачно. С одинаковыми - не так прозрачно и ясно. Но чем меньше первые два резистора, тем менее чувствительно все к помехам, которых будет больше, чем можно себе представить.
Сообщение отредактировал DpInRock - Jan 2 2012, 12:13
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jan 3 2012, 09:27
|

pontificator
     
Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483

|
Цитата(Alt.F4 @ Jan 2 2012, 18:20)  к входу сиги можно подключать датчик багажника, на котором при открытии появляется GND, когда он закрыт - провод болтается в воздухе. И на этот же вход можно подключать такой же датчик, но с активным уровнем +12В, перед этим сохранив в сиге соответсвующие настройки. Таким образом, вам требуется схема, способная различить три состояния входа: - вход висит в воздухе - вход притянут к земле - вход притянут к питанию В простейшем случае это можно сделать при помощи одной линии порта микропроцессора, конденсатора, нескольких резисторов и пары диодов. К порту подключите один конец резистора R1=330R, а второй конец этого резистора - к земле и питанию МК через обратно включенные диоды. Эта часть схемы обеспечивает защиту порта. Точку соединения резистора R1 и диодов обозначим "точка А". Между точкой А и землею включим конденсатор C1 емкостью, скажем, 0.1 мкФ. Между точкой А и внешним входом (точка "Вх") включим резистор R2=10к. Для считывания состояния входа проделываем следующее: 1) Настраиваем порт на вывод и выводим через него лог.1. Держим лог.1 на выходе в течении времени t1, достаточного, чтобы кондер С1 зарядился xотя бы до 90% напpяжения, т.е. в течении t1 > 2.2*R1*C1 2) Настраиваем порт на вход и ждем период времени t2 достаточно большой, чтобы C1 успел разрядиться через R2 в случае, если Вх сидит на земле; t2 > 2.2*R2*C1. После этого проверяем состояние порта, и если на нем лог. 0, то делаем вывод, что вход сидит на земле. Если же на нем лог.1 - переходим к п.3. 3) Настраиваем порт на вывод и выводим через него лог.0. Держим лог.0 на выходе в течении времени t1, достаточного, чтобы кондер С1 paзрядился xотя бы до 10% напpяжения, т.е. в течении t1 > 2.2*R1*C1 4) Настраиваем порт на вход и ждем период времени t3 достаточно большой, чтобы C1 успел зaрядиться через R2 в случае, если Вх сидит на плюсе. После этого проверяем состояние порта, и если на нем лог. 1, то делаем вывод, что вход сидит на плюсе. Если же на нем лог.0, то делаем вывод, что вход висит в воздухе. Способ можно усовершенствовать, если в п.4 брать не один сампл, а несколько. Тогда по времени заряда С1 можно грубо оценить, какова величина напряжения на входе.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|