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

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

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

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

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

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

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

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

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

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

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

Приведенная схема проста до безобразия и состоит из трех транзисторов, две из которых обратной проводимости. Работает она по следующему принципу - при первом нажатии светодиод засветится, при повторном - потухнет.

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

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

В начальный момент, когда на схему подается питание, все три транзистора закрыты, одновременно через цепочку резисторов R1 и R2 заряжается электролитический конденсатор C1, напряжение на нем равно напряжению питания. При нажатии на кнопку положительный сигнал с конденсатора поступает на базу транзистора VT3 отпирая его, по открытому переходу этого транзистора напряжение поступает на базу транзистора VT2, в следствии чего он также открывается. Нагрузка, в нашем случае светодиод, тоже активируется, еще во время срабатывания транзистора VT3.

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

В таком состоянии схема может находится бесконечно долгое время. Притом кнопку можно просто нажать и отпустить, а не удерживать в нажатом состоянии.

Открывающийся транзистор VT2 открывает также и транзистор VT1. В этом состоянии у нас все три транзистора открыты. Когда VT1 открыт, через его открытый переход и резистор R2, конденсатор C1 будет разряжаться, отсюда можно сделать вывод, что когда транзисторы открыты, конденсатор разряжен.

При повторном нажатии кнопки база транзистора VT3 оказывается подключенной к минусовой обкладке конденсатора C1, на базе ключа напряжение в районе 0,7 вольт, и в следствии заряда конденсатора оно просаживается и он запирается. С запиранием транзистора VT3, конденсатор опять начинает заряжаться в штатном режиме, через ранее указанные резисторы.

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

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

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

По умолчаниюв не серверных версиях 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 разрядится. Схема готова к повторному включению.

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

Похожие статьи