Рубрики
Проекты на Raspberry Pi

Использование ШИМ в Raspberry Pi Pico

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

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

Необходимые компоненты

  1. Плата Raspberry Pi Pico (купить на AliExpress).
  2. Светодиод любого цвета (купить на AliExpress).
  3. USB-кабель.
  4. Макетная плата.
  5. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

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

Широтно-импульсная модуляция (ШИМ, в англ. Pulse width modulation, PWM) — это метод получения аналоговых результатов цифровыми средствами. Цифровое управление используется для создания прямоугольной волны, сигнала, переключаемого между включенным и выключенным состояниями. Этот шаблон включения-выключения может имитировать напряжения между полным включением (5 В) и выключением (0 В), изменяя часть времени, которое сигнал проводит во включенном состоянии, по сравнению со временем, которое сигнал проводит в выключенном состоянии.

Длительность «времени включения» называется шириной импульса. Чтобы получить различные аналоговые значения, вы изменяете или модулируете эту ширину. Если вы достаточно быстро повторите этот шаблон включения-выключения с каким-либо устройством, например, светодиодом, то это будет выглядеть так: сигнал представляет собой постоянное напряжение от 0 до 5 В, управляющее яркостью светодиода.

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

ШИМ-контакты платы Raspberry Pi Pico

Микроконтроллер RP2040 в ядре Raspberry Pi Pico имеет 8 слайсов ШИМ, и каждый слайс независим от других. Это просто означает, что мы можем установить параметры каждого слайса, не влияя на другие слайсы.

Блок ШИМ RP2040 имеет 8 идентичных слайсов (срезов) ШИМ, каждый с двумя выходными каналами (A/B), где вывод B также может использоваться как вход для измерения частоты и рабочего цикла. Это означает, что каждый слайс может управлять двумя выходными сигналами ШИМ или измерять частоту или рабочий цикл входного сигнала. Это дает в общей сложности до 16 управляемых выходов ШИМ. Все 30 выводов GPIO платы Raspberry Pi Pico могут управляться блоком ШИМ.

Интересно вспомнить в этот момент о такой возможности ШИМ на RP2040, как изменение значения коэффициента заполнения (Duty Cycle) на 0% и на 100% без ложных пиков, как это происходит на большинстве других микроконтроллеров. Кроме того, можно иметь два выхода одного и того же слайса Slice с инвертированными фазовыми сигналами.

На приведенной выше схеме контактов контакты 21/GP16 и 22/GP17 относятся к одному и тому же срезу: GP16 — это выход A, а GP17 — это выход B.

Использование ШИМ в Raspberry Pi Pico

В этом примере мы будем использовать вывод ШИМ платы Raspberry Pi Pico со светодиодом. Благодаря широтно-импульсной модуляции яркость свечения светодиода будет управляться таким образом, чтобы он постепенно загорался, а затем постепенно выключался, чтобы сформировать эффект дышащего света в цикле.

Подключите положительный контакт светодиода к контакту Pi Pico GP2, а отрицательный контакт — к GND.

Код программы на MicroPython

Скопируйте приведенный выше код и запустите скрипт.

Светодиод, подключенный к Raspberry Pi Pico, будет вести себя как «дышащий» светодиод, поскольку его освещенность и яркость будут меняться через равные промежутки времени.

Частота (led.freq) сообщает Raspberry Pi Pico, как часто включать и выключать светодиод. Рабочий цикл сообщает светодиоду, как долго он должен быть включен каждый раз. Для Raspberry Pi Pico в MicroPython это может быть в диапазоне от 0 до 6502565025 будет соответствовать 100% времени, поэтому светодиод будет оставаться все время ярким. Значение около 32512 будет означать, что он должен быть включен половину времени.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *