Генератор ШИМ сигнала с изменением скважности - Electrik-Ufa.ru
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд (пока оценок нет)
Загрузка...

Генератор ШИМ сигнала с изменением скважности

ШИМ генератор с ЖК-индикатором

ШИМ генератор с магазин ICstation

Что может этот генератор? Взглянем на параметры.

  1. Рабочее напряжение: 3.3 – 30V;
  2. Частота генерации: 1Hz – 150KHz;
  3. Точность генерации частоты: 2%;
  4. Мощность нагрузки: 5…30mА;
  5. Амплитуда выходного сигнала равна напряжению питания;
  6. Температура окружающей среды: -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% от установленной частоты соблюдается.

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

Генератор сигнала с переменной скважностью импульсов. Регулировка коэффициента заполнения. Ограничение максимального значения. Изменение длительности импульсов

Схема генератора и регулируемым коэффициентом заполнения импульсов, управляемого входным напряжением. Источник импульсного сигнала изменяемой скважности. Ограничение длительности импульсов (10+)

Коэффициент заполнения импульсного сигнала. Скважность – Генератор

Регулировка скважности

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

Вашему вниманию подборки материалов:

Конструирование источников питания и преобразователей напряжения Разработка источников питания и преобразователей напряжения. Типовые схемы. Примеры готовых устройств. Онлайн расчет. Возможность задать вопрос авторам

Практика проектирования электронных схем Искусство разработки устройств. Элементная база. Типовые схемы. Примеры готовых устройств. Подробные описания. Онлайн расчет. Возможность задать вопрос авторам

На схеме (A1) изображен генератор импульсов со скважностью, зависящей от уровня входного напряжения, подаваемого на ножку 2. Увеличение входного напряжения приводит к увеличению коэффициента заполнения, то есть уменьшению скважности.

Генератор по схеме (A2) наоборот формирует импульсы с большим коэффициентом заполнения (меньшей скважностью) при уменьшении входного напряжения.

Скважность импульсов генератора (A3) регулируется вручную с помощью подстроечного резистора R5.

Во всех схемах используются одинаковые детали. Выходной сигнал формируется на ножке 14. Подключать к этой ножке можно нагрузку до 2 А (импульсно). Питание осуществляется от источника от 12 до 30 вольт.

Читайте также:  Трехфазный переключатель с основного ввода на генератор

Резистор R1 – 10 кОм, подстроечный. С помощью него регулируется начальный уровень сигнала, при котором появятся импульсы минимальной длительности.

Резистор R2 – 100 кОм

Резистор R3 – 500 кОм, подстроечный. Он регулирует чувствительность, то есть увеличение этого резистора приводит к тому, что сигнал заданной амплитуды приводит к большему изменению коэффициента наполнения.

Резистор R5 – 100 кОм, подстроечный. Он регулирует максимально возможный коэффициент наполнения, а в схеме (A3), просто коэффициент заполнения.

Конденсатор C1 – 0.1 мкФ.

Готовое устройство, иллюстрирующее управление скважностью – Тренажер для снятия усталости глаз и спазма аккомодации.

Ограничение максимального коэффициента заполнения

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

В схеме удалены все выводы и соединения, не имеющие отношения к нашей задаче ограничения скважности. Для примера выбрана микросхема 1156ЕУ3 или UC3823. Без изменений описанный подход может применяться для микросхемы 1156ЕУ2 или UC3825. Для других микросхем ШИМ может понадобиться подобрать номиналы деталей и учесть цоколевку этих микросхем.

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

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

Диод – любой маломощный, например, КД510

Подстроечный резистор – 100 кОм

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

Если что-то непонятно, обязательно спросите!
Задать вопрос. Обсуждение статьи.

Как не перепутать плюс и минус? Защита от переполюсовки. Схема.
Схема защиты от неправильной полярности подключения (переполюсовки) зарядных уст.

Грубая регулировка и точная подстройка. Схемы, решения.
Приемы растягивания диапазона регулировки, обеспечения точной настройки.

Инвертор, преобразователь, чистая синусоида, синус.
Как получить чистую синусоиду 220 вольт от автомобильного аккумулятора, чтобы за.

Генератор ШИМ сигнала на микроконтроллере с регулируемой скважностью

Это простой ШИМ-генератор работающий от стабилизированного источника питания с напряжением 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 Kb, скачано: 175)

Широтно-импульсная модуляция (ШИМ)

Широтно-импульсная модуляция (ШИМ) – это метод преобразования сигнала, при котором изменяется длительность импульса (скважность), а частота остаётся константой. В английской терминологии обозначается как PWM (pulse-width modulation). В данной статье подробно разберемся, что такое ШИМ, где она применяется и как работает.

Область применения

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

Широтно-импульсная (ШИ) модуляция активно используется в построении систем управления яркостью светодиодов. Благодаря низкой инерционности, светодиод успевает переключаться (вспыхивать и гаснуть) на частоте в несколько десятков кГц. Его работа в импульсном режиме воспринимается человеческим глазом как постоянное свечение. В свою очередь яркость зависит от длительности импульса (открытого состояния светодиода) в течение одного периода. Если время импульса равно времени паузы, то есть коэффициент заполнения – 50%, то яркость светодиода будет составлять половину от номинальной величины. С популяризацией светодиодных ламп на 220В стал вопрос о повышении надёжности их работы при нестабильном входном напряжении. Решение было найдено в виде универсальной микросхемы – драйвера питания, работающего по принципу широтно-импульсной или частотно-импульсной модуляции. Схема на базе одного из таких драйверов детально описана здесь.

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

Масштабное применение ШИМ отражено во всех LCD панелях со светодиодной подсветкой. К сожалению, в LED мониторах большая часть ШИ-преобразователей работает на частоте в сотни Герц, что негативно отражается на зрении пользователей ПК.

Микроконтроллер Ардуино тоже может функционировать в режиме ШИМ контроллера. Для этого следует вызвать функцию AnalogWrite() с указанием в скобках значения от 0 до 255. Ноль соответствует 0В, а 255 – 5В. Промежуточные значения рассчитываются пропорционально.

Повсеместное распространение устройств, работающих по принципу ШИМ, позволило человечеству уйти от трансформаторных блоков питания линейного типа. Как результат – повышение КПД и снижение в несколько раз массы и размеров источников питания.

ШИМ-контроллер является неотъемлемой частью современного импульсного блока питания. Он управляет работой силового транзистора, расположенного в первичной цепи импульсного трансформатора. За счёт наличия цепи обратной связи напряжение на выходе БП всегда остаётся стабильным. Малейшее отклонение выходного напряжения через обратную связь фиксируется микросхемой, которая мгновенно корректирует скважность управляющих импульсов. Кроме этого современный ШИМ-контроллер решает ряд дополнительных задач, способствующих повышению надёжности источника питания:

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

Принцип работы ШИМ контроллера

Задача ШИМ контроллера состоит в управлении силовым ключом за счёт изменения управляющих импульсов. Работая в ключевом режиме, транзистор находится в одном из двух состояний (полностью открыт, полностью закрыт). В закрытом состоянии ток через p-n-переход не превышает несколько мкА, а значит, мощность рассеивания стремится к нулю. В открытом состоянии, несмотря на большой ток, сопротивление p-n-перехода чрезмерно мало, что также приводит к незначительным тепловым потерям. Наибольшее количество тепла выделяется в момент перехода из одного состояния в другое. Но за счёт малого времени переходного процесса по сравнению с частотой модуляции, мощность потерь при переключении незначительна.

Широтно-импульсная модуляция разделяется на два вида: аналоговая и цифровая. Каждый из видов имеет свои преимущества и схемотехнически может реализовываться разными способами.

Аналоговая ШИМ

Принцип действия аналогового ШИ-модулятора основан на сравнении двух сигналов, частота которых отличается на несколько порядков. Элементом сравнения выступает операционный усилитель (компаратор). На один из его входов подают пилообразное напряжение высокой постоянной частоты, а на другой – низкочастотное модулирующее напряжение с переменной амплитудой. Компаратор сравнивает оба значения и на выходе формирует прямоугольные импульсы, длительность которых определяется текущим значением модулирующего сигнала. При этом частота ШИМ равна частоте сигнала пилообразной формы.

Цифровая ШИМ

Широтно-импульсная модуляция в цифровой интерпретации является одной из многочисленных функций микроконтроллера (МК). Оперируя исключительно цифровыми данными, МК может формировать на своих выходах либо высокий (100%), либо низкий (0%) уровень напряжения. Однако в большинстве случаев для эффективного управления нагрузкой напряжение на выходе МК необходимо изменять. Например, регулировка скорости вращения двигателя, изменение яркости светодиода. Что делать, чтобы получить на выходе микроконтроллера любое значение напряжения в диапазоне от 0 до 100%?

Вопрос решается применением метода широтно-импульсной модуляции и, используя явление передискретизации, когда заданная частота переключения в несколько раз превышает реакцию управляемого устройства. Изменяя скважность импульсов, меняется среднее значение выходного напряжения. Как правило, весь процесс происходит на частоте в десятки-сотни кГц, что позволяет добиться плавной регулировки. Технически это реализуется с помощью ШИМ-контроллера – специализированной микросхемы, которая является «сердцем» любой цифровой системы управления. Активное использование контроллеров на основе ШИМ обусловлено их неоспоримыми преимуществами:

  • высокой эффективности преобразования сигнала;
  • стабильность работы;
  • экономии энергии, потребляемой нагрузкой;
  • низкой стоимости;
  • высокой надёжности всего устройства.
Читайте также:  Принцип работы асинхронного генератора переменного тока

Получить на выводах микроконтроллера ШИМ сигнал можно двумя способами: аппаратно и программно. В каждом МК имеется встроенный таймер, который способен генерировать ШИМ импульсы на определённых выводах. Так достигается аппаратная реализация. Получение ШИМ сигнала с помощью программных команд имеет больше возможностей в плане разрешающей способности и позволяет задействовать большее количество выводов. Однако программный способ ведёт к высокой загрузке МК и занимает много памяти.

Примечательно, что в цифровой ШИМ количество импульсов за период может быть различным, а сами импульсы могут быть расположены в любой части периода. Уровень выходного сигнала определяется суммарной длительностью всех импульсов за период. При этом следует понимать, что каждый дополнительный импульс – это переход силового транзистора из открытого состояния в закрытое, что ведёт к росту потерь во время переключений.

Пример использования ШИМ регулятора

Один из вариантов реализации ШИМ простого регулятора уже описывался ранее в этой статье. Он построен на базе микросхемы NE555 и имеет небольшую обвязку. Но, несмотря на простату схемы, регулятор имеет довольно широкую область применения: схемы управления яркости светодиодов, светодиодных лент, регулировка скорость вращения двигателей постоянного тока.

Генератор ШИМ сигнала с изменением скважности

  • Уроки
  • Базовые уроки Arduino
  • ШИМ сигнал

ШИМ сигнал

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

Можно ли добиться плавного управления цифровым сигналом? Оказывается можно! Представьте себе вентилятор, вращающийся на полной мощности, напряжение постоянно. Представим теперь, что секунду напряжение подаётся, и секунду – нет, и так продолжается “по кругу”. Вентилятор начнёт крутиться в два раза медленнее, но мы скорее всего будем замечать моменты включения и выключения, особенно если вентилятор маленький. Большой вентилятор более инертен и там можно даже не заметить изменений скорости в пределах двух секунд. Можно теперь включать напряжение на 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 0D5 и D6976 Гц8 бит (0-255)
Timer 1D9 и D10488 Гц8 бит (0-255)
Timer 2D3 и D11488 Гц8 бит (0-255)

Это весьма плачевные цифры, особенно по частоте. Все таймеры приведены под одну гребёнку, чтобы пользователь не думал не гадал и лишнюю документацию не изучал. К изменению частоты и разрядности ШИМ мы вернёмся в отдельном уроке, а пока что можете посмотреть данный урок в видео варианте.

Видео