Управление большим количеством светодиодов через Binary Angle Modulation

Вот приспичило вам сделать себе могучую светодиодную хреновину, чтобы моргала и переливалась. Да еще в RGB и плавненько так. Собрали вы это дело, поглядели на количество каналов которыми нужно рулить и призадумались…
 

▌А что не так с ШИМ?
Да все с ним хорошо, только аппаратных каналов обычно всего несколько штук. А программный ШИМ имеет ряд недостатков. Да, можно взять и на базе алгоритма управления кучей сервомашинок, используя всего один таймер собрать многоканальный ШИМ, но сколько у нас будет вызовов прерываний?
 


 

Каждый отдельный фронт потребует своего прерывания на смену уровня. А представьте, что у нас этих каналов будет не 4, а 40? Или 400? Да контроллер из прерываний вылезать не будет. Прерывания будут налезать друг на друга, порождая джиттер. Не говоря уже о том, что все эти каналы надо будет при любом изменении скважности заново сортировать по длительности. В общем, тупилово будет еще то.
 

▌Нас спасет BAM
Но решение есть. Зовется этот метод BAM. Суть его в том, что мы включаем нагрузку импульсами, поразрядно, с длительностью равной весу разряда.

 

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

 

Интегрируется все аналогично обычному ШИМу. Но есть ряд нюансов:

  1. Частота плавает и на малых разрядах она повышается. Для светодиода или грелки это наплевать. А вот двигатель или еще какую нагрузку с реактивными элементами вроде обмоток или емкостей я бы таким сигналом питать не стал.
  2. При переходе с малых весов к одному большому наблюдается мерцание. Но с этим можно бороться, подробности ниже.
  3. Выдавать вес лучше с большего к меньшему, так меньше заметно влияние второго пункта.

 
(далее…)

Read More »

Двойная кнопка как на фотоаппарате

Вертел тут в руке две кнопочки от нефиг делать и случайно образовалась идея.

 

Если их поставить друг на дружку, например вот так:
 


 

То получится двухстадийная кнопка, как на фотоаппарате, где полунажатие фокус, а дожатие — кадр. Конечно кнопки стоящие друг на друге включаются хаотично, то одна то другая, но вот сам переход одна кнопка/две кнопки тактильно чувствуется очень хорошо, пожалуй даже четче чем на фотоаппарате. Прям так явно, один щелчок, второй щелчок. Попробуйте сами!
Дальше остается программно разделить состояние 11 от 01/10 и готово.
 

В плату ее конечно не припаяешь, но можно придумать какой-нибудь крепеж, а цепь подвести гибким проводочком. На столь малом ходе ему ничего не грозит. И все, будет хитрая кнопка из подручного хлама.

Read More »