Форум про радио и не только

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Форум про радио и не только » Микроконтроллеры » Как сделать самоблокировку питания МК?


Как сделать самоблокировку питания МК?

Сообщений 1 страница 14 из 14

1

Не получается сделать самоблокировку питания МК.

Задача такая: питание от батарейки, кнопка без фиксации подает питание на МК. Контроллер (Tiny85) должен на несколько секунд удерживать питание, выполнить программу и отключить питание самого себя.

Перепробовал несколько схем из сети, нихрена не работают. В основном в сети тиражируют схемы из книги Рюмика *1000 и одна микросхема*. Перепробовал несколько вариантов – результат ноль.

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

0

2

Посмотрите здесь.
Вкл/выкл одной кнопкой, автоматическое выключение.

+1

3

Да в том же "Транзисторотестере"...

0

4

Tadas написал(а):

Посмотрите здесь.
Вкл/выкл одной кнопкой, автоматическое выключение.

Спасибо, эта схема заработала.  :)

https://forumupload.ru/uploads/001b/4f/36/27/t454863.jpg

Понял свою ошибку. Надо сигнал выкл подавать 0. А я все пытался выключить 1. Вот эти схемы и им есть еще им подобные…. Не работают они. %-)

https://forumupload.ru/uploads/001b/4f/36/27/t96926.jpg
https://forumupload.ru/uploads/001b/4f/36/27/t633477.jpg

0

5

MSNG написал(а):

Спасибо, эта схема заработала. 

Рад, что смог помочь  :)

0

6

Что-то тут не так! Или это у меня уже с головой не так... -
Первая схема должна удерживать питание ПОКА МК держит "1" на выходе, то есть, "выключение нулём".
Вторая и третья - Точно так же!
Однако, значки "https://forumupload.ru/uploads/001b/4f/36/11/t960315.jpg" и "https://forumupload.ru/uploads/001b/4f/36/11/t676788.jpg" почему-то стоят разные...

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

0

7

Во многих конструкциях, в частности в ESR-метрах с радиокота и мироновкого, применен подобный узел на полевых транзисторах. Включение-выключение производится кнопкой, удержание - сигналом с МК. Помимо этого сигналом-же с МК устройство выключается. Фрагмент схемы:
https://forumupload.ru/uploads/001b/4f/36/43/t512010.jpg

Описание работы - на радиокоте

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

0

8

Andrew55 написал(а):

Первая схема должна удерживать питание ПОКА МК держит "1" на выходе, то есть, "выключение нулём".

Это так.

Andrew55 написал(а):

Вторая и третья - Точно так же!

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

Andrew55 написал(а):

Или это у меня уже с головой не так... -

0

9

Andrew55 написал(а):

Вариант "выключение нулем"

"Элементарно, Ватсон!"
В рабочей схеме включение питания при 1 на выходе мк, а дополнительный транзистор делает инверсию сигнала и включает питание. Когда на выходе мк 0, питание соответственно отключается.
А в других схемах наоборот, питание должно выключиться при  1 на выходе мк. А ее там быть не может при выключенном питании. Поэтому нифига и не получается. Народ (и я тоже  :) ) на форумах бьется ап стену, пытаясь реализовать задуманное….

0

10

А оно вообще зачем? Когда-то делал контроллеры на АВР-ках, так у них в режиме "Power down" потребление менее 1 мкА (по даташиту), реально пара сотен наноампер.

0

11

LLL_MMM написал(а):

А оно вообще зачем? Когда-то делал контроллеры на АВР-ках, так у них в режиме "Power down" потребление менее 1 мкА (по даташиту), реально пара сотен наноампер.

Это самое правильное решение. Но я что-то не смог это включить, поэтому и пошел в обход…. ;)

0

12

Да, действительно...
Чем я смотрел? :(

0

13

MSNG написал(а):

Но я что-то не смог это включить

Я никакой не специалист в авр-ах, но когда-то накатал программку на pic10simulator-e для фонарика. В выключенном состоянии переводится в спящий режим одной единственной командой, sleep. Но не забыть разрешить пробуждение по какому-либо действию   ;)
Если интересно, вот весь код:

Код:
Define CONFIG = 0x0008
TRISIO = %1000  'GP3 - in, остальные - out
OPTION_REG.5 = 0  'Выключить тактирование таймера по входу GPIO.2
OPTION_REG.7 = 0  'Разрешение разбудить МК при изменении уровня на входах

Dim press As Byte

GPIO.0 = 0  'Low - приглушенная мощность
GPIO.1 = 0  'High - вместе с предыдующим - полная мощность
GPIO.2 = 0  'Corner - боковой свет
press = 0  'Счетчик времени нажатия

start:
While GPIO.3 = 1
WaitMs 100
press = press + 1
Wend

If press <= 1 Then
Goto skip
Endif

If press > 1 And press < 7 Then
Gosub shortpress
Endif

If press >= 7 Then
Gosub longpress
Endif

skip:
press = 0

'Если потушены все светодиоды, спим и не кушаем ток )))
If GPIO.0 = 0 And GPIO.2 = 0 Then
ASM:        sleep
Endif

Goto start
End                                               

'******************** Короткое нажатие ********************
shortpress:
'Если ничего не горит, то зажечь осн. свет на пониженной мощности
If GPIO.0 = 0 And GPIO.2 = 0 Then
GPIO.0 = 1
Return                                            
Endif

'Если горит что-либо, то все выключить
If GPIO.0 = 1 Or GPIO.2 = 1 Then
GPIO.0 = 0
GPIO.1 = 0
GPIO.2 = 0
Endif

Return                                            

'******************** Длинное нажатие ********************
longpress:
'Если ничего не горит, то включить боковой свет
If GPIO.0 = 0 And GPIO.2 = 0 Then
GPIO.2 = 1
Return                                            
Endif

'Если горит приглушенный основной свет, то включить на полную мощность
If GPIO.0 = 1 And GPIO.1 = 0 Then
GPIO.1 = 1
Return                                            
Endif

'Если горит на полную мощность, то приглушить
If GPIO.0 = 1 And GPIO.1 = 1 Then
GPIO.1 = 0
Return                                            
Endif

Return                                            

0

14

Да ладно, уже проехали….  :)

Я пытался сделать так:

Выставляю нужный режим сна в регистре
MCUCR |= (1<<SE) | (0<<SM0) | (1<<SM1);

И потом команда спать.
asm("sleep");

Может оно и включилось, но в симуляторе нифига не работало. Поэтому сделал так, как сделал….

0


Вы здесь » Форум про радио и не только » Микроконтроллеры » Как сделать самоблокировку питания МК?


создать форум