Vlad
Алгоритм значит такой управления предполагаем:
1) Пробуждение коротким нажатием кнопки
2) восстановление из памяти последней сохраненной емкости батареи, желаемого времени работы и уровня последней яркости диода
3) включение светодиода на последнюю яркость
4) пауза на горение по старому на 0.5 сек
5) коррекция емкости от текущих токов = текущая емкость
6) пересчет яркости для установки от текущей емкости
7) переключение диода - в новую текущую яркость
1) Если кнопка нажата коротко из включенного состояния, то...
2) сохранить в память емкость батареи, желаемое время работы, и текущий уровень яркости
3) засыпание
1) Если кнопка прижата при пробуждении: вход в режим настройки1 (выбор желаемого времени работы)
2) установка яркости соответствующей времени работы = 1 час (минимум, но максимально яркий)
3) ожидание коротких нажатий кнопки 5 секунд.
4) при коротких нажатиях: прибавляем кол-во желаемых рабочих часов 2,3,5,8,10,15,24,50 (к примеру)
5) пересчитываем яркость от емкости батареи и нового числа часов
6) устанавливаем яркость диода
7) ждем продолжения настройки 5 секунд
8) если 5 сек истекли: сохраняем настроенное в память и продолжаем светить
Фоновые периодические процессы:
1) каждые 5 секунд измерение токов заряда Icharge (А) и разряда Idiod (А) через диод
2) коррекция емкости батареи соответственно на Cbat = Cbat +Icharge (А) * 5 сек (АмперСекунд) и разряд: Cbat = Cbat - Idiod (А) * 5 сек (АмперСекунд)
3) каждую 1 минуту - сохранение в памяти значения емкости Cbat
4) проверка температуры диода каждые 30 секунд - и коррекция яркости (уменьшение на 5%), если начинается перегрев диода
Позже опциональный режим настройки2: диммер яркости.
Надо придумать как в него входить.
Vlad
Предыдущая BatCapacity, A*h = 1.8768
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0002
Пересчитанная BatCapacity, A*h = 1.8765
Idischarge, A = 0.1793; Прогноз жизни, ч = 10.4671
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0592
----------------------
Предыдущая BatCapacity, A*h = 1.8765
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0002
Пересчитанная BatCapacity, A*h = 1.8763
Idischarge, A = 0.1793; Прогноз жизни, ч = 10.4657
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0606
----------------------
Предыдущая BatCapacity, A*h = 1.8763
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0002
Пересчитанная BatCapacity, A*h = 1.8760
Idischarge, A = 0.1793; Прогноз жизни, ч = 10.4644
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0620
----------------------
Предыдущая BatCapacity, A*h = 1.8760
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0002
Пересчитанная BatCapacity, A*h = 1.8758
Idischarge, A = 0.1793; Прогноз жизни, ч = 10.4630
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0633
Vlad
Таак, вот чего добился пока, с эмуляцией разрядного тока, и зарядки, подключаемой виртуально.
---------------------
AppStart
ESP.ResetReasonMessage = Restarted 8: ESP_RST_DEEPSLEEP
Device_ID = F0F5BDFDD470_v0.261
MAGIC_EEPROM = 213
This device name = aiFonar_F0F5BDFDD470_v0.261
RTC read BatCapacity = 2.9979
RTC read Hours = 5
RTC read PWMpercent = 10
RTC read FullCapacity = 3
Configuring WDT...
Last Reset : ESP_OK
WDT is configured
Buttons initialized
Button added with GPIO 0
Calculated_TargetCurrent, A = 0.5696
Предыдущая BatCapacity, A*h = 2.9979
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9972
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2618
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0014
----------------------
Предыдущая BatCapacity, A*h = 2.9972
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9964
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2604
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0027
----------------------
Предыдущая BatCapacity, A*h = 2.9964
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9956
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2590
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0041
----------------------
Зарядка: Plug = 1
Предыдущая BatCapacity, A*h = 2.9956
DeltaT, ч = 0.0014; DeltaCapacity, A*h = 0.0001
Пересчитанная BatCapacity, A*h = 2.9956
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2591
Icharge, A = 0.6100; Прогноз окончания зарядки, ч = 4.9180
Время горения фонаря, ч = 0.0055
----------------------
Предыдущая BatCapacity, A*h = 2.9956
DeltaT, ч = 0.0014; DeltaCapacity, A*h = 0.0003
Пересчитанная BatCapacity, A*h = 2.9959
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2596
Icharge, A = 0.7810; Прогноз окончания зарядки, ч = 3.8412
Время горения фонаря, ч = 0.0069
----------------------
Зарядка: Plug = 0
Предыдущая BatCapacity, A*h = 2.9959
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9951
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2583
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0083
----------------------
Предыдущая BatCapacity, A*h = 2.9951
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9944
Idischarge, A = 0.5696; Прогноз жизни, ч = 5.2569
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0097
----------------------
Button(0) event: press (0ms)
Button(0) event: short_click (260ms since press)
ВЫКЛЮЧАЕМ ФОНАРЬ: —————————————
Saving Settings RTC
RTC saved BatCapacity = 2.9944
RTC saved Hours = 5
RTC saved PWMpercent = 10
RTC saved FullCapacity = 3
Saving Settings NVS
---------------------
AppStart
ESP.ResetReasonMessage = Restarted 8: ESP_RST_DEEPSLEEP
Device_ID = F0F5BDFDD470_v0.261
MAGIC_EEPROM = 213
This device name = aiFonar_F0F5BDFDD470_v0.261
RTC read BatCapacity = 2.9944
RTC read Hours = 5
RTC read PWMpercent = 10
RTC read FullCapacity = 3
Configuring WDT...
Last Reset : ESP_OK
WDT is configured
Buttons initialized
Button added with GPIO 0
Calculated_TargetCurrent, A = 0.5689
Предыдущая BatCapacity, A*h = 2.9944
DeltaT, ч = 0.0016; DeltaCapacity, A*h = -0.0009
Пересчитанная BatCapacity, A*h = 2.9934
Idischarge, A = 0.5689; Прогноз жизни, ч = 5.2615
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0016
----------------------
Предыдущая BatCapacity, A*h = 2.9934
DeltaT, ч = 0.0014; DeltaCapacity, A*h = -0.0008
Пересчитанная BatCapacity, A*h = 2.9926
Idischarge, A = 0.5689; Прогноз жизни, ч = 5.2601
Icharge, A = 0; Прогноз окончания зарядки, ч = inf
Время горения фонаря, ч = 0.0030
----------------------