Вкл выкл кнопкой без фиксации. Включение и выключение нагрузки одной кнопкой. Включение и выключение одной кнопкой

28-07-2016

Anthony Smith

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

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

На Рисунке 1а приведен вариант схемы включения питания для случая нагрузки, подключенной к земле. Схема работает в режиме «переключателя»; это значит, что первое нажатие включает питание нагрузки, второе выключает, и так далее.

Чтобы понять принцип работы схемы, представим, что источник питания +V S только что подключен, конденсатор C1 в исходном состоянии разряжен, и транзистор Q1 выключен. При этом резисторы R1 и R3 оказываются включенными последовательно и подтягивают затвор P-канального MOSFET Q2 к шине +V S , удерживая транзистор в закрытом состоянии. Сейчас схема находится в «деблокированном» состоянии, когда напряжение нагрузки V L на контакте OUT (+) равно нулю.

При кратковременном нажатии нормально разомкнутой кнопки затвор Q2 подключается к конденсатору C1, разряженному до 0 В, и MOSFET включается. Напряжение нагрузки на клемме OUT (+) немедленно увеличивается до +V S , через резистор R4 транзистор Q1 получает базовое смещение и открывается. Вследствие этого Q1 насыщается и через резистор R3 подключает затвор Q2 к земле, удерживая MOSFET открытым, когда контакты кнопки разомкнуты. Теперь схема находится в «зафиксированном» состоянии, когда оба транзистора открыты, нагрузка получает питание, а конденсатор C1 заряжается до напряжения +V S через резистор R2.

После повторного кратковременного замыкания переключателя напряжение на конденсаторе C1 (теперь равное +V S) окажется приложенным к затвору Q2. Поскольку напряжение затвор-исток Q2 теперь близко к нулю, MOSFET выключается, и напряжение нагрузки падает до нуля. Напряжение база-эмиттер Q1 также опускается до нуля, закрывая транзистор. В результате при отпущенной кнопке ничто не удерживает Q2 в открытом состоянии, и схема возвращается в «деблокированное» состояние, когда оба транзистора выключены, нагрузка обесточена, а C1 разряжается через резистор R2.

Шунтирующий выходные зажимы резистор R5 устанавливать необязательно. При отпущенной кнопке конденсатор C1 разряжается на нагрузку через резистор R2. Если импеданс нагрузки очень велик (то есть, соизмерим с величиной R2), или нагрузка содержит активные устройства, такие, скажем, как светодиоды, напряжение нагрузки во время выключения Q2 может оказаться достаточно большим, чтобы через резистор R4 открыть транзистор Q1 и не позволить схеме выключиться. Резистор R5 при выключении Q2 подтягивает клемму OUT (+) к шине 0 В, обеспечивая быстрое выключение Q1 и давая схеме возможность надлежащим образом перейти в закрытое состояние.

При правильном выборе транзисторов схема будет работать в широком диапазоне напряжений и может использоваться для управления такими нагрузками, как реле, соленоиды, светодиоды и т. д. Однако не забывайте, что некоторые работающие на постоянном токе вентиляторы и моторы продолжают вращаться и после выключения питания. Это вращение может создавать противоЭДС, достаточно большую, чтобы открыть транзистор Q1 и не позволить схеме выключиться. Решение проблемы показано на Рисунке 1б, где последовательно с выходом включен блокировочный диод. В этом случае также можно добавить в схему в резистор R5.

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

Обратите внимание, что Q1 был заменен p-n-p транзистором, а на месте Q2 теперь находится N-канальный MOSFET. Эта схема работает точно так же, как схема описанная выше. Здесь R5 выполняет функцию подтягивающего резистора, соединяющего выходной контакт OUT (-) с шиной +V S , когда транзистор Q2 выключается, и обеспечивающего быстрое закрывание Q1. Как и в предыдущей схеме, резистор R5 является необязательным компонентом, и устанавливается только при некоторых типах нагрузки, упомянутых выше.

