PDM регулятор

Используется алгоритм Брезенхема

Пользовательские блоки ПИД регуляторов, прочих регуляторов и для работы с ШИМ выходами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Аватара пользователя
Sancho
Полковник
Сообщения: 2679
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Откуда: Ярославль.
Имя: Александр
Контактная информация:

PDM регулятор

#1

Сообщение Sancho » 13.03.2018{, 10:17}

PDM регулятор, он же по-русски: Частотно-Импульсная Модуляция, ЧИМ.
Альтернатива ШИМ регуляторам - с ними у Вас меняется соотношение между длительностью "1" и "0", а при PDM длительность импульсов маленькая и постоянная, но их количество в единицу времени - меняется, но зависит от времени цикла( минимальное время равно времени цикла).
Использование алгоритма Брезенхема дало возможность равномерно распределять импульсы по времени в зависимости от входного сигнала.
Рекомендуется применять при отсутствии в системе устройств, увеличивающих время цикла типа дисплеев и т.д.
Может использоваться с любым цифровым пином. Цифровой из аналогового тоже.
В наборе два блока - с входным сигналом 0-100 и 0-255(в реальности до 254, но единицей, я думаю, можно пренебречь).
На входах блоков стоят ограничители вх. сигн., так что перебор не страшен, так-же как и недобор. :haha:
Тестовый проектик в комплекте.

Обновлено: были проблемы со вторым блоком в проекте при объявлении, исправлено.

UPD 22.01.2019
Добавлен блок для управления нагревательным элементом.
Необходим детектор нуля, пин 2, выходной оптрон по пину 6 может быть с zero cross, может без.
Переключение происходит в момент спада напряжения каждую вторую полуволну,
т.е. напряжение подаётся целыми периодами.
Имеем 2 сек - 100%, если меньше - равномерное распределение в пределах этих 2 секунд.
Вход 0-100.
Фото прилагаю. Один ньюанс на фото - я использую другой детектор нуля, по другому принципу, поэтому сигнал как-бы инвертирован. На яндексе в папке полный размер
Вложения
Тест Брезенхема 1.flp
Для переменки, с детектором нуля
(101.56 КБ) 75 скачиваний
PDM_Brezenhem_v2.ubl
обновлено
(26.34 КБ) 157 скачиваний
Брезенхем_PPM_v2.flp
Тестовый пример
(111.12 КБ) 168 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Sancho
Полковник
Сообщения: 2679
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Откуда: Ярославль.
Имя: Александр
Контактная информация:

PDM регулятор

#2

Сообщение Sancho » 22.01.2019{, 12:24}

Обновил, сделал для тэнов.
Если кто затестит на более 1 kw- просьба отписаться как с миганием света в квартире/доме и т.д.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Phazz
Капитан
Сообщения: 869
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 47
Откуда: Сургут
Имя: Анатолий

PDM регулятор

#3

Сообщение Phazz » 22.01.2019{, 14:20}

Попробую на 3 кВт. У меня там стоит твердотельное реле с zero-cross, я так понимаю мне нужно будет только добавить детектор нуля?

Аватара пользователя
Sancho
Полковник
Сообщения: 2679
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Откуда: Ярославль.
Имя: Александр
Контактная информация:

PDM регулятор

#4

Сообщение Sancho » 22.01.2019{, 14:32}

Phazz, Да.
Если оптрон с диодным мостом - будет 100% две секунды, 1%=1 период.
Если без, а с одним обратным диодом 1%=2 периода.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

solo
Рядовой
Сообщения: 23
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

PDM регулятор

#5

Сообщение solo » 11.04.2019{, 15:14}

а подскажите пж есть проект собранный на двух нанах , хочу управлять 6 нагревателями и шаговым двигателем . Нагреватели планирую подключить в 3х фазную сеть по 2 шт на фазу , на макетке все работает , со светодиоды эмитирующие работу тэнов моргают как то не равномерно , для управления тэнами планирую использовать твердотельное реле с детектором нуля , может можно как то снизить частоту ШИМ, а то боюсь что на малых мошностях импульс открытия может получатся коротким и реле не будет открываться
Вложения
peckaDicpley.flp
(185.07 КБ) 13 скачиваний
peckaBez.flp
(146.4 КБ) 15 скачиваний

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 357
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 4
Откуда: Маркс-Энгелс
Имя: Alexander

PDM регулятор

#6

Сообщение Grafsaxar » 11.04.2019{, 16:26}

solo писал(а):
11.04.2019{, 15:14}
для управления тэнами планирую использовать твердотельное реле с детектором нуля , может можно как то снизить частоту ШИМ, а то боюсь что на малых мошностях импульс открытия может получатся коротким и реле не будет открываться
Вы шимом собираетесь SSR управлять?????

