Приемлемы ли значения сопротивления (R1 и R2) в этой цепи?

Эта упрощенная схема предназначена для обнаружения двух концевых выключателей (которые никогда не могут быть замкнуты одновременно — по крайней мере, теоретически). Показанный вольтметр является заполнителем для подключения к аналоговому входу Arduino. Когда оба переключателя разомкнуты, как показано на схеме, контакт должен воспринимать 3V31. Замыкание SW1 дает 5 В, а замыкание SW2 дает 0 В.

Это прекрасно работает в моделировании, но меня интересует общий ток, который показывает датчик GND… Моя смутная интуиция подсказывает мне, что должна быть некоторая минимальная величина тока, чтобы ее можно было обнаружить аналого-цифровым преобразователем в Arduino. , но я нигде не смог найти (или распознать) спецификацию для этого минимума. (Напротив, широко обсуждаются характеристики максимального тока, который может потреблять контакт.)

введите описание изображения здесь

Ответы (5)

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

Когда SW2 замкнут, входной контакт соединен с землей, и вы должны прочитать 0. Это похоже на случай, когда неиспользуемый контакт заземлен, а не оставлен плавающим.

Когда SW1 замкнут, вход привязан к 5 В (либо Vcc, либо Aref), и вы должны прочитать максимальное значение (то есть все двоичные биты будут равны 1)

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

Остается рассмотреть только случай, когда оба переключателя разомкнуты. Если бы у вас не было резисторов, то входной контакт был бы плавающим. Когда вход АЦП остается плавающим, можно ожидать, что из порта будут считываться полуслучайные значения, определенно не неизменное значение 0 или MAX (все биты включены). Хотя я не рекомендую отказываться от резисторов, вы сможете обойтись без них.

Хотя это и не является явной частью вашего вопроса, более интересным случаем является то, что вы хотите обнаружить, что один из нескольких переключателей закрыт одним аналоговым входным контактом. Для разумного количества контактов, скажем, 10, это можно легко сделать с помощью резисторной лестницы ( http://en.wikipedia.org/wiki/Resistor_ladder ). Вы также можете погуглить лестницу R2-R.

Для ознакомления с тем, как это реализовано, см.: http://embedded-lab.com/blog/?p=4040 .

Кроме того, если вы хотите ощутить замыкание только одного переключателя, скорее всего, вы будете использовать цифровой контакт ввода-вывода, а не аналоговый, если он доступен. Наиболее распространенной причиной использования аналогового, а не цифрового вывода для обнаружения замыкания переключателя является то, что количество доступных цифровых выводов меньше, чем количество переключателей.

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

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

Обратите внимание, что в вашей настройке импеданс сигнала в основном равен 0, когда любой переключатель замкнут. Это параллельная комбинация двух резисторов, когда оба переключателя разомкнуты. Если бы оба резистора были 10 кОм, то полное сопротивление было бы 5 кОм. Ток покоя - это напряжение питания (очевидно, 5 В в вашем случае), деленное на сумму двух сопротивлений. Это будет 5 В / 20 кОм = 250 мкА, если оба резистора по 10 кОм.

Скорее всего, все будет работать достаточно хорошо с импедансом источника 5 кОм. Вы можете попробовать и посмотреть. Вы можете не получить ровно 1/2 шкалы с обоими разомкнутыми переключателями, но, вероятно, достаточно близко, чтобы надежно различить замыкание любого переключателя.

Аналого-цифровые преобразователи обычно имеют низкий входной импеданс, который будет параллелен вашему R2, поэтому теоретические 3,31 В могут давать другое (более низкое) значение. Например, если входное сопротивление равно 10 кОм. Ом эквивалент R2 станет 5k Ом , а показание будет 2,5В.
Если точное значение важно, вы можете использовать повторитель напряжения на узле R1/R2:

введите описание изображения здесь

Значения, которые вы используете для R1 и R2, должны подойти.

Я полагаю, что Atmels имеют входное сопротивление 100 МОм, хотя не уверен насчет импеданса.
@Majenko: Дело не во входном сопротивлении аналого-цифрового преобразователя. Будучи входом CMOS, который очень высок, как вы говорите. Вопрос в том, какой импеданс требуется для АЦП. Часто это около 10 кОм и значительно меньше для высокоскоростных аналого-цифровых преобразователей. Некоторые аналого-цифровые преобразователи могут управляться по-другому в прошивке, чтобы обеспечить более высокий импеданс источника. Я не знаю, может ли Atmel сделать это необязательным с помощью программного обеспечения Arduino.
@stevenh: Я хотел спросить раньше… Какое программное обеспечение вы используете для создания принципиальных схем, которые вы публикуете здесь?
@Kaelin - я не рисовал сам. Я нашел это в Google Images.

Значения разумны, но могут быть выше.

Каждая микросхема АЦП имеет собственную спецификацию того, насколько высокое входное сопротивление она может выдержать. Ссылка на таблицу данных для соответствующего процессора позволит нам указать вам соответствующее значение, но при отсутствии конкретного значения оно обычно находится в диапазоне от 10 до 50 тысяч, а часто и 20-30 тысяч.

Значения 22k или даже 33k, вероятно, будут хорошо работать там. Указанное максимальное значение обычно относится к удержанию постоянной ошибки из-за времени RC на уровне менее 1 бита разрешения АЦП. Поскольку вы не слишком заботитесь о разрешении, вполне вероятно, что даже резисторы 100K будут в порядке.

Мерфи говорит, что на каком-то этапе оба переключателя будут замкнуты одновременно. Он также говорит, что это произойдет, когда вы действительно очень этого не хотите.

Существует множество альтернативных схем, не рискующих вытягивать волшебный дым из блока питания и контактов переключателя. например

(1) поместите резистор 1 кОм (скажем) последовательно с каждым переключателем. Особенно при более высоких значениях резистора это будет иметь незначительное влияние на то, что вы хотите сделать.

(2) Предполагая, что переключатели могут быть подключены по желанию.

Скажите 22K V+ в точку X.
Переключите один из земли через 10k в точку X.
Переключите два из земли через 33k в точку X.

S1 S2 = 0 0 Vx = 5 В Оба разомкнуты
S1 S2 = 1 0 Vx = 5 x 10/(10+22) ~~= 1,6 В S1 замкнут
S1 S2 = 0 1 Vx ~= 3 В S2 замкнут S1 S2 = 1 1 Vx~= 1,3 В оба закрыты

Результаты только для большей ясности

5 В нет
3 В S2
1,6 В S1 1,3 В S1 + S2

Если немного подумать, можно получить еще лучший разброс.

имеет свой' Вы

Некоторые процессоры имеют дополнительные подтягивающие и понижающие напряжения на входных контактах. Если в вашем процессоре есть и то, и другое, вы можете опустить резисторы, которые вы показали, хотя было бы хорошо добавить резисторы (вероятно, 470 Ом или около того) последовательно с переключателями. Включение внутренней подтяжки процессора, ожидание момента (вероятно, где-то между несколькими микросекундами и миллисекундой или около того) и проверка состояния входа покажет, замкнут ли SW1. Включение внутреннего раскрывающегося списка, ожидание и проверка состояния входа покажет, замкнут ли SW2.

Если переключатели имеют последовательные резисторы, можно ускорить чтение, заставив процессор на короткое время перевести каждый контакт в высокий уровень после включения внутренних подтяжек и на короткое время в низкий уровень после включения внутренних подтягиваний.

Если внутренние подтягивающие резисторы недоступны (но подтягивающие есть) и если у вас есть последовательный резистор как минимум на SW2, вы можете использовать постоянный, слабый подтягивающий резистор. Чтобы проверить, замкнут ли SW1, включите подтяжку, ненадолго подтолкните штифт к высокому уровню и прочитайте его. Чтобы проверить, замкнут ли SW2, выключите подтяжку, ненадолго установите на штифте низкий уровень и прочтите показания.