Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как распознать кратковременное выключение на Tiny13
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7
slanted
Цитата(Rst7 @ Jan 7 2010, 04:47) *
Я вот тоже думаю, что дело в драйвере (и хотел это предложить раньше, да занят был). Если бы это был просто полевик, то его затвор вполне неплохо хранил бы напряжение ниже чем, примерно, полвольта.
...

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


Там не затвор, это питание самого драйвера на котором у него висит bandgap reference и немного управляющей логики. Скорее всего, оно быстро разрядится до нуля.... или не до нуля, а до порога открытия каких-нибудь переходов, а дальше будет разряжаться мее-е-едленно... а это идея кстати!
rx3apf
Цитата(slanted @ Jan 7 2010, 12:45) *
Там не затвор, это питание самого драйвера на котором у него висит bandgap reference и немного управляющей логики. Скорее всего, оно быстро разрядится до нуля.... или не до нуля, а до порога открытия каких-нибудь переходов, а дальше будет разряжаться мее-е-едленно... а это идея кстати!

В любом случае, момент пропадания питания асинхронный относительно фазы PWM-управления драйверами. Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ?
VladislavS
Цитата
похожий девайс

Ну собственно это оно и есть, только топология чуть другая.

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


Со стабилизированным источником питания, с нагрузкой и без переключение режимов работает.

Цитата
безусловно... при выключении контроллер не может знать, на какое время его выключили

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

С праздником всех! По этому поводу жена отобрала все приборы на сегодня. smile.gif
adc
Глупый вопрос, но все же)))А оригинальный код в тиньке наверняка залочен?
Когда жена вернет приборы :-), попробуйте отключить резюки на ацп, как в этом случае поведет себя контроллер?
С праздником!
@Ark
Цитата
Цитата(Stells)
подтяжкой поддерживать? попробовал на меге8 - за 10мкс напряжение падает до 0. если только подтяжку выключать перед отключением питания? но все-равно при Rвх=100МОм, Cвх=10пФ получатся миллисекунды

Есть еще идея использовать внутренний конденсатор АЦП. Хотя его емкость всего 14pF, но если он будет отключен от всех внешних входов, то сопротивление утечки вполне может оказаться в районе 10ГОм.
При выключении питания быстро отключить АЦП, чтобы не разрядить конденсатор, а при старте - посмотреть, осталось ли там что-нибудь...
МП41
Я бы сделал так:
1. Подаётся питание, начинает работать программа.
2. Проверяем сразу же ячейку №2 EEPROM:
- если она равна 0, то режим не меняем, а просто читаем его из ячейки №1 EEPROM.
- если она равна 1, то читаем режим из ячейки №1 EEPROM, инкрементируем, применяем маску и загоняем назад в эту ячейку.
3. Пишем в ячейку №2 единицу.
4. Запускаем таймер, чтобы реализовать задержку, скажем, в 1 секунду (я понимаю, что таймер там один и задействован он на ШИМ, но это не проблема, задержку и без таймера можно сделать).
5. Спустя задержки пишем в ячейку №2 значение 0.

Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится.
galjoen
Цитата(МП41 @ Jan 7 2010, 14:51) *
Т.е., если контроллер поработает до отключения меньше секунды, то при следующем включении режим сменится.

Просьба к МП41 и всем остальным, кто сюда пишет. Прежде, чем писать - прочитайте эту тему. Я понимаю, что это трудно т.к. постов много, но всётаки.
А так ещё больше постов станет, и вообще разобраться будет невозможно...
МП41
Я прочитал всю тему до этого.

Если Вас смущает задержка в одну секунду, то это для примера. Её можно сделать хоть в 5 секунд, если опрос АЦП и работа ШИМа идёт через прерывания, то визуально это не повлияет на работу фонаря.
andrikk
поддерживаю МП41, идея достойная жизни, правда еепром дергаем часто.

