Tag: Acionamento

Palavra-chave
Destaque/Sem destaque
Resolvida/Não Resolvida
Aberta/Encerrada
0 votos
5k visualizações

Olá pessoal,

Sou estudante de Engenharia Elétrica e estou fazendo meu tcc utilizando um arduino MEGA 2560 e nanoshields zerocross (para detectar o ponto em que a rede eletrica cruza o zero) e triac (para controle da tensão).
Eu vi muitos topicos e sites falando de dimmer e controle de luminosidade de lâmpadas. Esse é o principio básico do meu projeto. Mas o que esta me tirando o sono é o fato de eu precisar controlar outra fase. No caso preciso acionar um motor trifásico.
Sei que cada fase tem uma defasagem de 120 graus uma da outra. E no caso de eu estar trabalhando em 60Hz com um periodo de 1/60 = 16,6667ms para a fase A. A defasagem de tempo para a fase B seria 5,5556ms.
Mas mesmo sabendo disso, nao estou conseguindo implemantar um codigo para controlar a fase B exatamente igual a fase A.
Por estar usando o sensor zerocross e a função de interrupção do arduino para receber o sinal desse sensor me fez desistir de colocar 2 sensores zerocross por causar interferencias entre as interrupções.
Portanto preciso utilizar 1 sensor zerocross e 2 ou 3 triacs para o controle de 2 ou 3 fases diferentes.

Alguem pode me ajudar a implementar esse codigo, por favor?

Aqui está um exemplo de codigo para o controle de 1 fase utilizando um potenciometro.

int triac1 = 5; // Triac: pino D5
int pot = A15; // Potenciômetro: pino A15
int zc1 = 2; // Detetor de zero: pino D2

// Tempo entre a detecção de zero e o acionamento do triac
int time;

void setup()
{
// Inicializa os pinos como entrada ou saída
pinMode(triac1, OUTPUT);
pinMode(pot, INPUT);
pinMode(zc1, INPUT);

// Associa a borda de descida do detetor de zero com
// a função dimmer(), que aciona o triac
attachInterrupt(0, dimmer, FALLING);
}

void loop()
{
// Lê o valor do potenciômetro (de 0 a 1023) e converte
// para o delay de acionamento do triac (de 1 a 7331us).
int t = analogRead(pot) * 7.1652 + 1;

// Atualiza a variável “time”, desabilitando as interrupções
// para que não haja conflito no acesso.
noInterrupts();
time = t;
interrupts();
}

void dimmer()
{
// Espera até o momento correto (variável “time”) e aciona o triac
delayMicroseconds(time);
digitalWrite(triac1, HIGH);
// Gera a borda de descida do pulso do triac com largura de 200us
delayMicroseconds(200);
digitalWrite(triac1, LOW);
}

  • Brunno Brendon perguntada 3 anos atrás
  • última atividade 3 anos atrás
Mostrando 1 resultado