Страница 1 из 2
Диммер (Фазовый регулятор)
Добавлено: 03 ноя 2023, 22:22
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
Диммер (Фазовый регулятор)
Добавлено: 17 ноя 2023, 08:53
Ardudue
JonyBest писал(а): 03 ноя 2023, 22:22
решил обновить прошивку самогонного аппарата
Поддерживаете постоянную температуру нагрева ТЭНом?
Диммер (Фазовый регулятор)
Добавлено: 17 ноя 2023, 10:17
JonyBest
Ardudue писал(а): 17 ноя 2023, 08:53
постоянную температуру нагрева ТЭНом
Нет.
В режиме ректификации поддерживаю постоянную мощность на тенах на 5% меньше мощности при которой закипает колонна. Три датчика температуры - куб, середина колонны и узел отбора. Отбор продукта по дельте между верхним датчиком и серединой. Получается 96 градусов чистейший спирт без всяких посторонних запахов. Из спирта делаю настойки

Диммер (Фазовый регулятор)
Добавлено: 17 ноя 2023, 11:05
Ardudue
[ref]JonyBest[/ref], у меня задача попроще, хочу сделать нагрев воздушного ТЭНа.
Датчик поддержания температуры ТЭНА -термопара с MAX6675K, что то не могу понять как в FlProg прикрутить к диммеру что бы при включении ТЭН грел на полную мощность и при достижении заданной температуры автоматом поддерживал заданную температуру.
В Вашем блоке выход out для чего используется?
Диммер (Фазовый регулятор)
Добавлено: 17 ноя 2023, 11:17
JonyBest
Ardudue писал(а): 17 ноя 2023, 11:05выход out
для контроля состояния
диммера
А ваша задача решается очень просто с помощью пид регулятора. Коэффициенты подбирайте эмпирическим способом. Справка на этот модуль хорошая.
пид.flp
Диммер (Фазовый регулятор)
Добавлено: 18 ноя 2023, 17:59
WildCat
ТЭН диммировать смысла нет. У него достаточно большая инерционность, и им достаточно управлять длинными импульсами. Например, постоянный период 30..60с, и импульс - ШИМ в этом периоде.
Диммер (Фазовый регулятор)
Добавлено: 18 ноя 2023, 21:11
aidar_i
Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Диммер (Фазовый регулятор)
Добавлено: 21 мар 2024, 08:20
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]
Диммер (Фазовый регулятор)
Добавлено: 21 мар 2024, 21:04
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]
Попробуйте обновить ядро.
Диммер (Фазовый регулятор)
Добавлено: 22 мар 2024, 09:23
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
Диммер (Фазовый регулятор)
Добавлено: 22 мар 2024, 12:47
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.
Другие скетчи компилируются?
Диммер (Фазовый регулятор)
Добавлено: 23 мар 2024, 16:36
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 байт.
Под последней версией ядра скетч использует меньше памяти, но переменные в объеме выросли.
Re: Диммер (Фазовый регулятор)
Добавлено: 08 дек 2025, 13:48
semachyok
aidar_i писал(а): 18 ноя 2023, 21:11
Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Здравствуйте!
На ESP работает отлично, на STM не хочет.
Re: Диммер (Фазовый регулятор)
Добавлено: 08 дек 2025, 15:14
lfgjikjjyj
semachyok писал(а): 08 дек 2025, 13:48
aidar_i писал(а): 18 ноя 2023, 21:11
Попробовал поработать с этой библиотекой на STM32, но посыпались ошибки.
Пришлось покопаться в библиотеке, исправить инициализацию таймера.
Выкладываю свой блок сюда, библиотека встроена в блок.
Блок JonyBest увидел после, тоже должен работать.
Нужно протестировать, чтобы определить правильно ли я внес изменения, компиляция проходит.
Диммер RBDdimmer.flp
Здравствуйте!
На ESP работает отлично, на STM не хочет.
а какой принцып работы ожидается ?
я на ардуинках делал медленый шим в 1гц где брал 100 полупериодов что соответствовало 100% и просто отсекал лишнии в зависимости от нужной мощности
допустим надо 87% значит на выходе было примерно 87 полупериодов
Re: Диммер (Фазовый регулятор)
Добавлено: 08 дек 2025, 21:22
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 полупериодов
Тогда это не ШИМ, а число импульсное модулирование

Re: Диммер (Фазовый регулятор)
Добавлено: 08 дек 2025, 22:34
Phazz
Ну не знаю, по мне так самый настоящий шим)
Re: Диммер (Фазовый регулятор)
Добавлено: 09 дек 2025, 04:38
lfgjikjjyj
Описание концовки действительно не понятно
Изначально чистый шим идёт
Он управляет оптроном с детектором нуля который включается сам каждые 10мс при сетевой частоте в 50гц и длины импульса в его границах Шима
От сюда и выходит 1сек это 100 раз по 10мс или 100 полупериодов и тэн не жужит в отличие от китайских вариантов
Один минус нет равномерного распределения импульсов на всём промежутке 1сек
Но уже много лет и под сотню устройств работают прекрасно
Ну если подумать потом то можно придумать формулу интерполяции длины Шима на кусочки вкл выкл по всему диапазону периода
Re: Диммер (Фазовый регулятор)
Добавлено: 09 дек 2025, 15:56
Rovki
Phazz писал(а): 08 дек 2025, 22:34
Ну не знаю, по мне так самый настоящий шим)
В данном случае скважность импульсов не меняется (не ШИМ) , а меняется количество импульсов за интервал времени.
Re: Диммер (Фазовый регулятор)
Добавлено: 09 дек 2025, 17:17
Phazz
Ну как посмотреть, период шим 1сек если мы отсчитываем 70 переходов и отключаем управляющее напряжение - то мы получаем заполнение 70%. Не понимаю в чем разница
Re: Диммер (Фазовый регулятор)
Добавлено: 09 дек 2025, 17:38
lfgjikjjyj
В том-то и плюс, что я не рублю полупериоды, как китайцы: у меня все переходы идут через ноль. А то, что я увеличиваю количество полупериодов либо уменьшаю их, ну, это то же самое, что и сигнал в ШИМ, только скважность здесь заполняется полупериодами. И то, что это работает в фоновом режиме, автономно, не беспокоит КПУ, то можно назвать аппаратный абстрактный ШИМ.