Код
void main()
{
   unsigned char mode;
   mode = read_mode_from_ee();
   set_lighting_mode(mode);
   mode++;
   write_mode_to_ee(mode);
   wait_one_second();
   mode--;
   write_mode_to_ee(mode);
   while(1);
}
@Ark
Цитата
поддерживаю МП41, идея достойная жизни...

Только, совсем не по теме топика... smile.gif
Rst7
Цитата
Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ?


Там же есть возможность измерить напряжение питания. А значит, задолго до умирания перевести ножку в лог. 1

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


Такой вариант мне в голову приходил. Но помнится мне, что постоянная времени там хиленькая - раз, второе - как произвести преобразование без внутреннего цикла выборки АЦП? Ибо подключение конденсатора ко входным цепям в момент семплирования (курить диаграммы работы АЦП) , боюсь, приведет к отрицательным результатам. Хотя.. Если в комплексе - собственная емкость висящей в воздухе ножки и конденсатор хранения, то может оказаться вполне-вполне.
@Ark
Цитата
Такой вариант мне в голову приходил...

Это нужно пробовать. К сожалению, Тиньки под рукой нет. А результаты экспериментов на PIC12, боюсь, автор темы не примет. smile.gif
МП41
Цитата(@Ark @ Jan 7 2010, 14:51) *
Только, совсем не по теме топика... smile.gif

Хм, я - в танке что-ли? smile.gif
Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.
@Ark
Цитата
Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.

А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? smile.gif
VladislavS
Цитата
Хм, я - в танке что-ли?

Спишем на НГ smile.gif Ибо предложил ты алгорит определения кратковременного включения smile.gif
rx3apf
Цитата(МП41 @ Jan 7 2010, 16:01) *
Хм, я - в танке что-ли? smile.gif
Вопрос был у топикстартера, как контроллер определяет кратковременное отключение питания.

Ну да, _отключение_. А предложенное решение - как определить кратковременное _включение_. Решение неплохое, кстати - переключение кратковременным разрывом интересно для оперативного управления и оно часто "достает", срабатывая когда не надо (и всякие "шаманства" с сохранением содержимого неудобны непредсказуемым и ненормированным временем реакции, что уще усугубляет - потому я и предлагал отдельный конденсатор с отдельным резистором утечки, и конденсатор взять не керамический, а пленочный, для стабильности). А переключать кратковременным включением удобно для "долговременного" использования, чтобы выбрать режим и им пользоваться, все время не дергая (хотя тоже проблема - короткие световые сигналы кнопкой с прямым кликом уже подавать нельзя), только надо разумно использовать ресурс EEPROM, "размазать" его...
andrikk
Фото фанарика можно? куплю и тоже засяду за измерениями, уж очень как-то мистически все получается.
galjoen
Цитата(rx3apf @ Jan 7 2010, 16:15) *
только надо разумно использовать ресурс EEPROM, "размазать" его...

Мои девайсы на AVR, которые имеют загрузчик, переходят в режим загрузчика после двух, следующих друг за другом, кратковременных включений (менее 2 сек). По EEPROM всё "размазано", также поддерживается счётчик включений. НО объяснить пользователю как перевести девайс в режим загрузки крайне сложно. Не всем конечно. Некоторые сразу попадают. Зато другие... Инструкции им не помогают... Переписка через электронную почту тоже. Так они и выключают девайс на 2 секунды... Неделями... Помогает только телефонный звонок и работа с девайсом по командам в реалтайме (в телефонную трубку). Вот поэтому я думаю, а м.б. это более естественно - девайс выключать на 2 секунды. Ну или можно сделать чтобы и так и так в загрузчик он переходил.
Простите за оффтоп.
МП41
Цитата(@Ark @ Jan 7 2010, 15:09) *
А у Вас получается - кратковременное подключение питания! Дык, кто из нас в танке? smile.gif

А-а-а, ну понятно. Согласен. smile.gif Будем думать дальше над усовершенствованием алгоритма.
Насчет ресурса EEPROM: не думаю, что китайцы сильно об этом беспокоятся. Даже лучше, если фонарик сам "сдохнет" когда-нибудь, чтобы пользователь купил новый.
VladislavS
Цитата
Фото фанарика можно?


http://www.dealextreme.com/products.dx/category.940 - выбирай smile.gif 99% из них с торцевой кнопкой. Так что, те что многорежимные и те что с памятью это оно.

http://www.dealextreme.com/details.dx/sku.6190 - отдельно драйвер.
http://www.dealextreme.com/details.dx/sku.7612 - отдельно драйвер.



Думаю что вот эти точно с таким драйвером:

http://www.dealextreme.com/details.dx/sku.32720
http://www.dealextreme.com/details.dx/sku.15335
andrikk
у меня такой, но без режимовsad.gif http://www.dealextreme.com/details.dx/sku.5739
сорри за оффтоп.
@Ark
... Я бы, на месте топикстартера, переключил нижнее плечо делителя с GND на выход драйвера OUT. Топология это позволяет и лишних деталей не требуется. IMHO, было бы гораздо лучше во всех отношениях. wink.gif
VladislavS
Ну почему же офтоп? С фонарика всё и началось. Меняешь драйвер, и будет тебе мультирежим smile.gif


Цитата
IMHO, было бы гораздо лучше во всех отношениях.

Ну расшифруй, что ли? Чем без АЦП лучше чем с АЦП?
slanted
Цитата(rx3apf @ Jan 7 2010, 14:57) *
В любом случае, момент пропадания питания асинхронный относительно фазы PWM-управления драйверами. Эту теорию можно было бы "притянуть", если бы в момент пропадания на выходе всегда был "1". А если "0" ?

А пофиг. Все равно за конечное и весьма короткое время оно достекает до уровня открытия одного перехода (0.3-0.6В), например, через внутреннюю подтяжку контроллера (ЕМНИП, BOR переводит выводы в Z), а дальше все будет определяться чисто пассивными параметрами схемы.
Да и нету там PWM, кстати. Драйвер тупо выдает свои 350мА, регулируется по принципу обычного ldo стабилизатора.
andrikk
перечитал в очередной раз даташит на тини, остается только схема вотчдога, которая тактируется отдельно и не сбрасывается BOR и POR.
VladislavS
Цитата
Да и нету там PWM, кстати. Драйвер тупо выдает свои 350мА, регулируется по принципу обычного ldo стабилизатора.

Да, драйвер обычный стабилизатор тока. ШИМ делает контроллер. 1 на VDD - 350 мА, 0 на VDD - 0 мА smile.gif
@Ark
Цитата
Ну расшифруй, что ли? Чем без АЦП лучше чем с АЦП?

Почему это без АЦП? Измерения, просто, по-другому придется организовать, только при включенном драйвере.
Зато, можно отключив драйвер, спокойно "проспать" пару секунд на 1мкф...
galjoen
Цитата(andrikk @ Jan 7 2010, 17:43) *
перечитал в очередной раз даташит на тини, остается только схема вотчдога, которая тактируется отдельно и не сбрасывается BOR и POR.

Тоже подумывал на эту тему - при включении состояние ватчдога определять. Но тогда непонятно как перед перед неожиданным выключением его в это состояние приводить.
МП41
VladislavS, а есть возможность "промониторить" ток потребления контроллера при включении и переключении режимов? По идее, во время записи в EEPROM должно потребление возрастать. Просто интересно...
slanted
Цитата(galjoen @ Jan 7 2010, 19:19) *
Тоже подумывал на эту тему - при включении состояние ватчдога определять. Но тогда непонятно как перед перед неожиданным выключением его в это состояние приводить.

Приводить необязательно, можно сбрасывать его каждые 10мс и тогда период между переполнениями вотчдога будет выдерживаться с точностью до этих самых 10мс. Если период достаточно большой, то этой неравномерностью можно и пренебречь.
VladislavS
Цитата
Тоже подумывал на эту тему - при включении состояние ватчдога определять.

Проверено. Все что касается WD сбрасывается при ресете намертво.

Цитата
VladislavS, а есть возможность "промониторить" ток потребления контроллера при включении и переключении режимов? По идее, во время записи в EEPROM должно потребление возрастать. Просто интересно...

Ну настолько точного измерения я сделать не смогу.

Пока единственное направление, дающее хоть что-то - неинициализированная переменная.
1. Она действительно при включении стремится к какому-то "любимому" состоянию.
2. Увеличение разрядности этой переменной автоматически увеличивает время пока её "колбасит".

Прошу прощения за жаргон, просто пока не удаётся обуздать этот процесс:
1. Нужен сходящийся алгоритм, позволяющий вычислить "любимое" состояние и потом его уточнять со временем.
2. Внешние воздействия (висящие провода, поднесённая рука и т.д.) сильно влияют на прцесс.
stells
Цитата(@Ark @ Jan 7 2010, 14:36) *
Есть еще идея использовать внутренний конденсатор АЦП. Хотя его емкость всего 14pF, но если он будет отключен от всех внешних входов, то сопротивление утечки вполне может оказаться в районе 10ГОм.
При выключении питания быстро отключить АЦП, чтобы не разрядить конденсатор, а при старте - посмотреть, осталось ли там что-нибудь...

я попробовал на меге, в течение 300мкс напряжение падает в ноль. ну пусть щуп что-то отбирает, все-равно до секунд не добраться... мне кажется
Polaris
Почему бы все-таки не снять осциллограммы включения? Осциллограммы выключения показывают только то, что никакого режима засыпания там нет, больше они к решению проблемы ничего не добавят. А вот посмотреть, как растет напряжение в первом и втором случае, было бы полезно. В противном случае это все гадание на кофейной гуще получается, ничего информативного.
Rst7
Цитата
я попробовал на меге, в течение 300мкс напряжение падает в ноль. ну пусть щуп что-то отбирает, все-равно до секунд не добраться... мне кажется


Ненене, щуп - нельзя. Нужно измерять именно при помощи внутреннего АЦП. Причем, после снятия и подачи питания.
VladislavS
Цитата
я попробовал на меге, в течение 300мкс напряжение падает в ноль.

А можно чуть подробней что делал?
stells
Цитата(VladislavS @ Jan 7 2010, 22:37) *
А можно чуть подробней что делал?

снял подтяжку на входе, а дальше стало не интересно. в принципе все входы у AVR после перевода в Z-состояние так себя ведут... может и ошибаюсь laughing.gif
правда в тини13 есть возможность отключения цифровых буферов, что снизит утечки... я этого не делал
VladislavS
Снял осциллограммы включения. Видно намного больше чем ожидал. Сейчас потихоньку выложу - будем трактовать.

Начну с самого питания. На 8-й ноге при включении вот что видно благодаря высокому выходному сопротивлению ключа по питанию.
Нажмите для просмотра прикрепленного файла
Я тут вижу следующее:
- через 6 мс после включения, похоже, происходит запись в EEPROM. Там как раз 2 провала по 1.8 мс. Тут у меня вопрос к знатокам. Это видно стирание+запись или запись двух ячеек памяти?
- через те же 6 мс пошли пички частотой около 5 кГц - это ШИМ - его я видел вторым лучём.

То есть, через 6 мс контроллер уже всё для себя решил и дальше только молотит ШИМ. Причем, ШИМ скорее всего аппаратный, поскольку даже в режиме 100% яркости есть короткий импульс нуля.

Дальше 2 и 3 ноги (PB3, PB4). На них диаграмма совершенно одинакова, так что выложу одну.Нажмите для просмотра прикрепленного файла
Я думаю, что это опрос наличия перемычек на землю. При замыкании PB4 на землю отключаются лишние режимы работы фонаря - стробы. Опять таки, через 6 мс они уже не нужны и их отпускают.
galjoen
Цитата(VladislavS @ Jan 7 2010, 21:25) *
Пока единственное направление, дающее хоть что-то - неинициализированная переменная.
1. Она действительно при включении стремится к какому-то "любимому" состоянию.
2. Увеличение разрядности этой переменной автоматически увеличивает время пока её "колбасит".

