Генератор ШИМ сигнала с изменением скважности
ШИМ генератор с ЖК-индикатором
ШИМ генератор с магазин ICstation
Что может этот генератор? Взглянем на параметры.
- Рабочее напряжение: 3.3 — 30V;
- Частота генерации: 1Hz — 150KHz;
- Точность генерации частоты: 2%;
- Мощность нагрузки: 5…30mА;
- Амплитуда выходного сигнала равна напряжению питания;
- Температура окружающей среды: -20 … +70 °С.
На дисплей можно вывести только 2 числа по 3 цифры в каждом. В нижней строке отображается скважность ШИМ в процентах, а в верхней – частота. Частота выводится на дисплей по следующим правилам:
- XXX, шаг в 1Гц, в диапазоне 1 – 999Гц;
- X.XX, шаг в 0.01кГц, в диапазоне 1.00 — 9.99кГц;
- XX.X, шаг в 0.1кГц; в диапазоне 10.0 — 99.9кГц;
- X.X.X, шаг в 1 кГц; в диапазоне 100 — 150 кГц.
Дисплей управляется микросхемой HT1621B, дисплей универсальный, на нем имеются символы, необходимые для построения термометра, гигрометра, вольтметра, амперметра и ваттметра, но в нашем случае они не используются. Дисплей имеет яркую синюю подсветку. К слову, замечу, что дисплей на моем генераторе оказался потертым, будто его откуда-то сняли.
Главной микросхемой генератора является микроконтроллер STM8S003F3P6. И поскольку этот микроконтроллер имеет EEPROM память, то настройки сохраняются при выключении.
Управлять генератором можно двумя способами: кнопками и по UART. С кнопками всё ясно, одна пара кнопок управляет частотой, вторая скважностью. А вот с UART всё намного интереснее. Обмен данными должен происходить со следующими параметрами:
- 9600 bps Data bits: 8
- Stop bit: 1
- Check digit: none
- Flow control: none
Для того, чтобы установить частоту генерации, необходимо отправить частоту так, как она отображается на дисплее прибавив перед значением частоты букву F. Например, для установки частоты в 100 Гц необходимо отправить F100, для 105 кГц — F1.0.5, для 10.5 кГц — F10.5 и так далее.
Для установки скважности необходимо отправить трехзначное число скважности добавив перед ним букву D . Например, D050, D100, D001.
Что бы прочитать установленные параметры, необходимо отправить слово «read».
Если отправлена верная команда, то генератор ответит DOWN, если ошибочная – FALL. Но есть одно НО, я так и не смог настроить работу с генератором через UART.
Я решил проверить генератор при помощи логического анализатора. Вот что получилось.
Частота 1 Гц, скважность 1%. Как видим погрешность пока небольшая.
Частота 1 Гц, скважность 50%.
Частота 1 Гц, скважность 99%.
Частота 1 кГц, скважность 1%.
Частота 1 кГц, скважность 50%.
Частота 1 кГц, скважность 99%. Тут мы видим, что при установленных 99% скважности на самом деле заполнение составляет 100%.
Частота 1 кГц, скважность 91%. Я начал снижать скважность, и вплоть до 92% заполнение составляло 100%, и только при 91% ситуация исправляется.
Частота 50 кГц, скважность 1%. Как видим что тут всего 0,2% вместо 1%.
Частота 50 кГц, скважность 50%. Здесь отличается на 1%.
Частота 50 кГц, скважность 99%. И тут снова отклонение -1%.
Частота 100 кГц, скважность 1%. А вот тут ещё ничего нет.
Частота 100 кГц, скважность 2%. А при 2% сигнал появляется, но на самом деле заполнение 0,4%.
Частота 100 кГц, скважность 50%. Отклонение почти -2%.
Частота 100 кГц, скважность 99%. И тут почти -1%.
Частота 150 кГц, скважность 1%. Снова нет сигнала.
Частота 150 Гц, скважность 3%. И появляется сигнал только при 3%, но заполнение составляет 0,6%.
Частота 150 кГц, скважность 50%. Но на самом деле заполнение 46,5%, на -3,5% уже отличие.
Частота 150 кГц, скважность 99%. И тут погрешность, но всего 1,5%.
Выборка достаточно грубая, но на этом исследования не закончены. Я решил измерить скважность при различном заполнении (шаг 5%) и на различных частотах (шаг 25000 Гц) и занести их в таблицу.
Верхняя строка содержит частоту, я выбрал шаг в 25 кГц, левый столбец – установленная скважность, в остальных ячейках замеренная скважность.
В этой таблице указана разница в установленной и замеренной скважности.
Чем выше частота, тем больше отклонение между установленной и замеренной скважностями. Так же замеренная скважность всегда ниже установленной, но строгой закономерности в отклонении не наблюдается.
Так же я проверил соответствие установленной и замеренной частоты. Результат так же занес в таблицу.
Заявленная точность в 2% от установленной частоты соблюдается.
В итоге, если вам необходимо установить точные значения генерации, то проверяйте установленные параметры перед использованием генератора. Если же необходимо просто управлять яркостью светодиода или скоростью вращения двигателя, то этот генератор без проблем подойдет для этих задач.
Генератор ШИМ сигнала на микроконтроллере с регулируемой скважностью
Это простой ШИМ-генератор работающий от стабилизированного источника питания с напряжением 4,75…5,25 В. На его выходе генерируется прямоугольный сигнал с постоянной частотой 1 Гц, но с регулируемым коэффициентом заполнения в диапазоне 0…100% с шагом 1%, в зависимости от установленных перемычек J1-J7.
Устройство найдет применение в мастерской каждого радиолюбителя, например, при тестировании различных прототипов цифровых схем.
Основой генератора является популярный микроконтроллер ATmega48. Вместо него можно использовать модели ATmega88 или ATmega168, которые отличаются только большим объемом памяти.
Управляющая программа написана на ассемблере и идентична для каждого из упомянутых микроконтроллеров (занимает 2440 байт флэш-памяти). После включения источника питания или сброса микроконтроллера с помощью кнопки S1 управляющая программа конфигурирует вывод PB0 (№ 14) в качестве выхода с низким логическим уровнем (LOW), а все остальные выводы — как входы с высоким логическим уровнем (включены внутренние подтягивающие резисторы).
Затем микроконтроллер считывает состояние перемычек J1-J7, которые подключены к контактам PD0…PD6. Если все перемычки открыты (OFF), программа переходит к выполнению цикла, генерирующего сигнал с заполнением 0% (режим 0) и на выходе генератора все еще остается низкое логическое состояние (LOW).
Однако если при помощи перемычек установлено некоторое двоичное значение X = 1…99 (J1 — самый младший бит), то программа переходит к соответствующему циклу (режим X), который выполняется без прерывания.
В каждом таком цикле есть две инструкции, которые переключают состояние выхода PB0 на противоположное. Время между переключениями различается (за исключением 50% заполнения), но их сумма всегда равна 1 секунде. Благодаря этому на выходе генератора получается прямоугольный сигнал с различным заполнением, но всегда с частотой 1 Гц.
Если перемычками установлено двоичное значение X > 99, программа переходит к выполнению цикла, генерирующего 100% сигнал (режим 100), при этом на выходе генератора постоянно высокое логическое состояние (HIGH).
Для правильной работы генератора необходимо использовать кварцевый резонатор Q1 с номинальной частотой 4 МГц, поскольку циклы в управляющей программе написаны именно для этой частоты микроконтроллера.
Резистор R2 и конденсатор C1 образуют низкочастотный фильтр, который подавляет дребезг контактов, возникающий в момент нажатия кнопки S1. Транзисторы VT1 (BC547) и VT2 (BC557) работают в качестве выходного буфера с током до 100 мА.
Все возможные для установки комбинации перемычек J1-J7 и соответствующий им коэффициент заполнения сигнала, приведены в следующей таблице.
После пайки всех элементов убедитесь, что нет коротких замыканий. Подайте питание и запрограммируйте микроконтроллер, используя любой ISP программатор через разъем CON3. Контакты разъема CON3 расположены стандартным образом, рекомендованным Atmel.
При программировании необходимо установить соответствующие fuse и lock биты:
- FL (Fuse Low): $F7
- FH (Fuse High): $DF
- FE (Fuse Extended): $F9 ($FF для ATmega48)
- LB (Lock Bits): $FF
При таких настройках:
- используется внешний кварцевый резонатор (биты CKSEL3-0 = 0111);
- делитель частоты на 8 отключен, что вызывает тактирование микроконтроллера на полной частоте резонатора (CKDIV8 = 1);
- увеличено время запуска до 65 мс после включения напряжения питания (SUT1-0 = 11);
- отключена генерация тактовой частоты микроконтроллера на выводе PB0 (CKOUT = 1);
- включена возможность сброса PC6 (RSTDISBL=1) и программирования через последовательный интерфейс (SPIEN=0).
После программирования микроконтроллера отключите программатор от платы. Затем перемычками J1-J7 установите комбинацию, которая соответствует выбранному коэффициенту заполнения, и нажмите кнопку S1. На выходе генератора должен появиться прямоугольный сигнал с частотой 1 Гц и выбранной скважностью.
Скачать прошивку (2,6 KiB, скачано: 488)
2 Схемы
Принципиальные электросхемы, подключение устройств и распиновка разъёмов
Двухканальный модуль ШИМ генератора импульсов XY-PWM
Китайские цифровые модули ШИМ контроллеров (PWM) стали заметно доступнее по цене, но правильный выбор модуля, который будет делать именно то что нужно, остаётся актуальным. Вот несколько тестов и советов, которые помогут в процессе подбора подобного устройства избежать ошибок.
Для примера возьмём самый популярный, недорогой и компактный 2-канальный модуль PWM, описанный на Али как «XY-PWM 2-канальный регулируемый генератор импульсов ШИМ с цифровым светодиодным дисплеем».
Это крохотный 2-канальный модуль генератора ШИМ с переменной частотой от 1 Гц до 150 кГц и рабочим циклом от 0% до 100%. Частотой ШИМ и рабочим циклом каждого канала можно управлять независимо с помощью кнопочных переключателей, имеющихся на плате. Модуль может питаться от внешнего источника постоянного тока 5-30 В, но также оснащён и micro-USB 5 В. Он дополнительно предоставляет возможность настраивать определенные параметры импульса извне, через стандартный последовательный COM интерфейс.
Давайте ознакомимся с его основными характеристиками:
- Два независимых ШИМ с переменной частотой и рабочим циклом.
- Параметры настраиваются через последовательный протокол
- Рабочее напряжение: 5 — 30 В постоянного тока.
- Поддерживает micro-USB 5V
- Диапазон частот: 1 Гц
150 кГц
Управление модуля имеет три кнопки — SET, UP, DOWN. Быстрое нажатие кнопки SET переключает все четыре параметра (FA1: частота PWM1, DU1: рабочий цикл PWM1, FA2: частота PWM2, DU2: рабочий цикл PWM2), а долгое нажатие позволяет изменять частотный диапазон. Кнопки UP и DOWN можно использовать для изменения текущих параметров.
Обратите внимание, что выбор частоты ШИМ делится на три диапазона:
- XXX (без десятичной точки): наименьшая единица измерения — 1 Гц. Диапазон от 1 Гц до 999 Гц.
- X (одна десятичная точка): Минимальная единица измерения — 0,1 кГц. Диапазон от 0,1 кГц до 99,9 кГц.
- XX (три десятичных знака): наименьшая единица — 1 кГц. Диапазон от 1 кГц до 150 кГц.
Последовательные параметры (скорость 9600 бод):
- Биты данных: 8
- Стоповый бит: 1
- Бит четности: Нет
- Управление потоком: Нет
Формат команды для установки частоты PWM — «S1FXXXT», что означает «Установите частоту PWM1 на XXX Гц (от 001 Гц до 999 Гц). И «S1DXXXT» применимо для установки рабочего цикла (Установите рабочий цикл PWM1 на XXX (001
- S1: PWM1
- S2: PWM2
- F: частота
- D: Рабочий цикл
- T: знак конца
Конечно можно построить простой генератор ШИМ с помощью таймера 555, но все же для этого потребуется частотомер или осциллограф, чтобы настроить их правильно, а здесь уже всё готово.
Компоненты, расположенные рядом со входом модуля, — это один диод Шоттки SS34 (защита от обратного входного питания) и один стабилизатор напряжения HT7150-1 LDO (5 В / 30 мА). Это позволяет безопасно подавать источник постоянного тока в диапазоне 5-30 В через точки DC IN (VIN + и VIN-). Также можно включить модуль через разъем micro-USB, предпочтительно от источника питания USB или внешнего аккумулятора мобильного телефона. В любом случае, вход питания USB должен быть стандартным, с чистыми 5 В, поскольку на плате нет ничего что могло бы стабилизировать это напряжение. Трехзначный индикатор представляет собой красный светодиодный дисплей с общим катодом (3631AS).
Далее следует пара транзисторов MMBT3904L, вставленных на выводах импульсного выхода микроконтроллера. Тут есть два независимых выходных канала ШИМ, но они используют одну и ту же общую / заземляющую (0 В) линию.
Принципиальная схема ШИМ генератора XY-PWM
Теперь становится ясно, что каждый транзистор работает как «буфер», который инвертирует фактический сигнал импульсного выхода микроконтроллера. С резистором нагрузки коллектора 620 Ом можно ожидать выходного сигнала с широтно-импульсной модуляцией уровня 5 В, который может управлять внешней нагрузкой с 8 мА максимального тока на канал.
Для теста использовался USB-блок питания. Сначала установили оба канала ШИМ на 25 кГц (50%) и наблюдали за выходным сигналом на осциллографе.
Канал осциллографа 1 (желтый) на PWM1, а канал осциллографа 2 (синий) — на базу Q1 (то есть первый вывод импульсного выхода микроконтроллера).
Возвращаясь к двухканальным сигналам ШИМ заметим, что такое дело будет полезно во многих случаях, таких как управление шаговыми двигателями, управление бесколлекторными двигателями постоянного тока, преобразование постоянного напряжения. Поскольку модуль XY-PWM можно использовать для генерации двух сигналов ШИМ с одинаковой (но переменной) частотой и рабочим циклом, результирующие прямоугольные волны с двухфазным смещением могут сыграть важную роль в чередующихся / фазосдвинутых сигналов.
Согласно описанию, двухканальный ШИМ-модуль даже совместим с серией промышленных двухфазных гибридных шаговых сервоприводов RMCS-111x.
Кстати, разъем встроенного 4-контактного интерфейса напоминает знакомый интерфейс программатора SWIM для микроконтроллеров STM. Чаще всего STM8S003K составляет основу такого двухканального модуля ШИМ.
Другое испытание проводилось с небольшим вентилятором BLDC на 12 В / 100 мА, просто подключили его к каналу PWM1 (25 кГц) двойного модуля PWM (с питанием от БП) через один модуль МОП IRF530 (не логика), как показано на схеме подключения. Использовали обычный метод «фиксированной частоты и переменного рабочего цикла» для управления скоростью вентилятора, и установка показала отличную производительность.
Вот выходной сигнал ШИМ 20 кГц (50%) (x2), обработанный двухканальным модулем ШИМ и снятый USB-осциллографом.
Выходное напряжение ШИМ модуля находится на уровне 5 В, потому что транзисторы драйвера питаются от встроенного стабилизатора напряжения 5 В / 30 мА LDO. И простое вырезание одной дорожки сделает ее готовой к выходам ШИМ более высокого уровня.
После этого можно подать более высокое напряжение между контактными площадками V + и GND. Если это вход 12 В, то получим выходы ШИМ с уровнем 12 В, но убедитесь что есть 100% изоляция между V + и дорожкой 5 В, иначе схема может сгореть. В общем подобный блок прекрасная основа более сложных приборов и электрических исполнительных механизмов.
Простые схемы ШИМ генераторов на одной микросхеме
Maxim ICM7555 MAX998
Budge Ing, Maxim Integrated
Генераторы широтно-импульсно модулированных сигналов (ШИМ) интегрированы практически в любое устройство импульсного преобразования мощности. В статье будут показаны два способа реализации автономных аналоговых ШИМ генераторов. При необходимости улучшить характеристики генераторов их можно модифицировать, добавив в каждый по одной микросхеме.
Устройства, состоящие из одной микросхемы, могут быть сделаны по двум схемам. В одной используется интегральный таймер ICM7555, а в другой – маломощный компаратор MAX998. Мы рассмотрим обе схемы.
Схема 1: использование маломощного таймера в качестве ШИМ генератора
Таймер ICM7555 включается согласно Рисунку 1.
Рисунок 1. | ШИМ генератор и таймер на одной микросхеме. |
На Рисунке 1 ширина импульса на выводе 3 модулируется управляющим напряжением VCONTROL, приложенным к выводу 5. Лабораторные измерения схемы были выполнены при напряжении питания 5 В. На Рисунках 2…5 показаны выходные ШИМ сигналы при трех различных управляющих напряжениях: 1 В, 2 В и 4 В. Конденсатор C1 заряжается напряжением источника питания VSUPPLY до уровня VCONTROL и разряжается от VCONTROL/2 до уровня земли. При отсутствии внешнего управляющего напряжения напряжение VCONTROL составляет 2/3 от VSUPPLY.
Рисунок 2. | Выход ШИМ генератора при управляющем напряжении, равном 1 В. |
Рисунок 3. | Выход ШИМ генератора при управляющем напряжении, равном 2 В. |
Рисунок 4. | Выход ШИМ генератора при отсутствии управляющего напряжения. |
Рисунок 5. | Выход ШИМ генератора при управляющем напряжении, равном 4 В. |
Представленные осциллограммы иллюстрируют влияние управляющего напряжения, приложенного к выводу 5, на изменения пороговых напряжений двух внутренних компараторов. В отсутствие управляющего напряжения (Рисунок 4) пороги заряда и разряда C1 определяются внутренней структурой таймера и составляют 1/3 и 2/3 от напряжения питания. Этими порогами, равноудаленными от напряжения питания и земли, устанавливается коэффициент заполнения равный 50%. При изменении управляющего напряжения изменяется время заряда C1, за которое напряжение на конденсаторе должно достичь VCONTROL, и время разряда, в течение которого напряжение спадает до VCONTROL/2. Этот процесс приводит к модуляции ширины выходного импульса.
Время заряда определяется формулой
Время разряда можно вычислить из выражения
Схема 2: генератор ШИМ с компаратором
Компаратор MAX998 включается согласно Рисунку 6.
Рисунок 6. | ШИМ генератор и компаратор. |
Ширина выходного импульса модулируется под управлением напряжения, приложенного к R1. При напряжении питания 5 В были проведены лабораторные измерения, результаты которых представлены на Рисунках 7…9, демонстрирующих формы выходных сигналов ШИМ при управляющем напряжении, равном 1 В, 2 В и 4 В.
Рисунок 7. | Выход ШИМ генератора при управляющем напряжении, равном 1 В. |
Рисунок 8. | Выход ШИМ генератора при управляющем напряжении, равном 2 В. |
Рисунок 9. | Выход ШИМ генератора при управляющем напряжении, равном 3 В. |
Приложенное к микросхеме MAX998 управляющее напряжение устанавливает пороговые напряжения, определяющие моменты начала заряда и разряда C1. Верхний порог равен
а нижнее пороговое напряжение равно VCONTROL/2.
Время заряда можно найти из формулы
Время разряда описывается выражением
Варианты ШИМ генераторов на двух микросхемах
Необходимо отметить, что управляющее напряжение в обеих схемах изменяет не только длительность импульсов, но и их частоту. Добавив в каждую из схем по одному компаратору, можно зафиксировать частоту выходных сигналов.
В Схеме 1 пилообразное напряжение с вывода 6 необходимо подать на вход второго компаратора. Это напряжение будет задавать коэффициент заполнения выходных импульсов постоянной частоты. Аналогично, в Схеме 2 на второй компаратор подается пилообразное напряжение с инвертирующего входа MAX998.
Перевод: AlexAAN по заказу РадиоЛоцман
ШИМ сигнал
Очень часто в робототехнике возникает необходимость плавно управлять каким-то процессом, будь то яркость светодиода, мощность обогревателя или скорость вращения моторчика. Вполне очевидно, что управление напрямую связано с изменением напряжения на потребителе: и светодиод будет по-другому светить, и моторчик крутиться с другой скоростью. Но проблема в том, что управлять напряжением может только такая штука, как ЦАП – цифро-аналоговый преобразователь, а в нашем микроконтроллере встроенного ЦАПа нет, у нас есть только цифровой сигнал, т.е. либо вкл, либо выкл: Можно ли добиться плавного управления цифровым сигналом? Оказывается можно! Представьте себе вентилятор, вращающийся на полной мощности, напряжение постоянно. Представим теперь, что секунду напряжение подаётся, и секунду – нет, и так продолжается “по кругу”. Вентилятор начнёт крутиться в два раза медленнее, но мы скорее всего будем замечать моменты включения и выключения, особенно если вентилятор маленький. Большой вентилятор более инертен и там можно даже не заметить изменений скорости в пределах двух секунд. Можно теперь включать напряжение на 0.5 секунды, а на остальные 1.5 секунды – выключать. Вентилятор будет крутиться со скоростью 25% от максимальной. Мы с вами смогли представить так называемый ШИМ сигнал, широтно-импульсную модуляцию С лампочкой накаливания оно тоже будет работать, она ведь весьма инертна, но вот со светодиодом мы будем видеть, как он включается и выключается, потому что он практически не имеет задержки включения/выключения. Что же делать? Всё очень просто, поднять частоту. В мысленном эксперименте у нас был период 2 секунды, что есть 0.5 Гц. А теперь представьте себе такой сигнал с частотой скажем 1000 Гц. Или 25’000 Гц (25 кГц). Теперь роль играет инертность глаза, он не заметит вспышек на такой частоте, для него это будет просто уменьшение яркости. Задача решена! Изменяя так называемое “заполнение” ШИМ сигнала можно менять “суммарное” напряжение (интегрированное) за некоторый период. Чем больше заполнение ШИМ, тем выше напряжение, но не выше напряжения, которое мы “ШИМим”: При помощи ШИМ сигнала можно даже модулировать сложные аналоговые сигналы, например – синусоиду. На картинке ниже показан ШИМ (снизу) и этот же ШИМ после фильтров: Вот таким образом кстати и работают инвертеры DC-AC. Возвращаясь к свойствам ШИМ сигнала, их всего два: частота (frequency) и заполнение (duty), с ними мы разобрались. Давайте перейдём к генерации ШИМ при помощи Arduino.
Arduino и ШИМ
В уроке про функции времени я рассказывал, что у микроконтроллера есть так называемые счётчики, которые считают “пинки” от тактового генератора (кварца). Данные счётчики как раз и генерируют ШИМ сигнал, т.е. само вычислительное ядро микроконтроллера в этом не участвует. Помимо расчётов, даже вывод сигнала с ноги МК ложится на плечи счётчика. Это очень важно понимать, потому что ШИМ сигнал не тормозит выполнение кода, так как его генерацией занимается буквально “другая железка”. На платах UNO/Nano/Pro Mini у нас есть три таймера-счётчика, у каждого таймера есть по два выхода на пины МК, то есть у нас есть 2*3=6 пинов, способных генерировать ШИМ сигнал. Для генерации ШИМ у нас есть готовая функция analogWrite(pin, duty)
- pin – пин, являющийся выводом таймера. Для Нано/Уно это пины D3, D5, D6, D9, D10, D11. На некоторых платах они помечены * звёздочкой, а вообще для определения ШИМ пинов на любой другой модели Ардуино достаточно загуглить распиновку
- duty – заполнение ШИМ сигнала. По умолчанию все “выходы” ШИМ у нас 8-битные, то есть duty может принимать значение с “разрешением” 8 бит, а это 0-255
Совместим эти знания с прошлым уроком и попробуем менять яркость светодиода, подключенного через резистор к пину D3. Потенциометр подключен к пину A0
Рассмотренный пример меняет яркость светодиода в зависимости от положения рукоятки потенциометра. Пару слов о “стандартном” ШИМ сигнале – мы получаем его с такими настройками, какие нам даёт библиотека Arduino.h, а настройки эти сильно занижены по сравнению с возможностями Arduino. Про “улучшение” ШИМ мы поговорим позже, а сейчас давайте глянем на характеристики ШИМ “из коробки”:
Таймер | Пины | Частота | Разрешение |
Timer 0 | D5 и D6 | 976 Гц | 8 бит (0-255) |
Timer 1 | D9 и D10 | 488 Гц | 8 бит (0-255) |
Timer 2 | D3 и D11 | 488 Гц | 8 бит (0-255) |
Это весьма плачевные цифры, особенно по частоте. Все таймеры приведены под одну гребёнку, чтобы пользователь не думал не гадал и лишнюю документацию не изучал. К изменению частоты и разрядности ШИМ мы вернёмся в отдельном уроке, а пока что можете посмотреть данный урок в видео варианте.
Видео
Контроллер ШИМ своими руками
- Что такое ШИМ?
- Принцип работы ШИМ
- Откуда берётся ШИМ
- Вариант 1 — аналоговый
- Вариант 2 – цифровой
- Как подключить к нагрузке
- Если нужно управлять плюсовым контактом
- Контроллер ШИМ для RGB светодиодной ленты
- Ключи на мосфет-транзисторах
Сегодня разберёмся что такое ШИМ и с чем его едят, а также как сделать контроллер в домашних условиях.
Что такое ШИМ?
ШИМ (широтно-импульсная модуляция, англ. pulse—width modulation (PWM)) — это способ управления мощностью путём импульсной подачи питания. Мощность меняется в зависимости от длительности подаваемых импульсов.
ШИМ в современной электронике применяется повсеместно, для регулировки яркости подсветки вашего смартфона, скорости вращения кулера в компьютере, для управления моторами квадрокоптера или гироскутера. Cписок можно продолжать бесконечно.
В любительской электронике ШИМ контроллеры часто используются для управления яркостью светодиодных лент и для управления мощными двигателями постоянного тока.
Принцип работы ШИМ
В отличии от линейных систем, где мощность регулируется путём снижения электрических параметров (тока или напряжения), при использовании ШИМ мощность, передаваемая потребителю, регулируется временем импульсов, что существенно повышает эффективность работы контроллера. В аналоговых системах остаточная мощность рассеивалась в виде тепла, здесь же при снижении потребления остаточная мощность просто не используется.
Основная характеристика ШИМ – СКВАЖНОСТЬ (процент заполнения) – процентное соотношение длительности импульсов к периоду. На рисунке ниже изображено 5 степеней скважности прямоугольного ШИМ сигнала:
Скважность ШИМ
ПЕРИОД — это время за которое происходит полный цикл колебания сигнала. Измеряется в секундах. Он линейно зависит от частоты сигнала и рассчитывается по формуле:
f(частота) = 1/ T(перод)
Частота ШИМ – это количество периодов (или если хотите, циклов колебаний) в единицу времени. Частота измеряется в Герцах (Гц), 1 Гц это одно колебание в 1 секунду.
Если сигнал делает 100 колебаний в секунду, значит частота равняется 100 Гц. Чем выше частота тем меньше период.
Откуда берётся ШИМ
Вариант 1 — аналоговый
ШИМ сигнал создаётся специально сконструированными устройствами – генераторами ШИМ сигнала или генераторами прямоугольных импульсов. Они могут быть собраны как на аналоговой базе, так и на основе микроконтроллеров, как в виде схемы из нескольких транзисторов, так и в виде интегральной микросхемы.
Самый простой вариант это микросхема NE555, собирается всё по схеме:
Схема ШИМ генератора на NE555
Но если лень разбираться и паять, то китайцы за нас всё уже давно сделали.
ШИМ генератор на NE555
Стоит $0,5, работает стабильно при питании от 5 до 16 вольт. Выдаёт ШИМ сигнал амплитудой в 5 вольт, скважность можно менять подстроечным резистором (вон та синяя штуковина с вырезом под отвертку). При желании можно заменить подстроечный резистор на переменный и получим удобную ручку регулировки.
Вариант 2 – цифровой
Более сложный для новичка – использование микроконтроллера, но вместе с тем более интересный и дающий широкие возможности. Звучит страшно, но самом деле реализуется довольно просто.
В качестве микроконтроллера удобнее всего взять отладочную плату ардуино.
Как с ней работать написано вот здесь. Подключаем ардуинку к компьютеру и заливаем в неё вот такой наисложнейший код:
Далее цепляемся осциллографом к пину D3 и видим:
ШИМ скважность 30%
Сигнал частотой (Freq) -526 Гц, амплитудой (Vmax)- 5 вольт и скважностью (duty) – 30.9 %.
Меняем скважность в коде — меняется и скважность на выходе. Добавляем датчик температуры или освещённости, прописываем зависимость скважности на выходе от показаний датчиков и — готова регулировка с обратной связью.
Как подключить к нагрузке
Напрямую генератор ШИМ сигнала к нагрузке подключать не следует, потому как он слаботочный и скорее все сразу же сгорит. Для того, чтобы управлять нагрузкой необходим ключ на мосфет-транзисторе. Берём N-канальный мосфет-транзистор IRF3205 и собираем всё по схеме:
Ардуино ШИМ на IRF3205
Резистор R1 нужен для защиты пина ардуинки от выгорания, а резистор R2 для того, чтобы транзистор полностью закрывался, когда ардуина не даёт выходного сигнала.
Как видно ничего сложного. Четыре элемента и ШИМ-контроллер готов. Он уже может управлять одноцветной светодиодной лентой или каким-нибудь моторчиком.
Если нужна трехцветная лента или больше лент (делаем многоканальный ШИМ), просто добавляем ключи на пины D3, D5, D6, D9, D10, D11 (только на них работает ШИМ). Итого, Ардуина способна управлять мощностью 6-ти устройств одновременно.
IRF3205 способен выдерживать токи до 70 Ампер при напряжении до 55 Вольт, таких характеристик вполне достаточно для решения большинства бытовых задач.
Если нужно управлять плюсовым контактом
В таком случае нам понадобится другой мосфет- транзистор — P-канальный. Схема аналогична, только подтягивающий резистор подключен к плюсу.
Также нужно будет инвертировать сигнал на выходе ардуино, ведь при подаче 5 вольт транзистор будет закрываться, а при 0 — открываться, значит шим скважностью в 30% выдаст 70% мощность на выходе схемы.
ШИМ на irf4905, питание5 v
Стоит оговориться такая схема будет работать только при питании не выше 5 вольт, так как для полного закрытия P-канального транзистора необходимо подтянуть его затвор к плюсу питания, а ардуина способна выдавать на цифровой пин только 5 вольт. Значит, при питании хотя бы чуть-чуть выше напряжения выдаваемого на цифровой пин транзистор будет не полностью закрываться при верхней части импульса ШИМ и БУДЕТ СИЛЬНО ГРЕТЬСЯ. Полностью отключить нагрузку он тоже не сможет.
Если нужно управлять, к примеру,12 -ти вольтовым устройством, то схема немного усложнится. Добавится так называемое «плечо раскачки» или драйвер полевого транзистора. По классике он собирается на двух, а иногда и на трёх транзисторах, но мы есть вариант немного проще, который работает при невысоких частотах:
Ардуино, управление ШИМ по плюсовому проводу IRF4905
Контроллер ШИМ для RGB светодиодной ленты
В качестве примера приведу схему ШИМ контроллера для RGB светодиодной ленты на ардуино. В ней используется трёхканальный ШИМ для управления тремя цветами ленты. Ниже будет ссылка на готовое устройство, собранное на этой схеме управления.
ШИМ контроллер RGB ленты на ардуино
Соединяется всё вот так:
В схеме я добавил ещё кнопку, она нам поможет в будущем переключать цвета и регулировать яркость.
Вот простой код, позволяющий засветить ленту различными цветами. Чтобы изменить цвет подставьте цифры в значения для R, G и B из комментария ниже.