Заметим, что в обеих схемах постоянная времени C1, R2 выбирается исходя из требуемого подавления дребезга контактов. Обычно нормальной считается величина от 0.25 с до 0.5 с. Меньшие постоянные времени могут привести к неустойчивой работе схемы, в то время как бóльшие увеличивают время ожидания между замыканиями контактов кнопки, за которое должен произойти достаточно полный заряд и разряд конденсатора C1. При указанных на схеме значениях C1 = 330 нФ и R2 = 1 МОм номинальная величина постоянной времени равна 0.33 с. Обычно этого бывает достаточно, чтобы устранить дребезг контактов и переключить нагрузку за время порядка пары секунд.

Обе схемы предназначены для фиксации и отпускания ключа в ответ на кратковременные замыкания контактов. Однако каждая из них проектировалась таким образом, чтобы гарантировать правильную работу даже при сколь угодно длительном нажатии кнопки. Рассмотрим схему на Рисунке 2, когда транзистор Q2 закрыт. Если кнопка нажимается для выключения схемы, затвор подключается к потенциалу 0 В (поскольку конденсатор C1 разряжен), и MOSFET закрывается, давая возможность общей точке резисторов R1 и R2 подключиться к шине +V S через резистор R5 и импеданс нагрузки. Одновременно Q1 также выключается, в результате чего затвор Q2 оказывается соединенным с шиной GND через резисторы R3 и R4. Если кнопку сразу же отпустить, C1 просто зарядится через резистор R2 до напряжения +V S . Однако если оставить кнопку замкнутой, напряжение затвора Q2 будет определяться потенциалом делителя, образованного резисторами R2 и R3+R4. Считая, что при разблокированной схеме напряжение на контакте OUT (-) приблизительно равно +V S , для напряжения затвор-исток транзистора Q2 можно записать следующее выражение:

Даже если напряжение +V S будет равно 30 В, результирующего напряжения 0.6 В между затвором и истоком не хватит, чтобы открыть MOSFET вновь. Следовательно, при разомкнутых контактах кнопки оба транзистора будут оставаться выключенными.

В портативных устройствах, как известно, важной составляющей является время автономной работы. Кому понравится пользоваться устройством, которое приходится очень часто заряжать? Поэтому к различным способам снижения энергопотребления полезно добавлять еще одну функцию - автоматическое отключение питания, которое поможет спасти заряд батареи если пользователь забыл отключить устройство. А для того чтобы это реализовать, нужно чтобы устройство включалось и выключалось от кнопки без фиксации. Мне как раз понадобилось реализовать подобное и испытав несколько схем найденных в интернете, остановился на самом интересном решении. Поэтому сейчас покажу, как можно включать и выключать устройство на микроконтроллере одной кнопкой без фиксации и реализацию такого алгоритма в Bascom-AVR.

Схема строится на небольшом количестве дискретных элементов и использует одно прерывание контроллера:

При нажатии на кнопку S1 транзистор Q1 открывается и напряжение от батареи идет в схему. Для того чтобы после отпускания кнопки транзистор Q1 не закрылся, необходимо открыть транзистор Q2, подав на затвор единичку. И пока на затворе Q2 будет высокий уровень напряжения, схема будет запитана. Когда же нужно будет обесточить схему и отключить устройство, просто снимаем напряжение с этого вывода, оба транзистора закроются и полностью обесточат схему. Светодиод D3 для индикации работы.

Транзисторы необходимо использовать с логическим уровнем отпирания (Logic Level), чтобы они полностью открывались от напряжения батареи. Хотя я собрал и тестировал схему на том, что попало под руку: в качестве Q1 я использовал IRF5305, а в качестве Q2 - IRF530. Оба транзистора от 5 вольт открываются почти полностью. Взял я их потому что они в больших корпусах и их можно использовать в макетке. Заместо диодов D1 и D2 воткнул диодный мост:)

Первый пример. Включение и выключение питания происходит простым нажатием на кнопку.

$regfile = "m8def.dat"
$crystal = 1000000

Dim flag as Byte "переменная для выполнения основной программы

Config PORTB . 0 = OUTPUT "выход светодиода
Led alias portb . 0

Config portd . 3 = OUTPUT "управление питанием
pwr alias portd . 3

Config INT0 = low level "кнопка включения/выключения
On Int0 Zapusk :

