PDM регулятор

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

PDM регулятор

Сообщение Sancho »

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

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

UPD 22.01.2019
Добавлен блок для управления нагревательным элементом.
Необходим детектор нуля, пин 2, выходной оптрон по пину 6 может быть с zero cross, может без.
Переключение происходит в момент спада напряжения каждую вторую полуволну,
т.е. напряжение подаётся целыми периодами.
Имеем 2 сек - 100%, если меньше - равномерное распределение в пределах этих 2 секунд.
Вход 0-100.
Фото прилагаю. Один ньюанс на фото - я использую другой детектор нуля, по другому принципу, поэтому сигнал как-бы инвертирован. На яндексе в папке полный размер
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

Обновил, сделал для тэнов.
Если кто затестит на более 1 kw- просьба отписаться как с миганием света в квартире/доме и т.д.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

PDM регулятор

Сообщение Phazz »

Попробую на 3 кВт. У меня там стоит твердотельное реле с zero-cross, я так понимаю мне нужно будет только добавить детектор нуля?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

[ref=#404040]Phazz[/ref], Да.
Если оптрон с диодным мостом - будет 100% две секунды, 1%=1 период.
Если без, а с одним обратным диодом 1%=2 периода.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

PDM регулятор

Сообщение solo »

а подскажите пж есть проект собранный на двух нанах , хочу управлять 6 нагревателями и шаговым двигателем . Нагреватели планирую подключить в 3х фазную сеть по 2 шт на фазу , на макетке все работает , со светодиоды эмитирующие работу тэнов моргают как то не равномерно , для управления тэнами планирую использовать твердотельное реле с детектором нуля , может можно как то снизить частоту ШИМ, а то боюсь что на малых мошностях импульс открытия может получатся коротким и реле не будет открываться
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06 сен 2015, 16:04
Откуда: Маркс-Энгелс
Имя: Alexander

PDM регулятор

Сообщение Grafsaxar »

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

Плохая идея. Оно проживёт не долго. Личный опыт.
[spoiler]
минимально можно 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[/spoiler]
Качество — это делать что-либо правильно, даже когда никто не смотрит
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

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

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

Отправлено спустя 5 минут 35 секунд:
Вау, посмотрел внимательно - у Вас все шесть каналов независимые.
Ок, сделаю Вам для проекта.
Будут пины как в Вашем текущем.
Нужно?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

PDM регулятор

Сообщение Phazz »

[ref]Grafsaxar[/ref], да как-то не было проблем с шимом на ssr. Была проблема с завышением заявленных характеристик самого реле китайцами. После этого я проверяю что за симистр там установлен, ну и если нагрузка большая - то хорошее охлаждение, по возможности активное.
Matafon
Рядовой
Сообщения: 9
Зарегистрирован: 17 янв 2019, 20:49
Откуда: Новосибирск
Имя: Николай

PDM регулятор

Сообщение Matafon »

Sancho писал(а): 11 апр 2019, 16:58 Посмотрел этот блочок(подзабыл как там) - он рассчитан на детектор нуля по простой схеме на гасящих резисторах, диодном мосту и оптроне, 817 по входу/пину D2.
Добрый день.
Пытаюсь разобраться как при подключении детектора нуля в блоке "Брезенхем_V100" туда приладить сигналы управления. Хочу управлять тэном кнопками (больше / меньше) не пойму как реализовать. Ткните мордой пожалуйста как кнопки приладить
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

PDM регулятор

Сообщение solo »

ну на счет твердотельного реле это я громко сказал , берем оптрон ( типа мок 3061 или подобный) припаиваем к симистору и получаем реле. надеюсь, что проживет долго пока, что нибудь не коротнет
Sancho писал(а): 11 апр 2019, 16:58 Есть регулятор для переменки, использующий в качестве точки отсчёта каждую вторую полуволну напряжения, и, соответственно, требующий детектор нуля.
да как то я тупонул, что можно взять регулятор для переменки и на вход подать с генератора сигнал для регулировки частоты ШИМ
Sancho писал(а): 11 апр 2019, 16:58 все шесть каналов независимые
а что нельзя так делать как я , использовать в одном проекте несколько (6) блоков
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

[ref]Matafon[/ref], В посте 1 пример именно такой.
Только нет запоминания - сами приладите :)
[ref]solo[/ref], для постоянки - без проблем, для переменки нет,
блок делал одно-канальный, прочитайте.
Как писал выше - готовьте детектор нуля, блок почти сделал, завтра выложу.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Renigant
Рядовой
Сообщения: 82
Зарегистрирован: 11 сен 2015, 12:21

