|
|
![]() ![]() |
|
|
![]() ![]() ![]() ![]() |
|
Опции темы | Поиск в этой теме |
![]() |
![]() ![]() |
Hoвичёк фонарёвки.
Регистрация: 18.08.2012 Последняя активность: 18.02.2025 15:39
Сообщений: 4734
Сказал(а) спасибо: 1990
Поблагодарили: 1432 раз(а) в 717 сообщениях
|
![]()
INFERION
А у тебя термоконтроль как работает? По датчику в самой тиньке же? И каков алгоритм? По достижении определённой температуры, начинает ограничиваться ток? Но там же инерционность, мама не горюй... У Авсела драйвер по достижении заданной температуры, просто вырубался, и это было на мой взгляд не очень удачное решение - На среднем или минимуме фонарь почти не греется, почему бы не перевести туда? Очень неприятно вдруг оказаться в темноте. У Тамагочи сейчас гораздо удобнее сделано - драйвер потихоньку скидывает режимы, через долгую паузу, и ниже минимального у меня не опускался.
__________________
Fenix TK21, UltraFire UF-H6, Триплы C20C, ITP A2 EOS ss, Olight S20 Baton, DQG 18650 II, Niteye JA10, DQG AA, DQG 18650 clicky, С22С. |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
У меня обычный комплексный регулятор реализован. Ряд механизмов, разного рода регуляторов (ПИ, ПИД, Д, просто арифметики и т.п.), которые на выходе дают один единственный и общий параметр - ток. Я не люблю тулить подобные колхозы в управление, типа резких там сбросов, переключений и т.п. Это чтоб ты понял общую суть структуры. Теперь примеры:
Есть ряд регуляторов, каждый крутит ток стараясь держать свой параметр: 1. Самый главный - стабилизатор тока. Он состоит из двух частей для двух режимов работы дросселя. Один мощный, другой слабый. С точки зрения всего остального - это полностью самостоятельный узел, которому достаточно просто заказать нужный ток. С железом он разберётся сам. 2. Регулятор ВХОДНОГО напряжения. Его задача держать стабильно просадку на батарее. Просадка ровно пол вольта, абсолютное напряжение не ниже 3V. Если другие механизмы требуют пониженный ток - этот механизм просто даёт понять сколько он хочет, больше этого значения фонарь не выдаст, иначе перегрузится аккум. Значение это всегда, в любой момент актуально. Оно ещё при подключении батареи вычисляется и обновляется с каждым циклом (16мс) программы. Поэтому даже маяк, при попытке резко выкачать с банок 30А не сможет выбить их защиту и/или перезагрузить МК критической просадкой напряжения. 3. Регулятор температуры. Его задача держать стабильно температуру, однако как и в случае со вторым механизмом - если что-то захочет уменьшить ток ещё больше - приоритет будет за ним. А этим "что-то" чаще всего является интерфейс. Если температура ниже порога - термоконтроль захочет выжать максимум, чтоб прогреть фонарь. Вот и получается что эстафету перехватывают те или иные механизмы, и начинают стабилить свой параметр, который раньше упрётся в предельно допустимый уровень. Теперь отвечая на вопрос прямо - термоконтроль мягко крутит яркость под температуру, стараясь держать её стабильно. Инерция совершенно не помеха - Д-регулятор штука очень дубовая, а мясо в корпусе позволяет реализовать конкретное сглаживание (тормоза ведь не мешают) и задавить адовый и весьма противный шум встроенного термодатчика. Почему нельзя заюзать более точный ПИД - я в соседней теме описывал. Его невозможно настроить на широкий диапазон условий. Сунь в воду - возбуд, сунь под одеяло - опять возбуд... А в интерфейс я засунул только таймаут в 10 секунд. Если ток на нуле висит слишком долго - софт ршает что ему ловить нечего и пора идти спать. Естественно 10 секунд при нормальном выключении он ждать не будет. Глубокий сон удобно контролировать по слабой фоновой подсветке кнопки. Через светик начинает течь ток в 50мкА когда МК отправляется в Power Down. Больше интерфейс не делает ничего, он только задаёт желаемый ток и мигает светиками в кнопке (очень быстро, чтоб на глаз были мягкие и красивые оттенки всех цветов радуги). Ну и возится с EEPROM при загрузке и выключении... [Исправлено: INFERION, 23.09.2013 в 02:21] |
![]() |
![]() |
![]() |
![]() ![]() |
Hoвичёк фонарёвки.
Регистрация: 18.08.2012 Последняя активность: 18.02.2025 15:39
Сообщений: 4734
Сказал(а) спасибо: 1990
Поблагодарили: 1432 раз(а) в 717 сообщениях
|
![]()
INFERION
то есть, если на пальцах, я этот механизм понимаю так: ток достигает некоего порогового значения, термоконтроль начинает потихоньку, плавно снижать ток; (Температура при этом, по инерции ещё какое-то время идёт вверх). Как только температура поползла вниз - ток начинает плавно увеличиваться, и так далее, пока эта качеля не устаканится. Так? |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Качеля, это когда добротность у регулятора слишком высокая. Ну или усиление ошибки, кому как понятнее. Это происходит если неправильно настроить регулятор, у меня этого эффекта нет. Ток начнёт падать как только температура доберётся до порога, и перестанет падать, как только температура перестанет расти. Скорость изменения тока слишком низкая, чтоб прозевать момент. Из-за задержек распространения температуры в тушке могут быть подобные эффекты, но у нас не настолько мощная печка, чтоб так стремительно разогревать железо. В нём не возникает значительный градиент температуры именно из-за теплоёмкости, а не отвода тепла. А остывает всё уж тем более равномерно и медленно.
Нормальный регулятор будет чётко держать температуру на одном уровне, но такой регулятор можно настроить только под известные условия. Тушка же может иметь совершенно разные параметры (одеяло, вода, воздух, различные корпуса, расположение датчика и т.п.), поэтому единственный вариант - неприхотливый пропорциональный регулятор, у которого нет памяти, поэтому на тормоза ему насрать. Он не знает что было такт назад и действует по факту ![]() Инерция же туши позволяет ввести фильтр после П-регулятора и уменьшить уровень шума раз так в 256... Главное чтоб он тормозил меньше за тушу, иначе регулятор не будет успевать за нею... [Исправлено: INFERION, 23.09.2013 в 04:00] |
![]() |
![]() |
![]() |
![]() ![]() |
|
Hoвичёк фонарёвки.
Регистрация: 18.08.2012 Последняя активность: 18.02.2025 15:39
Сообщений: 4734
Сказал(а) спасибо: 1990
Поблагодарили: 1432 раз(а) в 717 сообщениях
|
![]()
INFERION
Цитата:
![]() Мы ведь можем менять ток со скоростью 1мА в минуту, по достижению пороговой температуры, а можем со скоростью 10мА в секунду. Результат будет сильно разный, а механизм - один. Иными словами, это уже варианты настройки, а я про сам механизм спрашивал. Спасибо за разъяснения. |
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Скорости как таковой нет. Есть постоянная времени, усиление. А скорость уже из них вычисляется в конкретный момент времени, в конкретной ситуации. Если она стабильная при любых значениях ошибки - значит ламер какой-то регулятор писал через тупой инкремент/декремент переменной, или в конкретной задаче это по каким-то причинам оптимальный механизм...
[Исправлено: INFERION, 23.09.2013 в 12:22] |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Короче надоело возится с термоконтролем. 16x оверсемплинг лишь шум уменьшил, но точность поднять не позволил. Сказывается инерционность системы. Этот узел хреновый своей неопределённостью. Нельзя так вот просто взять и подстроить регулятор под конкретную задачу, ибо задачи то конкретной и нет. Да и шум хреново давится, он изначально меньше 1LSB, что очень плохо.
Так что забиваю на него и допиливаю дальше всякие косметические мелочи. Недельки через полторы как раз и платы подоспеют... |
![]() |
![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 14.02.2011 Последняя активность: 19.09.2024 09:07
Сообщений: 87
Сказал(а) спасибо: 81
Поблагодарили: 15 раз(а) в 9 сообщениях
|
![]() |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Засунул в память яркость стробососов и типы настроек яркости (плавно/дискретно) на все режимы индивидуально. Жаль места не выделил на память последнего активного варианта строба. Теперь в памяти появились свободные биты, и можно наконец-то учить программу распознавать тип кнопки и хранить флаг быстрого доступа к стробу (который включается/отключается в инженерке). Вбил наиболее устойчивые стартовые значения индуктивности и выходного напряжения. Калибруется туго (они очень далеко от реальных), но зато теперь можно цеплять разные дроссели (1...10мкГн при 8А шунте) и 2...4 светика последовательно. Помучатся с калибровкой придётся 1 раз - данные записываются в EEPROM. Если что - в инжеренке можно это всё дело сбросить. Сброс интерфейса в "заводские" тоже предусмотрен.
В общем пошел я делать кнопку умнее. Хочу научить драйвер работать с двухтактной (фотокнопкой). Быстрый доступ к стробу думаю засунуть под двойной полный клик такой кнопки, и под двойной клик с зажатием обычной в выключенном состоянии (в норме зажатие приводит к изменению яркости почти сразу после входа в режим). Более сильное нажатие двухтактной кнопки приведёт к включению турбо, и вернётся в исходное состояние при отпускании. Причём турбо с таким же овердрайвом как в импульсных режимах (+25% к макс. мощности). Собственно быстрый доступ к стробу является просто "телепортацией" в тактический режим на нужное место. Поэтому дальше управление в 6-м режиме справедливо и при таком входе. Т.е. стартует с заранее заданной яркости, которая там же и регулируется. Ещё подумаю над сохранением типа стробососоморзянки, тогда можно будет так сразу входить и к примеру в велостроб, или в сосалку, смотря что было активно на момент выхода из режима. [Исправлено: INFERION, 26.09.2013 в 06:14] |
![]() |
![]() |
![]() |
![]() ![]() |
Увлеченный
Регистрация: 04.01.2013 Последняя активность: 05.03.2020 19:45
Сообщений: 383
Сказал(а) спасибо: 92
Поблагодарили: 137 раз(а) в 71 сообщениях
|
![]()
Идея то хорошая, только мне кажеться что могут возникнуть проблемы со слабой тактильной отдачей таких кнопок. К примеру замерзшими руками или в перчатках, будет сложновато и однотактную 4 раза подряд нажать.
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
А зачем её в мороз то нажимать 4 раза? И одного хватит, никто не заставляет им делать что-то ещё, кроме как светить в -20. Кому не нравиться двухтактная - отключает в инженерке полунажатие. Достаточно войти в инженерку с полным нажатием и драйвер решит что у него обычная кнопка...
|
![]() |
![]() |
![]() |
![]() ![]() |
Hoвичёк фонарёвки.
Регистрация: 18.08.2012 Последняя активность: 18.02.2025 15:39
Сообщений: 4734
Сказал(а) спасибо: 1990
Поблагодарили: 1432 раз(а) в 717 сообщениях
|
![]()
Не, фотокнопка это тема.
![]() |
![]() |
![]() |
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 07.04.2011 Последняя активность: 05.07.2019 16:52
Сообщений: 2816
Сказал(а) спасибо: 25
Поблагодарили: 402 раз(а) в 189 сообщениях
|
![]()
Раз мы всё равно пользуемся EEPROM для хранения настроек - почему нельзя сделать возможность забить туда режимы вручную и отключить инженерное меню?
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Зачем отключать инженерное меню? Это же всё равно что RESET у тиньки отключить - если что-то захочется изменить/исправить - фиг. Т.е. необратимые последствия, чего Вы же так и избегаете...
Мне вот интересно, Вы в интернете с какого оборудования сидите? Неужели с такого неустойчивого против обезьяны инструмента как ПК или смартфон? [Исправлено: INFERION, 27.09.2013 в 13:05] |
![]() |
![]() |
![]() |
![]() ![]() |
|
Ветеран Фонарёвки
Регистрация: 07.04.2011 Последняя активность: 05.07.2019 16:52
Сообщений: 2816
Сказал(а) спасибо: 25
Поблагодарили: 402 раз(а) в 189 сообщениях
|
![]()
А зачем в операционной системе заводить пользовательские учетные записи?
То берем в руки программатор и включаем инженерное меню обратно. Цитата:
И да, за свой ПК я посторонних не пускаю. |
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
ПК личный инструмент, я за свои тоже не пускаю. Вот и фонарь так же, с тем лишь условием что его можно дать кому-нибудь попользоваться и вернуть всё как было, если обезьяна таки доберётся до критичных мест. И хорошо если это сделать можно прямо на месте, без какого-либо инструментов и оборудования...
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Добавил мелочь - в инженерке можно посмотреть смещение шунта (отображается количеством LSB вместо заряда батареи). Программа его устраняет, но иногда смещение знать полезно (важно чтоб у внешнего усилителя оно было положительным, и не превышало определённого значения). Мне почему-то показало 5...7LSB (внешний усь). Как-то мало, я ожидал в районе 20-ти судя по показаниям мультиметра...
Накопал в EEPROM место, так что стробосос будет запускаться последний активный. [Исправлено: INFERION, 27.09.2013 в 23:32] |
![]() |
![]() |
Поблагодарили: 1 раз |
Nimnul (29.09.2013)
|
![]() |
![]() ![]() |
Ветеран Фонарёвки
Регистрация: 07.04.2011 Последняя активность: 05.07.2019 16:52
Сообщений: 2816
Сказал(а) спасибо: 25
Поблагодарили: 402 раз(а) в 189 сообщениях
|
![]()
Я предпочитаю изначально зарубить возможность накосячить. Потому что фонарь приходится давать кому-то в руки очень часто, ибо раздвоиться для съемки в контровом свете я не могу.
|
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Война с байтами подходит к финалу. Новая прошивка умеет почти всё чего я хотел, и даже осталось немного памяти для дальнейшей модернизации управления. Необходимо научить кнопку возвращаться в исходное состояние при нажатии на вторую, которая под нею (двухтактная "фотокнопка", штатная в тушках TM11/15/26). Смысл в том, чтоб при сильном нажатии на кнопку включался овердрайв, а при отпускании этой кнопки - фонарь возвращался к тому состоянию, в котором был на момент нажатия кнопки. Проблема в том что так или иначе сначала нажимается основная кнопка, и потом уже продавливается дополнительная. Проще всего ввести паузу на реакцию верхней кнопки, но я не люблю тормоза в интерфейсе. Кнопка должна уметь понимать всё это дело и откатываться на шаг назад.
Сейчас драйвер умеет работать с 4-ю каналами. Один просто включает индикатор и анимацию процесса заряда батареи. Канал планируется для прямого подключения к обычному зарядному контроллеру, или косящему под него программному варианту на другой тиньке. Второй и третий предназначены для двухтактной кнопки. Не смотря на то, что всё заводится на один пин МК - друг другу они не мешают и могут работать одновременно. Четвёртый канал для обычной кнопки - вот она уже блокирует остальные каналы пока нажата. Но одновременное использование фотокнопки и обычной не планируется (интерфейс у них схожий - смысла нет), а индикация заряда батареи всё равно в большинстве случаев вытесняется индикацией различных действий кнопки при манипуляциях. Разница между каналами в сопротивлениях, через которые PINB5 (RESET, ADC0) подтягивается к массе. 20k, 10k, 5k, и 0k соответственно. Фильтр от переходных процессов имеется, ошибка в номиналах может доходить до 10% на 5k, 20% на 10k, и более 40% на 20k. [Исправлено: INFERION, 04.10.2013 в 12:55] |
![]() |
![]() |
![]() ![]() |
![]() ![]() |
![]() Регистрация: 07.04.2013 Последняя активность: 13.06.2023 02:24
Сообщений: 5759
Сказал(а) спасибо: 340
Поблагодарили: 8163 раз(а) в 2386 сообщениях
|
![]()
Обновил первый пост. Накатал инструкцию и обновил прошивку, выложил исходник предыдущей версии...
|
![]() |
![]() |