Enable int0 "разрешаем прерывания
Enable interrupts

"основной цикл
Do

If flag = 1 then
Led = 1
End if

Loop

end


zapusk :

toggle pwr "включение / выключение

flag = 1 "поднимаем флаг

do
loop until pind . 2 = 1

waitms 100
Gifr = 64

return

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

$regfile = "m8def.dat"
$crystal = 1000000

dim flag as Byte "переменная для выполнения осовной программы
dim a as Byte "для организации задержки
config PORTB . 0 = OUTPUT "выход светодиода
led alias portb . 0

config portd . 3 = OUTPUT "управление питанием
pwr alias portd . 3

config INT0 = low level "кнопка включения/выключения
On Int0 Zapusk :

enable int0 "разрешаем прерывания
enable interrupts

"основной цикл
do

if flag = 1 then "выполнение основной программы
"....
"....
end if

loop

end

"прерывание при нажатии на кнопку
zapusk :

flag = 1 "поднимаем флаг

do
incr a
wait 1

if a = 3 then "если прошло 3 секунды
toggle pwr "включение / выключение
toggle led
goto ext "выход из цикла
end if

loop until pind . 2 = 1 "пока нажата кнопка крутимся здесь
ext :
a = 0
waitms 100
Gifr = 64

return

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


Исправляем это недоразумение.


Обязательно сохраним оригинальный файл termsrv.dll. Запустим командную строку от Администратора и выполним

copy c:\Windows\System32\termsrv.dll termsrv.dll_old

Затем смотрим вашу версию. Правый клик на файле c:\Windows\System32\termsrv.dll и выберем свойства.


Скачиваем измененный файл соответствующий вашей версии

Если хочется все исправить своими руками, то копируем свой файл termsrv.dll из папки c:\Windows\System32\ на рабочий стол. Открываете его любым hex редактором, например этим бесплатным HxD . И заменяете байты в указанной строчке.

В первой колонке значение, которое должно быть, во второй оригинальное.

Windows 7 SP1 64bit:

173C0: B8 8B
173C1: 00 87
173C2: 01 38
173C3: 00 06
173C5: 90 00
173C6: 89 39
173C8: 38 3C
173CC: 90 0F
173CD: 90 84
173CE: 90 EB
173CF: 90 C2
173D0: 90 00
173D1: 90 00
176FA: 00 01
5AD7E: EB 74
Для Windows 8.1 (64bit) заменяем целиком строку!
в v6.3.9600.16384
строчку
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
на
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

в 6.3.9600.16384 to 6.3.9600.17095
строчку
39 81 3C 06 00 00 0F 84 9E 31 05 00
на

6.3.9600.17095 to 6.3.9600.17415
строчку
39 81 3C 06 00 00 0F 84 D3 1E 02 00
на
B8 00 01 00 00 89 81 38 06 00 00 90
Воспользуемся инструментом замены с типом шестнадцатеричные значения

После замены сохраняете изменения.

Если испытываете трудности с правами доступа, то открываете свойства, вкладку безопасность, кнопка дополнительно. И меняете владельца на себя. Применяете. После этого сможете менять разрешения для групп и пользователей.



Далее останавливаете службу удаленного рабочего стола


Заменяем файл termsrv.dll на скаченный или измененный.

Еще нужно изменить значение ключа в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser на 0!

И снова запускаем службу!

Подключаемся и радуемся! Теперь локального пользователя не выкидывает из системы!

Для Windows XP
1) Редактируем файл
termsrv.dll (SP2 5.1.2600.2180) 295,424 bytes

128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termsrv.dll (SP3 5.1.2600.5512) 295,424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Заменять файл в директории C:\Windows\System32\ нужно в безопасном режиме, поскольку по умолчанию включена защита системных файлов (System File Protection). Для этого перезагрузите компьютер с зажатой F8 , выберите безопасный режим.
3) Добавить ключи реестра

EnableConcurrentSessions ”=dword:00000001

EnableConcurrentSessions ”=dword:00000001
AllowMultipleTSSessions ”=dword:00000001

4) Далее Пуск -> Выполнить, gpedit.msc. В окне редактора групповой политики Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба терминалов. Включите Ограничение количества подключений и установите количество подключений равное 3 или более.
5) Перезагружайтесь и подключайтесь!

С батарейным питанием все замечательно, кроме того, что оно кончается, а энергию надо тщательно экономить. Хорошо когда устройство состоит из одного микроконтроллера — отправил его в спячку и все. Собственное потребление в спящем режиме у современных МК ничтожное, сравнимое с саморазрядом батареи, так что о заряде можно не беспокоиться. Но вот засада, не одним контроллером живо устройство. Часто могут использоваться разные сторонние периферийные модули которые тоже любят кушать, а еще не желают спать. Прям как дети малые. Приходится всем прописывать успокоительное. О нем и поговорим.

▌Механическая кнопка
Что может быть проще и надежней сухого контакта, разомкнул и спи спокойно, дорогой друг. Вряд ли батарейку раскачает до того, чтобы пробить миллиметровый воздушный зазор. Урания в них для этого не докладывают. Какой нибудь PSW переключатель то что доктор прописал. Нажал-отжал.

Вот только беда, ток он маленький держит. По паспорту 100мА, а если запараллелить группы, то до 500-800мА без особой потери работоспособности, если конечно не клацать каждые пять секунд на реактивную нагрузку (катушки-кондеры). Но девайс может кушать и поболее и что тогда? Приматывать синей изолентой к своему хипстерскому поделию здоровенный тумблер? Нормальный метод, мой дед всю жизнь так делал и прожил до преклонных лет.

▌Кнопка плюс
Но есть способ лучше. Рубильник можно оставить слабеньким, но усилить его полевым транзистором. Например вот так.

Тут переключатель просто берет и поджимает затвор транзистора к земле. И он открывается. А пропускаемый ток у современных транзисторов очень высокий. Так, например, IRLML5203 имея корпус sot23 легко тащит через себя 3А и не потеет. А что-нибудь в DPACK корпусе может и десяток-два ампер рвануть и не вскипеть. Резистор на 100кОм подтягивает затвор к питанию, обеспечивая строго определенный уровень потенциала на нем, что позволяет держать транзистор закрытым и не давать ему открываться от всяких там наводок.

▌Плюс мозги
Можно развить тему управляемого самовыключения, таким вот образом. Т.е. устройство включается кнопкой, которая коротит закрытый транзистор, пуская ток в контроллер, он перехватывает управление и, прижав ногой затвор к земле, шунтирует кнопку. А выключится уже тогда, когда сам захочет. Подтяжка затвора тоже лишней не будет. Но тут надо исходить из схемотехники вывода контроллера, чтобы через нее не было утечки в землю через ногу контроллера. Обычно там стоит такой же полевик и подтяжка до питания через защитные диоды, так что утечки не будет, но мало ли бывает…

Или чуть более сложный вариант. Тут нажатие кнопки пускает ток через диод на питание, контроллер заводится и сам себя включает. После чего диод, подпертый сверху, уже не играет никакой роли, а резистор R2 эту линию прижимает к земле. Давая там 0 на порту если кнопка не нажата. Нажатие кнопки дает 1. Т.е. мы можем эту кнопку после включения использовать как нам угодно. Хоть для выключения, хоть как. Правда при выключении девайс обесточится только на отпускании кнопки. А если будет дребезг, то он может и снова включиться. Контроллер штука быстрая. Поэтому я бы делал алгоритм таким — ждем отпускания, выбираем дребезг и после этого выключаемся. Всего один диод на любой кнопке и нам не нужен спящий режим:) Кстати, в контроллер обычно уже встроен этот диод в каждом порту, но он очень слабенький и его можно ненароком убить если вся ваша нагрузка запитается через него. Поэтому и стоит внешний диод. Резистор R2 тоже можно убрать если нога контроллера умеет делать Pull-down режим.

▌Отключая ненужное
Можно сделать и по другому. Оставить контроллер на «горячей» стороне, погружая его в спячку, а обесточивать только жрущую периферию.

▌Выкидываем лишнее
Что-то мало потребляющее можно запитать прям с порта. Сколько дает одна линия? Десяток миллиампер? А две? Уже двадцать. А три? Параллелим ноги и вперед. Главное дергать их синхронно, лучше за один такт.

Правда тут надо учитывать то, что если нога может отдать 10мА,то 100 ног не отдадут ампер — домен питания не выдержит. Тут надо справляться в даташите на контроллер и искать сколько он может отдать тока через все выводы суммарно. И от этого плясать. Но до 30мА с порта накормить на раз два.

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

▌Одна кнопка на все. Без мозгов
Ну и, напоследок, разберу одно красивое и простое решение. Его несколько лет назад набросил мне в комменты uSchema это результат коллективного творчества народа на его форуме.

Одна кнопка и включает и выключает питание.

Как работает:

При включении, конденсатор С1 разряжен. Транзистор Т1 закрыт, Т2 тоже закрыт, более того, резистор R1 дополнительно подтягивает затвор Т1 к питанию, чтобы случайно он не открылся.

Конденсатор С1 разряжен. А значит мы в данный момент времени можем считать его как КЗ. И если мы нажмем кнопку, то пока он заряжается через резистор R1 у нас затвор окажется брошен на землю.

Это будет одно мгновение, но этого хватит, чтобы транзистор Т1 распахнулся и на выходе появилось напряжение. Которое тут же попадет на затвор транзистора Т2, он тоже откроется и уже конкретно так придавит затвор Т1 к земле, фиксируясь в это положение. Через нажатую кнопку у нас С1 зарядится только до напряжения которое образует делитель R1 и R2, но его недостаточно для закрытия Т1.

Отпускаем кнопку. Делитель R1 R2 оказывается отрезан и теперь ничто не мешает конденсатору С1 дозарядиться через R3 до полного напряжения питания. Падение на Т1 ничтожно. Так что там будет входное напряжение.

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

Жмем кнопку еще раз. Теперь уже заряженный на полную конденсатор С1 вбрасывает все свое напряжение (а оно равно напряжению питания) на затвор Т1. Открытый транзистор Т2 тут вообще не отсвечивает, ведь он отделен от этой точки резистором R2 аж на 10кОм. А почти нулевое внутреннее сопротивление конденсатора на пару с его полным зарядом легко перебивает низкий потенциал на затворе Т1. Там кратковременно получается напряжение питания. Транзистор Т1 закрывается.

Тут же теряет питание и затвор транзистора Т2, он тоже закрывается, отрезая возможность затвору Т1 дотянуться до живительного нуля. С1 тем временем даже не разряжается. Транзистор Т2 закрылся, а R1 действует на заряд конденсатора С1, набивая его до питания. Что только закрывает Т1.

Отпускаем кнопку. Конденсатор оказывается отрезан от R1. Но транзисторы все закрыты и заряд с С1 через R3 усосется в нагрузку. С1 разрядится. Схема готова к повторному включению.

Вот такая простая, но прикольная схема. Вот На сходном принципе действия.

Радиолюбителю Электропитание

Включение и выключение одной кнопкой

Включать и выключать только одной кнопкой

В радиоэлектронике возникают ситуации, когда на одну или несколько нагрузок потребуется только одна кнопка, которая будет включать и выключать питание. Такой подход имеет преимущества перед размещением в корпусе двух кнопок или объемных тумблеров. Также, есть возможность применить стильные и компактные сенсорные кнопки. Или использовать включение и выключение одной кнопкой в случаях, когда кнопка в наличии всего одна. Будет рассмотрено две схемы, в разных исполнениях и с разными вариантами питания. Оба варианта рабочие и проверенные. Если монтаж компонентов производился грамотно и без замен деталей, то работать всё будет исправно.

Вкл. и выкл. одной кнопкой – схема на триггере

Питание схемы составляет от 7 В до 35 В. Все детали недорогие, а повторение схемы под силу людям, далекими от радиоэлектроники. Кнопку можно использовать любую, даже от звонков, лишь бы могла соединить и разъединить контакт. Держать её можно сколько угодно, так как триггер сработает только при разъединении контакта. Соответственно, в следующее положение он войдет при новом нажатии.

Вкл. и выкл. одной кнопкой – схема на таймере 555

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