PDM регулятор

Сообщение Renigant »

Sancho, Планирую по вашему совету использовать PDM блок, только данный блок не подходит для моей системы у меня 3 тэна на каждую фазу следовательно для каждой фазы нужно отдельно использовать пин с прерыванием у меги я использую 19, 20, 21 и соответственно пины для управления у меня используются три разных. Отсюда вопрос Вы сможете изменить этот блок для задания пинов в ручную?
И вопрос подойдет ли этот блок для такой платы https://ru.aliexpress.com/item/32802025 ... 33edXin7Ne ?

Отправлено спустя 3 минуты 20 секунд:
Renigant писал(а): 08 ноя 2019, 11:19 Отсюда вопрос Вы сможете изменить этот блок для задания пинов в ручную
Я так понимаю что в блоке достаточно поменять значения во вкладке SetupSection
"pinMode(2, INPUT);
attachInterrupt(0, detect_up, RISING);
D6_Out;
D6_Low;"
Если это так то первый вопрос я снимаю
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

[ref]Renigant[/ref], Для избежания использования 3-х детекторов нуля - проще использовать ТТР и один детектор. У большинства - zero-cross. Тогда только один блок, выходы на оптроны - в паралель.
В результате :)
[spoiler]
3fase_zero-cross.jpg
[/spoiler]

Отправлено спустя 24 минуты 19 секунд:
Renigant писал(а): 08 ноя 2019, 11:22 Я так понимаю что в блоке достаточно поменять значения во вкладке SetupSection
Нет, надо менять везде в блоке. Смотри внимательно....
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Renigant
Рядовой
Сообщения: 82
Зарегистрирован: 11 сен 2015, 12:21

PDM регулятор

Сообщение Renigant »

Все дело в том, что обвязка уже готова и менять ее будет долго да и ТТР в наличии нет на все нужно время, а зима близко.
IMG_20191015_225438.jpg
Отправлено спустя 1 час 43 минуты 21 секунду:
Sancho писал(а): 09 ноя 2019, 08:53. Нет, надо менять везде в блоке. Смотри внимательно
Нашел меняем значения в SetupSection и меняем функцию в FunctionSection
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Renigant 09 ноя 2019, 12:00, всего редактировалось 1 раз.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

Renigant писал(а): 09 ноя 2019, 11:41 Я в коде не силен, сейчас пересмотрел блок ещё раз, но привязку к пинам я увидел только в SetupSection.
Смотри в функциях :)
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Renigant
Рядовой
Сообщения: 82
Зарегистрирован: 11 сен 2015, 12:21

PDM регулятор

Сообщение Renigant »

Renigant писал(а): 08 ноя 2019, 11:22.
И вопрос подойдет ли этот блок для такой платы https://m.ru.aliexpress.com/item/328020 ... 33edXkInS6
А для этих модулей подойдёт?
Renigant
Рядовой
Сообщения: 82
Зарегистрирован: 11 сен 2015, 12:21

PDM регулятор

Сообщение Renigant »

[ref=#ff8000]Sancho[/ref], Возможно ли добавить в ваш блок "линию задержки-задержка (микросекунды)-выход" как в стандартном блоке скоростного счетчика?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

Renigant писал(а): 02 дек 2019, 22:34 Возможно ли добавить в ваш блок "линию задержки-задержка (микросекунды)-выход" как в стандартном блоке скоростного счетчика?
[ref]Renigant[/ref], зачем?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Renigant
Рядовой
Сообщения: 82
Зарегистрирован: 11 сен 2015, 12:21

PDM регулятор

Сообщение Renigant »

Sancho писал(а): 03 дек 2019, 08:21
Renigant писал(а): 02 дек 2019, 22:34 Sancho, Возможно ли добавить в ваш блок "линию задержки-задержка (микросекунды)-выход" как в стандартном блоке скоростного счетчика?
Renigant, зачем?
Очень хороший вопрос, это было написано ошибочно, сегодня провел тесты и убедился, что все работает без добавлений.
Но в ходе теста возникла другая ситуация, если использовать блок по умолчанию (пин 2 отслеживание "0", пин 6 управляет), то все работает но если изменить в блоке "pinMode(2, INPUT);" на "pinMode(19, INPUT);" то отслеживание "0" все равно происходит от пин 2. Как в таком случае быть?
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

PDM регулятор

Сообщение Sancho »

переписать код, используя другой пин, поддерживающий прерывание.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ответить

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

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

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