Плавный пуск нагрузки в прерывании.

tager
Offline
Зарегистрирован: 24.09.2018

Есть готовый скетч диммера по управлению тэном на энкодере с кнопкой. При первом нажатии на кнопку, отключаем нагрузку. Второе нажатие включает нагрузку с мощностью которая была до отключения. Скетч рабочий. Только нужно сделать плавный запуск нагрузки при повторном нажатии.

 void Encod() {  

      enc1.tick();   // нужно вызывать как можно чаще
      enc1.setFastTimeout(40);    // таймаут на скорость isFastR. По умолч. 50   


  if (enc1.isRight()) percent = percent + 5;          // если был поворот
  if (percent > 100) percent = 100;                   // Если больше 100% остаёмся на сотке
  if (enc1.isLeft())  percent = percent - 5;          // если был поворот
  if (percent < 0) percent = 0;                       // если меньще нуля остаёмся на нуле



// Управление нажатием кнопки энкодера 
// остановка и запуск тэна
    
    // обработка первого нажатия. Мощность сбрасываем на ноль
    // и запоминаем значение мощности до сброса
    if (enc1.isPress()) {
    if ( percent > 0) percent_i = 0;
    if ( percent_i == 0)
    { 
      percent_b = percent;    //  percent_b Мощность нагрузки до сброса
      percent = 0;
    }

    // обработка второго нажатия. восстанавливаем мощность в нагрузке до сброса
       if (percent_i == 1)
    { 
      percent = percent_b;    // восстанавливаем мощность в нагрузке до сброса ( ТУТ НУЖЕН ПЛАВНЫЙ ЗАПУС НАГРУЗКИ )
      
      percent_b = 0;
      percent_i = percent_i - 2; 
    }
percent_i ++;
             }

Пробовал в строке 30 сделать цикл с задержкой на увеличение переменной percent. Не получилось.

Вроде и считает. Но тэн включается сразу на ту мощность которая была до останова. Без плавного пуска.

Вот и вопрос как тут можно сделать плавный запуск тэна?

 

tager
Offline
Зарегистрирован: 24.09.2018

Забыл написать энкодер обрабатывается в прерывании.

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

если управление нагрузкой идёт через прерывание то в этом куске можно сделать, через цикл в 30 строке, иначе нет

раз энкодер обрабатывается в прерывании, то нет, делайте в функции включения любое включение плавным до установленной мощности

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

tager, а зачем тэну плавное включение, что бы что? Он и так инерционный, плавность нагрева в любом случае обеспечена. Если речь про плавную нагрузку на сеть -то включать в момент перехода через ноль, -это будет очень плавно для сети)

ua6em
ua6em аватар
Онлайн
Зарегистрирован: 17.08.2016

dimax пишет:

tager, а зачем тэну плавное включение, что бы что? Он и так инерционный, плавность нагрева в любом случае обеспечена. Если речь про плавную нагрузку на сеть -то включать в момент перехода через ноль, -это будет очень плавно для сети)

ТКС у нихрома очень маленький, так что точно нет смысла