Social Icons

Um Dimmer Futurístico



Um dimmer digital que pode ser facilmente acoplado no Arduino ou qualquer outra placa controladora. O resultado é que você consegue controlar a intensidade de brilho de uma lâmpada incandescente.  Dependendo dos circutos que você colocar neste esquema, você pode controlar um ventilador, chuveiro, ou fazer um ferro de solda com controle de potência!

Os desafios propostos neste desenvolvimento foram bem interessantes e pessoalmente foram verdadeiras aulas práticas de eletrônica e microcontroladores. 

A primeira tentativa que fizemos utilizamos um isolador ótico simples e tentamos usar a PWM para controlar a potência, mas o resultado com a lâmpada não deu certo: ela ficava piscando. Então Paulo pesquisou e me passou uma solução mais trabalhosa mas que funcionaria.

Neste novo esquema elétrico usamos dois isoladores óticos: 4N35 um MOC3021. O primeiro é utilizado para detectar a passagem da corrente alternada por zero e interromper o ATMega cada vez que isso acontecere, no caso do Brasil com 60hz, 120 vezes por segunda a corrente passa por 0. Neste momento é onde temporizamos  a abertura do TRIAC e simulamos o controle de potência. Veja o esquema elétrico:




Segue o código-fonte para Arduino. Você pode mudar a intensidade alterando o valor da variável dim entre 1 e 120, sendo que 1 é o mais forte e 120 praticamente desligada. Este programa permite alteração desta variável por I2C ou por Serial:


/*

#include 
int AC_pin = 3;
volatile long dim = 60;

void setup(){
  pinMode(AC_pin, OUTPUT);
  Serial.begin(9600);
  attachInterrupt(0, light, CHANGE);
  Wire.begin(66);
  Wire.onReceive(receiveEvent);
}

void receiveEvent(int howMany){
   char comando[16];
   int counter=0;
   while(1 < Wire.available())  {
   char c = Wire.receive();
   comando[counter++]=c;
   Serial.print(c);
      }  

int x = Wire.receive();
Serial.println(x);
Serial.println("Evento");
Serial.println(howMany);
//value, fromLow, fromHigh, toLow, toHigh)  
dim = map(comando[1], 48,57,10,120);
  } 


void light(){
  if(dim<125) {
    long dimtime = (60*dim);  // eval the proper pause to fire the triac
    delayMicroseconds(dimtime);  // delay the dim time
    digitalWrite(AC_pin, HIGH);  // fire the Triac
    delayMicroseconds(1);  // pause briefly to ensure the triac turned on
    digitalWrite(AC_pin, LOW);   // turn off the Triac gate (triac will not turn off until next zero cross)
  }  else {
      digitalWrite(AC_pin, LOW);   // turn off the Triac gate (triac will not turn off until next zero cross)  
  }
}

void loop(){
if (Serial.available() > 0) {
    byte inByte = Serial.read();
    dim = inByte;  }
}



E na etapa seguinte integramos este circuito com o ping da Parallax para ter o controle de intensidade "on the air". Bem, isso deixamos para um próximo post, por enquanto vai se divertindo com este circuito!

A lista de materiais para você comprar e montar:

- 4 resistores de 47K (R1 a R4)
- 1 resistor de 10k (R5) (se não tiver 1k e 10k não é eletrônica!)
- 2 resistores 330 (R6 e R7)
- TRIAC BTA16
- 1 isolador 4N35
- 1 isolador MOC3021

Preço da lista: menos que R$ 10.

Criador do Projeto:  Vinicius Senger
http://twitter.com/vsenger
http://twitter.com/eletronlivre
http://loja.eletronlivre.com.br
http://www.globalcode.com.br/instrutores/ViniciusSenger

Nenhum comentário:

Postar um comentário