Dimmer com Triac e opto-acoplador para Arduino.

Dimmer com Triac e opto-acoplador para Arduino. Video descritivo do projeto.

Exibições: 240

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Alexandre em 1 junho 2016 às 14:06

Sucesso! Eis o código:

/*
Dimmer utilizando MOC3021
Desenvolvido por https://cyberohm.com
com apoio de www.labdegaragem.com.br
Agradecimentos a Rui Viana, Celso Ito, Guilherme Razgriz e Rafael Maciel.
Fique a vontade para baixar, usar, melhorar e compartilhar!
1 de junho de 2016.
*/


int sensor = A0;

int opto = 2; // Pino de leitura do opto
int controle = 3; // Pino ligado ao circuito do Triac
//este pino tem que disparar em [To+T/16] para que o motor tenha 7T/8 da potencia total
int led = 13;

// Variables will change:
int optoState; // Estado do opto. Se estiver HIGH, tensao diferente de zero.
//Se estiver em LOW, tensao = zero. Presisamente o que queremos.
int lastOptoState; // O estado anterior do sensor.
//long lastMillis; //define a contagem do tempo.

int leitura;
int D;
int visor;

void setup()
{
pinMode(opto, INPUT); // inicializa o pino do opto de leitura como inpput
pinMode(sensor, INPUT); //inicializa o pino do sensor analogico como input
pinMode(controle, OUTPUT); // inicializa o pino do MOC-3031 como output
pinMode(led, OUTPUT); // inicializa o pino do MOC-3031 como output
Serial.begin(9600);

}

void loop()
{
{
digitalWrite(controle, LOW);
optoState = digitalRead(opto);
// compare the buttonState to its previous state
if ((optoState != lastOptoState) && (optoState == HIGH))
{
leitura = float(analogRead(sensor));
D = map(leitura, 0, 1023, 0, 8200); // o delay de controle
float T = float (map(leitura, 0, 1023, 0, 100000)) / 1000;


delayMicroseconds(D);
digitalWrite(controle, HIGH);
delayMicroseconds(200);
digitalWrite(controle, LOW);
Serial.print(T);
Serial.println(" %");
}
lastOptoState = optoState;
}
}

E eis o print:

Comentário de Alexandre em 31 maio 2016 às 16:41

Ainda com problemas no MOC3021:

https://youtu.be/aMwp0TDa9xM

Comentário de Alexandre em 23 maio 2016 às 13:29

Como prometido, segue o link para o circuito com MOC3031 no formato do Proteus aqui e o código:

/*
Este codigo faz a leitura de um sensor de corrente (optoacoplador)
no pino 2, e por meio de um potenciometro em A0
controla um Dimmer no pino 13.
Desenvolvido por https://cyberohm.com
com apoio de www.labdegaragem.com.br
Fique a vontade para baixar, usar e melhorar, mas nao esqueca de
compartilhar!
22 de junho de 2015.
*/
int sensor = A0;

int opto = 2; // Pino de leitura do opto
int controle = 3; // Pino ligado ao circuito do Triac
//este pino tem que disparar em [To+T/16] para que o motor tenha 7T/8 da potencia total

// Variables will change:
int optoState; // Estado do opto. Se estiver HIGH, tensao diferente de zero.
//Se estiver em LOW, tensao = zero. Presisamente o que queremos.
int lastOptoState; // O estado anterior do sensor.
long lastMillis; //define a contagem do tempo.

int period;
int D;
int visor;

void setup()
{
pinMode(opto, INPUT); // inicializa o pino do opto de leitura como inpput
pinMode(sensor, INPUT); //inicializa o pino do sensor analogico como input
pinMode(controle, OUTPUT); // inicializa o pino do MOC-3031 como output
Serial.begin(9600);
}

void loop()
{
digitalWrite(controle, HIGH);
optoState = digitalRead(opto);

// compare the buttonState to its previous state
if ((optoState != lastOptoState) && (optoState == 1))
{
D = map(analogRead(sensor), 0, 1023, 0, 16); // o delay de controle
digitalWrite(controle, LOW);
visor = map(analogRead(sensor), 0, 1023, 0, 100);

delay(D);
digitalWrite(controle, HIGH);

Serial.print(visor);
Serial.println(" %");

//Qualquer print a mais cria um bug na a execução no Proteus!!!
//Provavelmente porque o tempo de processamento interfere no tempo de execução do código.

lastMillis = millis();
}

lastOptoState = optoState;
}

Comentário de Alexandre em 22 junho 2015 às 10:02

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço