Диммер (Фазовый регулятор)

Пользовательские блоки для работы с контроллерами светодиодных ламп и освещением.
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18 ноя 2015, 22:42
Откуда: Близко к Ставрополю
Имя: Евгений
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение JonyBest »

Предыстория такова - решил обновить прошивку самогонного аппарата и всё поломал. Ни один из представленных диммеров на форуме не захотел работать на плате ESP32 v14. Перерыл весь инет - проблема у многих. А у меня ситуация "горит", тянуть время нельзя, брага скиснет... Эта библиотека завелась без проблем.

Блок построен на библиотеке RBDDimmer
Данная библиотека предназначена для работы с диммером, дает возможность управления большим количеством диммеров используя аппаратный таймер и внешние прерывания.
При использовании библиотеки стоит заранее ознакомится с таблицей задаваемых пинов.

Код: Выделить всё

*  ---------------------- OUTPUT & INPUT Pin table ---------------------
 *  +---------------+-------------------------+-------------------------+
 *  |   Board       | INPUT Pin               | OUTPUT Pin              |
 *  |               | Zero-Cross              |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Leonardo       | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  +---------------+-------------------------+-------------------------+
 *  | Mega          | D2 (NOT CHANGABLE)      | D0-D1, D3-D70           |
 *  +---------------+-------------------------+-------------------------+
 *  | Uno           | D2 (NOT CHANGABLE)      | D0-D1, D3-D20           |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP8266       | D1(IO5),    D2(IO4),    | D0(IO16),   D1(IO5),    |
 *  |               | D5(IO14),   D6(IO12),   | D2(IO4),    D5(IO14),   |
 *  |               | D7(IO13),   D8(IO15),   | D6(IO12),   D7(IO13),   |
 *  |               |                         | D8(IO15)                |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP32         | 4(GPI36),   6(GPI34),   | 8(GPO32),   9(GP033),   |
 *  |               | 5(GPI39),   7(GPI35),   | 10(GPIO25), 11(GPIO26), |
 *  |               | 8(GPO32),   9(GP033),   | 12(GPIO27), 13(GPIO14), |
 *  |               | 10(GPI025), 11(GPIO26), | 14(GPIO12), 16(GPIO13), |
 *  |               | 12(GPIO27), 13(GPIO14), | 23(GPIO15), 24(GPIO2),  |
 *  |               | 14(GPIO12), 16(GPIO13), | 25(GPIO0),  26(GPIO4),  |
 *  |               | 21(GPIO7),  23(GPIO15), | 27(GPIO16), 28(GPIO17), |
 *  |               | 24(GPIO2),  25(GPIO0),  | 29(GPIO5),  30(GPIO18), |
 *  |               | 26(GPIO4),  27(GPIO16), | 31(GPIO19), 33(GPIO21), |
 *  |               | 28(GPIO17), 29(GPIO5),  | 34(GPIO3),  35(GPIO1),  |
 *  |               | 30(GPIO18), 31(GPIO19), | 36(GPIO22), 37(GPIO23), |
 *  |               | 33(GPIO21), 35(GPIO1),  |                         |
 *  |               | 36(GPIO22), 37(GPIO23), |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino M0    | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  | Arduino Zero  |                         |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino Due   | D0-D53                  | D0-D53                  |
 *  +---------------+-------------------------+-------------------------+
 *  | STM32         | PA0-PA15,PB0-PB15       | PA0-PA15,PB0-PB15       |
 *  | Black Pill    | PC13-PC15               | PC13-PC15               |
 *  | BluePill      |                         |                         |
 *  | Etc...        |                         |                         |
 *  +---------------+-------------------------+-------------------------+
RBDdimmer_1.1_(Code_-_Professional).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ardudue
Лейтенант
Сообщения: 424
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение Ardudue »

JonyBest писал(а): 03 ноя 2023, 22:22 решил обновить прошивку самогонного аппарата
Поддерживаете постоянную температуру нагрева ТЭНом?
JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18 ноя 2015, 22:42
Откуда: Близко к Ставрополю
Имя: Евгений
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение JonyBest »

Ardudue писал(а): 17 ноя 2023, 08:53 постоянную температуру нагрева ТЭНом
Нет.
В режиме ректификации поддерживаю постоянную мощность на тенах на 5% меньше мощности при которой закипает колонна. Три датчика температуры - куб, середина колонны и узел отбора. Отбор продукта по дельте между верхним датчиком и серединой. Получается 96 градусов чистейший спирт без всяких посторонних запахов. Из спирта делаю настойки :smile198:
Ardudue
Лейтенант
Сообщения: 424
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение Ardudue »

[ref]JonyBest[/ref], у меня задача попроще, хочу сделать нагрев воздушного ТЭНа.
Датчик поддержания температуры ТЭНА -термопара с MAX6675K, что то не могу понять как в FlProg прикрутить к диммеру что бы при включении ТЭН грел на полную мощность и при достижении заданной температуры автоматом поддерживал заданную температуру.

В Вашем блоке выход out для чего используется?
JonyBest
Сержант
Сообщения: 269
Зарегистрирован: 18 ноя 2015, 22:42
Откуда: Близко к Ставрополю
Имя: Евгений
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение JonyBest »

Ardudue писал(а): 17 ноя 2023, 11:05выход out
для контроля состояния диммера
А ваша задача решается очень просто с помощью пид регулятора. Коэффициенты подбирайте эмпирическим способом. Справка на этот модуль хорошая.
пид.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
WildCat
Лейтенант
Сообщения: 578
Зарегистрирован: 04 июн 2022, 04:14
Имя: Михаил
Благодарил (а): 17 раз
Поблагодарили: 30 раз

Диммер (Фазовый регулятор)

Сообщение WildCat »

ТЭН диммировать смысла нет. У него достаточно большая инерционность, и им достаточно управлять длинными импульсами. Например, постоянный период 30..60с, и импульс - ШИМ в этом периоде.
aidar_i
Полковник
Сообщения: 3419
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 23 раза
Поблагодарили: 158 раз
Контактная информация:

Диммер (Фазовый регулятор)

Сообщение aidar_i »

Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ardudue
Лейтенант
Сообщения: 424
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение Ardudue »

aidar_i писал(а): 18 ноя 2023, 21:11 Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Ваш проект не компилируется
[scroll]
In file included from d:\distrib\arduino\flprog\portableflprog_8-2-3_win64\idev8\portable\packages\stmicroelectronics\tools\xpack-arm-none-eabi-gcc\12.2.1-1.2\arm-none-eabi\include\c++\12.2.1\stdlib.h:36,
from D:\Distrib\Arduino\FLProg\PortableFLProg_8-2-3_Win64\ideV8\portable\packages\STMicroelectronics\hardware\stm32\2.5.0\cores\arduino/wiring.h:24,
from D:\Distrib\Arduino\FLProg\PortableFLProg_8-2-3_Win64\ideV8\portable\packages\STMicroelectronics\hardware\stm32\2.5.0\cores\arduino/Arduino.h:36,
from sketch\pr3.ino.cpp:1:
d:\distrib\arduino\flprog\portableflprog_8-2-3_win64\idev8\portable\packages\stmicroelectronics\tools\xpack-arm-none-eabi-gcc\12.2.1-1.2\arm-none-eabi\include\c++\12.2.1\cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory
41 | #include <bits/c++config.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Ошибка компиляции для платы Generic STM32F1 series.

[/scroll]
[scroll]
#include <RBDdimmer.h>
#define outputPin104947678 192
#define zerocross104947678 19
dimmerLamp dimmer104947678(192, 19);
int outVal104947678 = 0;

#include "flprogUtilites.h"
int _gtv1;
int Out_106694669_104947678;


void setup()
{



dimmer104947678.begin(NORMAL_MODE, ON); //dimmer initialisation

}
void loop()
{







//Плата:1
if ((!(0)))
{
int preVal = outVal104947678;
int buf = (50);
if (buf != 0) outVal104947678 = buf;
delay(200);
dimmer104947678.setPower(outVal104947678); // setPower(0-100%);
if (preVal != outVal104947678)
{
Out_106694669_104947678 = dimmer104947678.getPower();
}
delay(50);
}
_gtv1 = Out_106694669_104947678;







}

[/scroll]
aidar_i
Полковник
Сообщения: 3419
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 23 раза
Поблагодарили: 158 раз
Контактная информация:

Диммер (Фазовый регулятор)

Сообщение aidar_i »

Ardudue писал(а): 21 мар 2024, 08:20
aidar_i писал(а): 18 ноя 2023, 21:11 Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Ваш проект не компилируется
[scroll]
In file included from d:\distrib\arduino\flprog\portableflprog_8-2-3_win64\idev8\portable\packages\stmicroelectronics\tools\xpack-arm-none-eabi-gcc\12.2.1-1.2\arm-none-eabi\include\c++\12.2.1\stdlib.h:36,
from D:\Distrib\Arduino\FLProg\PortableFLProg_8-2-3_Win64\ideV8\portable\packages\STMicroelectronics\hardware\stm32\2.5.0\cores\arduino/wiring.h:24,
from D:\Distrib\Arduino\FLProg\PortableFLProg_8-2-3_Win64\ideV8\portable\packages\STMicroelectronics\hardware\stm32\2.5.0\cores\arduino/Arduino.h:36,
from sketch\pr3.ino.cpp:1:
d:\distrib\arduino\flprog\portableflprog_8-2-3_win64\idev8\portable\packages\stmicroelectronics\tools\xpack-arm-none-eabi-gcc\12.2.1-1.2\arm-none-eabi\include\c++\12.2.1\cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory
41 | #include <bits/c++config.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
exit status 1
Ошибка компиляции для платы Generic STM32F1 series.

[/scroll]
[scroll]
#include <RBDdimmer.h>
#define outputPin104947678 192
#define zerocross104947678 19
dimmerLamp dimmer104947678(192, 19);
int outVal104947678 = 0;

#include "flprogUtilites.h"
int _gtv1;
int Out_106694669_104947678;


void setup()
{



dimmer104947678.begin(NORMAL_MODE, ON); //dimmer initialisation

}
void loop()
{







//Плата:1
if ((!(0)))
{
int preVal = outVal104947678;
int buf = (50);
if (buf != 0) outVal104947678 = buf;
delay(200);
dimmer104947678.setPower(outVal104947678); // setPower(0-100%);
if (preVal != outVal104947678)
{
Out_106694669_104947678 = dimmer104947678.getPower();
}
delay(50);
}
_gtv1 = Out_106694669_104947678;







}

[/scroll]
Попробуйте обновить ядро.
Ardudue
Лейтенант
Сообщения: 424
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение Ardudue »

aidar_i писал(а): 21 мар 2024, 21:04 Попробуйте обновить ядро.
Не помогло.Последняя версия ядра 2.7.1 .
Ругается на отсутствие файла fatal error: bits/c++config.h: No such file or directory
41 | #include <bits/c++config.h
aidar_i
Полковник
Сообщения: 3419
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 23 раза
Поблагодарили: 158 раз
Контактная информация:

Диммер (Фазовый регулятор)

Сообщение aidar_i »

Ardudue писал(а): 22 мар 2024, 09:23
aidar_i писал(а): 21 мар 2024, 21:04 Попробуйте обновить ядро.
Не помогло.Последняя версия ядра 2.7.1 .
Ругается на отсутствие файла fatal error: bits/c++config.h: No such file or directory
41 | #include <bits/c++config.h
Пишут: Эта ошибка возникает из-за проблемы с длинным именем пути.
Попробуйте сократить путь, по которому установлена ​​Arduino IDE, и все должно работать.
В Вашем случае FLProg поставьте в корень диска D.
Другие скетчи компилируются?
Ardudue
Лейтенант
Сообщения: 424
Зарегистрирован: 13 апр 2020, 18:22
Имя: Антон
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Диммер (Фазовый регулятор)

Сообщение Ardudue »

aidar_i писал(а): 22 мар 2024, 12:47 Пишут: Эта ошибка возникает из-за проблемы с длинным именем пути.
Проверил на другом компьютере ось WIN10 - FLProg портативная лежит D:\Program Files\FLProg_8-2-3_Win64
компилируется:
Ядро версия 2.5.0
Скетч использует 36196 байт (55%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 5300 байт (25%) динамической памяти, оставляя 15180 байт для локальных переменных. Максимум: 20480 байт.
Ядро версия 2.7.1
Скетч использует 34684 байт (52%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 5812 байт (28%) динамической памяти, оставляя 14668 байт для локальных переменных. Максимум: 20480 байт.
Под последней версией ядра скетч использует меньше памяти, но переменные в объеме выросли.
semachyok
Рядовой
Сообщения: 1
Зарегистрирован: 19 фев 2025, 16:29
Имя: Артем

Re: Диммер (Фазовый регулятор)

Сообщение semachyok »

aidar_i писал(а): 18 ноя 2023, 21:11 Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Здравствуйте!
На ESP работает отлично, на STM не хочет.
lfgjikjjyj
Сержант
Сообщения: 250
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 37 раз

Re: Диммер (Фазовый регулятор)

Сообщение lfgjikjjyj »

semachyok писал(а): 08 дек 2025, 13:48
aidar_i писал(а): 18 ноя 2023, 21:11 Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Здравствуйте!
На ESP работает отлично, на STM не хочет.
а какой принцып работы ожидается ?

я на ардуинках делал медленый шим в 1гц где брал 100 полупериодов что соответствовало 100% и просто отсекал лишнии в зависимости от нужной мощности
допустим надо 87% значит на выходе было примерно 87 полупериодов
Аватара пользователя
Rovki
Полковник
Сообщения: 5911
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 85 раз
Поблагодарили: 290 раз
Контактная информация:

Re: Диммер (Фазовый регулятор)

Сообщение Rovki »

lfgjikjjyj писал(а): 08 дек 2025, 15:14
semachyok писал(а): 08 дек 2025, 13:48
aidar_i писал(а): 18 ноя 2023, 21:11 Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Здравствуйте!
На ESP работает отлично, на STM не хочет.
а какой принцып работы ожидается ?

я на ардуинках делал медленый шим в 1гц где брал 100 полупериодов что соответствовало 100% и просто отсекал лишнии в зависимости от нужной мощности
допустим надо 87% значит на выходе было примерно 87 полупериодов
Тогда это не ШИМ, а число импульсное модулирование :smile427:
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3373
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 341 раз
Поблагодарили: 164 раза

Re: Диммер (Фазовый регулятор)

Сообщение Phazz »

Ну не знаю, по мне так самый настоящий шим)
lfgjikjjyj
Сержант
Сообщения: 250
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 37 раз

Re: Диммер (Фазовый регулятор)

Сообщение lfgjikjjyj »

Описание концовки действительно не понятно
Изначально чистый шим идёт
Он управляет оптроном с детектором нуля который включается сам каждые 10мс при сетевой частоте в 50гц и длины импульса в его границах Шима
От сюда и выходит 1сек это 100 раз по 10мс или 100 полупериодов и тэн не жужит в отличие от китайских вариантов

Один минус нет равномерного распределения импульсов на всём промежутке 1сек
Но уже много лет и под сотню устройств работают прекрасно
Ну если подумать потом то можно придумать формулу интерполяции длины Шима на кусочки вкл выкл по всему диапазону периода
Аватара пользователя
Rovki
Полковник
Сообщения: 5911
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 85 раз
Поблагодарили: 290 раз
Контактная информация:

Re: Диммер (Фазовый регулятор)

Сообщение Rovki »

Phazz писал(а): 08 дек 2025, 22:34 Ну не знаю, по мне так самый настоящий шим)
В данном случае скважность импульсов не меняется (не ШИМ) , а меняется количество импульсов за интервал времени.
Электронщик до мозга костей и не только
Аватара пользователя
Phazz
Полковник
Сообщения: 3373
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 341 раз
Поблагодарили: 164 раза

Re: Диммер (Фазовый регулятор)

Сообщение Phazz »

Ну как посмотреть, период шим 1сек если мы отсчитываем 70 переходов и отключаем управляющее напряжение - то мы получаем заполнение 70%. Не понимаю в чем разница
lfgjikjjyj
Сержант
Сообщения: 250
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 37 раз

Re: Диммер (Фазовый регулятор)

Сообщение lfgjikjjyj »

В том-то и плюс, что я не рублю полупериоды, как китайцы: у меня все переходы идут через ноль. А то, что я увеличиваю количество полупериодов либо уменьшаю их, ну, это то же самое, что и сигнал в ШИМ, только скважность здесь заполняется полупериодами. И то, что это работает в фоновом режиме, автономно, не беспокоит КПУ, то можно назвать аппаратный абстрактный ШИМ.
Ответить

Вернуться в «Светодиоды, освещение»

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

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