Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Драйвер фонарика

Драйвер фонарика 10 мая 2019 23:16 #1

  • zaxtone
  • zaxtone аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 120
Приветствую вас уважаемый Soir.
Собственно затея управления драйвером такова:
Контроллер Attiny13. Вывод 3(PB4) будет служить выходом ШИМ сигнала, к которому будут подключены управляемые линейные стабилизаторы тока AMC7135.
Дабы не звенели аккумуляторы от ШИМ коммутации, ШИМ будет 37кГц.
Дать возможность изменять эту частоту в отдельном файле EEPROM указав в какой ячейке.
ШИМ будет работать в 4 режимах: 100% 60% 30% 10%.
Дать возможность изменять эту частоту в отдельном файле EEPROM указав в какой ячейке.
Так же еще 3 отдельных режима которые будут включаться отдельным алгоритмом:

--Стробоскоп 12Гц (50%),
--S.O.S. три короткие вспышки 0,5 сек > три длинные вспышки 1сек > короткие вспышки 0,5 сек интервал 2 сек и цикл повторяется
--Маячок 0,5сек вспышка 3сек интервал

•На вывод 2(PB3) подключена тактовая кнопка на землю.

•По питанию подключен делитель напряжения средняя точка которого подключена к выводу 7(PB2), этот порт АЦП будет служить детектором заряда аккумулятора. Резисторы в цепи установлю к плюсу 20,5кОм, к земле 10,5кОм. За полный заряд взял верхнее значение 3,7В (но в основном Аккумуляторы выдают и больше в районе 4В). Нижний порог разряда значение 3В.
•Цепь делителя напряжения рассчитал так что при вышеуказанных номиналах при 3,7В в средней точке 1,25В. При 3,3В значение равно 1,12В. При 3В, значение равно 1,02В.

•В рабочем состоянии при достижении напряжения 1,12В на выводе 7(PB2) ШИМ из состояния 100% 60% 30% переходит в 10%.
•Так же при пробуждении если напряжение на выводе 7(PB2) 1,12В, ШИМ включается в режим 10%
•При достижении напряжения 1,02В на выводе 7(PB2) ШИМ уходит в сон (энергосбережение) и каждое повторное нажатие на кнопку, вывод 3(PB4) даёт разовый импульс 10% длительностью 0,3 сек (тем самым сигнализируя о просадке аккумулятора.

Алгоритм включения:
•Короткое разовое нажатие включает один из 100% 60% 30% 10% режимов на котором был выключен (память последнего режима).
•Повторное короткое нажатие переводит в сон (энергосбережение) с сохранением последнего режима.
•Длительное нажатие 1 сек в состояния сна (энергосбережения) включает --Стробоскоп
•Повторное длительное нажатие включает --S.O.S.
•Следующее длительное нажатие включает -–Маячок и так длительными нажатиями переключение этих трех режимов по кругу пока коротким нажатием не переведу в режим сна. Эти режимы не запоминаются, в памяти только режимы фонаря.

•Переключение между режимами 100% 60% 30% 10% осуществляется зажатой кнопкой интервалом через 0,8 сек происходит переключение от максимального с который включен в настоящий момент до минимального 10% и останавливается на нем, отпускаю кнопку, ШИМ продолжает работу. В момент переключения режимов с зажатой кнопкой останавливаюсь на том режиме, на котором отпускаю кнопку.
•Переключение на максимальный режим так же происходит ступенчато по режимам интервалом через 0,8 сек, только когда находится в состоянии 10%. (нижняя отправная точка, от которой возможно переключение от минимума к максимуму) Доходя до 100% переключение останавливается на 100%, отпускаю кнопку, ШИМ продолжает работу.
•В момент переключения режимов с зажатой кнопкой останавливаюсь на том режиме, на котором отпускаю кнопку.

Україна прокидається
Последнее редактирование: 10 мая 2019 23:41 от zaxtone.
Администратор запретил публиковать записи гостям.

Драйвер фонарика 12 мая 2019 07:09 #2

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 9118
  • Спасибо получено: 3187
  • Respect Site Sponsor 2019 Author
Не уверен, что все поместится в ATTINY13, но пока вопросы.
Правильно я понимаю, что всего два основных режима: 1 - постоянное свечение; 2 - мигания (стробоскоп, S.O.S. и маячок)?
Переключение между этими режимами - длительность удержания кнопки в состоянии сна контроллера?
В состоянии бодрствования короткое нажатие переводит в сон из любого режима, а длительное нажатие к изменению светового эффекта в пределах выбранного режима?
С какой яркостью работает режим мигания?
Администратор запретил публиковать записи гостям.

Драйвер фонарика 12 мая 2019 22:57 #3

  • zaxtone
  • zaxtone аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 120
Не уверен, что все поместится в ATTINY13
Если не влезет тогда на усмотрение Attiny15,25,45,85.
Правильно я понимаю, что всего два основных режима: 1 - постоянное свечение; 2 - мигания (стробоскоп, S.O.S. и маячок)?
Режимы постоянного-свечения 4 режима и отдельно сигнальные режимы "стробоскоп", "S.O.S." и "Маячок"
Переключение между этими режимами - длительность удержания кнопки в состоянии сна контроллера?
Переключение между режимами только в состоянии работы.
В состоянии бодрствования короткое нажатие переводит в сон из любого режима
Из любого состояния бодрствования выключает короткое нажатие.
а длительное нажатие к изменению светового эффекта в пределах выбранного режима?
Из состояния сна, сигнальные режимы включаются только длинным нажатием , а из состояния сна коротким нажатием только режимы свет.Выключается все одинаково коротким нажатием.

Расказ на пальцах если что
Україна прокидається
Администратор запретил публиковать записи гостям.

Драйвер фонарика 13 мая 2019 06:35 #4

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 9118
  • Спасибо получено: 3187
  • Respect Site Sponsor 2019 Author
zaxtone пишет:
В состоянии бодрствования короткое нажатие переводит в сон из любого режима
Из любого состояния бодрствования выключает короткое нажатие.
То есть, на мой вопрос - ответ "Да", или я не уловил какой-то нюанс в Вашем ответе?

Ладно, в целом понятно. Но Вы не ответили на мой вопрос:
С какой яркостью работает режим мигания?
В свете новой терминологии, поправлю - с какой яркостью работает блок режимов мигания?

И еще вопрос.
Может лучше сделать не ступенчатое переключение яркости, а плавное? Пока кнопка нажата, яркость плавно уменьшается (увеличивается). После отпускания запоминается и не нужно будет отдельно вводить значения яркости при прошивке МК.

P.S.
Еще замечание.
Поскольку МК будет питаться от источника нестабильного напряжения, то для измерения напряжения следует использовать его внутренний Aref (источник образцового напряжения). Его напряжение 1,1V. Следовательно, максимальное напряжение на входе в МК не должно превышать 1,1V.

Если пороги напряжения будут задаваться через EEPROM, то нет смысла подбирать точные резисторы в делителе. Достаточно будет прописать в EEPROM число, соответствующее нужному напряжению.
Последнее редактирование: 13 мая 2019 08:01 от Soir. Причина: Дополнение.
Администратор запретил публиковать записи гостям.

Драйвер фонарика 13 мая 2019 11:06 #5

  • zaxtone
  • zaxtone аватар
  • Не в сети
  • I'm here long time
  • Сообщений: 120
С какой яркостью работает режим мигания?
Режимы мигания 100%.
Может лучше сделать не ступенчатое переключение яркости, а плавное?
Давайте попробуем. Тогда В файле EEPROM так же выделить ячейку для возможности изменения скорости (времени) плавного перехода. Тогда есть смысл так же в EEPROM при условии что верхний порог свечения 100% то уровень нижнего я смогу задавать сам.
Поскольку МК будет питаться от источника нестабильного напряжения, то для измерения напряжения следует использовать его внутренний Aref (источник образцового напряжения). Его напряжение 1,1V. Следовательно, максимальное напряжение на входе в МК не должно превышать 1,1V.
Согласен. Тогда за вами лишь останется указать какая ячейка отвечают за переход на 10% и у меня будет возможность подобрать делитель напряжения.
Україна прокидається
Последнее редактирование: 13 мая 2019 11:19 от zaxtone.
Администратор запретил публиковать записи гостям.

Драйвер фонарика 13 мая 2019 12:01 #6

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 9118
  • Спасибо получено: 3187
  • Respect Site Sponsor 2019 Author
zaxtone пишет:
В файле EEPROM так же выделить ячейку для возможности изменения скорости (времени) плавного перехода.
Усложнять не будем, по крайней мере, пока остается ATTINY13. Скорость будет такая же, как Вы определили - 0,8 сек/шаг. Всего три шага. То есть, от 10% до 100% проход будет за 2,4 сек. Примерно.
Администратор запретил публиковать записи гостям.

Драйвер фонарика 13 мая 2019 18:45 #7

  • Soir
  • Soir аватар
  • на форуме
  • Moderator
  • Сообщений: 9118
  • Спасибо получено: 3187
  • Respect Site Sponsor 2019 Author
Собрал проект, поместилось в ATTINY13. Но если я что-то не учел, то возможно и нет. Поэтому сначала проверьте работу на макете или в симуляторе.
В EEPROM записываются:
- ячейка [0x00] - минимальное значение ШИМ. Число от 0 до 255. Можете пересчитать в проценты. Если нужно 10%, то это будет 25 (по умолчанию).
- ячейка [0x01] - минимальное напряжение, при котором ШИМ перейдет на установленный минимум в ячейке [0x00].
- ячейка [0x02] - минимальное напряжение, при котором ШИМ отключается.
В напряжения прописываются условные числа от 0 до 255 (по умолчанию 150 и 100 соответственно). Какие конкретно должны быть - можете рассчитать, зная параметры делителя. Весь диапазон чисел от 0 до 255 соответствует диапазону напряжений от 0,0 до 1,1V.
- в ячейку [0x03] программа сама запишет выбранный уровень ШИМ.

В архиве в качестве примера файл Lamp_ATTINY13.eep с значениями по умолчанию. Откройте его в программаторе, отредактируйте, затем зашейте в МК.
Вложения:
Администратор запретил публиковать записи гостям.
Модераторы: wolf2000, Soir, Vakula, Айнцвайдрайченко