Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- - 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;
- }
Add Comment
Please, Sign In to add comment