• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Сглаживание программного PWM сигнала.

pazyzy

New member
Добрый день.
Подскажите, можно ли как-то сгладить выдаваемый pwm сигнал с esp8266?
Прошивка NodeMCU. Частота 1000.
pwm реализован програмно, и когда процессор чем-то занят (у меня это происходит иногда при получении сообщений из очереди mqtt или опроса датчиков bmp280 и dht22, или при отправке сообщения в очередь, но когда точно - неизвестно), я замечаю что с pwm что-то не то.
pwm управляет схемой, которая управляет скоростью вентилятора.
Осциллографа нет, сужу по звуку вентилятора.

Задача: сгладить скачки или проседании/скачке pwm сигнала на 1-2 секунды. Если из-за этого вентилятор будет откликаться на 2 секунды позже - не проблема.

Конденсатор поможет? Если да, то какие параметры?

Спасибо.
 

Jury_78

New member
Если по простому - нужна RC цепь. Постоянная времени цепи определяется произведением R*C. Резистор 100 Ом и конденсатор 10000 мкф, дадут постоянную времени в 1 сек. Если ток потребления не большой, то резистор можно увеличить, а конденсатор уменьшить и обратно - если наоборот. Какая нужна Вам постоянная времени без данных определить трудно, пробуйте.
 

pazyzy

New member
Нашлось время и я опять возвращаюсь к этой теме.
Ток потребления 0.05 мА, иногда при включении китайский мультиметр показывает скачек до 0.3мА.
Т.е. ток очень небольшой.

Спасибо за совет. Я прочитал описание что такое RC цепь, как ее рассчитать и какие параметры нужно менять, но не нашел формулы расчета возможной емкости конденсатора (или его крайних значений) от потребляемого тока, чтобы определить что такое "ток потребления небольшой", и на сколько можно уменьшить конденсатор.

Сейчас больше 220uF у меня конденсатора нету, поэтому попробую воткнуть его и резистор на 10кОм.
 

Сергей_Ф

Moderator
Команда форума
не нашел формулы расчета возможной емкости конденсатора (или его крайних значений) от потребляемого тока,
Просто считайте нагрузку как R2 во второй R2C цепи и считайте по той же формуле. Только помните, что R первой цепи должен быть значительно меньше R2 - т.е. нагрузки.
 

pazyzy

New member
Попробовал, реализовал, не понравилось.
Проседание напряжения было около секунды. Пробовал подобрать конденсатор и резистор, но при экспериментах с фильтром небольшое изменение напряжения все равно присутствует. А так как это значение для вентилятора граничное (при небольшом уменьшении он сразу начинает работать в неправильном режиме), то изменения быть не должно.
Поэтому решил вопрос с помощью вынесения управляющего PWM за пределы ESP.
Написал скетч для ATTiny13a, который слушает ногу ADC и выдает такое же напряжение в другую ногу, если сигнал был стабильный в течении двух секунд.
Ногу ADC через резистор 10kOm подтянул к земле. Все работает как часы :)

Понимаю, что можно передавать цифровое значение с ESP на ATTiny, но это уже следующий этап.
Всем спасибо за советы.
 
Сверху Снизу