Т.е. даже с резистором, включенным параллельно питанию, ОЗУ некоторое время сохраняется? А какое, хотя бы порядок?
Цитата(VladislavS @ Jan 7 2010, 21:25) *
1. Нужен сходящийся алгоритм, позволяющий вычислить "любимое" состояние и потом его уточнять со временем.

Я когда защиту делал, то биты ОЗУ на 3 категории делил:
1. Которые в 1 устанавливаются.
2. Которые в 0 устанавливаются
3. Которые то так то сяк, поэтому с ними дела лучше не иметь.
Тут другой случай, но попробовать можно. EEPROMа для этого в тиньке маловато, но я бы предложил так:
1. Реализовать всё это счётчиками (знаковый байт) в EEPROM, по байту на бит ОЗУ. По полбайта лучше, но сложней. Как там с местом во FLASH?
2. При включении бит=1 -> счётчик+=;, при включении бит=0 -> счётчик-=;.
3. За переполнением счётчиков следим и не допускаем.
4. У битов, которые относятся к VarR, счётчики не трогаем.
5. При каждом следующем включении сдвигаем VarR и ConstR на 1 бит (где что хранится в EEPROM). Чтобы все счётчики периодически обновлялись - см. п. 4.
6а. Значимость битов пропорциональна произведению его значения (1 эквивалентен 1, 0 эквивалентен -1) на соответствующий ему счётчик. Произведение (числа на 1 или -1) это сильно сказано, произведение знаков имеется ввиду.
6б. Т.е. считаются 2-е знаковые кумулятивные суммы ConstN и VarN.
7. Эти суммы сравниваются примерно так, как я предлагал в предыдущем алгоритме.
Цитата(VladislavS @ Jan 7 2010, 21:25) *
2. Внешние воздействия (висящие провода, поднесённая рука и т.д.) сильно влияют на прцесс.

У меня такого не было, хотя особо не экспериментировал. Но нагревание паяльником сильно не влияло.

А м.б. вам стоит выложить код, относящийся к определению времени выключенного состояния? Сделаем опенсоурсе проект. А? Я бы поучаствовал...
VladislavS
На 5-й ноге (PB0) всё подругому.
Нажмите для просмотра прикрепленного файла
Комментировать не буду - не знаю.


На 7-й ноге (ADC1) ничего интересного - с точностью до резистивного делителя повторяет питание.


При коротком (со сменой режима) и длинном (без смены режима) диаграммы на всех ногах не отличаются.

Цитата
А м.б. вам стоит выложить код, относящийся к определению времени выключенного состояния?

Ух, как всё сложно описали. А эти гады через 6 мс после старта уже знаю режим...
Код хоть сейчас могу выложить, но куска, отвечающего за определение времени выключенного состояния там нет, ибо решение еще не найдено. А так, пожалуйста - программа фонарика, переключающего режим при каждом включении, управление ШИМ-мом ( 100% - 35% - 4%) и защитой АКБ от переразряда.

Код
#include <ioavr.h>
#include <intrinsics.h>

__regvar __no_init unsigned char mode @ 15;
__regvar __no_init unsigned char power_low_counter @ 14;

__no_init __eeprom unsigned char ee_mode;

