Диммер с стабилизацией напряжения

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Пытаюсь сделать диммер с обратной связью по напряжению. Нужно получить стабилизацию напряжения при скачках напряжения сети. Если например выставлено на выходе 110 вольт при сетевом 220 и если сетевое упало до 200 то на выходе должно остаться 110.
Измерение напряжения идёт через аналоговый вход А1
Скетч вроде работает напряжение на вольтметре стабильно. Но при подключении амперметра видно что ток потребления падает. Есть подозрение что не верно измеряется выходное напряжения. Схема измерения напряжения, диммера и скетч ниже. Скетч крайне убогий, не силён я в этом деле.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define NUM_READINGS 500
int average; // измерение напряжения для фильтра
int volt; // вывод напряжения на дисплей
int dimming1;
int dimming ; // Dimming level (0-128) 0 = ON, 128 = OFF
unsigned long timme; //для дисплея
unsigned long sec=0;//для дисплея
LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x27 for a 16 chars and 2 line display
int AC_LOAD = 4; // Output to Opto Triac pin

void setup()
{
analogReference(INTERNAL);
dimming = map(analogRead(0), 0, 1023, 10, 240) ;
lcd.init(); // initialize the lcd
Serial.begin(9600);
lcd.backlight();
lcd.setCursor(3, 0);
pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
attachInterrupt(0, zero_crosss_int, RISING); // Choose the zero cross interrupt # from the table above
}
// the interrupt function must take no parameters and return nothing
void zero_crosss_int() // function to be fired at the zero crossing to dim the light
{
// Firing angle calculation : 1 full 50Hz wave =1/50=20ms
// Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle) For 60Hz => 8.33ms
// 10ms=10000us
// (10000us - 10us) / 128 = 75 (Approx) For 60Hz =>65
int dimtime = (40 * dimming); // For 60Hz =>65
delayMicroseconds(dimtime); // Off cycle
digitalWrite(AC_LOAD, HIGH); // triac firing
delayMicroseconds(50 ); // triac On propogation delay (for 60Hz use 8.33)
digitalWrite(AC_LOAD, LOW); // triac Off
}

void loop() {
timme=millis();
// фильтр
long sum = 0; // локальная переменная sum
for (int i = 0; i < NUM_READINGS; i++) { // согласно количеству усреднений
sum += analogRead(1); // суммируем значения с любого датчика в переменную sum
}
average = sum / NUM_READINGS; // находим среднее арифметическое, разделив сумму на число измерений
//фильтр
lcd.setCursor(1, 0);
dimming1 = map(analogRead(0), 0, 1023, 240, 10);
//int dimming1 = map(dimming, 10, 240, 240, 10);
lcd.print(dimming1); lcd.print(" ");
lcd.setCursor(6, 0);
lcd.print(dimming); lcd.print(" ");


volt = map(average , 0, 1023, 0, 240);


if (dimming1 > volt ){dimming=dimming-(dimming1-volt);}
if (dimming1 < volt ){dimming=dimming + (volt-dimming1);}
if (dimming < 10){dimming = 10;}
if (dimming > 240){dimming = 240;}
Serial.print("volt ");Serial.println(volt);

if (timme -sec >500){lcd.setCursor(0, 1);lcd.print(volt); lcd.print(" ");sec=timme;}
}
 

Вложения

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
Судя по Вашей схеме, это СИФУ. Здесь меняется ДЕЙСТВУЮЩЕЕ значение напряжения путём изменением угла коммутации тиристора. Этот способ хорош только для активной нагрузки. Каким образом Вы собираетесь менять амплитуду синусоиды - непонятно. У Вас на выходе получится всего лишь покорёженная синусоида, и только. Одним диммером переменное напряжение не стабилизировать, не поломав синусоиды.
Есть подозрение что не верно измеряется выходное напряжения
Априори неверно! Входная схема расчитана на чистую синусоиду, а после диммера она коцаная. Посмотрите осциллографом.
 
Последнее редактирование:

Эдуард Анисимов

★★★★★✩✩
23 Сен 2019
1,025
301
54
Марий-Эл
Этот способ хорош только для активной нагрузки
Лампочки накаливания то же управляются.
А конкретно эта схема не подходит для регулирования.
Здесь больше пойдёт перед оптроном выпрямить и сгладить напряжение. Но скорость реакции будет никакой.
 
  • Лойс +1
Реакции: PiratFox

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Судя по Вашей схеме, это СИФУ. Здесь меняется ДЕЙСТВУЮЩЕЕ значение напряжения путём изменением угла коммутации тиристора. Этот способ хорош только для активной нагрузки. Каким образом Вы собираетесь менять амплитуду синусоиды - непонятно. У Вас на выходе получится всего лишь покорёженная синусоида, и только. Одним диммером переменное напряжение не стабилизировать, не поломав синусоиды.
Априори неверно! Входная схема расчитана на чистую синусоиду, а после диммера она коцаная. Посмотрите осциллографом.
Смотрел осциллографом, конденсатор сглаживает пульсации. Китайский вольтметр переменного напряжения построен по такой же схеме. Показания с ним совпадают до вольта. Но вот с тестером TRUE RMS отличаются
TRUE RMS

Смотрел осциллографом, конденсатор сглаживает пульсации. Китайский вольтметр переменного напряжения построен по такой же схеме. Показания с ним совпадают до вольта. Но вот с тестером TRUE RMS отличаются
TRUE RMS
Вот схема этого вольтметра p1b2krf64d1hldun11578su1aga1.jpg

Данные для ардуины берутся с 4 ножки данного вольтметра

Данный димер планируется использовать исключительно для регулировки мощности ТЭНОВ
 

Вложения

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
конденсатор сглаживает пульсации.
Какие пульсации? Там синусоида будет изуродована симистором.
Но вот с тестером TRUE RMS отличаются
Конечно. А на Вашем фото - это совсем не True RMS. Давайте так: на каком характере нагрузки Вы хотите юзать этот Ваш стабилизатор?
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Данный димер планируется использовать исключительно для регулировки мощности ТЭНОВ
И стабилизация работает, но недостаточно точно. Погрешность 4-6 %

Какие пульсации? Там синусоида будет изуродована симистором.

Конечно. А на Вашем фото - это совсем не True RMS. Давайте так: на каком характере нагрузки Вы хотите юзать этот Ваш стабилизатор?
Я же писал что в сравнении с китайским тестер TRUE RMS даёт другие показания.
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
Данный димер планируется использовать исключительно для регулировки мощности ТЭНОВ
Нах там тогда диммер? Это реализуется PID регулятором с датчиком температуры в контуре обратной связи. :giggle:
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Нах там тогда диммер? Это реализуется PID регулятором с датчиком температуры в контуре обратной связи. :giggle:
Нужно стабилизировать напряжение, температура тут не причём. Нагрузка до 6 KW

Есть мысль измерять напряжение до Диммера и использовать его для отслеживания напряжения в сети. Как такой вариант?
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
Нагрузка до 6 KW
А Вы представляете, какие помехи в сеть будет валить Ваш девайс в момент коммутации тиристора, если не примените входные фильтры высоких порядков? Но дело даже не в этом. Непонятно другое. Зачем стабилизировать напряжение на нагревателях?
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Но проблема в том что для того чтобы измерить среднеквадратичное значение напряжения нужна полная синусоида, это займёт 20 милисикунд. А скетч работает на прерывании то есть каждые 10 миллисекунд передаётся управление функции oid zero_crosss_int() Отсюда вопрос, как измерить напряжение и заставить работать эту функцию параллельно

А Вы представляете, какие помехи в сеть будет валить Ваш девайс в момент коммутации тиристора, если не примените входные фильтры высоких порядков? Но дело даже не в этом. Непонятно другое. Зачем стабилизировать напряжение на нагревателях?
По выходу стоит снабер он конечно сглаживает помехи но далеко не полностью, это беда всех диммеров низкой ценовой категории. Стабилизация напряжения нужна для стабилизации мощности. При ретификации даже незначительное изменения напряжения на ТЭНЕ может испортить всё дело
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
Отсюда вопрос, как измерить напряжение и заставить работать эту функцию параллельно
Да не нужно это вовсе. Вы не ответили, зачем стабилизировать напряжение на ТЭНах?

Изменение напряжения на нагревателе влечёт за собой изменение температуры, не так ли? Так вот Вам нужно именно температуру стабилизировать. Как - я уже писал. ;)
 
Последнее редактирование:

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Я писал выше. Планируется для ретефикации, обратная связь по тепмературе не совсем подходит, как как разные фракции кипят при разной температуре и отбераются разный период времени. Так же у любого тена есть инерция, когда он в жидкости объёмом 100 литров энерция ещё больше. Да и для управления тэном нужен тот же симмистор

PID регулятором с датчиком температуры в контуре обратной связи.
Что на выходе этого регулятора в качестве силового элемента?
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
Да и для управления тэном нужен тот же симмистор
Нужен. Но его можно коммутировать в моменты перехода тока через нуль, тогда никаких помех не будет. Более того, есть Solid-state реле, которые сами это делают.
разные фракции кипят при разной температуре и отбераются разный период времени.
Тем более нужен контроль температуры, чтобы точно знать, что и когда отбирать.
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Подобный регулятор выпускается, хотелось бы повторить. https://akip.com.ua/catalog/regulatori-moshnosti/rm-2-pro/
А по поводу отбора по температуре, там настолько много нюансов что сложно объяснить даже за день

Если в двух словах, то в течении одного периода фракция испаряется, поднимается по перегонной царге , в верхней части охлаждается и стекает снова в бак, естественно температура в баке постоянно плавает, вот по этой причине термостабилизация и не подходит. Но это очень упрощённо.
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
@Владимир1971, по большому счёту мне как-то всё равно, чего Вы там будете стабилизировать, температуру, напряжение или ещё что... А Ваша ссылка... Что Вам мешает просто купить сей девайс?
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Люблю всё делать своими руками, Ну и для общего развития, а ещё просто интересно это сделать.

Ок. Рано или поздно я это сделаю, тем более понятно куда копать. Жаль в программировании я ноль, но будем учится. Спасибо всем.
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
@Владимир1971, предлагаю простой и интересный вариант. Не пожалейте 500 грн., купите устройство по ссылке и займитесь реверс-инжинирингом. ;)
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Украсть это не спортивно, это удел китайцев. Да и изюминка не в железе а прошивке. Моих познаний не хватит что бы слить оттуда прошивку и разобраться в ней
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
слить оттуда прошивку и разобраться в ней
Слить, скорее всего и не получится ни у кого. Не такие дураки производители, чтобы не заюзать фьюзы секретности в MCU. А вот подсмотреть аппаратную часть можно, и никакого плагиата здесь не будет. Вряд ли они это всё сами изобрели. Просто заюзали широко известные схемные решения под свои нужды. А если Вы хотите заново изобрести велосипед - то вперёд. Дело Ваше.:D
 

PiratFox

★★★✩✩✩✩
13 Фев 2020
530
114
Харьков
В том весь и интерес, изобрести велосипед заново.
Может быть. Но зачем при этом изобретать к нему болты и гайки? Дааа... Месье знает толк в извращениях. :ROFLMAO:

Ошибочка. Вот схема.
В общем, это было ожидаемо. Я про схему. Выход не контролируется, а угол коммутации тиристора меняется пропорционально входному напряжению, тем самым поддерживая постоянное RMS на выходе. Возможно, по какой-то заданной математической функции. Ну или те же таблицы PID. Всё дело в программном обеспечении. Кстати, контроллер Atmel.
 

Владимир1971

✩✩✩✩✩✩✩
17 Окт 2020
23
0
Вот и я догадывался что нужно по входному контролировать. Буду пробовать. Нужно формулу придумать, наверное что то там с корнями и sin

Хотя можно измерять полуволну по скажем 500 точкам, суммировать и вывести среднее значение. Но как быть с управлением симистором? Управление им занимает всё время. На измерение и времени не остаётся, хоть вторую ардуину ставь, но это глупо.