реклама на сайте
подробности

 
 
> Как распознать кратковременное выключение на Tiny13, Управление режимами фонарика кнопкой питания
VladislavS
сообщение Jan 3 2010, 06:44
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Что-то споткнулся на ровном месте - спасайте!

Китайские светодиодные фонарики. Режимамы работы (яркость ШИМ-ом, стробы, SOS-ы) задаёт Tiny13.
Схема примитивная. Кнопка отключает минус литиевого аккумулятора от корпуса фонаря. Микроконтроллер запитан через
диод и небольшую керамическую ёмкость. На PB2 (ADC1) через резистивный делитель (VCC->10k->3k->GND) заведено
напряжение питания. PB1 используется для управления стабилизатором. Собственно и всё.

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

В стремлении к совершенству полез программировать и пока не могу понять КАК они детектируют кратковременное отключение питания. Осциллографом вижу, что питания от конденсатора до BOD хватает где-то на 4 мс как бы я не усыплял контроллер. Это на 3 порядка меньше требуемого значения. Значит, он всётаки выключается. А вот найти какой регистр или флаг после POR и BOR не обнуляется да еще какое-то время сохраняет своё состояние без питания что-то не могу.

Коллеги, есть свежие идеи?
Go to the top of the page
 
+Quote Post
23 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 14)
Qwertty
сообщение Jan 3 2010, 07:19
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(VladislavS @ Jan 3 2010, 09:44) *
А вот найти какой регистр или флаг после POR и BOR не обнуляется да еще какое-то время сохраняет своё состояние без питания что-то не могу.
Коллеги, есть свежие идеи?

Попробуйте неинициализируемую переменную и проверяйте ее значение сразу после запуска. Но все же это кривой метод - не возможно предсказать время хранения этой переменной. Оно запросто может и 5 секунд оказаться.
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 3 2010, 07:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Напряжение на резистивном делителе пропадает раньше питания. По этому можно изменить режим, запомнить в EEPROM, и отправиться в powerdown. Или запомнить в оперативной и уснуть до появления прерывания от подачи питания.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
tillman
сообщение Jan 3 2010, 09:14
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 10-12-08
Из: Ульяновск
Пользователь №: 42 362



Проще при вкл. сразу проверять из еепром режим,запускать нужную функцию,а потом сразу записывать в еепром след. режим и при след. включении режим сменится на др.
А АЦП используется только для индикации разряда аккумулятора\батуреек.

Сообщение отредактировал tillman - Jan 3 2010, 09:28
Go to the top of the page
 
+Quote Post
BSVi
сообщение Jan 3 2010, 10:36
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 18-12-07
Из: Киев
Пользователь №: 33 391



можно даже без диода в питании контроллера обойтись схема такая

выключатель - конденсатор - контроллер
выключаетль - диод - резистор на землю.

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

Конденсатора 0.1мкф хватит только на 0.5сек, прийдется поставить что-то больше.


--------------------
http://bsvi.ru/ - блог эмбеддера
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 3 2010, 11:16
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата
Попробуйте неинициализируемую переменную и проверяйте ее значение сразу после запуска. Но все же это кривой метод - не возможно предсказать время хранения этой переменной. Оно запросто может и 5 секунд оказаться.

Попробую. Кривой, не кривой, но как-то китайцы это сделали...

Цитата
Напряжение на резистивном делителе пропадает раньше питания. По этому можно изменить режим, запомнить в EEPROM, и отправиться в powerdown. Или запомнить в оперативной и уснуть до появления прерывания от подачи питания.

Энергии в конденсаторе не хватает чтобы проспать столько времени. Так что, хоть сохраняй, хоть не сохраняй - всё одно впереди BOR и POR.

Цитата
Проще при вкл. сразу проверять из еепром режим,запускать нужную функцию,а потом сразу записывать в еепром след. режим и при след. включении режим сменится на др.

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

Цитата
А АЦП используется только для индикации разряда аккумулятора\батуреек.

Возможно.


Цитата
Конденсатора 0.1мкф хватит только на 0.5сек, прийдется поставить что-то больше.

Схему менять не представляется возможным. Платку китайцы продают готовой и она достаточно миниатюрна - ставится в бошку фонарика. У меня даже столько проспать не получается при том что ухожу в Power Down даже до выключения питания. Вместе с тем, попадаются фонарики у которых до 2-3 секунд в зависимости от температуры можно выключать питание. Не думаю, что можно столько проспать...
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 3 2010, 13:14
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Значит спать не надо. Нужно писать в EEPROM что требуется при следующем включении. Думаю, то что помнится - хранится в EEPROM, а то что меняется - в SRAM. Например так - если при включении режимы сохраненные в EEPROM и SRAM одинаковы (сравниваем заведомо известные адреса) - то меняем режим и пишем новый в EEPROM, иначе - не меняем режим.

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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 3 2010, 13:45
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата
Я уверен, что китайский подход не позволяет делать все как положено.

Это позволяет им делать вполне работоспособную вещь за смешные деньги и продавать её миллионами.

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

Сейчас попытаюсь проверить эту догадку. И когда я найду что там китайцы заметили и оно заработает, то разрешаю зачморить меня, предать анафеме и т.д. Лишь бы работало, как бы смешно это не было. Из него не стрелять и в космос не запускать.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jan 3 2010, 13:56
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(VladislavS @ Jan 3 2010, 09:44) *
В стремлении к совершенству полез программировать и пока не могу понять КАК они детектируют кратковременное отключение питания. Осциллографом вижу, что питания от конденсатора до BOD хватает где-то на 4 мс как бы я не усыплял контроллер.

4 ms - это уже в "своем" варианте или в "прототипе" ? Если они не используют BOD, то в "настоящем" power down потребление гораздо меньше... Дурацкий вопрос - а защита включена ? Может, попробовать вычитать, что они там понаписали ?
Цитата
Коллеги, есть свежие идеи?

Я раньше полагал, что используют еще какой-то "вспомогательный" конденсатор. Но сейчас поглядел (правда, не знаю, что конкретно на этой платке стоит - маркировка стерта, а EEPROM внешняя, и на Vcc 10-uF электролит есть), что-то отдельного конденсатора не наблюдаю. А сам бы я попробовал именно с отдельным (для порядка - с последовательным токоограничивающим резистором), подключив его на какую-нибудь ногу ADC. При включении - измерить, что на нем, потом включить и оставить под напряжением. 0.1 uF и параллельно 10 MOhm для утечки. Ну да, при выключении он разрядится через защитный диод входа, но не ниже 0.6V, а дальше - через резистор. До единиц секунд можно поймать, я полагаю (только вот керамика очень уж от температуры плавает...)

P.S. А сам я нафиг выдрал эту плату управления, потому как достала она меня этим постоянным переключением режимов и идиотским стробоскопом..

Сообщение отредактировал rx3apf - Jan 3 2010, 13:58
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 3 2010, 14:05
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Это позволяет им делать вполне работоспособную вещь за смешные деньги и продавать её миллионами.

Им позволяет продавать миллионами и быстро делать - быстрое и дешевое изготовление пресс-форм на корпуса. Уж поверьте мне.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jan 3 2010, 14:09
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(smk @ Jan 3 2010, 17:05) *
Им позволяет продавать миллионами и быстро делать - быстрое и дешевое изготовление пресс-форм на корпуса. Уж поверьте мне.

Я бы даже поверил - но, увы, типичный китайский фонарик имеет точеный корпус из дюраля...
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 3 2010, 14:14
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Откопал еще одну плату, на которой ещё не успел стереть китайскую прошивку. Посмотрел как она работает. Похоже, они даже не парятся с засыпанием. Желтый луч питание на кнопке, зелёный - на котроллере. Чётко видно как они за 320 мкс доходят до BOD на 1.8 В и умирают.
Прикрепленное изображение

Совсем умирают.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jan 3 2010, 14:21
Сообщение #13


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(VladislavS @ Jan 3 2010, 17:14) *
Откопал еще одну плату, на которой ещё не успел стереть китайскую прошивку. Посмотрел как она работает. Похоже, они даже не парятся с засыпанием. Желтый луч питание на кнопке, зелёный - на котроллере. Чётко видно как они за 320 мкс доходят до BOD на 1.8 В и умирают.

Нуля не видно. И какое входное сопротивление щупа ? В даташите нет данных о пороговом напряжении сохранения данных в RAM но, вполне возможно, что на этом все и построено....
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Jan 3 2010, 14:29
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



Цитата
4 ms - это уже в "своем" варианте или в "прототипе" ? Если они не используют BOD, то в "настоящем" power down потребление гораздо меньше...

4мс это мой код. Оригинал 320 мкс и упирается в BOD.

Цитата
Дурацкий вопрос - а защита включена ? Может, попробовать вычитать, что они там понаписали ?

Обижаешь smile.gif

Цитата
P.S. А сам я нафиг выдрал эту плату управления, потому как достала она меня этим постоянным переключением режимов и идиотским стробоскопом..

Да уж очень он яркий, если без режимов использовать. У меня диод CREE XP-G R5 на 1А под 350 люмен по даташиту валит. А есть ведь ещё мощней. Вот стробоскопы и решил выкинуть, да управление ШИМ-мом не очень там сделано.
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 3 2010, 14:41
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Чётко видно как они за 320 мкс доходят до BOD на 1.8 В и умирают


За это время можно че хош в EEPROM записать. Во всяком случае один бит с номером режима точно.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

23 страниц V   1 2 3 > » 
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 14:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01477 секунд с 7
ELECTRONIX ©2004-2016