Добрый день. Есть диммер переменного тока на тини13, для плавного запуска торцовочной пилы. На данный момент плата диммера и блок питания подключены после силовой кнопки торцовки. То есть при нажатии кнопки плата включается и запускает пилу, при отжатии плата полностью обесточивается. Подумал что не совсем правильно постоянно вкл/откл плату управления и хочу блок питания включить до силовой кнопки и пока кабель пилы включена в розетку плата с тини13 всегда включена. Нажимая силовую кнопку подаем питание только на силовую часть, но при этом нужно как то сбрасывать duty(коэф заполнения, 0-255) при отжатой силовой кнопке, если этого не делать при втором нажатии duty будет 255(симистор открыт полностью) и на мотор сразу подается 230В.
Сделал так, переменную my_tmr сравниваю с millis и если разность более 10мсек(полупериод синусоиды 50Гц), я поставил 15мсек, то duty сбрасываем в ноль иначе плавно увеличиваем duty до 255.
Работает ПОЧТИ как надо. Если точнее после подачи напряжения на силовую часть плавно включается какое то время работает, сбрасывается в ноль, опять плавно включается и так по кругу. Все это дело происходит с рандомной частотой. Не пойму в чем проблема.
P.S. Тесты на лампе накаливания. При отсутствии силового напряжения(230В) на входе детекции нуля +5В постоянно, по схеме это видно. Класс таймера брал с примеров GyverDimmer. Отлаживаю на Arduino Nano, на самом плавном пуске стоит Tiny13.
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
								Сделал так, переменную my_tmr сравниваю с millis и если разность более 10мсек(полупериод синусоиды 50Гц), я поставил 15мсек, то duty сбрасываем в ноль иначе плавно увеличиваем duty до 255.
Работает ПОЧТИ как надо. Если точнее после подачи напряжения на силовую часть плавно включается какое то время работает, сбрасывается в ноль, опять плавно включается и так по кругу. Все это дело происходит с рандомной частотой. Не пойму в чем проблема.
P.S. Тесты на лампе накаливания. При отсутствии силового напряжения(230В) на входе детекции нуля +5В постоянно, по схеме это видно. Класс таймера брал с примеров GyverDimmer. Отлаживаю на Arduino Nano, на самом плавном пуске стоит Tiny13.
			
				C++:
			
		
		
		class TimerUs {
  public:
    bool ready() {
      if (state && micros() - tmr >= prd) {
        tmr = micros();
        return true;
      }
      return false;
    }
    void stop() {
      state = false;
    }
    void restart() {
      tmr = micros();
      state = true;
    }
    void setPeriod(uint32_t period) {
      restart();
      prd = period;
      if (prd == 0) prd++;
    }
  private:
    bool state = 0;
    uint32_t tmr = 0, prd = 0;
};
TimerUs timer;
// -------- НАСТРОЙКИ ---------
#define FB_pin 2      
#define Dimmer_pin 13  
// ------- БИБЛИОТЕКИ -------
#include <GyverDimmer.h>
Dimmer<Dimmer_pin> dim;   // указать пин диммера
// ------- ПЕРЕМЕННЫЕ -------
volatile uint8_t duty = 0;     //  Начальное значение мощности
uint32_t my_tmr = 0;
// --------- SETUP ----------
void setup() {
  Serial.begin(9600);
  //Инициализация прерываний
  attachInterrupt(0, myInt, RISING); //если использ. прерыв. в стиле ардуино
}
void myInt() {
  // вызывать в прерывании детектора нуля
  // если tickZero() - true - нужно перезапустить таймер с периодом getPeriod()
  if (dim.tickZero()) timer.setPeriod(dim.getPeriod()); //
  else timer.restart();
  my_tmr = millis();
}
//-----------Основной цикл------------
void loop() {
  if (timer.ready()) {  // если таймер готов(отсчитало нужное время)
    dim.tickTimer();    // вызвать tickTimer(подать сигнал на пин диммера)
    timer.stop();       // остановить таймер      
  }  
  if(millis() - my_tmr >= 15)  duty = 0;  
    else softStart();  
  dim.write(duty);
  debug();    
}  
//------------------ФУНКЦИИ-----------------
void softStart()  {
  static uint32_t tmr;
  if (millis() - tmr >= 20) {
    tmr = millis();
   if(duty < 255) duty += 1;
  }
}
void debug()  {
  static uint32_t tmr;
  if (millis() - tmr >= 50) {
    tmr = millis();
   
    Serial.print("Коэф. заполнения - ");
    Serial.print(duty);
    Serial.println(". ");
  }
}
	Вложения
- 
		
			
	
			
		
		
		71.1 KB Просмотры: 9
 
								
									Изменено: