Tag Archives: ШИМ

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

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

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


 

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

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

 

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

 

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

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

 
(далее…)

Read More »

Микросхемы для импульсных источников питания. Справочник

Микросхемы для импульсных источников питания. Справочник.
Издательство: Додэка.

Очень неплохой справочник. Замечателен тем, что является… самым обычным переводом даташитов. Один в один, картинка в картинку.
Переведенных даташитов там тьма, один только перечень в четыре колонки занимает десяток страниц. Все импульсные микросхемы которые знал там нашел! А что особенно радует, так это то, что есть документация на отечественную комплектуху. С коей вечно проблемы. Если аналог не подберешь, и не дернешь бумагу на него — пиши пропало.

Настоятельно рекомендую!

Read More »

Источники питания. Часть 2 — Импульсные преобразователи

DC-DC преобразование
Для изменения напряжения постоянного тока с минимальными потерями используются DC-DC преобразователи, работающие по принципу Широтно-Импульсной Модуляции (ШИМ, она же PWM по басурмански). Если не читал мои прошлые статьи, где я подробно разжевал принцип работы ШИМ, то я кратенько тебе напомню. Основной принцип тут в том, что напряжение подается не сплошным потоком, как в линейных стабилизаторах, а краткими импульсами и с большой частотой.

Готовый девайс
Готовый девайс

То есть у тебя на выходе ШИМ контроллера, например, сначала в течении десяти микросекунд напряжение, к примеру, двенадцать вольт, потом идет пауза. Скажем, те же десять микросекунд, когда на выходе напряжения вообще нет. Затем все повторяется, словно мы быстро-быстро включаем и выключаем рубильник.

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

Если не догнал, то я для простоты переложил это в понятное «канализационное русло». Смотри на картинку, где ключевой транзистор ШИМ контроллера похож на вентиль, он открывает и закрывает канал. Конденсатор это банка, накапливающая энергию. Дроссель это массивная турбина, которая, будучи разогнанной потоком, при открытом вентиле, за счет своей инерции прогоняет воду по трубам и после закрытия вентиля.

Конечно, самостоятельно разработать такой источник питания сложно, требуется неслабое образование в области электроники, но не стоит напрягаться по этому поводу. Умные дядьки из Motorola, STM, Dallas и прочих Philips’ов придумали все за нас и выпустили уже готовые микросхемы содержащие в себе ШИМ контроллер. Тебе остается его лишь припаять и добавить обвески, которая задает параметры работы, причем изобретать самому ничего не надо, в datasheet’ах подробно расписано что и как подключать, какие номиналы выбирать, а иногда даже дают готовый рисунок печатной платы. Надо лишь немного знать английский :)

(далее…)

Read More »

Извращенский ШИМ из UART

Пока писал статью про UART пришла в голову одна извращенная идея — на базе UART же можно организовать самый натуральный низкодискретный ШИМ!

Достаточно только сделать где-нибудь в памяти переменную, куда мы будем совать число с заданной скважностью нулей и единиц, а по прерыванию опустошения буфера это число снова пихать в регистр UDRE. Таким образом, генерация ШИМ будет самопроизвольной, без лишних телодвижений. Правда можно получить всего 10 разных значений ШИМ, но зато нахаляву!!!

Для тех кто не понял как, приведу числа которые надо будет непрерывно слать через UART:
два дополнительных значения мы получим за счет старт и стоп битов.

00000000 — 1/10
00000001 — 2/10
00000011 — 3/10
00000111 — 4/10
00001111 — 5/10
00011111 — 6/10
00111111 — 7/10
01111111 — 8/10
11111111 — 9/10

Да и частоты там можно получить нефиговые!
Красота!=)))))

Read More »

AVR. Учебный курс. Использование ШИМ

Вот уже несколько раз я ругался странным словом ШИМ. Пора бы внести ясность и разьяснить что же это такое. Вообще, я уже расписывал этот режим работы, но все же повторюсь в рамках своего курса.
 

Вкратце, Широтно Импульсная Модуляция (в буржуйской нотации этот режим зовется PWMPulse Width Modulation) это способ задания аналогового сигнала цифровым методом, то есть из цифрового выхода, дающего только нули и единицы получить какие то плавно меняющиеся величины. Звучит как бред, но тем не менее работает. А суть в чем:
 

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

А вот если двигатель включать на десять секунд каждую минуту, то маховик раскрутится, но далеко не на полную скорость — большая инерция сгладит рывки от включающегося двигателя, а сопротивление от трения не даст ему крутится бесконечно долго.
 

Чем больше продолжительность включения двигателя в минуту, тем быстрей будет крутится маховик.
При ШИМ мы гоним на выход сигнал состоящий из высоких и низких уровней (применимо к нашей аналогии — включаем и выключаем двигатель), то есть нулей и единицы. А затем это все пропускается через интегрирующую цепочку (в аналогии — маховик). В результате интегрирования на выходе будет величина напряжения, равная площади под импульсами.
 

Меня скважность (отношение длительности периода к длительности импульса) можно плавно менять эту площадь, а значит и напряжение на выходе. (далее…)

Read More »

Аналоговый реобас

Давным давно, когда я сидел на дорогущем инете по трафику я загнался по моддингу. Визуально оформительская часть этого движения мне была глубоко по барабану, а вот тишины хотелось очень сильно. Наткнулся я на интересный девайс – реобас. Прочитал текстовое описание, с любопытством подгрузил картинки и жестоко обломался – перспектива крутить ручки, выставляя скорость вентиляторов, мне показалась совершенно бредовой. Ну в самом деле, что за фигня? Я же ленивый до безумия, либо выставлю на максимум, чтобы получить нормальное охлаждение и буду сидеть, слушая свист ветра и вой кулеров, либо забуду на минимуме и в итоге получу синий экран смерти из-за перегрева чего либо. Пришлось врубить родимый паяльник и начать изобретать систему управления кулерами.

Пропорциональное управление – залог тишины!
Какая задача ставится перед нашей системой управления? Да чтобы пропеллеры зря не вращались, чтобы зависимость скорости вращения была от температуры. Чем горячее девайс — тем быстрей вращается вентилятор. Логично? Логично! На том и порешим.
Заморачиваться с микроконтроллерами конечно можно, в чем то будет даже проще, но совершенно не обязательно. На мой взгляд проще сделать аналоговую систему управления — не надо будет заморачиваться с программированием на ассемблере.

Будет и дешевле, и проще в наладке и настройке, а главное любой при желании сможет расширить и надстроить систему по своему вкусу, добавив каналов и датчиков. Всё что от тебя потребуется это лишь несколько резисторов, одна микросхема и термодатчик. Ну а также прямые руки и некоторый навык пайки.

(далее…)

Read More »