Плохая идея. Оно проживёт не долго. Личный опыт.
СпойлерПоказать
минимально можно 62 Гц установить. но это вам не поможет.


для 3 или 11 пина добавьте в setup:

TCCR2B = TCCR2B & Желаемая частота;
для 9-10 пина
TCCR1B = TCCR1B & Желаемая частота;

Но имейте ввиду - для работы шим (на любой частоте) таймер, который обслуживает шим (один таймер - два пина шим) не должен быть использоватся для других задач (серво, звук, прерывания по таймеру, некоторые блоки пользователя).

Частота ШИМ'а на ногах 9 и 10:

Код:
Константа Делитель Частота(Гц)
0x01 1 31250
0x02 8 3906.25
0x03 64 488.28125
0x04 256 122.0703125
0x05 1024 30.517578125

Частота ШИМ'а на ногах 11 и 3:

Код:
Константа Делитель Частота(Гц)
0x01 1 31250
0x02 8 3906.25
0x03 32 976.5625
0x04 64 488.28125
0x05 128 244.140625
0x06 256 122.0703125
0x07 1024 30.517578125
Качество — это делать что-либо правильно, даже когда никто не смотрит

Аватара пользователя
Sancho
Полковник
Сообщения: 2679
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Откуда: Ярославль.
Имя: Александр
Контактная информация:

PDM регулятор

#7

Сообщение Sancho » 11.04.2019{, 16:43}

solo, В проекте Вы используете регулятор на алгоритме Брезенхема, который предназначен для постоянного тока.
Есть регулятор для переменки, использующий в качестве точки отсчёта каждую вторую полуволну напряжения, и, соответственно, требующий детектор нуля.
Для трёх фаз возможно использовать один детектор и один выход с подключением к ТТР с детекторами нуля.
Дабы не усложнять.

Отправлено спустя 8 минут 47 секунд:
Посмотрел этот блочок(подзабыл как там) - он рассчитан на детектор нуля по простой схеме на гасящих резисторах, диодном мосту и оптроне, 817 по входу/пину D2.
Остаётся поставить повторители/инверторы в зависимости от схемы подключения входов ТТР по выходу D6.
Выходной пин легко поменять, изменив D6_ на любое в четырёх местах в блоке.

Отправлено спустя 5 минут 35 секунд:
Вау, посмотрел внимательно - у Вас все шесть каналов независимые.
Ок, сделаю Вам для проекта.
Будут пины как в Вашем текущем.
Нужно?
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Phazz
Капитан
Сообщения: 869
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 47
Откуда: Сургут
Имя: Анатолий

PDM регулятор

#8

Сообщение Phazz » 11.04.2019{, 17:05}

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

Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17.01.2019{, 20:49}
Репутация: 0
Имя: Николай

PDM регулятор

#9

Сообщение Matafon » 11.04.2019{, 18:18}

Sancho писал(а):
11.04.2019{, 16:58}
Посмотрел этот блочок(подзабыл как там) - он рассчитан на детектор нуля по простой схеме на гасящих резисторах, диодном мосту и оптроне, 817 по входу/пину D2.
Добрый день.
Пытаюсь разобраться как при подключении детектора нуля в блоке "Брезенхем_V100" туда приладить сигналы управления. Хочу управлять тэном кнопками (больше / меньше) не пойму как реализовать. Ткните мордой пожалуйста как кнопки приладить

solo
Рядовой
Сообщения: 23
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

PDM регулятор

#10

Сообщение solo » 11.04.2019{, 18:27}

ну на счет твердотельного реле это я громко сказал , берем оптрон ( типа мок 3061 или подобный) припаиваем к симистору и получаем реле. надеюсь, что проживет долго пока, что нибудь не коротнет
Sancho писал(а):
11.04.2019{, 16:58}
Есть регулятор для переменки, использующий в качестве точки отсчёта каждую вторую полуволну напряжения, и, соответственно, требующий детектор нуля.
да как то я тупонул, что можно взять регулятор для переменки и на вход подать с генератора сигнал для регулировки частоты ШИМ
Sancho писал(а):
11.04.2019{, 16:58}
все шесть каналов независимые
а что нельзя так делать как я , использовать в одном проекте несколько (6) блоков

Аватара пользователя
Sancho
Полковник
Сообщения: 2679
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 330
Откуда: Ярославль.
Имя: Александр
Контактная информация:

PDM регулятор

#11

Сообщение Sancho » 11.04.2019{, 19:13}

Matafon, В посте 1 пример именно такой.
Только нет запоминания - сами приладите :)
solo, для постоянки - без проблем, для переменки нет,
блок делал одно-канальный, прочитайте.
Как писал выше - готовьте детектор нуля, блок почти сделал, завтра выложу.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Ответить

Вернуться в «ПИД регуляторы (PID), блоки для ШИМ»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость