pull-down резистор и подключение кнопки к Arduino
- Войдите на сайт для отправки комментариев
Пнд, 28/03/2011 - 14:40
Вопрос наверно ламерский. Если я все правильно понимаю, то кнопка подключается так
Согласующий резистор (pull-down), должен быть 10кОм.
Хочу понять как в общем случае расчитывается номинал этого резистора? Просто я скорее программист и поэтому такие вопросы возникают.
В случае Arduino, по-моему достаточно запомнить, что pulldown 10kOhm. В принципе, как пишут, он может быть и больше 100kOhm и меньше 4 kOhm, Но я как-то эксперементировал, считывал значение analogRead подключив выход через pull-Down к земле, так вот у меня при 5 kOhm, значение значительно гуляло, а при 10 стабильно давало 0, изредка проскакивали значения отличные от 0, но в пределах 5.
В общем случае в подобной схеме PD резистор лучше подбирать вручную начиная с 10кОм, иногда требуется и больше. Так как я пользуюсь в основном трансформаторным блоком питания да и тесловки рядом разряды пускают, я ставлю около 5 кОм чтобы всякие наводки сливались на землю. Кстати в буржуйской стороне света видел пометку что можно последовательно кнопке воткнуть дросселек дабы избежать паразитной емкости между контактами кнопки хотя она и так предельно мола.
Эти резисторы не расчитываются, есть рекомендация производителя использовать 10КОм этого номинала и следует придерживаться, при необходимости можно заменить на поменьше, на сколько это может быть поменьше можно прикинуть ...
На сайте производителя есть документ хороший http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf в котором описываютсч микроконтроллеры ATmega48PA/88PA/168PA/328P там стр. 313 есть следующую информация по предельным токовым нагрузкам на выводы:
DC Current per I/O Pin ............................................... 40.0 mA. Вот отсюда уже можно сплясать
Зная что перегружать выходы мы не хотим, то получим что, при максимльно допустимом напряжении питания 6.0V и заданном предельном токе, сопротивление нагрузки не должно быть менее 150 Ом. Следовательно более 150 Ом уже безопасно для выходов контроллера в плане перегрузки, конечно такие токи ни кому не интересны ведь при таких подпорах сразу на всех 20 портах в сумме это составит до 800мА потерянные в тепло - зимний вариант ;)). Поэтому подпорки желательно ставить с максимально большим сопротивлением, но в разумных пределах, учитывая что чем выше рабочая частота тем сопротивление поменьше. Рекомендуемое значение - 10 КОм оно всегда и гарантированно работает, дальнейшее увеличение делает подпор менее эффективным, особенно при работе на более высоких частотах, и могут наблюдаться эффекты неопределенности состояния, такие же как на полностью висящих выводах (при чтении не подключенного порта могут быть прочитаны или 0, или 1 без системы) Вот как то так...
Куда подпирать кнопку на землю или питание? Открытый вопрос, все зависит от того какое значение хотите иметь по умолчанию...
Спасибо. Ясность некоторая наступила. Буду просто использовать 10кОм и не заморачиваться :)
А не кто не помнит что есть встроенные в ардуино пуллдаун резисторы 20К которые по умолчанию отключены)))
из книги дневник програмиста ардуино:
pinMode(pin, INPUT); // настраиваем пин на вход
digitalWrite(pin, HIGH); //включаем подтягивающий резистор на 20К
Если внимательнее то в схеме резистор "тянет" к земле, а встроенные пуллдаун тянут к питанию...
Впрочем мне лично, тоже больше нравится подавать на вход землю через кнопку, а тянуть вход "вверх". чем так как показано на макете наизнанку...
Если топик-стартер задал этот вопрос, то на мой взгляд пусть разберется сначало с базовым вопросом, к чему собственно и ведет пример. А там он уже сам решит куда и как подтягивать.
тянуть к плюсу это жрать энергию в ожидание да и зазамлится в статике всетаки луч а номинал вытекает из напряж питания и таков потребления самого контроллера читайте даташи там все это есть на разных ардуино стоят хоть и похожие но немного разные контроллеры и подходы к ним то же немного разные
тянуть к плюсу это жрать энергию в ожидание
Немного разгребу завалы и померяю токи, думаю, они будут не еденицы мили-, а микроамперы, что соовсем не значительно. В масштабах проекта. Тогда уже следует говорить и о другом МК для долгоиграющих вариантов.
От статики спасает только хорошее заземление(радиатор-батарея отопления не вариант вообще) ну и экранирование никто не отменял. Браслеты и прочие пренадлежности тоже кстате. Про что все всегда в основном все забывают, я не исключение. Видимо горького опыта еще нету.
Вобщем тему жевали миллион раз. Еще нужно не забывать про дребезг контактов.
да уж реально в дебри залезли
Мерять то особо нечего. игнорим полвольта падения на ключах, остается 5 вольт и 10кОм.. итого теряем от источника ток на каждой подпорке до 0.5 мА или всего до 10-15 мА плюс к току потребления контроллером и остальными элементами... не много для устройства питающегося нормального источника, порядочно для микромощного(долгоиграющего).
Заземление на батарею не вариант. статику конечно уберет, но наводку от сети до 110 в может и сохранить.
Вы забываете о том что иногда крайне необходимо создать на входе логическую единицу. ТОгда как ни крути к плюсу тянуть придется.
К плюсу прекрасно подтянет и встроенная подпорка. Для лог.единицы на входе ненужно ни какого гимора снаружи создавать ...
2 копии этого сообщения ласково удалил. С уважением Adessit
А не кто не помнит что есть встроенные в ардуино пуллдаун резисторы
К плюсу прекрасно подтянет и встроенная подпорка. Для лог.единицы на входе ненужно ни какого гимора снаружи создавать ...
А схемой подключения кнопки с использованием внутренней подтяжки цифрового входа кто-нибудь поделится?
К плюсу прекрасно подтянет и встроенная подпорка. Для лог.единицы на входе ненужно ни какого гимора снаружи создавать ...
2 копии этого сообщения ласково удалил. С уважением Adessit
Премного благодарен ;) умысла по два раза повторять не было, народ доходчив )
ЗАчем схема? просто кнопка, с порта на землю. внутренний резистор включить... смотрим прямо тут http://arduino.ru/Tutorial/DigitalPins
Типа вот так?
Кнопка (переключатель - микрушка), входы с подтяжками.
Типа вот так?
Кнопка (переключатель - микрушка), входы с подтяжками.
Это что, кнопка - переключатель? для чего ее на два порта используешь? или D1 не участвует и тут просто "под руку попалось"
у кнопки всего 2 состояния, а значит для ввода состояняния кнопки достаточно порта D2.
pinMode(D2_pin, INPUT); // назначить выводу порт ввода
digitalWrite(D2_pin, HIGH); // включить подтягивающий резистор
все! теперь
при замкнутой кнопке D2=0, а при разомкнутой кнопке D2=1.
Спасибо!
Да верно, всего два состояния.
Ну значит, я так и подключу, только с использованием одного цифр. входа.
Чисто что-бы поучаствовать в такой бурной теме :)
А не кто не помнит что есть встроенные в ардуино пуллдаун резисторы 20К которые по умолчанию отключены)))
Когда больше некчему прицепится - цепляются к терминологии :)
пуллдауна у нее как раз и нет.
У арудины (вернее самого камня) есть встроенный первый вариант - пуллап.
Чисто что-бы поучаствовать в такой бурной теме :)
А не кто не помнит что есть встроенные в ардуино пуллдаун резисторы 20К которые по умолчанию отключены)))
Когда больше некчему прицепится - цепляются к терминологии :)
пуллдауна у нее как раз и нет.
У арудины (вернее самого камня) есть встроенный первый вариант - пуллап.
Притащил свою масленку, чисто подлить в пЫламя;))
В подтверждение правоты leshak-а, прокуриваем самый первый попащщий даташит http://www.rlocman.ru/i/File/dat/Atmel/Microcontrollers_MCU/ATMEGA328P_A... страницы 75-81, курить можно с картинками.
Но суть от этого не меняется. Включаем пин в режим чтения, записываем на выход единицу, с огромным удобольствием, такие счастливые, читаем состояние пина закороченного или нет на землю через кнопку...
ни каких внешних подпорок точно не нужно...
В подтверждение правоты leshak-а
Да я думаю тут и подтверждать нечего. Мне кажется Adessit банально описался в торопях. На 99% уверен что он это и так знал. Я просто "воспользовался случаем" рассказать как и почему они зовутся в "буржуйских даташитах". Может кому пригодится. Что-бы не зазубривать "куда какой тянет" ;)
счастливые, читаем состояние пина закороченного или нет на землю
Тут есть, маловероятная, но "западло" возможно. Если мы где-то случайно включем пин на выход (вместо INPUT , OUTPUT напишем). Дадим туда high, а потом нажмем кнопку.... "получим палево ноги" (в лучшем случае).
А можем быть и скетч правильный. Но, во время эксперементов, вполне реально "схема собрана старая, а влил новый скетч" (или не тот) и...
Вообщем "по взрослому", для безопастности, между кнопкой и ногой нужно втыкнуть токоограничивающий резистор. Включаем подтяжку, потом соеденяем PIN->220 Om ->кнопка -> земля.
P.S. Но, честно говоря, в 95% случаев я сам забиваю, из лени, на эту "страховку" и подключаю PIN->кнопка->земля. Пока везло. Хоть пару раз и "штирлиц был близок к провалу" :)
Вообщем "по взрослому", для безопастности, между кнопкой и ногой нужно втыкнуть токоограничивающий резистор. Включаем подтяжку, потом соеденяем PIN->220 Om ->кнопка -> земля.
[поскипано]
P.S. Но, честно говоря, в 95% случаев я сам забиваю, из лени, на эту "страховку" и подключаю PIN->кнопка->земля. Пока везло. Хоть пару раз и "штирлиц был близок к провалу" :)
Если по взрослому, то экономить на Соп..люшках не следует... или пользоваться Аpдуиной для ленивых ;) с защищенными портами от всего что только бывает, кроме экзотики разумеется ))