#ifdef __cplusplus
extern "C" {
#endif
char __low_level_init()
{
  CLKPR|=(1<<CLKPCE);
  CLKPR=3;
  
  DDRB=(0<<DDB5)|(0<<DDB4)|(0<<DDB3)|(0<<DDB2)|(1<<DDB1)|(0<<DDB0);
  PORTB=(0<<PORTB5)|(0<<PORTB4)|(0<<PORTB3)|(0<<PORTB1)|(0<<PORTB0);
      
  ADMUX=(1<<REFS0)| 1; // Vref=1.1V , ADC1
  ADCSRA=(1<<ADEN)|(0<<ADSC)|(1<<ADATE)|(0<<ADIF)|(1<<ADIE)|(0<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  ADCSRB=0;      
  
  ACSR=(1<<ACD); //Analog Comparator Disable
  DIDR0=(1<<ADC0D)|(0<<ADC1D)|(1<<ADC2D)|(1<<ADC3D)|(1<<AIN1D)|(1<<AIN0D);
  PRR=(1<<PRTIM0)|(0<<PRADC);
  
  return 1;
}
#ifdef __cplusplus
}
#endif

#pragma vector=ADC_vect
__interrupt void ADC_Interrupt(void)
{
  switch(mode)
  {
    case 0:
      if(ADC<600) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=0; mode=2; power_low_counter=0; }
      PORTB|=(1<<PORTB1);
      break;
    case 1:
      if(ADC<600) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=1; mode=2; power_low_counter=0; }
      PORTB|=(1<<PORTB1);
      __delay_cycles(32);
      PORTB&=~(1<<PORTB1);
      break;
    case 2:
      if(ADC<558) power_low_counter++; else power_low_counter=0;
      if(power_low_counter>100) { ee_mode=2; mode=3; power_low_counter=0; }
      PORTB|=(1<<PORTB1);
      __delay_cycles(2);      
      PORTB&=~(1<<PORTB1);
      break;
    default: //Защитное выключение
      PORTB&=~(1<<PORTB1);
      break;
  }  
};

int main( void )
{  
  __delay_cycles(20000);
  power_low_counter=0;
  mode=ee_mode;
  switch(mode)
  {
    case 0:
    case 1:
      ee_mode++;
      break;
    default:
      mode=2;
      ee_mode=0;
      break;
  }

  ADCSRA|=(1<<ADSC);  
  __enable_interrupt();
  for(;;)  
  {  
    MCUCR=(1<<SE)|(1<<SM0);
    __sleep();
  }
}
andrikk
Цитата(VladislavS @ Jan 7 2010, 22:38) *
Я тут вижу следующее:
- через 6 мс после включения, похоже, происходит запись в EEPROM. Там как раз 2 провала по 1.8 мс. Тут у меня вопрос к знатокам. Это видно стирание+запись или запись двух ячеек памяти?
- через те же 6 мс пошли пички частотой около 5 кГц - это ШИМ - его я видел вторым лучём.

То есть, через 6 мс контроллер уже всё для себя решил и дальше только молотит ШИМ. Причем, ШИМ скорее всего аппаратный, поскольку даже в режиме 100% яркости есть короткий импульс нуля.


что происходит с питанием на протяжении 5-ти секунд после включения? может там еще пару провалов будет?
alevnew
А не может ли случаем контроллер считать время ВКЛЮЧЕНИЯ, а не выключения? Т.е. если включен более 1с (к примеру), то не меняем режим, а если меньше, то при следующем включении режим меняем ? Тогда все получается просто. После включения инвертируем один бит в еепром, а через секунду ( к примеру) - другой. Если при следующем включении данные биты разные - меняем режим, если одинаковые - не меняем.
adc
Цитата(alevnew @ Jan 11 2010, 08:41) *
А не может ли случаем контроллер считать время ВКЛЮЧЕНИЯ, а не выключения? Т.е. если включен более 1с (к примеру), то не меняем режим, а если меньше, то при следующем включении режим меняем ? Тогда все получается просто. После включения инвертируем один бит в еепром, а через секунду ( к примеру) - другой. Если при следующем включении данные биты разные - меняем режим, если одинаковые - не меняем.

А если захочется переключить эффект через 5 секунд работы? Два раза нажимать? biggrin.gif
VladislavS
Вчера попробовал с компаратором повозиться. В даташите на каждом углу написано, что опорное напряжение появялется не сразу, должно стабилизироваться и т.д. Подал на + компаратора опорное напряжение 1.1, а на минус вход ADC1. И... Что-то я не заметил, что оно с каким-то опозданием появляется.
alevnew
Цитата(adc @ Jan 11 2010, 12:39) *
А если захочется переключить эффект через 5 секунд работы? Два раза нажимать? biggrin.gif


Ну да. Вернее получается вроде так - отпустили кнопку, нажали, отпустили, нажали smile.gif

Кнопка же нормально разомкнутая ?

Вот если примерно по такой схеме сделать при почти тех же деталях - то тогда по остаточномй напруге на кондере можно время выкл. определять. smile.gif
Но это уже схема другая smile.gif
Marian
Если в Power-Down проц тянет 0.1 мкА, при 1.8 В(согласно описанию для ATtiny13V) , получается его сопротивление 18 Мом.
Значит при T=R*C, проц в Power-Down должен протянуть 18 сек.
Но тут встает вопрос делителя, может он все-таки стоит ближе к акуму? (до диода)
Тогда, в теории, при обнаружении выключения, загнать проц в Power-Down, может заряда хватит продержаться пару секунд ?
Просто мысли вслух.
VladislavS
Ещё раз напомню для вновьподтянувшихся после выходных: вопрос не в доделке конкретно этой платы. Я легко могу поставить электролит любой емкости, перепаять все резисторы - хоть час будем спать. Задача стоит не так!

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

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

Вот тут как раз та же постановка задачи, с одной лишь разницей, что такой фонарик может купить каждый и убедиться что это действительно работает!
stells
Цитата(VladislavS @ Jan 11 2010, 19:18) *
Вот тут как раз та же постановка задачи, с одной лишь разницей, что такой фонарик может купить каждый и убедиться что это действительно работает!

разницы две. этот фонарик сделали китайцы, которых все вечно хают. а вот попробуй, повтори! biggrin.gif
сорри за оффтоп
Marian
Цитата(VladislavS @ Jan 11 2010, 18:18) *
Вот тут как раз та же постановка задачи, с одной лишь разницей, что такой фонарик может купить каждый и убедиться что это действительно работает!

Фонарик пока только у вас. Я просто предлагал еще раз проверить схему.
(В схеме написано ATTiny13, на фото видно ATTiny13V,небольшая разница, но все-таки.)
Maik-vs
В общем, сначала нужно ответить на вопрос: зачем диод по питанию, коль скоро 1 мкф не обеспечивает не то, что 2 сек питания, а даже и запись в еепром?
А может быть, он всё же обеспечивает ОЗУ питанием на 2 секунды от перехода в "любимое состояние"? Оно, допустим, хранится в EEPROM и при включении сравнивается с RAM и потом RAM расписывается например нулями.
Зачем тогда нужен делитель напряжения?

Напряжение с делителя идёт на 7-ю ногу, которая только вход АЦП, какой смысл мерить напряжение на ней? А чтобы сравнить его с внутренней опорой 1,1 вольт. Потому что 4.6 вольта* 3КОм/13КОм = 0,97вольт при максимальном напряжении батарейки - как раз сходится.
При отключении питания конденсатор АЦП остаётся заряженным внутри кристалла, где изоляция хорошая! И 14пф могут протянуть долго... Тогда при включении питания выбираем ногу 2, висящую в воздухе (?) на вход АЦП и, собственно, АЦПуем smile.gif. Понимаем, что кондёр разряжен совсем/не совсем, записываем режим в EEPROM, соединяем вход АЦП с делителем, имеем понятие о напряжении батарейки и заряженный на будущее конденсатор АЦП.
Не этот ли пичок мы видим на ногах 2,3 в самом начале на диаграмме из №137?
Зачем тогда диод, если AMC7135 линейный регулятор?

Ещё одна ёмкость - 3 входа AMC7135, в дататшите обозванные "band-gap reference", которые можно подать на вход компаратора. Хотя утечка с неё по плате непредсказуема.

Нужна полная схема - куда идут ноги 1,2,3,5? Не видно ни на схеме из №64 ни на плате из №94.
МП41
Диод нужен, чтобы после отключения батареи конденсатор питал только контроллер. А может и от любителей поставить батарейки задом наперёд.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.