Как настроить ШИМ на ESP8266 для управления моторами. Какие пины лучше использовать для ШИМ на ESP8266. Как изменять частоту и скважность ШИМ-сигнала программно. Примеры использования ШИМ для управления яркостью светодиодов и скоростью моторов.
Что такое ШИМ и зачем он нужен на ESP8266
Широтно-импульсная модуляция (ШИМ) — это метод управления мощностью, подаваемой на нагрузку, путем изменения скважности импульсного сигнала. На ESP8266 ШИМ используется для следующих задач:
- Управление яркостью светодиодов
- Регулировка скорости вращения моторов
- Создание аналоговых сигналов
- Управление сервоприводами
ШИМ позволяет плавно изменять мощность на выходе, используя только цифровые пины микроконтроллера. Это делает его незаменимым инструментом при создании различных проектов на ESP8266.
Настройка ШИМ на ESP8266
Для использования ШИМ на ESP8266 необходимо выполнить следующие шаги:
- Выбрать подходящий пин. Для ШИМ рекомендуется использовать пины GPIO4, GPIO5, GPIO12-GPIO15.
- Настроить частоту ШИМ. Стандартная частота — 1000 Гц.
- Задать начальное значение скважности (от 0 до 1023).
- Инициализировать ШИМ на выбранном пине.
Пример базовой настройки ШИМ на пине GPIO5:

const int pwmPin = 5; // GPIO5
const int pwmFreq = 1000; // 1 кГц
const int pwmChannel = 0;
const int pwmResolution = 10; // 10 бит, 0-1023
void setup() {
ledcSetup(pwmChannel, pwmFreq, pwmResolution);
ledcAttachPin(pwmPin, pwmChannel);
}
Изменение частоты ШИМ-сигнала
Частота ШИМ определяет, как часто сигнал переключается между высоким и низким уровнем. На ESP8266 можно программно изменять частоту ШИМ в диапазоне от 1 Гц до 40 МГц. Однако на практике обычно используются частоты от 100 Гц до нескольких кГц.
Для изменения частоты используется функция ledcSetup():
ledcSetup(pwmChannel, newFrequency, pwmResolution);
Какую частоту ШИМ выбрать? Это зависит от применения:
- Для светодиодов: 1-5 кГц
- Для моторов постоянного тока: 5-20 кГц
- Для сервоприводов: 50 Гц
Важно помнить, что слишком низкая частота может вызвать мерцание светодиодов или вибрацию моторов.
Управление скважностью ШИМ-сигнала
Скважность ШИМ определяет, какую часть периода сигнал находится в высоком состоянии. Именно изменение скважности позволяет управлять мощностью на выходе.

На ESP8266 скважность задается 10-битным значением от 0 до 1023. Для изменения скважности используется функция ledcWrite():
ledcWrite(pwmChannel, dutyCycle); // dutyCycle от 0 до 1023
Примеры значений скважности:
- 0 — постоянный низкий уровень (0% мощности)
- 512 — 50% скважность (половина мощности)
- 1023 — постоянный высокий уровень (100% мощности)
Применение ШИМ для управления яркостью светодиода
Одно из самых распространенных применений ШИМ — управление яркостью светодиодов. Изменяя скважность ШИМ-сигнала, можно плавно регулировать яркость от полностью выключенного до максимально яркого состояния.
Пример кода для плавного изменения яркости светодиода:
const int ledPin = 5; // GPIO5
const int pwmChannel = 0;
void setup() {
ledcSetup(pwmChannel, 5000, 10); // 5 кГц, 10 бит
ledcAttachPin(ledPin, pwmChannel);
}
void loop() {
// Плавное увеличение яркости
for (int dutyCycle = 0; dutyCycle <= 1023; dutyCycle++) {
ledcWrite(pwmChannel, dutyCycle);
delay(2);
}
// Плавное уменьшение яркости
for (int dutyCycle = 1023; dutyCycle >= 0; dutyCycle--) {
ledcWrite(pwmChannel, dutyCycle);
delay(2);
}
}
Этот код создаст эффект «дыхания» светодиода, плавно изменяя его яркость.

Управление скоростью мотора с помощью ШИМ
ШИМ также широко используется для управления скоростью вращения моторов постоянного тока. Изменяя скважность ШИМ-сигнала, можно регулировать среднее напряжение, подаваемое на мотор, и тем самым управлять его скоростью.
Пример кода для управления скоростью мотора:
const int motorPin = 12; // GPIO12
const int pwmChannel = 0;
void setup() {
ledcSetup(pwmChannel, 10000, 10); // 10 кГц, 10 бит
ledcAttachPin(motorPin, pwmChannel);
}
void loop() {
// Плавное увеличение скорости
for (int speed = 0; speed <= 1023; speed++) {
ledcWrite(pwmChannel, speed);
delay(10);
}
delay(1000); // Максимальная скорость в течение 1 секунды
// Плавное уменьшение скорости
for (int speed = 1023; speed >= 0; speed--) {
ledcWrite(pwmChannel, speed);
delay(10);
}
delay(1000); // Остановка на 1 секунду
}
Этот код будет плавно увеличивать и уменьшать скорость мотора. Обратите внимание, что для управления мотором может потребоваться дополнительный драйвер, так как ESP8266 не может напрямую обеспечить достаточный ток для большинства моторов.
Особенности использования ШИМ на разных пинах ESP8266
Не все пины ESP8266 одинаково хорошо подходят для ШИМ. Вот некоторые особенности, которые следует учитывать:

- GPIO0 и GPIO2 не рекомендуется использовать для ШИМ, так как они участвуют в процессе загрузки ESP8266.
- GPIO15 также лучше не использовать для ШИМ, так как он подтянут к земле.
- GPIO4, GPIO5, GPIO12, GPIO13, GPIO14 — наиболее подходящие пины для ШИМ.
- GPIO16 имеет ограничения по функциональности и не поддерживает прерывания, что может влиять на работу ШИМ.
Выбирая пин для ШИМ, убедитесь, что он не используется для других важных функций в вашем проекте.
Ограничения ШИМ на ESP8266
Несмотря на широкие возможности, ШИМ на ESP8266 имеет некоторые ограничения:
- Максимальное разрешение ШИМ — 10 бит (значения от 0 до 1023).
- При использовании высоких частот ШИМ (более 1 МГц) может снижаться стабильность работы Wi-Fi.
- Программный ШИМ может создавать заметные прерывания, что может влиять на точность временных операций.
- Количество одновременно используемых ШИМ-каналов ограничено.
Учитывая эти ограничения, важно правильно выбирать частоту и разрешение ШИМ в зависимости от конкретной задачи.
Оптимизация использования ШИМ на ESP8266
Для наиболее эффективного использования ШИМ на ESP8266 рекомендуется следовать следующим советам:

- Используйте минимально необходимую частоту ШИМ. Более высокие частоты требуют больше вычислительных ресурсов.
- Если не требуется высокая точность, используйте меньшее разрешение ШИМ (например, 8 бит вместо 10).
- Старайтесь не использовать слишком много ШИМ-каналов одновременно, особенно если вам нужна стабильная работа Wi-Fi.
- При работе с моторами или другими индуктивными нагрузками используйте защитные диоды для предотвращения обратных выбросов напряжения.
- Если требуется очень точный ШИМ, рассмотрите возможность использования внешнего ШИМ-контроллера.
Следуя этим рекомендациям, вы сможете максимально эффективно использовать возможности ШИМ на ESP8266 в своих проектах.
Шим на esp8266 | AlexGyver Community
ankoroff56
✩✩✩✩✩✩✩
- #1
Добрый день, знающие люди подскажите.
Задача такая:
Необходимо задать частоту на 4 пинах(разную) которую можно изменять с помощью мобильного приложения. Частота на каждом из пинов будет постоянно разная в каждый момент времени
Старик Похабыч
★★★★★★★
- #2
«ESP8266 allows software PWM in all I/O pins» (с)не моё
Геннадий П
★★★★★✩✩
- #3
@ankoroff56, А зачем частоту менять? Может скважность нужно менять?
ankoroff56
✩✩✩✩✩✩✩
- #4
@Геннадий П,Я может быть неправильно задачу выразил, если честно не совсем понял тебя. У меня есть NodeMCU, есть 4 особых мотора на основе вибродинамиков (3 выхода), хочу управлять этими мотрами с помощь изменения частоты в hz как машинкой на радио управлении.
Отклонение по y — работают определенные моторы с определенной частотой.
Геннадий П
★★★★★✩✩
- #5
@ankoroff56, Ну, так это никак не ШИМ получается. ШИМ — широтно-импульсная модуляция, частота особо не важна (в разумных пределах) изменяется только заполнение (скважность) сигнала.
bort707
★★★★★★✩
- #6
@ankoroff56, и что не устраивает в первом ответе? Частота шим у есп8266 настраивается у каждого пина отдельно.
Программируемая Wi-Fi лампочка-ночник на ESP8266 / Хабр
Нет ничего необычного в управлении светодиодами с помощью микроконтроллера. Даже такого странного, как ESP8266. Однако мне хотелось сделать законченный продукт. Что-то, что не было бы похоже на паука из проводов и радиодеталей.
Отмечу, что я — начинающий радиолюбитель, так что наверняка что-то сделал не слишком хорошо. Буду рад, если кто-то подскажет, что не так и почему надо делать иначе.
Существует целый ряд особенностей, связанных с контроллером ESP8622, с транзисторами, с мощными RGB-светодиодами, с 3D-печатью вообще и моделированием в частности и программированием всего этого счастья. Это обзорная статья, где я коротко покажу, что и как получилось, а если вы захотите, то раскрою подробнее запрошенные темы отдельными статьями.
Модуль ESP очень прожорлив. При запуске он забирает до 300 мА, что делает невозможным его питание, к примеру, от Arduino. Ему нужен свой источник питания. Причем, источник питания на 3.3В. Это проблема. В мире полно копеечных источников питания на 5В, но трехвольтовые громоздки и дороги. К счастью, существует такая вещь, как регулятор напряжения AMS1117-3.3.
Питание
Взял цоколь от лампочки, китайскую пятиваттную USB-зарядку, регулятор напряжения со сглаживающим конденсатором, диод Шоттки (на всякий случай) и получил:
На 3.3 не очень похоже, но это потому, что стоит пара конденсаторов. Однако, под нагрузкой все нормально.
Контроллер
Мой фаворит — ESP-07, с возможностью подключения внешней антенны и металлическим экраном-теплоотводом.
Прошивка: nodemcu, в первую очередь потому, что там есть поддержка ШИМ (PWM) и возможность менять код на лету.
Собранная схема
Затем, закрепил сверху трехваттный RGB-светодиод, подключил к нему транзисторы BC547 (схема с общим эмиттером), блок питания и плату заклеил изолентой и скрепил вместе двусторонним скотчем. С другой стороны платы прикрепил поставил микроконтроллер, подвел питание, добавил сопротивление к каждому каналу светодиода и подключил к 5 вольтам.
Корпус
Итоговый выбор — цилиндрический корпус с отверстием снизу под цоколь, канавками для платы и выемкой сверху для крепления украшения. Немного tinkercad-а, два часа печати и результат:
Финальный продукт
Проверка
Немного JS, немного LUA, немного Perl и…
Как это работает
При включении лампочка коннектится к домашней сети и запрашивает у домашнего сервера файлик с lua-скриптом. Если получилось — сохраняет и запускает. Если не получилось — запускает предыдущий сохраненный. Обычно включение занимает около 2-3 секунд.
Подводные камни
Куда же без них?
Во-первых, нельзя использовать транзисторную схему включения с общим коллектором. ESP — удивительно живучая штука, хоть и очень капризная. Он начинает зверски греться от пяти вольт, но после того как остынет — приходит в норму.
Во-вторых, нельзя использовать GPIO0, потому что он на старте получается замкнут на землю и ESP входит в режим прошивки. И нельзя использовать GPIO2, потому что если он на старте «на земле», то Wi-Fi модуль не стартует. GPIO15 тоже лучше не трогать. Мой выбор: 4,5,12.
В-третьих, нужно выставлять максимальную скорость для обмена данными, иначе при получении данных программный ШИМ начинает заметно мерцать.
В-четвертых, ABS-пластик горюч, это надо учитывать, помня о китайском блоке питания.
В пятых, в следующей версии нужно цилиндр делать более узким у основания, подрезав плату. Потому как не все патроны позволяют вкрутить лампу с таким широким основанием. Кроме того — можно было сантиметр высоты сэкономить.
Неисправимые улучшения
Планирую добавить midi-пищалку для всяких праздников, приложение под Андроид, чтобы выбирать цвет не в браузере, автоматический режим в котором бы лампа получала прогноз погоды и выбирала свой цвет в зависимости от результата и, наверное, следующий вариант стоит собирать, протравив плату. Интересные предложения всячески приветствуются.
Adafruit HUZZAH ESP8266 Прорыв
Сохранить 0
Adafruit
Нет отзывов
Поделитесь этим продуктом
- Описание
- Отзывы
Описание
Добавьте Интернет в свой следующий проект с помощью очаровательного микроконтроллера Wi-Fi размером с укус по доступной цене! Процессор ESP8266 от Espressif представляет собой микроконтроллер с тактовой частотой 80 МГц с полным интерфейсом WiFi (как клиент, так и точка доступа) и стеком TCP/IP с поддержкой DNS. Хотя этот чип был очень популярен, его также было очень сложно использовать. Большинство недорогих модулей не подходят для макетной платы, не имеют встроенного стабилизатора 500 мА 3,3 В или регулятора уровня, а также не сертифицированы для эмиттеров CE или FCC. .. ДО СЕЙЧАС!
Adafruit HUZZAH ESP8266 breakout — это то, что мы разработали, чтобы сделать работу с этим чипом очень простой и увлекательной. Мы взяли сертифицированный модуль со встроенной антенной и большим количеством контактов и припаяли его к разработанным нами печатным платам. Мы добавили в:
- Кнопка сброса,
- Пользовательская кнопка, которая также может перевести чип в режим начальной загрузки,
- Красный светодиод, которым можно мигать,
- Сдвиг уровня на UART и вывод сброса,
- Выход 3,3 В, регулятор 500 мА (вы должны предположить, что ESP8266 может потреблять до 250 мА, поэтому заложите соответствующий бюджет)
- Два входа питания с диодной защитой (один для кабеля USB, другой для аккумулятора)
Два параллельных разъема для макетной платы с каждой стороны обеспечивают доступ к:
- 1 аналоговому входу (макс.
1,8 В)
- 9 x GPIO (логика 3,3 В), которые также можно использовать для I2C или SPI
- 2 контакта UART
- 2 входа питания 3–12 В, сброс, включение, LDO-отключение, выход 3,3 В
Один разъем на конце имеет распиновку «FTDI», поэтому вы можете подключить FTDI или консольный кабель для загрузки программного обеспечения и чтения/записи отладочной информации через UART. Когда вы закончите кодирование, отсоедините кабель, и этот маленький модуль можно будет встроить в вашу проектную коробку.
Каждый модуль поставляется с предварительно загруженным интерпретатором Lua NodeMCU (в частности, NodeMCU 0.9.5 сборка 20150318 / Lua 5.1.4), вы можете запускать команды и «сохранять» программы Lua непосредственно во флэш-памяти модуля с помощью USB-Serial кабель преобразователя. Но, если хотите, вы можете пропустить Lua и сразу перейти к использованию Arduino IDE. Как только вы загрузите ядро ESP8266, вы сможете обращаться с ним так же, как с микроконтроллером + платой WiFi, никаких других процессоров не требуется!
Каждый заказ поставляется с одной собранной и протестированной коммутационной платой HUZZAH ESP8266 и стержнем 0,1-дюймового разъема, который можно припаять и подключить к макетной плате. Для этого требуются паяльник и припой, которые не входят в комплект . Макетная плата без пайки также не входит в комплект. Вам действительно понадобится кабель USB-serial , например консольный USB-кабель (подходит для Windows, не рекомендуется для пользователей MacOSX), FTDI Friend (подходит для любой ОС) или кабель FTDI ( отлично подходит для любой ОС) для загрузки программного обеспечения в HUZZAH ESP8266! В нашем основном учебном пособии есть проводка, распиновка, сборка, загрузки и многое другое!
Технические характеристики
- Размеры: 25 мм x 38 мм x 5 мм / 1″ x 1,5″ x 0,2″
- Вес: 5 г
- Предварительно запрограммирован с помощью NodeMCU 0.
9.5, сборка 20150318 (Lua 5.1.4)
- Спецификация ESP8266
- Отчет о тестировании FCC для модуля, используемого в этом переходе (содержит идентификатор FCC: 2ADUISP-12)
- Отчет об испытаниях CE для модуля, используемого в этом коммутационном блоке
- Огромное количество информации на http://www.esp8266.com/ форуме сообщества! Веб-страница
- NodeMCU (Lua для ESP8266) с примерами и документацией по платформе Lua
- Поддержка Arduino IDE для ESP8266
- Не забудьте посетить esp8266.com, чтобы быть в курсе последних новостей, программного обеспечения и слухов об ESP8266!
Вы можете получить синий или черный модуль, они идентичны.
Отзывы
ПРОКЛАДКА вентилятора — активное охлаждение для Raspberry Pi 4
ПРОКЛАДКА вентилятора — активное охлаждение для Raspberry Pi 4 | Электор Похоже, в вашем браузере отключен JavaScript. Для наилучшего взаимодействия с нашим сайтом обязательно включите Javascript в своем браузере.
- 10% скидка для членов
- Одобренные продукты
- 2000+ продуктов
Становиться участником Архив Проекты
€ — евро
Будьте первым, кто оставит отзыв об этом товаре
Перейти в конец галереи изображений
Перейти к началу галереи изображений
ПРОКЛАДКА вентилятора — активное охлаждение для Raspberry Pi 4
Будьте первым, кто оставит отзыв об этом продукте
Обзор
Raspberry Pi 4 является самой мощной версией среди одноплатных компьютеров в своем роде, и в результате он работает значительно теплее, чем предыдущие модели. Fan SHIM предлагает простое и быстрое решение для охлаждения RPi 4.
Подробнее
Обзор
Raspberry Pi 4 — самая мощная версия среди одноплатных компьютеров в своем роде, в результате чего он работает значительно теплее, чем предыдущие модели. Fan SHIM предлагает простое и быстрое решение для охлаждения RPi 4.
Подробнее
Обычная цена €13,95
Участников €12,56
Срок доставки: 5 рабочих дней
- Подробности
- Технические характеристики
- Видео
- Связанный
- Отзывы
Подробнее
Когда система на кристалле Raspberry Pi 4 достигает определенной температуры, она снижает свою рабочую скорость, чтобы защитить себя от повреждений. В результате вы не получите максимальной производительности от одноплатного компьютера.
Fan SHIM — это доступный аксессуар, который эффективно устраняет тепловое дросселирование и повышает производительность RPi 4.
Подключить SHIM вентилятора к Raspberry pi довольно просто: в SHIM вентилятора используется разъем с фрикционной посадкой, поэтому он просто надевается на контакты вашего Pi и готов к работе, пайка не требуется!
Вентилятором можно управлять в программном обеспечении, поэтому вы можете настроить его в соответствии со своими потребностями, например, включать его, когда процессор достигает определенной температуры и т. д.
Вы также можете запрограммировать светодиод как визуальный индикатор состояния вентилятора .
Тактильный переключатель также можно запрограммировать, чтобы вы могли использовать его для включения и выключения вентилятора или для переключения между температурным и ручным режимами.
Характеристики
- Вентилятор 30 мм, 5 В постоянного тока
- 4200 об/мин
- Расход воздуха 0,05 м³/мин
- Акустический шум 18,6 дБ (бесшумный)
- Жатка с фрикционной посадкой
- Пайка не требуется
- Светодиод RGB (APA102)
- Тактильный переключатель
- Требуется основная сборка
- Совместимость с Raspberry Pi 4 (и 3B+, 3A+)
- Библиотека Python и демон
- Распиновка
Комплект поставки
- ПРОКЛАДКА вентилятора PCB
- 30-мм вентилятор 5 В постоянного тока с разъемом JST
- Гайки и болты M2,5
Сборка
Сборка очень проста и почти не занимает времени
- Повернув печатную плату стороной с компонентами вверх, вставьте два болта M2,5 в отверстия снизу, затем прикрутите первую пару гаек, чтобы закрепите их и действуйте как распорки.
- Наденьте монтажные отверстия вентилятора на болты так, чтобы сторона вентилятора с кабелем была направлена вниз (как показано на рисунке), а текст на вентиляторе направлен вверх. Прикрепите еще двумя гайками.
- Вставьте разъем JST вентилятора в гнездо на прокладке вентилятора.
Программное обеспечение
С помощью библиотеки Python вы можете управлять вентилятором (вкл./выкл.), RGB-светодиодом и переключателем. Вы также найдете ряд примеров, демонстрирующих каждую функцию, а также сценарий для установки демона (компьютерная программа, работающая в фоновом режиме), которая запускает вентилятор в автоматическом режиме, включая или выключая его, когда ЦП достигает пороговой температуры с ручным управлением с помощью тактильного переключателя.
Технические характеристики
19039 |
0606034879409 |
Пиморони |