Created
June 16, 2018 17:20
-
-
Save gbkrobotics/f46f03ecf6aeef3ece6ac7689825065c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
- O Módulo Dimmer Arduino é um equipamento criado com o intuito de proporcionar ao hobista ou projetista a possibilidade de realizar o controle da quantidade de energia que é enviada para a lâmpada incandescente, consecutivamente proporcionando maior ou menor luminosidade. | |
- Para melhor funcionamento o Módulo Dimmer possui em seu sistema um controlador Triac Q4010 integrado, utilizado comumente para chavear a corrente alternada. | |
- Com a capacidade de dimerizar uma ou mais lâmpadas incandescentes, o Módulo Dimmer é capaz de controlar eletricamente a intensidade luminosa ou o consumo de uma fonte de luz qualquer, como, por exemplo, uma lâmpada incandescente tradicional. | |
- Como característica fundamental de funcionamento do Dimmer temos a sua capacidade de interromper o envio de corrente a um dado circuito através de uma regulagem de disparos que é programada através do Arduino, Raspberry Pi, PIC, entre outros. | |
- Com uma entrada e uma saída específica para corrente de 127V ou 220V (deve ser escolhido no momento da compra) o Módulo Dimmer Arduino proporciona através das portas do microcontrolador uma configuração capaz de controlar a intensidade de lâmpadas incandescentes de uma forma muito mais prática e eficiente, aumentando ou diminuindo a faixa luminosa. | |
- A porta representada pela entrada ZC (Zero Cross) manda um aviso para o microcontrolador de que a tensão está cruzando o zero. A Platafroma Microcontroladora, por sua vez, manda um pulso de volta para o Módulo Dimmer através da porta DIM que fará com que o módulo controle o brilho das lâmpadas incandescentes instaladas. | |
- Em uma visão mais ampla o Dimmer Arduino é um dispositivo que possui a capacidade de variar a luminosidade de uma ou mais lâmpadas incandescentes, tornando o ambiente muito mais agradável, de fácil controle, trazendo consigo inclusive o benefício de maior economia de energia. | |
CARACTERÍSTICAS: | |
- Módulo Dimmer; | |
- Possibilita o controle da quantidade de energia que é transmitida às lâmpadas incandescentes; | |
- Proporciona controle preciso da luminosidade das lâmpadas incandescentes; | |
- Controlador Triac Q4010 integrado; | |
- Capacidade de dimerizar uma ou mais lâmpadas incandescentes; | |
- Luminosidade controlada através de sistemas microcontroladores; | |
- Porta ZC (Zero Cross) que avisa quanto a tensão estiver cruzando o zero; | |
- Porta DIM que recebe um pulso de tensão do microcontrolador como resposta ao ZC; | |
- Torna o ambiente muito mais agradável; | |
- Diminui o consumo de energia; | |
- Fácil controle; | |
- Simples instalação; | |
- Garantia Legal de 90 dias (contra defeitos de fabricação). | |
ESPECIFICAÇÕES: | |
- Tensão para lâmpadas incandescentes: 220VAC | |
- Tensão junto ao Arduino: 5V DC; | |
- Tensão entrada de disparo: DIM 5V; | |
- Corrente: 8A (necessário dissipador de calor); | |
- Dimensões (CxLxA): 62x34x18mm; | |
- Peso: 21g. | |
*/ | |
#include <TimerOne.h> // inclui biblioteca Timer1 | |
#define triacApin 4 // Define que o Dimmer será comandado pelo pino 4 | |
int frequencia = 60; | |
int stateTriacA = 0; | |
int power = 0; //inicializa variavel que controla potencia na lampada com 0 (lampada apagada) | |
void setup() | |
{ | |
Serial.begin(9600); | |
pinMode(triacApin, OUTPUT); | |
digitalWrite(triacApin, LOW); | |
Serial.println("Controle de TRIAC.\r\nDigite o Percentual de Brilho (duas casas) Ex.: 25"); | |
// Initialize the interruption time Timer1 | |
Timer1.initialize(); // Initialize TimerOne library for the freq we need | |
// Attach the interrupt 0 to pin 2 for the detection of zero crossing (Zero Cross Detection) | |
attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interrupt to Pin 2 (Interrupt 0) for Zero Cross Detection | |
} | |
void loop() | |
{ | |
int i = 0; | |
int read_data[2]; | |
while(i<2){ | |
while(Serial.available()){ | |
read_data[i] = Serial.read(); | |
i++; | |
} | |
} | |
power = Concatena_Numeros(read_data[0],read_data[1]); | |
Serial.println(power); | |
} | |
void zero_cross_detect() | |
{ | |
if(power > 0){ | |
long dimtime = int(map(power,0,100,8000,150)); // calcula o tempo de delay para o disparo do TRIAC 7950,100 | |
Timer1.attachInterrupt(gateTRIAC, dimtime); //associa a funcao gateTRIAC com Interrupcao do TIMER1 | |
Timer1.start(); // inicia contagem TIMER1 | |
}else{ | |
digitalWrite(triacApin, LOW); // mantem gate do TRIAC desativado. | |
Timer1.stop(); | |
} | |
} | |
void gateTRIAC () | |
{ // trata interrupcao do TIMER1 gerando pulso no gate do TRIAC | |
digitalWrite(triacApin, HIGH); // dispara o Triac | |
delayMicroseconds(5); // aguarda 5 microsegundos para garantir disparo do TRIAC | |
digitalWrite(triacApin, LOW); // desabibilta gate do TRIAC | |
Timer1.stop(); | |
} | |
int Concatena_Numeros(int variavel1, int variavel2) | |
{ | |
int resultado; | |
resultado = ((variavel1-'0')*10)+(variavel2-'0'); | |
return resultado; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment